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:

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.

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?