24 #include <boost/circular_buffer.hpp> 60 template <
int spacedim,
class Value>
class FieldFE;
63 template<
typename CALLABLE,
typename TUPLE,
int INDEX >
91 template<
int spacedim,
class Value>
100 static const unsigned int space_dim = spacedim;
137 virtual bool is_active_field_descriptor(
const Input::Record &in_rec,
const std::string &input_name);
146 Field(
const string &name,
bool bc =
false);
154 Field(
unsigned int component_index,
string input_name,
string name =
"",
bool bc =
false);
173 typename Value::return_type operator() (
BulkPoint &p);
176 typename Value::return_type operator() (
EdgePoint &p);
187 IT::Array get_multifield_input_type()
override;
206 void set_mesh(
const Mesh &mesh)
override;
218 bool is_constant(
Region reg)
override;
229 void set_field(
const RegionSet &domain, FieldBasePtr field,
double time=0.0);
248 void copy_from(
const FieldCommon & other)
override;
253 void field_output(std::shared_ptr<OutputTime> stream)
override;
258 void observe_output(std::shared_ptr<Observe> observe)
override;
293 std::string get_value_attribute()
const override;
319 void add_factory(std::shared_ptr<FactoryBase> factory);
330 void cache_allocate(std::shared_ptr<EvalPoints> eval_points)
override;
348 typename arma::Mat<typename Value::element_type>::template fixed<Value::NRows_, Value::NCols_> operator[] (
unsigned int i_cache_point)
const;
354 void update_history(
const TimeStep &time);
358 std::shared_ptr<OutputTime> stream,
364 void check_initialized_region_fields_();
370 std::shared_ptr< FieldFE<spacedim, Value> > get_field_fe();
415 template<
int dim,
class Val>
418 template<
typename CALLABLE,
typename TUPLE,
int INDEX >
433 template<
int spacedim,
class Value>
437 ASSERT(this->set_time_result_ != TimeStatus::unknown)(this->name()).error(
"Unknown time status.\n");
439 elm.
region_idx().
idx(), (
unsigned long int) region_fields_.size(), name().c_str());
441 "Null field ptr on region id: %d, idx: %d, field: %s\n", elm.
region().
id(), elm.
region_idx().
idx(), name().c_str());
447 template<
int spacedim,
class Value>
451 ASSERT(this->set_time_result_ != TimeStatus::unknown)(this->name()).error(
"Unknown time status.\n");
453 elm.
region_idx().
idx(), (
unsigned long int) region_fields_.size(), name().c_str());
455 "Null field ptr on region id: %d, field: %s\n", elm.
region().
id(), name().c_str());
458 region_fields_[elm.
region_idx().
idx()]->value_list(point_list,elm, value_list);
Common abstract parent of all Field<...> classes.
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).
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_
FieldValueCache< typename Value::element_type > & value_cache()
Same as previous but return non-const reference.
std::shared_ptr< FieldBaseType > FieldBasePtr
FieldAlgorithmBase< spacedim, Value > FieldBaseType
std::vector< std::shared_ptr< FactoryBase > > factories_
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.
const FieldValueCache< typename Value::element_type > & value_cache() const
returns reference to FieldValueCache.
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_