24 #include <boost/circular_buffer.hpp> 56 template <
int spacedim,
class Value>
class FieldFE;
82 template<
int spacedim,
class Value>
91 static const unsigned int space_dim = spacedim;
128 virtual bool is_active_field_descriptor(
const Input::Record &in_rec,
const std::string &input_name);
137 Field(
const string &name,
bool bc =
false);
145 Field(
unsigned int component_index,
string input_name,
string name =
"",
bool bc =
false);
172 IT::Array get_multifield_input_type()
override;
191 void set_mesh(
const Mesh &mesh)
override;
203 bool is_constant(
Region reg)
override;
214 void set_field(
const RegionSet &domain, FieldBasePtr field,
double time=0.0);
233 void copy_from(
const FieldCommon & other)
override;
238 void field_output(std::shared_ptr<OutputTime> stream)
override;
243 void observe_output(std::shared_ptr<Observe> observe)
override;
278 std::string get_value_attribute()
const override;
304 void add_factory(std::shared_ptr<FactoryBase> factory);
320 void update_history(
const TimeStep &time);
324 std::shared_ptr<OutputTime> stream,
330 void check_initialized_region_fields_();
336 std::shared_ptr< FieldFE<spacedim, Value> > get_field_fe();
376 template<
int dim,
class Val>
391 template<
int spacedim,
class Value>
397 elm.
region_idx().
idx(), (
unsigned long int) region_fields_.size(),
name().c_str());
405 template<
int spacedim,
class Value>
411 elm.
region_idx().
idx(), (
unsigned long int) region_fields_.size(),
name().c_str());
413 "Null field ptr on region id: %d, field: %s\n", elm.
region().
id(),
name().c_str());
415 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.
std::shared_ptr< FieldFE< spacedim, Value > > create_field(VectorMPI &vec_seq, Mesh &mesh, unsigned int n_comp)
Class template representing a field with values dependent on: point, element, and region...
#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).
virtual void value_list(const std::vector< Point > &point_list, const ElementAccessor< spacedim > &elm, std::vector< typename Value::return_type > &value_list) const
Basic time management class.
std::shared_ptr< SharedData > data_
static constexpr bool value
Global macros to enhance readability and debugging, general constants.
const std::string & name() const
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
std::vector< FieldBasePtr > region_fields_
std::shared_ptr< FieldBaseType > FieldBasePtr
FieldAlgorithmBase< spacedim, Value > FieldBaseType
std::vector< std::shared_ptr< FactoryBase > > factories_
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..
TimeStatus set_time_result_
unsigned int id() const
Returns id of the region (using RegionDB)
unsigned int idx() const
Returns a global index of the region.
std::vector< RegionHistory > region_history_