GetFEM++  5.3
getfem::mesh_im_level_set Class Reference

Describe an adaptable integration method linked to a mesh cut by a level set. More...

#include <getfem_mesh_im_level_set.h>

Inherits getfem::mesh_im.

Public Member Functions

void update_from_context (void) const
 this function has to be defined and should update the object when the context is modified. More...
 
void adapt (void)
 Apply the adequate integration methods. More...
 
void set_simplex_im (pintegration_method reg, pintegration_method sing=0)
 Set the specific integration methods. More...
 
 mesh_im_level_set (mesh_level_set &me, int integrate_where_=INTEGRATE_ALL, pintegration_method reg=0, pintegration_method sing=0)
 
virtual pintegration_method int_method_of_element (size_type cv) const
 return the integration method associated with an element (in no integration is associated, the function will crash! use the convex_index() of the mesh_im to check that a fem is associated to a given convex)
 
void set_level_set_boolean_operations (const std::string description)
 Set the boolean operation which define the integration domain when there is more than one levelset. More...
 
- Public Member Functions inherited from getfem::mesh_im
void set_auto_add (pintegration_method pim)
 Set the im for automatic addition of element option. More...
 
const dal::bit_vector & convex_index (void) const
 Get the set of convexes where an integration method has been assigned.
 
const meshlinked_mesh () const
 Give a reference to the linked mesh of type mesh.
 
void set_integration_method (size_type cv, pintegration_method pim)
 Set the integration method of a convex. More...
 
void set_integration_method (const dal::bit_vector &cvs, pintegration_method pim)
 Set the integration method on all the convexes of indexes in bv, which is of type dal::bit_vector.
 
void set_integration_method (pintegration_method ppi)
 shortcut for More...
 
void set_integration_method (const dal::bit_vector &cvs, dim_type im_degree)
 Set an approximate integration method chosen to be exact for polynomials of degree 'im_degree'.
 
void set_integration_method (dim_type im_degree)
 Set an approximate integration method chosen to be exact for polynomials of degree 'im_degree' on the whole mesh.
 
void read_from_file (std::istream &ist)
 Read the mesh_im from a stream. More...
 
void read_from_file (const std::string &name)
 Read the mesh_im from a file. More...
 
void write_to_file (std::ostream &ost) const
 Write the mesh_im to a stream. More...
 
void write_to_file (const std::string &name, bool with_mesh=false) const
 Write the mesh_im to a file. More...
 
- Public Member Functions inherited from getfem::context_dependencies
bool context_check () const
 return true if update_from_context was called
 

Detailed Description

Describe an adaptable integration method linked to a mesh cut by a level set.

It is possible to choose to integrate over the whole mesh, or to select integration on the "inside" (the intersection of the negative parts of the levelsets, or any other union, intersection etc of the levelset negative parts), the "outside", or just the levelset boundary.

Definition at line 56 of file getfem_mesh_im_level_set.h.

Constructor & Destructor Documentation

getfem::mesh_im_level_set::mesh_im_level_set ( mesh_level_set me,
int  integrate_where_ = INTEGRATE_ALL,
pintegration_method  reg = 0,
pintegration_method  sing = 0 
)
Parameters
methe level-set.
integrate_where: choose between INTEGRATE_ALL, INTEGRATE_BOUNDARY, INTEGRATE_INSIDE and INTEGRATE_OUTSIDE.
regthe integration method (for simplices) that will be used on the sub-simplices of convexes crossed by the levelset.
singthe (optional) integration method to use on the crack tips (i.e. when the levelset has a secondary level set), this is generally an IM_QUASI_POLAR method as it provides a good integration of singular XFEM functions.

Definition at line 57 of file getfem_mesh_im_level_set.cc.

Member Function Documentation

void getfem::mesh_im_level_set::update_from_context ( void  ) const
virtual

this function has to be defined and should update the object when the context is modified.

Reimplemented from getfem::mesh_im.

Definition at line 28 of file getfem_mesh_im_level_set.cc.

void getfem::mesh_im_level_set::adapt ( void  )

Apply the adequate integration methods.

Definition at line 408 of file getfem_mesh_im_level_set.cc.

void getfem::mesh_im_level_set::set_simplex_im ( pintegration_method  reg,
pintegration_method  sing = 0 
)
inline

Set the specific integration methods.

see the constructor documentation for more details.

Definition at line 109 of file getfem_mesh_im_level_set.h.

void getfem::mesh_im_level_set::set_level_set_boolean_operations ( const std::string  description)
inline

Set the boolean operation which define the integration domain when there is more than one levelset.

the syntax is very simple, for example if there are 3 different levelset,

"a*b*c" is the intersection of the domains defined by each levelset (this is the default behaviour if this function is not called).

"a+b+c" is the union of their domains.

"c-(a+b)" is the domain of the third levelset minus the union of the domains of the two others.

"!a" is the complementary of the domain of a (i.e. it is the domain where a(x)>0)

The first levelset is always referred to with "a", the second with "b", and so on..

Definition at line 173 of file getfem_mesh_im_level_set.h.


The documentation for this class was generated from the following files: