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;
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()
const;
111 bool find_a_projected_point(
const base_node &pt, base_node &ptr_proj,
116 const base_node &ptr)
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;
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;
152 scalar_type &meang)
const;
157 dal::bit_vector blocked_dofs_,
160 { DAL_STORED_OBJECT_DEBUG_DESTROYED(
this,
"Projected fem"); }
175 dal::bit_vector blocked_dofs = dal::bit_vector(),
176 bool store_val =
true);
Inversion of geometric transformations.
Simple implementation of a KD-tree.
does the inversion of the geometric transformation for a given convex
Balanced tree over a set of points.
Deal with interdependencies of objects.
structure passed as the argument of fem interpolation functions.
Describe a finite element method linked to a mesh.
Describe an integration method linked to a mesh.
structure used to hold a set of convexes and/or convex faces.
FEM which interpolates the projection of a mesh_fem on a different mesh.
mesh_region projected_target_region() const
faces and convexes from the target region that contain at least one Gauss point that is projected by ...
void hess_base_value(const base_node &, base_tensor &) const
Give the value of all hessians (on ref.
virtual size_type nb_dof(size_type cv) const
Number of degrees of freedom.
void real_base_value(const fem_interpolation_context &c, base_tensor &t, bool=true) const
Give the value of all components of the base functions at the current point of the fem_interpolation_...
dal::bit_vector projected_convexes() const
return the list of convexes of the projected mesh_fem which contain at least one gauss point (should ...
void gauss_pts_stats(unsigned &ming, unsigned &maxg, scalar_type &meang) const
return the min/max/mean number of gauss points in the convexes of the projected mesh_fem
void grad_base_value(const base_node &, base_tensor &) const
Give the value of all gradients (on ref.
virtual bgeot::pconvex_ref ref_convex(size_type cv) const
Return the convex of the reference element.
void real_hess_base_value(const fem_interpolation_context &, base_tensor &, bool=true) const
Give the hessian of all components of the base functions at the current point of the fem_interpolatio...
virtual const bgeot::convex< base_node > & node_convex(size_type cv) const
Gives the convex representing the nodes on the reference element.
virtual void update_from_context(void) const
this function has to be defined and should update the object when the context is modified.
void base_value(const base_node &, base_tensor &) const
Give the value of all components of the base functions at the point x of the reference element.
void real_grad_base_value(const fem_interpolation_context &c, base_tensor &t, bool=true) const
Give the gradient of all components of the base functions at the current point of the fem_interpolati...
Base class for finite element description.
Definition of the finite element methods.
Define the getfem::mesh_fem class.
Define the getfem::mesh_im class (integration of getfem::mesh_fem).
std::shared_ptr< const getfem::virtual_fem > pfem
type of pointer on a fem description
gmm::uint16_type short_type
used as the common short type integer in the library
size_t size_type
used as the common size type in the library
void del_stored_object(const pstatic_stored_object &o, bool ignore_unstored)
Delete an object and the object which depend on it.
GEneric Tool for Finite Element Methods.
void del_projected_fem(pfem pf)
release a projected fem
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.