40 #ifndef GETFEM_MESH_FEM_PRODUCT_H__
41 #define GETFEM_MESH_FEM_PRODUCT_H__
47 class fem_product :
public virtual_fem {
50 dal::bit_vector enriched_dof1;
55 const dal::bit_vector &nn)
56 : cv(i), xfem_index(xfi), enriched_dof1(nn)
57 { pfems[0] = pf1_; pfems[1] = pf2_; init(); }
60 void base_value(
const base_node &x, base_tensor &t)
const;
61 void grad_base_value(
const base_node &x, base_tensor &t)
const;
62 void hess_base_value(
const base_node &x, base_tensor &t)
const;
64 void real_base_value(
const fem_interpolation_context& c,
65 base_tensor &t,
bool =
true)
const;
66 void real_grad_base_value(
const fem_interpolation_context& c,
67 base_tensor &t,
bool =
true)
const;
68 void real_hess_base_value(
const fem_interpolation_context& c,
69 base_tensor &t,
bool =
true)
const;
74 class mesh_fem_product :
public mesh_fem {
78 mutable std::vector<pfem> build_methods;
79 mutable bool is_adapted;
81 dal::bit_vector enriched_dof;
82 void clear_build_methods();
86 void update_from_context(
void)
const { is_adapted =
false; touch(); }
90 {
return mesh_fem::memsize(); }
92 mesh_fem_product(
const mesh_fem &me1,
const mesh_fem &me2)
94 { is_adapted =
false; xfem_index = reserve_xfem_index(); }
95 void set_enrichment(
const dal::bit_vector &nn)
96 { enriched_dof = nn; adapt(); }
98 ~mesh_fem_product() { clear_build_methods(); }
const mesh & linked_mesh() const
Return a reference to the underlying mesh.
mesh_fem(const mesh &me, dim_type Q=1)
Build a new mesh_fem.
Define the getfem::mesh_fem class.
void clear(L &l)
clear (fill with zeros) a vector or matrix.
std::shared_ptr< const getfem::virtual_fem > pfem
type of pointer on a fem description
size_t size_type
used as the common size type in the library
GEneric Tool for Finite Element Methods.