26 #include <boost/exception/info.hpp> 57 template <
int spacedim,
class Value>
class FieldFE;
126 void initialize()
override;
131 void zero_time_step()
override;
138 bool evaluate_time_constraint(
double &time_constraint)
override;
142 void update_solution()
override;
164 void set_target_time(
double target_time)
override;
169 void set_balance_object(std::shared_ptr<Balance> balance)
override;
172 {
return subst_idx; }
177 virtual void output_data()
override;
183 { output_stream_ = stream; }
190 {
return output_stream_; }
192 double **get_concentration_matrix()
override;
195 {
return vconc[sbi]; }
199 LongIdx *get_row_4_el()
override;
203 {
return substances_.size(); }
207 {
return substances_; }
223 void create_transport_matrix_mpi();
224 void create_mass_matrix();
226 void make_transport_partitioning();
227 void set_initial_condition();
228 void read_concentration_sources();
229 void set_boundary_conditions();
234 void compute_concentration_sources();
239 void transport_matrix_step_mpi(
double time_step);
241 void alloc_transport_vectors();
242 void alloc_transport_structs_mpi();
247 void output_vector_gather();
int LongIdx
Define type that represents indices of large arrays (elements, nodes, dofs etc.)
bool is_mass_diag_changed
Flag indicates that porosity or cross_section changed during last time.
const vector< unsigned int > & get_subst_idx() override
Return substance indices used in balance.
double transport_matrix_time
const Vec & get_solution(unsigned int sbi) override
Return PETSc vector with solution for sbi-th substance.
unsigned int n_substances() override
Returns number of transported substances.
MultiField< 3, FieldValue< 3 >::Scalar > conc_mobile
Calculated concentrations in the mobile zone.
Class template representing a field with values dependent on: point, element, and region...
void set_velocity_field(const MH_DofHandler &dh) override
Pass velocity from flow to transport.
std::shared_ptr< OutputTime > output_stream_
TimeMark::Type target_mark_type
TimeMark type for time marks denoting end of every time interval where transport matrix remains const...
Field< 3, FieldValue< 3 >::Scalar > region_id
double transport_bc_time
Time of the last update of the boundary condition terms.
Coupling of a transport model with a reaction model by operator splitting.
EquationOutput output_fields
Fields indended for output, i.e. all input fields plus those representing solution.
BCMultiField< 3, FieldValue< 3 >::Scalar > bc_conc
std::vector< std::shared_ptr< FieldFE< 3, FieldValue< 3 >::Scalar > > > output_field_ptr
Fields correspond with out_conc.
double ** conc
Concentrations for phase, substance, element.
MultiField< 3, FieldValue< 3 >::Scalar > init_conc
Initial concentrations.
const Input::Record input_rec
Record with input specification.
SubstanceList & substances() override
Returns reference to the vector of substance names.
Field< 3, FieldValue< 3 >::Scalar > subdomain
const MH_DofHandler * mh_dh
std::shared_ptr< OutputTime > output_stream() override
void calculate_concentration_matrix() override
Calculate the array of concentrations per element (for reactions).
static const int registrar
Registrar of class to factory.
std::vector< VectorMPI > out_conc
SubstanceList substances_
Transported substances.
void update_after_reactions(bool solution_changed) override
Perform changes to transport solution after reaction step.
The class for outputting data during time.
vector< unsigned int > subst_idx
List of indices used to call balance methods for a set of quantities.
Vec * vconc
Concentration vectors for mobile phase.
void set_output_stream(std::shared_ptr< OutputTime > stream) override
Setter for output stream.
VecScatter vconc_out_scatter
ConcentrationTransportBase FactoryBaseType
Classes for storing substance data.
Vec vcfl_source_
Parallel vector for source term contribution to CFL condition.
double ** cumulative_corr
Class for representation of a vector of fields of the same physical quantity.
double cfl_max_step
Time step constraint coming from CFL condition.