I tried building it both with the already-made function getfem::asm_stiffness_matrix_for_laplacian and with the generic_assembly class, that means:
getfem::generic_assembly
assem("M$1(#1,#1) += sym(comp(vGrad(#1).vGrad(#1)) (:,i,k, : ,i,k) )");
assem.push_mi(mim);
assem.push_mf(mf_u);
assem.push_mat(AM);
assem.assembly();
both seems to generate a singular matrix.
I guess that my errors are into the boundary conditions or in the choice of fem methods and integration method; which is probably confirmed, sinced i have the same problems with the test code tests/laplacian.cc
i have, as output using an iterative method as GMRES:
Level 2 Warning in /opt/getfem/5.0/include/gmm/gmm_precond_ilut.h, line 172: pivot 1 too small. try with ilutp ?
Level 2 Warning in /opt/getfem/5.0/include/gmm/gmm_precond_ilut.h, line 172: pivot 2 too small. try with ilutp ?
...
Level 2 Warning in /opt/getfem/5.0/include/gmm/gmm_precond_ilut.h, line 172: pivot 21078 too small. try with ilutp ?
Time to compute preconditionner : 0.07 seconds
iter 0 residual 1
iter 50 residual 0.117633
iter 100 residual 0.125247
iter 150 residual 0.137942
iter 200 residual 0.159473
iter 250 residual 0.226573
iter 300 residual 0.147597
iter 350 residual 0.150442
iter 400 residual 0.151829
iter 450 residual 0.161334
iter 500 residual 0.177289
iter 550 residual 0.248701
Gmres is blocked, exiting
Total time to solve : 2.59 seconds
============================================
| An error has been detected !!! |
============================================
Error in main.cpp, line 339 :
Solve procedure has failed
and, with SuperLU:
Level 1 Warning in ../../src/getfem_superlu.cc, line 217: SuperLU solve failed: info =4
Floating point exception
i am using this .param file:
%===================================
% MESH
%===================================
NX=10;
MESH_NOISED = 0;
LX=1;
LY=2;
LZ=1;
INCLINE =0;
FT = 1;
RESIDUAL=1E-10;
ROOTFILENAME = '/home/pacs_student/Desktop/pacs_shared/mesh'
%===================================
% GETFEM DESCRIPTORS
%===================================
% GetFem type for the 3D mesh
MESH_TYPE = 'GT_PK(3,1)';
% GetFem type for the Finite Element Method
FEM_TYPE= 'FEM_PK_DISCONTINUOUS(3,1)';
% GetFem type for the Integration Method
INTEGRATION = 'IM_TETRAHEDRON(6)';
DATA_FEM_TYPE = 'FEM_PK_DISCONTINUOUS(3,1)';
GENERIC_DIRICHLET=0;
Thank you all for your help!!
Best regards
Stefano Brambilla