18 #ifndef TRANSPORT_OPERATOR_SPLITTING_HH_ 19 #define TRANSPORT_OPERATOR_SPLITTING_HH_ 21 #include <boost/exception/info.hpp> 90 virtual void set_target_time(
double target_time) = 0;
95 virtual void set_balance_object(std::shared_ptr<Balance> balance) = 0;
98 virtual bool evaluate_time_constraint(
double &time_constraint) = 0;
104 virtual void calculate_concentration_matrix() = 0;
107 virtual void update_after_reactions(
bool solution_changed) = 0;
110 virtual void set_output_stream(std::shared_ptr<OutputTime> stream) = 0;
113 virtual std::shared_ptr<OutputTime> output_stream() = 0;
116 virtual double **get_concentration_matrix() = 0;
119 virtual const Vec &get_solution(
unsigned int sbi) = 0;
125 virtual LongIdx *get_row_4_el() = 0;
128 virtual unsigned int n_substances() = 0;
190 if(time_)
delete time_;
229 void initialize()
override;
230 void zero_time_step()
override;
231 void update_solution()
override;
233 void compute_until_save_time();
234 void compute_internal_step();
235 void output_data()
override;
258 #endif // TRANSPORT_OPERATOR_SPLITTING_HH_ Abstract base class for equation clasess.
Container for various descendants of FieldCommonBase.
ConcentrationTransportBase(Mesh &init_mesh, const Input::Record in_rec)
Field< 3, FieldValue< 3 >::VectorFixed > flow_flux
Flow flux, can be result of water flow model.
Class template representing a field with values dependent on: point, element, and region...
virtual ~TransportNothing()
MultiField< 3, FieldValue< 3 >::Scalar > sources_density
Concentration sources - density of substance source, only positive part is used.
TransportNothing(Mesh &mesh_in)
Coupling of a transport model with a reaction model by operator splitting.
MultiField< 3, FieldValue< 3 >::Scalar > sources_conc
Basic time management functionality for unsteady (and steady) solvers (class Equation).
static TimeMarks & marks()
Basic time management class.
AdvectionProcessBase FactoryBaseType
std::shared_ptr< ReactionTerm > reaction
MultiField< 3, FieldValue< 3 >::Scalar > sources_sigma
Concentration sources - Robin type, in_flux = sources_sigma * (sources_conc - mobile_conc) ...
TimeMark::Type new_mark_type()
double cfl_convection
Time restriction due to transport.
virtual void output_data() override
Write computed fields.
The class for outputting data during time.
Field< 3, FieldValue< 3 >::Scalar > water_content
Water content - result of unsaturated water flow model or porosity.
std::shared_ptr< ConcentrationTransportBase > convection
int LongIdx
Define type that represents indices of large arrays (elements, nodes, dofs etc.)
double cfl_reaction
Time restriction due to reactions.
Class for representation of a vector of fields of the same physical quantity.
Field< 3, FieldValue< 3 >::Scalar > cross_section
Pointer to DarcyFlow field cross_section.
static const double inf_time
Infinity time used for steady case.
virtual ~TransportEqData()
static const int registrar
Registrar of class to factory.