Flow123d  release_2.2.0-23-g01927c6
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
FieldElementwise< spacedim, Value > Class Template Reference

#include <field_elementwise.hh>

Inheritance diagram for FieldElementwise< spacedim, Value >:
Inheritance graph
[legend]
Collaboration diagram for FieldElementwise< spacedim, Value >:
Collaboration graph
[legend]

Public Types

typedef FieldAlgorithmBase< spacedim, Value >::Point Point
 
typedef FieldAlgorithmBase< spacedim, Value > FactoryBaseType
 
- Public Types inherited from FieldAlgorithmBase< spacedim, Value >
typedef Space< spacedim >::Point Point
 

Public Member Functions

 FieldElementwise (unsigned int n_comp=0)
 
 FieldElementwise (std::shared_ptr< std::vector< typename Value::element_type > > data, unsigned int n_components)
 
virtual void init_from_input (const Input::Record &rec, const struct FieldAlgoBaseInitData &init_data) override
 
bool set_time (const TimeStep &time) override
 
void set_mesh (const Mesh *mesh, bool boundary_domain) override
 
Value::return_type const & value (const Point &p, const ElementAccessor< spacedim > &elm) override
 
void value_list (const std::vector< Point > &point_list, const ElementAccessor< spacedim > &elm, std::vector< typename Value::return_type > &value_list) override
 
virtual ~FieldElementwise ()
 
- Public Member Functions inherited from FieldAlgorithmBase< spacedim, Value >
 FieldAlgorithmBase (unsigned int n_comp=0)
 
void set_component_idx (unsigned int idx)
 
unsigned int n_comp () const
 
FieldResult field_result () const
 
virtual double next_change_time ()
 
virtual ~FieldAlgorithmBase ()
 

Static Public Member Functions

static const Input::Type::Recordget_input_type ()
 Implementation. More...
 
- Static Public Member Functions inherited from FieldAlgorithmBase< spacedim, Value >
static std::string template_name ()
 
static Input::Type::Abstractget_input_type ()
 
static const Input::Type::Instanceget_input_type_instance (Input::Type::Selection value_selection=Input::Type::Selection())
 
static const Input::Type::Recordget_field_algo_common_keys ()
 
static std::shared_ptr< FieldAlgorithmBase< spacedim, Value > > function_factory (const Input::AbstractRecord &rec, const struct FieldAlgoBaseInitData &init_data)
 

Private Member Functions

void scale_and_check_limits ()
 Multiply data_ with unit_conversion_coefficient_ and check limits of field. More...
 

Private Attributes

bool internal_raw_data
 
bool boundary_domain_
 
std::shared_ptr< std::vector< typename Value::element_type > > data_
 Raw buffer of n_entities rows each containing Value::size() doubles. More...
 
unsigned int n_entities_
 Number of rows in data_ buffer. More...
 
unsigned int n_components_
 Size of Value. More...
 
FilePath reader_file_
 
const Meshmesh_
 
std::string field_name_
 
Input::Record in_rec_
 Accessor to Input::Record. More...
 
UnitSIunit_si_
 
std::pair< double, double > limits_
 

Static Private Attributes

static const int registrar
 Registrar of class to factory. More...
 

Additional Inherited Members

- Static Public Attributes inherited from FieldAlgorithmBase< spacedim, Value >
static const unsigned int spacedim_ =spacedim
 
static constexpr bool is_enum_valued = boost::is_same<typename Value::element_type, FieldEnum>::value
 
- Protected Member Functions inherited from FieldAlgorithmBase< spacedim, Value >
void init_unit_conversion_coefficient (const Input::Record &rec, const struct FieldAlgoBaseInitData &init_data)
 Init value of unit_conversion_coefficient_ from input. More...
 
- Protected Attributes inherited from FieldAlgorithmBase< spacedim, Value >
TimeStep time_
 Actual time level; initial value is -infinity. More...
 
Value value_
 Last value, prevents passing large values (vectors) by value. More...
 
Value::return_type r_value_
 
FieldResult field_result_
 Indicator of particular values (zero, one) constant over space. More...
 
unsigned int component_idx_
 Specify if the field is part of a MultiField and which component it is. More...
 
double unit_conversion_coefficient_
 Coeficient of conversion of user-defined unit. More...
 

Detailed Description

template<int spacedim, class Value>
class FieldElementwise< spacedim, Value >

The simplest approximative Field. In future we want to replace it by pair: DofHandler + vector of dof values.

In current setting: This should implement mapping: (ElementAccessor.INDEX) -> value Currently INDEX is global index of element (any dimension, both bulk and boundary part). In future INDEX should probably consist of MESH_LEVEL (unique mesh, dimension, bulk/boundary, level of refinement) and INDEX within this level. We want to make memory optimization since usually field lives either on boundary or on bulk part and some bulk fields live only on some dimension(s). This can be achieved by two level indirection table of mesh_levelscontaining tables for indexes. We should test if the performance penalty is not to big.

Currently, we just use one vector for bulk and one for boundary elements.

TODO:

Definition at line 50 of file field_elementwise.hh.

Member Typedef Documentation

template<int spacedim, class Value >
typedef FieldAlgorithmBase<spacedim, Value> FieldElementwise< spacedim, Value >::FactoryBaseType

Definition at line 54 of file field_elementwise.hh.

template<int spacedim, class Value >
typedef FieldAlgorithmBase<spacedim, Value>::Point FieldElementwise< spacedim, Value >::Point

Definition at line 53 of file field_elementwise.hh.

Constructor & Destructor Documentation

template<int spacedim, class Value >
FieldElementwise< spacedim, Value >::FieldElementwise ( unsigned int  n_comp = 0)

Definition at line 57 of file field_elementwise.cc.

template<int spacedim, class Value >
FieldElementwise< spacedim, Value >::FieldElementwise ( std::shared_ptr< std::vector< typename Value::element_type > >  data,
unsigned int  n_components 
)

Alternative to previous constructor.

Definition at line 68 of file field_elementwise.cc.

template<int spacedim, class Value >
FieldElementwise< spacedim, Value >::~FieldElementwise ( )
virtual

Definition at line 222 of file field_elementwise.cc.

Member Function Documentation

template<int spacedim, class Value >
const Input::Type::Record & FieldElementwise< spacedim, Value >::get_input_type ( )
static

Implementation.

Definition at line 34 of file field_elementwise.cc.

template<int spacedim, class Value >
void FieldElementwise< spacedim, Value >::init_from_input ( const Input::Record rec,
const struct FieldAlgoBaseInitData init_data 
)
overridevirtual

Function can provide way to initialize itself from the input data.

TODO: make protected, should be called through function factory

Reimplemented from FieldAlgorithmBase< spacedim, Value >.

Definition at line 82 of file field_elementwise.cc.

template<int spacedim, class Value >
void FieldElementwise< spacedim, Value >::scale_and_check_limits ( )
private

Multiply data_ with unit_conversion_coefficient_ and check limits of field.

Definition at line 202 of file field_elementwise.cc.

Here is the caller graph for this function:

template<int spacedim, class Value >
void FieldElementwise< spacedim, Value >::set_mesh ( const Mesh mesh,
bool  boundary_domain 
)
overridevirtual

Has to be set before calling init_from_input. This also allocate and initialize internal buffer. Do nothing if mesh is already set.

See also description of the FieldBase<...>::set_mesh.

Reimplemented from FieldAlgorithmBase< spacedim, Value >.

Definition at line 131 of file field_elementwise.cc.

template<int spacedim, class Value >
bool FieldElementwise< spacedim, Value >::set_time ( const TimeStep time)
overridevirtual

Set row of boundary data. Used to implement old BC input. Update time and possibly update data from GMSH file.

Reimplemented from FieldAlgorithmBase< spacedim, Value >.

Definition at line 114 of file field_elementwise.cc.

template<int spacedim, class Value >
Value::return_type const & FieldElementwise< spacedim, Value >::value ( const Point p,
const ElementAccessor< spacedim > &  elm 
)
overridevirtual

Returns one value in one given point. ResultType can be used to avoid some costly calculation if the result is trivial.

Implements FieldAlgorithmBase< spacedim, Value >.

Definition at line 159 of file field_elementwise.cc.

template<int spacedim, class Value >
void FieldElementwise< spacedim, Value >::value_list ( const std::vector< Point > &  point_list,
const ElementAccessor< spacedim > &  elm,
std::vector< typename Value::return_type > &  value_list 
)
overridevirtual

Returns std::vector of scalar values in several points at once.

Implements FieldAlgorithmBase< spacedim, Value >.

Definition at line 176 of file field_elementwise.cc.

Member Data Documentation

template<int spacedim, class Value >
bool FieldElementwise< spacedim, Value >::boundary_domain_
private

Is set in set_mesh method. Value true means, that we accept only boundary element accessors in the value method. TODO: temporary solution until we have separate mesh for the boundary part

Definition at line 110 of file field_elementwise.hh.

template<int spacedim, class Value >
std::shared_ptr< std::vector<typename Value::element_type> > FieldElementwise< spacedim, Value >::data_
private

Raw buffer of n_entities rows each containing Value::size() doubles.

Definition at line 112 of file field_elementwise.hh.

template<int spacedim, class Value >
std::string FieldElementwise< spacedim, Value >::field_name_
private

Definition at line 120 of file field_elementwise.hh.

template<int spacedim, class Value >
Input::Record FieldElementwise< spacedim, Value >::in_rec_
private

Accessor to Input::Record.

Definition at line 123 of file field_elementwise.hh.

template<int spacedim, class Value >
bool FieldElementwise< spacedim, Value >::internal_raw_data
private

Is flase whne the data vector is provided at construction. Then, we disallow initialization form input and do not delete data pointer in destructor.

Definition at line 105 of file field_elementwise.hh.

template<int spacedim, class Value >
std::pair<double, double> FieldElementwise< spacedim, Value >::limits_
private

Definition at line 131 of file field_elementwise.hh.

template<int spacedim, class Value >
const Mesh* FieldElementwise< spacedim, Value >::mesh_
private

Definition at line 119 of file field_elementwise.hh.

template<int spacedim, class Value >
unsigned int FieldElementwise< spacedim, Value >::n_components_
private

Size of Value.

Definition at line 116 of file field_elementwise.hh.

template<int spacedim, class Value >
unsigned int FieldElementwise< spacedim, Value >::n_entities_
private

Number of rows in data_ buffer.

Definition at line 114 of file field_elementwise.hh.

template<int spacedim, class Value >
FilePath FieldElementwise< spacedim, Value >::reader_file_
private

Definition at line 118 of file field_elementwise.hh.

template<int spacedim, class Value >
const int FieldElementwise< spacedim, Value >::registrar
staticprivate
Initial value:
=
Input::register_class< FieldElementwise<spacedim, Value>, unsigned int >("FieldElementwise") +

Registrar of class to factory.

Definition at line 134 of file field_elementwise.hh.

template<int spacedim, class Value >
UnitSI& FieldElementwise< spacedim, Value >::unit_si_
private

Initialization data of field. Necessary for check limits.

TODO: Temporary solution will be replaced with shared_ptr to field data in FieldAlgoBase

Definition at line 130 of file field_elementwise.hh.


The documentation for this class was generated from the following files: