Hi libMesh Forum,
I am computing a simple model for char strength using libmesh, solving
essentially the linear elasticity equations. I have managed to do so
on simple meshes generated by libMesh (MeshTools::Generation) but am
having problems (which I believe is due to my own ignorance) on
solving them in more complicated meshes generated using Gmsh. I am
stuck at a very basic level. For example using example 3 from libmesh
'Examples' gives the following output from
equation_systems.print_info(); :
Mesh Information:
mesh_dimension()=2
spatial_dimension()=3
n_nodes()=961
n_local_nodes()=961
n_elem()=225
n_local_elem()=225
n_active_elem()=225
n_subdomains()=1
n_processors()=1
processor_id()=0
EquationSystems
n_systems()=1
System "Poisson"
Type "LinearImplicit"
Variables="u"
Finite Element Types="LAGRANGE", "JACOBI_20_00"
Infinite Element Mapping="CARTESIAN"
Approximation Orders="SECOND", "THIRD"
n_dofs()=961
n_local_dofs()=961
n_constrained_dofs()=0
n_vectors()=1
while reading a different mesh generated using Gmsh file gives the following:
Mesh Information:
mesh_dimension()=2
spatial_dimension()=3
n_nodes()=2000
n_local_nodes()=0
n_elem()=1881
n_local_elem()=0
n_active_elem()=1881
n_subdomains()=1
n_processors()=1
processor_id()=0
EquationSystems
n_systems()=1
System "Poisson"
Type "LinearImplicit"
Variables="u"
Finite Element Types="LAGRANGE", "JACOBI_20_00"
Infinite Element Mapping="CARTESIAN"
Approximation Orders="FIRST", "THIRD"
n_dofs()=0
n_local_dofs()=0
n_constrained_dofs()=0
n_vectors()=1
The mesh is read correctly. However, it does not display the number of
degrees of freedom. I would surmise that given the mesh (a structured
mesh with quadrilaterals) and the approximation order it ought to be
able to tell the number of degrees of freedom.
In hte code, I only replaced the libMesh mesh generation in example 3
with the line
GmshIO(mesh).read("gmsh_ex3.msh");
Further the above errors are with first order approximation. If I use
second order:
equation_systems.get_system("Poisson").add_variable("u", SECOND);
Then I receive the following error message:
[0] src/fe/fe_lagrange.C, line 632, compiled Mar 2 2011 at 09:35:54
terminate called after throwing an instance of 'libMesh::LogicError'
what(): Error in libMesh internal logic
Clearly I am missing quite a lot here which would be obvious to Gmsh
users. I suspect other commands are also needed but am having
difficulties on figuring out what they are.
Also the mesh was created from the following .geo Gmsh code:
lc = 0.1;
Point(1) = {0,1,0,lc};
Point(2) = {10,1,0,lc};
Point(3) = {10,1,0,lc};
Point(4) = {0,1,0,lc};
Line(1) = {1,2};
Line(2) = {2,3};
Line(3) = {3,4};
Line(4) = {4,1};
Line Loop(1) = {1,2,3,4};
Plane Surface(1) = {1};
Transfinite Line{1,3} = 100;
Transfinite Line{2,4} = 20;
Transfinite Surface{1} = {1,2,3,4};
Recombine Surface{1};
Mesh.Smoothing = 100;
MyLine1 = 0;
MyLine2 = 1;
MyLine3 = 2;
MyLine4 = 3;
Physical Line(MyLine1) = {1};
Physical Line(MyLine2) = {2};
Physical Line(MyLine3) = {3};
Physical Line(MyLine4) = {4};
Physical Surface(30) = {1};
