37 #ifndef GETFEM_MESH_IM_LEVEL_SET_H__
38 #define GETFEM_MESH_IM_LEVEL_SET_H__
57 pintegration_method regular_simplex_pim;
58 pintegration_method base_singular_pim;
64 dal::bit_vector ignored_im;
68 std::vector<pintegration_method> build_methods;
70 mutable bool is_adapted;
73 void clear_build_methods();
74 void build_method_of_convex(
size_type cv);
79 std::string ls_csg_description;
90 bool2 is_point_in_selected_area
91 (
const std::vector<pmesher_signed_distance> &mesherls0,
92 const std::vector<pmesher_signed_distance> &mesherls1,
const base_node& P);
93 bool2 is_point_in_selected_area2
94 (
const std::vector<pmesher_signed_distance> &mesherls0,
95 const std::vector<pmesher_signed_distance> &mesherls1,
const base_node& P);
98 enum { INTEGRATE_INSIDE = 1, INTEGRATE_OUTSIDE = 2, INTEGRATE_ALL = 2+1,
99 INTEGRATE_BOUNDARY = 4};
109 pintegration_method sing = 0) {
110 regular_simplex_pim = reg;
111 base_singular_pim = sing;
114 int location()
const {
return integrate_where; }
117 return mesh_im::memsize();
120 void init_with_mls(mesh_level_set &me,
121 int integrate_where_ = INTEGRATE_ALL,
122 pintegration_method reg = 0,
123 pintegration_method sing = 0);
140 int integrate_where_ = INTEGRATE_ALL,
141 pintegration_method reg = 0,
142 pintegration_method sing = 0);
173 ls_csg_description = description;
176 base_small_vector &vec)
const;
187 pintegration_method segment_pim;
193 dal::bit_vector ignored_im;
197 std::vector<pintegration_method> build_methods;
199 mutable bool is_adapted;
202 void clear_build_methods();
203 void build_method_of_convex(
size_type cv,
mesh &global_intersection,
208 enum { INTEGRATE_INSIDE = 1, INTEGRATE_OUTSIDE = 2, INTEGRATE_ALL = 2+1,
209 INTEGRATE_BOUNDARY = 4};
219 { segment_pim = pim; }
222 return mesh_im::memsize();
225 void init_with_mls(mesh_level_set &me,
227 pintegration_method pim = 0);
229 mesh_im_cross_level_set(mesh_level_set &me,
231 pintegration_method pim = 0);
232 mesh_im_cross_level_set(
void);
236 ~mesh_im_cross_level_set() { clear_build_methods(); }
Balanced tree of n-dimensional rectangles.
structure passed as the argument of fem interpolation functions.
Describe an adaptable integration method linked to a mesh cut by at least two level sets on the inter...
virtual pintegration_method int_method_of_element(size_type cv) const
return the integration method associated with an element (in no integration is associated,...
void update_from_context(void) const
this function has to be defined and should update the object when the context is modified.
void set_segment_im(pintegration_method pim)
Set the specific integration methods.
void adapt(void)
Apply the adequate integration methods.
Describe an adaptable integration method linked to a mesh cut by a level set.
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.
void adapt(void)
Apply the adequate integration methods.
void set_simplex_im(pintegration_method reg, pintegration_method sing=0)
Set the specific integration methods.
virtual pintegration_method int_method_of_element(size_type cv) const
return the integration method associated with an element (in no integration is associated,...
void update_from_context(void) const
this function has to be defined and should update the object when the context is modified.
mesh_im_level_set(mesh_level_set &me, int integrate_where_=INTEGRATE_ALL, pintegration_method reg=0, pintegration_method sing=0)
Describe an integration method linked to a mesh.
Keep informations about a mesh crossed by level-sets.
Describe a mesh (collection of convexes (elements) and points).
Define the getfem::mesh_im class (integration of getfem::mesh_fem).
Keep informations about a mesh crossed by level-sets.
size_t size_type
used as the common size type in the library
GEneric Tool for Finite Element Methods.