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.