38 #ifndef GETFEM_PROJECTED_FEM_H__ 39 #define GETFEM_PROJECTED_FEM_H__ 49 struct gausspt_projection_data {
60 std::map<size_type,size_type> local_dof;
62 gausspt_projection_data() :
74 struct elt_projection_data {
77 std::map<size_type,gausspt_projection_data> gausspt;
78 std::vector<size_type> inddof;
79 pintegration_method pim;
80 elt_projection_data() : f(
short_type(-1)), nb_dof(0), pim(0) {}
91 dal::bit_vector blocked_dofs;
94 mutable std::map<size_type,elt_projection_data> elements;
97 mutable std::vector<size_type> ind_dof;
101 mutable base_tensor taux;
104 mutable base_matrix G;
105 mutable bgeot::pstored_point_tab pspt_override;
106 mutable bgeot::multi_index mi2, mi3;
107 mutable base_node ptref;
109 void build_kdtree(
void)
const;
111 bool find_a_projected_point(base_node pt, base_node &ptr_proj,
114 virtual void update_from_context(
void)
const;
116 const base_node &ptr)
const;
122 virtual bgeot::pconvex_ref ref_convex(
size_type cv)
const;
124 virtual bgeot::pstored_point_tab node_tab(
size_type)
const 125 {
return pspt_override; }
126 void base_value(
const base_node &, base_tensor &)
const;
127 void grad_base_value(
const base_node &, base_tensor &)
const;
128 void hess_base_value(
const base_node &, base_tensor &)
const;
130 base_tensor &t,
bool =
true)
const;
132 base_tensor &t,
bool =
true)
const;
134 base_tensor &,
bool =
true)
const;
137 base_node &normal, scalar_type &gap)
const;
138 void projection_data(
const base_node &pt,
139 base_node &normal, scalar_type &gap)
const;
143 dal::bit_vector projected_convexes()
const;
147 void gauss_pts_stats(
unsigned &ming,
unsigned &maxg,
148 scalar_type &meang)
const;
153 dal::bit_vector blocked_dofs_,
156 { DAL_STORED_OBJECT_DEBUG_DESTROYED(
this,
"Projected fem"); }
171 dal::bit_vector blocked_dofs = dal::bit_vector(),
172 bool store_val =
true);
pfem new_projected_fem(const mesh_fem &mf_source, const mesh_im &mim_target, size_type rg_source_=size_type(-1), size_type rg_target_=size_type(-1), dal::bit_vector blocked_dofs=dal::bit_vector(), bool store_val=true)
create a new projected FEM.
FEM which interpolates the projection of a mesh_fem on a different mesh.
structure used to hold a set of convexes and/or convex faces.
Base class for finite element description.
Define the getfem::mesh_im class (integration of getfem::mesh_fem).
Define the getfem::mesh_fem class.
does the inversion of the geometric transformation for a given convex
void del_stored_object(const pstatic_stored_object &o, bool ignore_unstored)
Delete an object and the object which depend on it.
Describe an integration method linked to a mesh.
Balanced tree over a set of points.
size_t size_type
used as the common size type in the library
Inversion of geometric transformations.
structure passed as the argument of fem interpolation functions.
void del_projected_fem(pfem pf)
release a projected fem
Deal with interdependencies of objects.
GEneric Tool for Finite Element Methods.
std::shared_ptr< const getfem::virtual_fem > pfem
type of pointer on a fem description
Describe a finite element method linked to a mesh.
gmm::uint16_type short_type
used as the common short type integer in the library
Definition of the finite element methods.
Simple implementation of a KD-tree.