24 #include <boost/circular_buffer.hpp> 63 template <
int spacedim,
class Value>
class FieldFE;
66 template<
typename CALLABLE,
typename TUPLE,
int INDEX >
94 template<
int spacedim,
class Value>
103 static const unsigned int space_dim = spacedim;
140 virtual bool is_active_field_descriptor(
const Input::Record &in_rec,
const std::string &input_name);
149 Field(
const string &name,
bool bc =
false);
157 Field(
unsigned int component_index,
string input_name,
string name =
"",
bool bc =
false);
177 typename Value::return_type operator() (
BulkPoint &p);
181 typename Value::return_type operator() (
EdgePoint &p);
200 IT::Array get_multifield_input_type()
override;
219 void set_mesh(
const Mesh &mesh)
override;
231 bool is_constant(
Region reg)
override;
259 void copy_from(
const FieldCommon & other)
override;
264 void field_output(std::shared_ptr<OutputTime> stream)
override;
269 void observe_output(std::shared_ptr<Observe> observe)
override;
304 std::string get_value_attribute()
const override;
330 void add_factory(std::shared_ptr<FactoryBase> factory);
341 void cache_reallocate(
const ElementCacheMap &cache_map,
unsigned int region_idx)
const override;
344 void cache_update(
ElementCacheMap &cache_map,
unsigned int region_patch_idx)
const override;
360 typename Value::return_type operator[] (
unsigned int i_cache_point)
const;
366 void update_history(
const TimeStep &time);
370 std::shared_ptr<OutputTime> stream,
376 void check_initialized_region_fields_();
382 std::shared_ptr< FieldFE<spacedim, Value> > get_field_fe();
433 template<
int dim,
class Val>
436 template<
typename CALLABLE,
typename TUPLE,
int INDEX >
451 template<
int spacedim,
class Value>
455 ASSERT(this->set_time_result_ != TimeStatus::unknown)(this->name()).error(
"Unknown time status.\n");
457 elm.
region_idx().
idx(), (
unsigned long int) region_fields_.size(), name().c_str());
459 "Null field ptr on region id: %d, idx: %d, field: %s\n", elm.
region().
id(), elm.
region_idx().
idx(), name().c_str());
465 template<
int spacedim,
class Value>
469 ASSERT(this->set_time_result_ != TimeStatus::unknown)(this->name()).error(
"Unknown time status.\n");
471 elm.
region_idx().
idx(), (
unsigned long int) region_fields_.size(), name().c_str());
473 "Null field ptr on region id: %d, field: %s\n", elm.
region().
id(), name().c_str());
476 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_