24 #include <boost/circular_buffer.hpp> 62 template <
int spacedim,
class Value>
class FieldFE;
65 template<
typename CALLABLE,
typename TUPLE,
int INDEX >
93 template<
int spacedim,
class Value>
102 static const unsigned int space_dim = spacedim;
139 virtual bool is_active_field_descriptor(
const Input::Record &in_rec,
const std::string &input_name);
148 Field(
const string &name,
bool bc =
false);
156 Field(
unsigned int component_index,
string input_name,
string name =
"",
bool bc =
false);
176 typename Value::return_type operator() (
BulkPoint &p);
180 typename Value::return_type operator() (
EdgePoint &p);
199 IT::Array get_multifield_input_type()
override;
218 void set_mesh(
const Mesh &mesh)
override;
230 bool is_constant(
Region reg)
override;
258 void copy_from(
const FieldCommon & other)
override;
263 void field_output(std::shared_ptr<OutputTime> stream)
override;
268 void observe_output(std::shared_ptr<Observe> observe)
override;
303 std::string get_value_attribute()
const override;
329 void add_factory(std::shared_ptr<FactoryBase> factory);
340 void cache_reallocate(
const ElementCacheMap &cache_map,
unsigned int region_idx)
const override;
343 void cache_update(
ElementCacheMap &cache_map,
unsigned int region_patch_idx)
const override;
359 typename Value::return_type operator[] (
unsigned int i_cache_point)
const;
365 void update_history(
const TimeStep &time);
369 std::shared_ptr<OutputTime> stream,
375 void check_initialized_region_fields_();
381 std::shared_ptr< FieldFE<spacedim, Value> > get_field_fe();
432 template<
int dim,
class Val>
435 template<
typename CALLABLE,
typename TUPLE,
int INDEX >
450 template<
int spacedim,
class Value>
454 ASSERT(this->set_time_result_ != TimeStatus::unknown)(this->name()).error(
"Unknown time status.\n");
456 elm.
region_idx().
idx(), (
unsigned long int) region_fields_.size(), name().c_str());
458 "Null field ptr on region id: %d, idx: %d, field: %s\n", elm.
region().
id(), elm.
region_idx().
idx(), name().c_str());
464 template<
int spacedim,
class Value>
468 ASSERT(this->set_time_result_ != TimeStatus::unknown)(this->name()).error(
"Unknown time status.\n");
470 elm.
region_idx().
idx(), (
unsigned long int) region_fields_.size(), name().c_str());
472 "Null field ptr on region id: %d, field: %s\n", elm.
region().
id(), name().c_str());
475 region_fields_[elm.
region_idx().
idx()]->value_list(point_list,elm, value_list);
Common abstract parent of all Field<...> classes.
Container for various descendants of FieldCommonBase.
pair< double, FieldBasePtr > HistoryPoint
Pair: time, pointer to FieldBase instance.
Point accessor allow iterate over bulk quadrature points defined in local element coordinates...
Point accessor allow iterate over quadrature points of given side defined in local element coordinate...
Class template representing a field with values dependent on: point, element, and region...
Directing class of FieldValueCache.
#define ASSERT(expr)
Allow use shorter versions of macro names if these names is not used with external library...
Basic time management functionality for unsteady (and steady) solvers (class Equation).
Point accessor allow iterate over quadrature points of given side defined in local element coordinate...
Basic time management class.
std::shared_ptr< SharedData > data_
static constexpr bool value
Global macros to enhance readability and debugging, general constants.
FieldAlgorithmBase< spacedim, Value >::Point Point
std::shared_ptr< ControlField > no_check_control_field_
virtual Value::return_type const & value(const Point &p, const ElementAccessor< spacedim > &elm) const
Space< spacedim >::Point Point
virtual void value_list(const Armor::array &point_list, const ElementAccessor< spacedim > &elm, std::vector< typename Value::return_type > &value_list) const
base case for building up arguments for the function call
std::vector< FieldBasePtr > region_fields_
std::shared_ptr< FieldBaseType > FieldBasePtr
FieldAlgorithmBase< spacedim, Value > FieldBaseType
std::vector< std::shared_ptr< FactoryBase > > factories_
Point accessor allow iterate over quadrature points of given side defined in local element coordinate...
Class holds local coordinations of evaluating points (bulk and sides) specified by element dimension...
boost::circular_buffer< HistoryPoint > RegionHistory
Nearest history of one region.
RegionIdx region_idx() const
Field< spacedim, typename FieldValue< spacedim >::Enum > ControlField
Class for representation of a vector of fields of the same physical quantity.
Representation of one time step..
unsigned int id() const
Returns id of the region (using RegionDB)
FieldValueCache< typename Value::element_type > value_cache_
unsigned int idx() const
Returns a global index of the region.
std::vector< RegionHistory > region_history_