18 #ifndef GENERIC_FIELD_IMPL_HH_ 19 #define GENERIC_FIELD_IMPL_HH_ 37 template <
int spacedim>
40 region_id.
name(
"region_id");
44 RegionSet all_regions=mesh.region_db().get_region_set(
"ALL");
45 for(
Region reg : all_regions) {
46 auto field_algo=std::make_shared<FieldConstant<spacedim, DoubleScalar>>();
47 field_algo->set_value(reg.id());
56 template <
int spacedim>
66 std::shared_ptr<DiscreteSpace> ds = std::make_shared<EqualOrderDiscreteSpace>( &mesh, &fe0, &fe1, &fe2, &fe3);
68 std::shared_ptr<DOFHandlerMultiDim> dh = dh_par.
sequential();
70 auto field_subdomain_data = mesh.get_part()->subdomain_id_field_data();
75 for (
auto cell : dh->own_range()) {
76 cell.get_dof_indices(indices);
77 (*data_vec)[ indices[0] ] = (*field_subdomain_data)[i_ele];
80 std::shared_ptr< FieldFE<spacedim, DoubleScalar> > field_ptr = std::make_shared< FieldFE<spacedim, DoubleScalar> >();
81 field_ptr->set_fe_data(dh, &map1, &map2, &map3, data_vec);
84 subdomain.
name(
"subdomain");
89 mesh.region_db().get_region_set(
"ALL"),
Class MappingP1 implements the affine transformation of the unit cell onto the actual cell...
std::shared_ptr< DOFHandlerMultiDim > sequential()
Returns sequential version of the current dof handler.
static auto subdomain(Mesh &mesh) -> IndexField
Declaration of class which handles the ordering of degrees of freedom (dof) and mappings between loca...
Class template representing a field with values dependent on: point, element, and region...
void distribute_dofs(std::shared_ptr< DiscreteSpace > ds)
Distributes degrees of freedom on the mesh needed for the given discrete space.
Fields computed from the mesh data.
FieldCommon & units(const UnitSI &units)
Set basic units of the field.
Definitions of basic Lagrangean finite elements with polynomial shape functions.
static auto region_id(Mesh &mesh) -> IndexField
Provides the numbering of the finite element degrees of freedom on the computational mesh...
Declaration of class which provides the finite element for every mesh cell.
void set_field(const RegionSet &domain, FieldBasePtr field, double time=0.0)
FieldCommon & name(const string &name)
void set_mesh(const Mesh &mesh) override
static UnitSI & dimensionless()
Returns dimensionless unit.
#define ASSERT_EQ(a, b)
Definition of comparative assert macro (EQual)