38 #ifndef GETFEM_MESH_IM_LEVEL_SET_H__
39 #define GETFEM_MESH_IM_LEVEL_SET_H__
58 pintegration_method regular_simplex_pim;
59 pintegration_method base_singular_pim;
65 dal::bit_vector ignored_im;
69 std::vector<pintegration_method> build_methods;
71 mutable bool is_adapted;
74 void clear_build_methods();
75 void build_method_of_convex(
size_type cv);
80 std::string ls_csg_description;
91 bool2 is_point_in_selected_area
92 (
const std::vector<pmesher_signed_distance> &mesherls0,
93 const std::vector<pmesher_signed_distance> &mesherls1,
const base_node& P);
94 bool2 is_point_in_selected_area2
95 (
const std::vector<pmesher_signed_distance> &mesherls0,
96 const std::vector<pmesher_signed_distance> &mesherls1,
const base_node& P);
99 enum { INTEGRATE_INSIDE = 1, INTEGRATE_OUTSIDE = 2, INTEGRATE_ALL = 2+1,
100 INTEGRATE_BOUNDARY = 4};
110 pintegration_method sing = 0) {
111 regular_simplex_pim = reg;
112 base_singular_pim = sing;
115 int location()
const {
return integrate_where; }
118 return mesh_im::memsize();
121 void init_with_mls(mesh_level_set &me,
122 int integrate_where_ = INTEGRATE_ALL,
123 pintegration_method reg = 0,
124 pintegration_method sing = 0);
141 int integrate_where_ = INTEGRATE_ALL,
142 pintegration_method reg = 0,
143 pintegration_method sing = 0);
174 ls_csg_description = description;
177 base_small_vector &vec)
const;
188 pintegration_method segment_pim;
194 dal::bit_vector ignored_im;
198 std::vector<pintegration_method> build_methods;
200 mutable bool is_adapted;
203 void clear_build_methods();
204 void build_method_of_convex(
size_type cv,
mesh &global_intersection,
209 enum { INTEGRATE_INSIDE = 1, INTEGRATE_OUTSIDE = 2, INTEGRATE_ALL = 2+1,
210 INTEGRATE_BOUNDARY = 4};
220 { segment_pim = pim; }
223 return mesh_im::memsize();
226 void init_with_mls(mesh_level_set &me,
228 pintegration_method pim = 0);
230 mesh_im_cross_level_set(mesh_level_set &me,
232 pintegration_method pim = 0);
233 mesh_im_cross_level_set(
void);
237 ~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.