Go to the documentation of this file.
49 template <
int spacedim,
class Value>
73 DECLARE_EXCEPTION( ExcInvalidElemeDim, <<
"Dimension of element in target mesh must be 0, 1 or 2! elm.idx() = " << EI_ElemIdx::val <<
".\n" );
75 <<
"FieldFE " << EI_Field::qval <<
" on region " << EI_Region::qval <<
" have invalid value .\n"
76 <<
"Provided by file " << EI_File::qval <<
" at element ID " << EI_ElemIdx::val <<
".\n"
77 <<
"Please specify in default_value key.\n");
162 void set_mesh(
const Mesh *mesh,
bool boundary_domain)
override;
256 template <
unsigned int dim>
260 unsigned int i_dof,
unsigned int i_qp)
263 for (
unsigned int c=0; c<Value::NRows_*Value::NCols_; ++c)
264 v(c/spacedim,c%spacedim) =
fe_values_[dim].shape_value_component(i_dof, i_qp, c);
265 if (Value::NRows_ == Value::NCols_)
271 template<
unsigned int dim>
273 auto fe_system_ptr = std::dynamic_pointer_cast<FESystem<dim>>(
dh_->ds()->fe()[
Dim<dim>{}] );
274 ASSERT(fe_system_ptr !=
nullptr).error(
"Wrong type, must be FESystem!\n");
275 this->
fe_item_[dim].comp_index_ = fe_system_ptr->function_space()->dof_indices()[block_index].component_offset;
276 this->
fe_item_[dim].range_begin_ = fe_system_ptr->fe_dofs(block_index)[0];
277 this->
fe_item_[dim].range_end_ = this->
fe_item_[dim].range_begin_ + fe_system_ptr->fe()[block_index]->n_dofs();
281 template<
unsigned int dim>
283 this->
fe_item_[dim].comp_index_ = 0;
284 this->
fe_item_[dim].range_begin_ = 0;
297 double get_scaled_value(
int i_cache_el,
unsigned int elm_idx,
const std::string ®ion_name, RegionValueErr &actual_compute_region_error);
301 std::shared_ptr<DOFHandlerMultiDim>
dh_;
360 template <
int spacedim,
class Value>
361 std::shared_ptr<FieldFE<spacedim, Value> >
create_field_fe(std::shared_ptr<DOFHandlerMultiDim> dh,
366 std::shared_ptr< FieldFE<spacedim, Value> > field_ptr = std::make_shared< FieldFE<spacedim, Value> >();
368 field_ptr->set_fe_data( dh, dh->create_vector(), block_index );
370 field_ptr->set_fe_data( dh, *
vec, block_index );
377 template <
int spacedim,
class Value>
381 std::shared_ptr<DOFHandlerMultiDim> dh_par = std::make_shared<DOFHandlerMultiDim>(mesh);
382 std::shared_ptr<DiscreteSpace> ds = std::make_shared<EqualOrderDiscreteSpace>( &mesh, fe);
383 dh_par->distribute_dofs(ds);
385 return create_field_fe<spacedim,Value>(dh_par);
unsigned int data_size() const
std::string field_name_
field name read from input
std::shared_ptr< EquivalentMeshMap > source_target_mesh_elm_map_
Maps element indices from computational mesh to the source (data).
FieldFlag::Flags flags_
Field flags.
FieldFE(unsigned int n_comp=0)
std::shared_ptr< DOFHandlerMultiDim > conc_dof_handler_
TYPEDEF_ERR_INFO(EI_Field, std::string)
Declaration of exception.
unsigned int range_begin_
void local_to_ghost_data_scatter_end()
Call end scatter functions (local to ghost) on data vector.
FEValueHandler< 0, spacedim, Value > value_handler0_
Value handler that allows get value of 0D elements.
void cache_update(FieldValueCache< typename Value::element_type > &data_cache, ElementCacheMap &cache_map, unsigned int region_patch_idx) override
RegionValueErr()
Default constructor, sets valid region.
Armor::ArmaMat< typename Value::element_type, Value::NRows_, Value::NCols_ > handle_fe_shape(unsigned int dim, unsigned int i_dof, unsigned int i_qp)
static const int registrar
Registrar of class to factory.
Directing class of FieldValueCache.
static constexpr bool value
ElementDataCache< double >::CacheData input_data_cache_
Input ElementDataCache is stored in set_time and used in all evaluation and interpolation methods.
Dedicated class for storing path to input and output files.
@ equivalent_msh
equivalent mesh (default value)
Input::Record in_rec_
Accessor to Input::Record.
std::vector< RegionValueErr > region_value_err_
Set holds data of valid / invalid element values on all regions.
void local_to_ghost_data_scatter_begin()
Call begin scatter functions (local to ghost) on data vector.
Declaration of class which handles the ordering of degrees of freedom (dof) and mappings between loca...
bool boundary_domain_
Is set in set_mesh method. Value true means, that we accept only boundary element accessors in the va...
Space< spacedim >::Point Point
Class FESystem for compound finite elements.
VectorMPI data_vec_
Store data of Field.
void interpolate_gauss()
Interpolate data (use Gaussian distribution) over all elements of target mesh.
void cache_reinit(const ElementCacheMap &cache_map) override
Definitions of basic Lagrangean finite elements with polynomial shape functions.
virtual void init_from_input(const Input::Record &rec, const struct FieldAlgoBaseInitData &init_data)
std::shared_ptr< DOFHandlerMultiDim > get_dofhandler() const
MixedPtr< FiniteElement > fe_
std::shared_ptr< DOFHandlerMultiDim > dh_
DOF handler object.
void calculate_element_values()
Calculate data of equivalent_mesh interpolation or native data on input over all elements of target m...
static const Input::Type::Selection & get_interp_selection_input_type()
const VectorMPI & vec() const
void set_mesh(const Mesh *mesh, bool boundary_domain) override
@ interp_p0
P0 interpolation (with the use of calculation of intersections)
double default_value_
Default value of element if not set in mesh data file.
FEValueHandler< 3, spacedim, Value > value_handler3_
Value handler that allows get value of 3D elements.
Helper struct stores data for initizalize descentants of FieldAlgorithmBase.
Representation of one time step..
Abstract class for description of finite elements.
Common abstract parent of all Field<...> classes.
DataInterpolation interpolation_
Specify type of FE data interpolation.
std::array< FEItem, 4 > fe_item_
Holds specific data of field evaluation over all dimensions.
OutputTime::DiscreteSpace discretization_
Specify section where to find the field data in input mesh file.
RegionValueErr(const std::string ®ion_name, unsigned int elm_id, double value)
Constructor, sets invalid region, element and value specification.
@ gauss_p0
P0 interpolation (with the use of Gaussian distribution)
std::shared_ptr< FieldBaseType > FieldBasePtr
void native_data_to_cache(ElementDataCache< double > &output_data_cache)
FEValueHandler< 2, spacedim, Value > value_handler2_
Value handler that allows get value of 2D elements.
FieldAlgorithmBase< spacedim, Value > FactoryBaseType
VectorMPI set_fe_data(std::shared_ptr< DOFHandlerMultiDim > dh, VectorMPI dof_values=VectorMPI::sequential(0), unsigned int block_index=FieldFE< spacedim, Value >::undef_uint)
void interpolate_intersection()
Interpolate data (use intersection library) over all elements of target mesh.
DECLARE_INPUT_EXCEPTION(ExcUndefElementValue,<< "FieldFE "<< EI_Field::qval<< " on region "<< EI_Region::qval<< " have invalid value .\n"<< "Provided by file "<< EI_File::qval<< " at element ID "<< EI_ElemIdx::val<< ".\n"<< "Please specify in default_value key.\n")
FieldAlgorithmBase< spacedim, Value >::Point Point
FilePath reader_file_
mesh reader file
Base class for Mesh and BCMesh.
static const Input::Type::Record & get_input_type()
Implementation.
std::shared_ptr< FieldFE< spacedim, Value > > create_field_fe(std::shared_ptr< DOFHandlerMultiDim > dh, VectorMPI *vec=nullptr, unsigned int block_index=FieldFE< spacedim, Value >::undef_uint)
void fill_fe_system_data(unsigned int block_index)
std::vector< FEValues< spacedim > > fe_values_
List of FEValues objects of dimensions 0,1,2,3 used for value calculation.
DECLARE_EXCEPTION(ExcInvalidElemeDim,<< "Dimension of element in target mesh must be 0, 1 or 2! elm.idx() = "<< EI_ElemIdx::val<< ".\n")
static VectorMPI sequential(unsigned int size)
static const Input::Type::Selection & get_disc_selection_input_type()
@ identic_msh
identical mesh
bool set_time(const TimeStep &time) override
static const unsigned int undef_uint
Field< spacedim, Value >::FieldBasePtr create_field(Input::Record rec, const FieldCommon &field) override
virtual ~FieldFE()
Destructor.
Base class for quadrature rules on simplices in arbitrary dimensions.
void make_dof_handler(const MeshBase *mesh)
Create DofHandler object.
typename arma::Mat< Type >::template fixed< nr, nc > ArmaMat
double get_scaled_value(int i_cache_el, unsigned int elm_idx, const std::string ®ion_name, RegionValueErr &actual_compute_region_error)
Field< spacedim, Value >::FactoryBase FieldFactoryBaseType
NativeFactory(unsigned int index, std::shared_ptr< DOFHandlerMultiDim > conc_dof_handler, VectorMPI dof_vector=VectorMPI::sequential(0))
Constructor.
FEValueHandler< 1, spacedim, Value > value_handler1_
Value handler that allows get value of 1D elements.
Quadrature init_quad(std::shared_ptr< EvalPoints > eval_points)
Initialize FEValues object of given dimension.
Implementation of range helper class.