Flow123d
3.9.0-094ba6f5a
|
Container for various descendants of FieldCommonBase. More...
#include <field_set.hh>
Public Member Functions | |
DECLARE_EXCEPTION (ExcUnknownField,<< "Field set has no field with name: "<< FieldCommon::EI_Field::qval) | |
DECLARE_INPUT_EXCEPTION (ExcFieldNotSet,<< "Field "<< FieldCommon::EI_Field::qval<< " is not set. Please set key 'scalar_field', 'vector_field' or 'tensor_field' at: \n") | |
FieldSet () | |
Default constructor. More... | |
const Input::Type::Record & | get_user_field (const std::string &equation_name) |
Declare input record type of field defined by user. More... | |
Input::Type::Record | make_field_descriptor_type (const std::string &equation_name) const |
void | set_field (const std::string &dest_field_name, FieldCommon &source) |
FieldCommon * | field (const std::string &field_name) const |
FieldCommon & | operator[] (const std::string &field_name) const |
void | set_components (const std::vector< string > &names) |
void | set_mesh (const Mesh &mesh) |
void | set_input_list (Input::Array input_list, const TimeGovernor &tg) |
void | set_user_fields_map (Input::Array input_list) |
void | flags_add (FieldFlag::Flags::Mask mask) |
bool | set_time (const TimeStep &time, LimitSide limit_side) |
void | output_type (OutputTime::DiscreteSpace rt) |
void | mark_input_times (const TimeGovernor &tg) |
bool | changed () const |
bool | is_constant (Region reg) const |
bool | is_jump_time () const |
void | cache_reallocate (const ElementCacheMap &cache_map, FieldSet &used_fieldset) |
void | cache_update (ElementCacheMap &cache_map) |
void | set_dependency (FieldSet &used_fieldset) |
void | add_coords_field () |
void | set_surface_depth (std::shared_ptr< SurfaceDepth > surface_depth) |
Set surface depth object to "d" field. More... | |
Range< FieldListAccessor > | fields_range () const |
Returns range of Fields held in field_list. More... | |
const Mesh * | mesh () const |
Returns pointer to mesh. More... | |
std::string | print_dependency () const |
Return order of evaluated fields by dependency and region_idx. More... | |
FieldCommon * | user_field (const std::string &field_name, const TimeStep &time) |
Protected Member Functions | |
void | topological_sort (const FieldCommon *f, unsigned int i_reg, std::unordered_set< const FieldCommon * > &used_fields) |
Helper method sort used fields by dependency. More... | |
Protected Attributes | |
std::vector< FieldCommon * > | field_list |
List of all fields. More... | |
std::vector< FieldCommon * > | user_field_list_ |
List of fields defined by user. More... | |
const Mesh * | mesh_ |
Pointer to the mesh. More... | |
std::map< unsigned int, std::vector< const FieldCommon * > > | region_field_update_order_ |
FieldCoords | X_ |
Field holds coordinates for computing of FieldFormulas. More... | |
FieldDepth | depth_ |
Field holds surface depth for computing of FieldFormulas. More... | |
std::unordered_map< std::string, Input::Record > | user_fields_input_ |
Map assigns Input::Record to each field defined in optional Input::Array 'user_fields'. More... | |
Friends | |
template<int dim, class Val > | |
class | FieldFormula |
std::ostream & | operator<< (std::ostream &stream, const FieldSet &set) |
Additional Inherited Members | |
Public Types inherited from FieldFlag | |
typedef FlagArray< FieldFlag > | Flags |
typedef Flags::Mask | Mask |
Static Public Attributes inherited from FieldFlag | |
static constexpr unsigned int | flags_size_ = 3 |
Number of bits used by Field itself. More... | |
static constexpr Mask | equation_input {1 << 0} |
The field is data parameter of the owning equation. (default on) More... | |
static constexpr Mask | declare_input {1 << 1} |
The field can be set from input. The key in input field descriptor is declared. (default on) More... | |
static constexpr Mask | allow_output {1 << 2} |
The field can output. Is part of generated output selection. (default on) More... | |
static constexpr Mask | input_copy = ~declare_input & equation_input |
static constexpr Mask | in_time_term {1 << 8} |
A field is part of time term of the equation. More... | |
static constexpr Mask | in_main_matrix {1 << 9} |
A field is part of main "stiffness matrix" of the equation. More... | |
static constexpr Mask | in_rhs {1 << 10} |
A field is part of the right hand side of the equation. More... | |
static constexpr Mask | equation_result = allow_output & ~declare_input & ~equation_input |
Match result fields. These are never given by input or copy of input. More... | |
static constexpr Mask | equation_external_output = allow_output & input_copy |
Match an output field, that can be also copy of other field. More... | |
Container for various descendants of FieldCommonBase.
Provides various collective operations. Typical usage:
class EqData : public FieldSet { EqData() { *this += scalar_field .name("scalar_field") .description("Some description for input and output documentation.") .input_default("{0.0}") .units("m"); *this += vector_field .name("vector_field") .description("Some description for input and output documentation.") .units("m"); }
Field<3, FieldValue<3>::Scalar> scalar_field; Field<3, FieldValue<3>::VectorFixed> vector_field; };
This way the fields are destructed just before their pointers stored in the FieldSet.
TODO: Some set_XY functions set also to the fields added to the FieldSet in future. This behavior should be removed, since it is misleading in combination with mask subsets. If one set something to mask subset, it does not influence fields added to the original field set even if they match the mask of the subset.
Definition at line 159 of file field_set.hh.
FieldSet::FieldSet | ( | ) |
Default constructor.
Definition at line 29 of file field_set.cc.
void FieldSet::add_coords_field | ( | ) |
Add coords field (X_) and depth field to field_list.
We can't add this field automatically in constructor, because there is problem in equation where we add one FieldSet to other.
Definition at line 307 of file field_set.cc.
|
inline |
Collective interface to FieldCommon::recache_allocate()
.
Definition at line 344 of file field_set.hh.
void FieldSet::cache_update | ( | ElementCacheMap & | cache_map | ) |
Collective interface to FieldCommon::cache_update()
.
Definition at line 274 of file field_set.cc.
bool FieldSet::changed | ( | ) | const |
Collective interface to FieldCommonBase::set_mesh()
.
Definition at line 252 of file field_set.cc.
FieldSet::DECLARE_EXCEPTION | ( | ExcUnknownField | , |
<< "Field set has no field with name: "<< FieldCommon::EI_Field::qval | |||
) |
FieldSet::DECLARE_INPUT_EXCEPTION | ( | ExcFieldNotSet | , |
<< "Field "<< FieldCommon::EI_Field::qval<< " is not set. Please set key 'scalar_field' | , | ||
'vector_field' or 'tensor_field' at:\n" | |||
) |
FieldCommon * FieldSet::field | ( | const std::string & | field_name | ) | const |
Return pointer to the field given by name field_name
. Return nullptr if not found.
Definition at line 168 of file field_set.cc.
Range< FieldListAccessor > FieldSet::fields_range | ( | ) | const |
Returns range of Fields held in field_list.
Definition at line 329 of file field_set.cc.
|
inline |
Collective interface to FieldCommonBase::flags_add()
.
mask | mask to set for all fields in the field set. |
Definition at line 302 of file field_set.hh.
const Input::Type::Record & FieldSet::get_user_field | ( | const std::string & | equation_name | ) |
Declare input record type of field defined by user.
Definition at line 33 of file field_set.cc.
bool FieldSet::is_constant | ( | Region | reg | ) | const |
Collective interface to FieldCommonBase::set_mesh()
.
Definition at line 260 of file field_set.cc.
bool FieldSet::is_jump_time | ( | ) | const |
Collective interface to FieldCommonBase::is_jump_time()
.
Definition at line 267 of file field_set.cc.
Input::Type::Record FieldSet::make_field_descriptor_type | ( | const std::string & | equation_name | ) | const |
Add an existing Field to the list. It stores just pointer to the field. Be careful to not destroy passed Field before the FieldSet.
Using operator allows elegant setting and adding of a field to the field set:
Definition at line 90 of file field_set.cc.
|
inline |
Collective interface to FieldCommonBase::mark_input_times()
.
Definition at line 322 of file field_set.hh.
|
inline |
Returns pointer to mesh.
Definition at line 382 of file field_set.hh.
FieldCommon & FieldSet::operator[] | ( | const std::string & | field_name | ) | const |
Returns reference to the field given by field_name
. Throws if the field with given name is not found.
Definition at line 235 of file field_set.cc.
|
inline |
Collective interface to FieldCommonBase::output_type()
.
rt | Discrete function space (element, node or corner data). |
Definition at line 315 of file field_set.hh.
std::string FieldSet::print_dependency | ( | ) | const |
Return order of evaluated fields by dependency and region_idx.
Definition at line 336 of file field_set.cc.
|
inline |
Collective interface to FieldCommonBase::set_components()
. It is safe to call this for field sets containing also fields with return value other then variable vector as long as all variable vector fields should be set to the same number of components.
Definition at line 275 of file field_set.hh.
void FieldSet::set_dependency | ( | FieldSet & | used_fieldset | ) |
Set reference of FieldSet to all instances of FieldFormula.
Definition at line 283 of file field_set.cc.
void FieldSet::set_field | ( | const std::string & | dest_field_name, |
FieldCommon & | source | ||
) |
Make Selection with strings for all field names in the FieldSet. Use FieldCommonBase::copy_from()
to set field of the field set given by the first parameter dest_field_name
. The source field is given as the second parameter source
. The field copies share the same input descriptor list and the same instances of FieldBase classes but each copy can be set to different time and different limit side.
See FieldCommonBase::copy_from
documentation for details.
Definition at line 160 of file field_set.cc.
|
inline |
Collective interface to FieldCommon::set_input_list()
.
Definition at line 289 of file field_set.hh.
|
inline |
Collective interface to FieldCommonBase::set_mesh()
.
Definition at line 281 of file field_set.hh.
|
inline |
Set surface depth object to "d" field.
Definition at line 374 of file field_set.hh.
Collective interface to FieldCommonBase::set_mesh()
.
Definition at line 244 of file field_set.cc.
void FieldSet::set_user_fields_map | ( | Input::Array | input_list | ) |
Fill data of user defined fields to user_fields_input_ map.
Definition at line 349 of file field_set.cc.
|
protected |
Helper method sort used fields by dependency.
Definition at line 296 of file field_set.cc.
FieldCommon * FieldSet::user_field | ( | const std::string & | field_name, |
const TimeStep & | time | ||
) |
Return pointer to the field defined by user given by name field_name
. Return nullptr if not found.
Definition at line 176 of file field_set.cc.
|
friend |
Definition at line 435 of file field_set.hh.
|
friend |
Stream output operator
Definition at line 360 of file field_set.cc.
|
protected |
Field holds surface depth for computing of FieldFormulas.
Definition at line 424 of file field_set.hh.
|
protected |
List of all fields.
Definition at line 401 of file field_set.hh.
|
protected |
Pointer to the mesh.
Definition at line 407 of file field_set.hh.
|
protected |
Holds vector of indices of fields in field_list sorted by dependency for every region.
Definition at line 415 of file field_set.hh.
|
protected |
List of fields defined by user.
Definition at line 404 of file field_set.hh.
|
protected |
Map assigns Input::Record to each field defined in optional Input::Array 'user_fields'.
Definition at line 427 of file field_set.hh.
|
protected |
Field holds coordinates for computing of FieldFormulas.
Definition at line 421 of file field_set.hh.