|
Flow123d
|
Common abstract parent of all Field<...> classes. More...
#include <field.hh>

Classes | |
| struct | SharedData |
Public Member Functions | |
| TYPEDEF_ERR_INFO (EI_Time, double) | |
| TYPEDEF_ERR_INFO (EI_Field, std::string) | |
| DECLARE_INPUT_EXCEPTION (ExcNonascendingTime,<< "Non-ascending time: "<< EI_Time::val<< " for field "<< EI_Field::qval<< ".\n") | |
| DECLARE_INPUT_EXCEPTION (ExcMissingDomain,<< "Missing domain specification (region, r_id, or r_set) in fields descriptor:") | |
| DECLARE_EXCEPTION (ExcFieldMeshDifference,<< "Two copies of the field "<< EI_Field::qval<< "call set_mesh with different arguments.\n") | |
| FieldCommonBase & | name (const string &name) |
| FieldCommonBase & | just_copy () |
| FieldCommonBase & | desc (const string &desc) |
| FieldCommonBase & | input_default (const string &dflt) |
| FieldCommonBase & | units (const string &units) |
| Set basic units of the field. More... | |
| FieldCommonBase & | input_selection (const Input::Type::Selection *element_selection) |
| FieldCommonBase & | output_type (OutputTime::DiscreteSpace rt) |
| void | n_comp (unsigned int n_comp) |
| virtual void | set_mesh (const Mesh &mesh) |
| void | set_input_list (const Input::Array &list) |
| virtual void | set_limit_side (LimitSide side)=0 |
| const std::string & | name () const |
| const std::string | desc () const |
| const std::string & | input_default () const |
| const std::string & | units () const |
| OutputTime::DiscreteSpace | output_type () const |
| bool | is_bc () const |
| unsigned int | n_comp () const |
| const Mesh * | mesh () const |
| bool | is_just_copy () const |
| double | time () const |
| virtual IT::AbstractRecord & | get_input_type ()=0 |
| void | mark_input_times (TimeMark::Type mark_type) |
| virtual bool | set_time (const TimeGovernor &time)=0 |
| virtual void | copy_from (const FieldCommonBase &other)=0 |
| virtual void | output (OutputTime *stream)=0 |
| virtual bool | is_constant (Region reg)=0 |
| bool | changed () const |
| virtual | ~FieldCommonBase () |
Static Public Member Functions | |
| static IT::Record | field_descriptor_record (const string &record_name) |
Protected Types | |
| enum | TimeStatus { TimeStatus::changed, TimeStatus::constant, TimeStatus::unknown } |
Protected Member Functions | |
| FieldCommonBase () | |
| FieldCommonBase (const FieldCommonBase &other) | |
| void | set_history_changed () |
Protected Attributes | |
| std::shared_ptr< SharedData > | shared_ |
| LimitSide | limit_side_ |
| TimeStatus | set_time_result_ |
Status of history. More... | |
| double | last_time_ = -numeric_limits<double>::infinity() |
| OutputTime::DiscreteSpace | type_of_output_data_ = OutputTime::ELEM_DATA |
| bool | is_copy_ =false |
| Flag field that has to be set as a copy of other field using copy_from method. More... | |
Static Protected Attributes | |
| static const unsigned int | history_length_limit_ =3 |
Common abstract parent of all Field<...> classes.
We need common ancestor in order to keep a list of all fields in one EqData object and allow collective operations like set_time or init_from_input.
|
strongprotected |
|
virtual |
|
protected |
|
protected |
|
inline |
|
pure virtual |
Check that other is instance of the same Field<..> class and perform assignment. Polymorphic copy.
Implemented in MultiField< spacedim, Value >, MultiField< 3, FieldValue< 3 >::Scalar >, Field< spacedim, Value >, Field< spacedim, FieldValue< 3 >::EnumVector >, Field< 3, FieldValue< 3 >::Vector >, Field< spacedim, FieldValue< 3 >::Vector >, Field< 3, FieldValue< 3 >::Scalar >, Field< 3, FieldValue< 3 >::VectorFixed >, Field< spacedim, FieldValue< 3 >::Scalar >, Field< spacedim, FieldValue< 3 >::Enum >, Field< 3, FieldValue< 3 >::Integer >, Field< 3, FieldValue< 3 >::TensorFixed >, and Field< 3, FieldValue< 3 >::EnumVector >.

| FieldCommonBase::DECLARE_EXCEPTION | ( | ExcFieldMeshDifference | , |
| << "Two copies of the field "<< EI_Field::qval<< "call set_mesh with different arguments.\n" | |||
| ) |
| FieldCommonBase::DECLARE_INPUT_EXCEPTION | ( | ExcNonascendingTime | , |
| << "Non-ascending time: "<< EI_Time::val<< " for field "<< EI_Field::qval<< ".\n" | |||
| ) |
| FieldCommonBase::DECLARE_INPUT_EXCEPTION | ( | ExcMissingDomain | , |
| << "Missing domain specification (region, r_id, or r_set) in fields descriptor:" | |||
| ) |
|
inline |
|
static |
|
pure virtual |
Returns input type for particular field instance, this is reference to a static member input_type of the corresponding FieldBase class (i.e. with the same template parameters). This is used in FieldSet::make_field_descriptor_type.
Implemented in MultiField< spacedim, Value >, MultiField< 3, FieldValue< 3 >::Scalar >, Field< spacedim, Value >, Field< spacedim, FieldValue< 3 >::EnumVector >, Field< 3, FieldValue< 3 >::Vector >, Field< spacedim, FieldValue< 3 >::Vector >, Field< 3, FieldValue< 3 >::Scalar >, Field< 3, FieldValue< 3 >::VectorFixed >, Field< spacedim, FieldValue< 3 >::Scalar >, Field< spacedim, FieldValue< 3 >::Enum >, Field< 3, FieldValue< 3 >::Integer >, Field< 3, FieldValue< 3 >::TensorFixed >, and Field< 3, FieldValue< 3 >::EnumVector >.

|
inline |
Set default value for the field's key from which the default constant valued field will be constructed.
During the first call of the set_time method, we check that the field is defined on all regions. On regions where it is not set yet, we use given dflt string to get particular instance of FieldBase<> (see check_initialized_region_fields_). The default string is interpreted in the same way as if it appears in the input file as the value of the field. In particular it can be whole record with TYPE of the field etc. Most common choice is however mere constant.
Definition at line 83 of file field.hh.

|
inline |
|
inline |
For the fields returning "Enum", we have to pass the Input::Type::Selection object to the field implementations.
We must save raw pointer since selection may not be yet initialized (during static initialization phase).
Definition at line 105 of file field.hh.

|
inline |
|
pure virtual |
If the field on given region reg exists and is of type FieldConstant<...> the method method returns true otherwise it returns false. Then one call ElementAccessor<spacedim>(mesh(), reg ) to construct an ElementAccessor elm pointing to "virtual" element on which Field::value returns constant value.
Current implementation use virtual functions and can be prohibitively slow if called for every element. If this becomes necessary it is possible to incorporate such test into set_time method and in this method just return precomputed result.
Implemented in MultiField< spacedim, Value >, MultiField< 3, FieldValue< 3 >::Scalar >, Field< spacedim, Value >, Field< spacedim, FieldValue< 3 >::EnumVector >, Field< 3, FieldValue< 3 >::Vector >, Field< spacedim, FieldValue< 3 >::Vector >, Field< 3, FieldValue< 3 >::Scalar >, Field< 3, FieldValue< 3 >::VectorFixed >, Field< spacedim, FieldValue< 3 >::Scalar >, Field< spacedim, FieldValue< 3 >::Enum >, Field< 3, FieldValue< 3 >::Integer >, Field< 3, FieldValue< 3 >::TensorFixed >, and Field< 3, FieldValue< 3 >::EnumVector >.

|
inline |
|
inline |
| void FieldCommonBase::mark_input_times | ( | TimeMark::Type | mark_type) |
Abstract method for initialization of the field on one region. Pass through the input array input_list_, collect all times where the field could change and put appropriate time marks into global TimeMarks object. Introduced time marks have both given mark_type and type_input() type.
Further development:
Definition at line 93 of file field.cc.

|
inline |
|
inline |
|
inline |
|
inline |
|
pure virtual |
Output the field. The parameter output_fields is checked for value named by the field name. If the key exists, then the output of the field is performed. If the key do not appear in the input, no output is done.
Implemented in MultiField< spacedim, Value >, MultiField< 3, FieldValue< 3 >::Scalar >, Field< spacedim, Value >, Field< spacedim, FieldValue< 3 >::EnumVector >, Field< 3, FieldValue< 3 >::Vector >, Field< spacedim, FieldValue< 3 >::Vector >, Field< 3, FieldValue< 3 >::Scalar >, Field< 3, FieldValue< 3 >::VectorFixed >, Field< spacedim, FieldValue< 3 >::Scalar >, Field< spacedim, FieldValue< 3 >::Enum >, Field< 3, FieldValue< 3 >::Integer >, Field< 3, FieldValue< 3 >::TensorFixed >, and Field< 3, FieldValue< 3 >::EnumVector >.

|
inline |
Output discrete space used in the output() method. Can be different for different field copies. one can choose between: data constant on elements, linear data given in nodes, and discontinuous linear data.
If not set explicitly by this method, the default value is OutputTime::ELEM_DATA
Definition at line 118 of file field.hh.

|
inline |
|
inlineprotected |
| void FieldCommonBase::set_input_list | ( | const Input::Array & | list) |
Set the data list from which field will read its input. It is list of "field descriptors". When reading from the input list we consider only field descriptors containing key of named by the field name. These field descriptors has to have times forming ascending sequence.
The list is used by set_time method to set field on individual regions to actual FieldBase descendants.
Definition at line 64 of file field.cc.

|
pure virtual |
Set side of limit when calling set_time with jump time. This method invalidate result of changed() so it should be called just before set_time. Can be different for different field copies.
Implemented in MultiField< spacedim, Value >, MultiField< 3, FieldValue< 3 >::Scalar >, Field< spacedim, Value >, Field< spacedim, FieldValue< 3 >::EnumVector >, Field< 3, FieldValue< 3 >::Vector >, Field< spacedim, FieldValue< 3 >::Vector >, Field< 3, FieldValue< 3 >::Scalar >, Field< 3, FieldValue< 3 >::VectorFixed >, Field< spacedim, FieldValue< 3 >::Scalar >, Field< spacedim, FieldValue< 3 >::Enum >, Field< 3, FieldValue< 3 >::Integer >, Field< 3, FieldValue< 3 >::TensorFixed >, and Field< 3, FieldValue< 3 >::EnumVector >.

|
inlinevirtual |
Set internal mesh pointer.
Reimplemented in MultiField< spacedim, Value >, MultiField< 3, FieldValue< 3 >::Scalar >, Field< spacedim, Value >, Field< spacedim, FieldValue< 3 >::EnumVector >, Field< 3, FieldValue< 3 >::Vector >, Field< spacedim, FieldValue< 3 >::Vector >, Field< 3, FieldValue< 3 >::Scalar >, Field< 3, FieldValue< 3 >::VectorFixed >, Field< spacedim, FieldValue< 3 >::Scalar >, Field< spacedim, FieldValue< 3 >::Enum >, Field< 3, FieldValue< 3 >::Integer >, Field< 3, FieldValue< 3 >::TensorFixed >, and Field< 3, FieldValue< 3 >::EnumVector >.
Definition at line 134 of file field.hh.

|
pure virtual |
Abstract method to update field to the new time level. Implemented by in class template Field<...>.
Return true if the value of the field was changed on some region. The returned value is also stored in changed_during_set_time data member.
Default values helps when creating steady field. Note that default TimeGovernor constructor set time to 0.0.
Different field copies can be set to different times.
Implemented in MultiField< spacedim, Value >, MultiField< 3, FieldValue< 3 >::Scalar >, Field< spacedim, Value >, Field< spacedim, FieldValue< 3 >::EnumVector >, Field< 3, FieldValue< 3 >::Vector >, Field< spacedim, FieldValue< 3 >::Vector >, Field< 3, FieldValue< 3 >::Scalar >, Field< 3, FieldValue< 3 >::VectorFixed >, Field< spacedim, FieldValue< 3 >::Scalar >, Field< spacedim, FieldValue< 3 >::Enum >, Field< 3, FieldValue< 3 >::Integer >, Field< 3, FieldValue< 3 >::TensorFixed >, and Field< 3, FieldValue< 3 >::EnumVector >.

|
inline |
| FieldCommonBase::TYPEDEF_ERR_INFO | ( | EI_Time | , |
| double | |||
| ) |
| FieldCommonBase::TYPEDEF_ERR_INFO | ( | EI_Field | , |
| std::string | |||
| ) |
|
inline |
Set basic units of the field.
Currently, we use it only during output and we represents units just by a string.
TODO: Particular class for representing and conversion of various units would be more appropriate. This can allow specification of the units on the inptu, automatic conversion and the same on the output. Possibly this allow using Boost::Units library, however, it seems to introduce lot of boilerplate code. But can increase correctness of the calculations.
Definition at line 96 of file field.hh.

|
staticprotected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
1.8.4