I’m solving a 3D heat problem. This is a minimal working version of the code:
load "msh3";
func T0 = x < .5;
int p = 10;
mesh3 dominio = cube(p, p, p);
fespace Vh(dominio, P2,
periodic = [ [1, x, z], [3, x, z], [2, y, z], [4, y, z], [5, x, y], [6, x, y] ]
);
Vh T = T0, v, Tant;
real dt = 0.1;
problem termico(T, v)
= int3d(dominio)(
T * v / dt
+ (
dx(T) * dx(v)
+ dy(T) * dy(v)
+ dz(T) * dz(v)
)
)
+ int3d(dominio)(
- Tant * v / dt
)
;
for(real t = 0; t < 30; t += 5){
Tant = T;
termico;
plot(T);
}
This code runs OK. But if I raise the number of points on the mesh (for example: p = 20
instead of p = 10
), then the following error occurs when solving each iteration:
Error umpfack umfpack_di_numeric status -1
Error umfpack_di_solve status -3
If I remove the periodic condition, then no error occurs. What might be happening?
I am using version v4.5-18-gcf799e13, installed from the deb package available in freefem.org and Debian 10.