41 #ifndef GETFEM_MESH_FEM_PRODUCT_H__ 42 #define GETFEM_MESH_FEM_PRODUCT_H__ 48 class fem_product :
public virtual_fem {
51 dal::bit_vector enriched_dof1;
56 const dal::bit_vector &nn)
57 : cv(i), xfem_index(xfi), enriched_dof1(nn)
58 { pfems[0] = pf1_; pfems[1] = pf2_; init(); }
61 void base_value(
const base_node &x, base_tensor &t)
const;
62 void grad_base_value(
const base_node &x, base_tensor &t)
const;
63 void hess_base_value(
const base_node &x, base_tensor &t)
const;
65 void real_base_value(
const fem_interpolation_context& c,
66 base_tensor &t,
bool =
true)
const;
67 void real_grad_base_value(
const fem_interpolation_context& c,
68 base_tensor &t,
bool =
true)
const;
69 void real_hess_base_value(
const fem_interpolation_context& c,
70 base_tensor &t,
bool =
true)
const;
75 class mesh_fem_product :
public mesh_fem {
77 const mesh_fem &mf1, &mf2;
79 mutable std::vector<pfem> build_methods;
80 mutable bool is_adapted;
82 dal::bit_vector enriched_dof;
83 void clear_build_methods();
87 void update_from_context(
void)
const { is_adapted =
false; touch(); }
91 {
return mesh_fem::memsize(); }
93 mesh_fem_product(
const mesh_fem &me1,
const mesh_fem &me2)
94 : mesh_fem(me1.linked_mesh()), mf1(me1), mf2(me2)
95 { is_adapted =
false; xfem_index = reserve_xfem_index(); }
96 void set_enrichment(
const dal::bit_vector &nn)
97 { enriched_dof = nn; adapt(); }
99 ~mesh_fem_product() { clear_build_methods(); }
Define the getfem::mesh_fem class.
size_t size_type
used as the common size type in the library
GEneric Tool for Finite Element Methods.
std::shared_ptr< const getfem::virtual_fem > pfem
type of pointer on a fem description
void clear(L &l)
clear (fill with zeros) a vector or matrix.