Flow123d
JS_before_hm-1002-gafa1d04
|
#include <field_formula.hh>
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 | |
FieldFormula (unsigned int n_comp=0) | |
virtual void | init_from_input (const Input::Record &rec, const struct FieldAlgoBaseInitData &init_data) |
bool | set_time (const TimeStep &time) override |
void | set_mesh (const Mesh *mesh, bool boundary_domain) override |
virtual Value::return_type const & | value (const Point &p, const ElementAccessor< spacedim > &elm) |
virtual void | value_list (const Armor::array &point_list, const ElementAccessor< spacedim > &elm, std::vector< typename Value::return_type > &value_list) |
virtual | ~FieldFormula () |
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 void | cache_update (FieldValueCache< typename Value::element_type > &data_cache, ElementCacheMap &cache_map, unsigned int region_idx) |
virtual void | set_native_dh (std::shared_ptr< DOFHandlerMultiDim >) |
bool | is_constant_in_space () const |
virtual | ~FieldAlgorithmBase () |
Static Public Member Functions | |
static const Input::Type::Record & | get_input_type () |
Implementation. More... | |
Static Public Member Functions inherited from FieldAlgorithmBase< spacedim, Value > | |
static std::string | template_name () |
static Input::Type::Abstract & | get_input_type () |
static const Input::Type::Instance & | get_input_type_instance (Input::Type::Selection value_selection=Input::Type::Selection()) |
static const Input::Type::Record & | get_field_algo_common_keys () |
static std::shared_ptr< FieldAlgorithmBase< spacedim, Value > > | function_factory (const Input::AbstractRecord &rec, const struct FieldAlgoBaseInitData &init_data) |
Private Types | |
typedef StringTensorInput< Value::NRows_, Value::NCols_ > | STI |
Private Member Functions | |
arma::vec | eval_depth_var (const Point &p) |
Private Attributes | |
StringTensor | formula_matrix_ |
std::vector< std::vector< FunctionParser > > | parser_matrix_ |
Input::Record | in_rec_ |
Accessor to Input::Record. More... | |
std::shared_ptr< SurfaceDepth > | surface_depth_ |
Surface depth object calculate distance from surface. More... | |
bool | has_depth_var_ |
Flag indicates if depth variable 'd' is used in formula. More... | |
bool | first_time_set_ |
Flag indicates first call of set_time method, when FunctionParsers in parser_matrix_ must be initialized. More... | |
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 = std::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... | |
bool | is_constant_in_space_ |
Flag detects that field is only dependent on time. More... | |
Class representing fields given by runtime parsed formulas.
Using library: http://warp.povusers.org/FunctionParser/
TODO: correct support for discrete functions (use integer parser), actually we just convert double to int
Definition at line 53 of file field_formula.hh.
typedef FieldAlgorithmBase<spacedim, Value> FieldFormula< spacedim, Value >::FactoryBaseType |
Definition at line 57 of file field_formula.hh.
typedef FieldAlgorithmBase<spacedim, Value>::Point FieldFormula< spacedim, Value >::Point |
Definition at line 56 of file field_formula.hh.
|
private |
Definition at line 93 of file field_formula.hh.
FieldFormula< spacedim, Value >::FieldFormula | ( | unsigned int | n_comp = 0 | ) |
Definition at line 70 of file field_formula.cc.
|
virtual |
Definition at line 256 of file field_formula.cc.
|
inlineprivate |
Evaluate depth variable if it is contained in formula.
Return arma vec of point coordinates extended by depth value (or zero if depth is not contained.
Definition at line 235 of file field_formula.cc.
|
static |
Implementation.
Definition at line 34 of file field_formula.cc.
|
virtual |
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 85 of file field_formula.cc.
|
overridevirtual |
Create SurfaceDepth object if surface region is set.
See also description of the FieldBase<...>::set_mesh.
Reimplemented from FieldAlgorithmBase< spacedim, Value >.
Definition at line 186 of file field_formula.cc.
|
overridevirtual |
For time dependent formulas returns always true. For time independent formulas returns true only for the first time.
Reimplemented from FieldAlgorithmBase< spacedim, Value >.
Definition at line 95 of file field_formula.cc.
|
virtual |
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 199 of file field_formula.cc.
|
virtual |
Returns std::vector of scalar values in several points at once.
Implements FieldAlgorithmBase< spacedim, Value >.
Definition at line 215 of file field_formula.cc.
|
private |
Flag indicates first call of set_time method, when FunctionParsers in parser_matrix_ must be initialized.
Definition at line 118 of file field_formula.hh.
|
private |
Definition at line 103 of file field_formula.hh.
|
private |
Flag indicates if depth variable 'd' is used in formula.
Definition at line 115 of file field_formula.hh.
|
private |
Accessor to Input::Record.
Definition at line 109 of file field_formula.hh.
|
private |
Definition at line 106 of file field_formula.hh.
|
staticprivate |
Registrar of class to factory.
Definition at line 121 of file field_formula.hh.
|
private |
Surface depth object calculate distance from surface.
Definition at line 112 of file field_formula.hh.