 Umpfack errors with periodic boundary and slightly large mesh in 3D problem

I’m solving a 3D heat problem. This is a minimal working version of the code:

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.

Use another solver, like MUMPS, or even UMFPACK64.

1 Like

Indeed, using UMFPACK64 solves the problem. Thanks!

solver UMFPACK64，May it be used to solve PDE in complex fields?