37 #ifndef GETFEM_PROJECTED_FEM_H__
38 #define GETFEM_PROJECTED_FEM_H__
48 struct gausspt_projection_data {
59 std::map<size_type,size_type> local_dof;
61 gausspt_projection_data() :
73 struct elt_projection_data {
76 std::map<size_type,gausspt_projection_data> gausspt;
77 std::vector<size_type> inddof;
78 pintegration_method pim;
90 dal::bit_vector blocked_dofs;
93 mutable std::map<size_type,elt_projection_data> elements;
96 mutable std::vector<size_type> ind_dof;
100 mutable base_tensor taux;
103 mutable base_matrix G;
104 mutable bgeot::pstored_point_tab pspt_override;
105 mutable bgeot::multi_index mi2, mi3;
106 mutable base_node ptref;
108 void build_kdtree()
const;
110 bool find_a_projected_point(
const base_node &pt, base_node &ptr_proj,
115 const base_node &ptr)
const;
123 virtual bgeot::pstored_point_tab node_tab(
size_type)
const
124 {
return pspt_override; }
125 void base_value(
const base_node &, base_tensor &)
const;
129 base_tensor &t,
bool =
true)
const;
131 base_tensor &t,
bool =
true)
const;
133 base_tensor &,
bool =
true)
const;
136 base_node &normal, scalar_type &gap)
const;
137 void projection_data(
const base_node &pt,
138 base_node &normal, scalar_type &gap)
const;
151 scalar_type &meang)
const;
156 dal::bit_vector blocked_dofs_,
159 { DAL_STORED_OBJECT_DEBUG_DESTROYED(
this,
"Projected fem"); }
174 dal::bit_vector blocked_dofs = dal::bit_vector(),
175 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.