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);
327 void check_initialized_region_fields_();
333 std::shared_ptr< FieldFE<spacedim, Value> > get_field_fe();
373 template<
int dim,
class Val>
388 template<
int spacedim,
class Value>
394 elm.
region_idx().
idx(), (
unsigned long int) region_fields_.size(),
name().c_str());
402 template<
int spacedim,
class Value>
408 elm.
region_idx().
idx(), (
unsigned long int) region_fields_.size(),
name().c_str());
410 "Null field ptr on region id: %d, field: %s\n", elm.
region().
id(),
name().c_str());
412 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_