From: Rochan Upadhyay <u.rochan@gm...>  20110823 17:15:35

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}; 