Dear Yves, 

Thank your for you answer. 

You understand well ! I will proceed as you have described. Indeed, I had 2D 
elements in 3D inside the mesh... 

Best regards; 

Antoine 

----- Le 24 Juil 17, à 8:39, Yves Renard <[email protected]> a écrit : 

> Dear Antoine,

> If I understand well, you store some n-1 dimensional elements (i.e.
> two-dimensional elements in 3D here) in order to describe a boundary. This is
> not the strategy used in GetFEM meshes.
> A boundary region in GetFEM is just a list of volumic elements with the face
> number. So, in order to define a boundary mesh region, you have to select the
> concerned volumic elements and detect which face is concerned. GetFEM supports
> n-1 dimensional elements, but more in the aim to define some weak formulation
> term on them, for instance to define plate or shell elements.

> Best regards,

> Yves.

> ----- Original Message -----
> From: "Antoine Mazuyer" <[email protected]>
> To: [email protected]
> Sent: Sunday, July 23, 2017 6:12:13 PM
> Subject: [Getfem-users] Normal definition for surfaces ?

> Hello getfem users,

> I use getfem in my homemade software to solve Elasticity problems on
> geological models, on which I already have a mesh in my own data structure

> To do such things, I loop on the vertices, on the cells, and on the
> facets of my original mesh and I
> use the getfem API to create the getfem::mesh. Each facets and each
> cells belongs to a region.

> I have no problem to use the getfem solver with only dirichlet
> conditions, but when it comes to Neumann Conditions, following
> http://getfem.org/userdoc/model_source_term.html?highlight=neumann, I
> have an exception:

> | o-[Exception ] Error: Error in getfem_generic_assembly.cc, line
> 2890 :
> | Invalid outward unit normal vector. Possible
> reasons: not on boundary or transformation failed.

> \__________________________________________________________________________________________________________

> I think the problem comes from my mesh definition, it seems that getfem
> could not get the normal vector of my facets...

> Here is a sample code of how I create the surfaces of my model

> virtual void add_boundary_elements()
> {
> const RINGMesh::GeoModelMeshPolygons& geomodel_mesh_polygons =
> geomodel_.mesh.polygons;
> for( int triangle_id = 0; triangle_id <
> geomodel_mesh_polygons.nb();
> triangle_id++ ) {
> getfem::size_type getfem_triangle_id = add_triangle(
> geomodel_mesh_polygons.vertex( triangle_id, 0 ),
> geomodel_mesh_polygons.vertex( triangle_id, 1 ),
> geomodel_mesh_polygons.vertex( triangle_id, 2 ) );
> region(
> geomodel_mesh_polygons.surface( triangle_id )
> + geomodel_.nb_regions() ).add(
> getfem_triangle_id );
> }
> }

> I don't think it is a problem coming from my region definitions, because
> I use it to easily solve dirichlet problems....

> Thank you in advance for you answers !

Reply via email to