GetFEM++
5.3
|
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 mesh & | linked_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 | |
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.
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 |
||
) |
me | the level-set. |
integrate_where | : choose between INTEGRATE_ALL, INTEGRATE_BOUNDARY, INTEGRATE_INSIDE and INTEGRATE_OUTSIDE. |
reg | the integration method (for simplices) that will be used on the sub-simplices of convexes crossed by the levelset. |
sing | the (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.
|
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.
|
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.
|
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.