Go to the documentation of this file.
24 #include <boost/circular_buffer.hpp>
59 template <
int spacedim,
class Value>
class FieldFE;
62 template<
typename CALLABLE,
typename TUPLE,
int INDEX >
90 template<
int spacedim,
class Value>
99 static const unsigned int space_dim = spacedim;
136 virtual bool is_active_field_descriptor(
const Input::Record &in_rec,
const std::string &input_name);
145 Field(
const string &name,
bool bc =
false);
153 Field(
unsigned int component_index,
string input_name,
string name =
"",
bool bc =
false);
173 typename Value::return_type operator() (
BulkPoint &p);
177 typename Value::return_type operator() (
SidePoint &p);
188 IT::Array get_multifield_input_type()
override;
207 void set_mesh(
const Mesh &mesh)
override;
219 bool is_constant(
Region reg)
override;
247 void copy_from(
const FieldCommon & other)
override;
257 void observe_output(std::shared_ptr<Observe> observe)
override;
292 std::string get_value_attribute()
const override;
318 void add_factory(std::shared_ptr<FactoryBase> factory);
335 void cache_reallocate(
const ElementCacheMap &cache_map,
unsigned int region_idx)
const override;
338 void cache_update(
ElementCacheMap &cache_map,
unsigned int region_patch_idx)
const override;
357 typename Value::return_type operator[] (
unsigned int i_cache_point)
const;
363 void update_history(
const TimeStep &time);
368 void check_initialized_region_fields_();
374 std::shared_ptr< FieldFE<spacedim, Value> > get_field_fe();
428 template<
int dim,
class Val>
431 template<
typename CALLABLE,
typename TUPLE,
int INDEX >
446 template<
int spacedim,
class Value>
450 ASSERT(this->set_time_result_ != TimeStatus::unknown)(this->name()).error(
"Unknown time status.\n");
451 ASSERT_LT(elm.
region_idx().
idx(), region_fields_.size() )(this->name()).error(
"Region idx is out of range\n");
453 .error(
"Null field ptr on region\n");
459 template<
int spacedim,
class Value>
463 ASSERT(this->set_time_result_ != TimeStatus::unknown)(this->name()).error(
"Unknown time status.\n");
464 ASSERT_LT(elm.
region_idx().
idx(), region_fields_.size() )(this->name()).error(
"Region idx is out of range\n");
466 .error(
"Null field ptr on region\n");
467 ASSERT(point_list.
n_rows() == spacedim && point_list.
n_cols() == 1).error(
"Invalid point size.\n");
469 region_fields_[elm.
region_idx().
idx()]->value_list(point_list,elm, value_list);
base case for building up arguments for the function call
std::vector< RegionHistory > region_history_
pair< double, FieldBasePtr > HistoryPoint
Pair: time, pointer to FieldBase instance.
Basic time management class.
FieldValueCache< typename Value::element_type > value_cache_
Directing class of FieldValueCache.
static constexpr bool value
Base point accessor class.
std::shared_ptr< ElementDataCache< typename Value::element_type > > output_data_cache_
ElementDataCache used during field output, object is shared with OutputTime.
General point a+ side_begin_ + ccessor allow iterate over quadrature points of given side defined in ...
unsigned int idx() const
Returns a global index of the region.
Space< spacedim >::Point Point
#define ASSERT_LT(a, b)
Definition of comparative assert macro (Less Than) only for debug mode.
unsigned int id() const
Returns id of the region (using RegionDB)
FieldAlgorithmBase< spacedim, Value >::Point Point
Representation of one time step..
Basic time management functionality for unsteady (and steady) solvers (class Equation).
Common abstract parent of all Field<...> classes.
std::shared_ptr< SharedData > data_
std::vector< std::shared_ptr< FactoryBase > > factories_
std::vector< FieldBasePtr > region_fields_
Container for various descendants of FieldCommonBase.
boost::circular_buffer< HistoryPoint > RegionHistory
Nearest history of one region.
virtual const Value::return_type & value(const Point &p, const ElementAccessor< spacedim > &elm) const
std::shared_ptr< FieldBaseType > FieldBasePtr
FieldAlgorithmBase< spacedim, Value > FieldBaseType
std::shared_ptr< ControlField > no_check_control_field_
virtual void value_list(const Armor::array &point_list, const ElementAccessor< spacedim > &elm, std::vector< typename Value::return_type > &value_list) const
Class for representation of a vector of fields of the same physical quantity.
Class template representing a field with values dependent on: point, element, and region.
RegionIdx region_idx() const
Field< spacedim, typename FieldValue< spacedim >::Enum > ControlField
Class holds local coordinations of evaluating points (bulk and sides) specified by element dimension.