Flow123d  3.9.0-29681665d
Public Types | Public Member Functions | Static Public Member Functions | Private Attributes | Static Private Attributes | List of all members
TransportOperatorSplitting Class Reference

Coupling of a transport model with a reaction model by operator splitting. More...

#include <transport_operator_splitting.hh>

Inheritance diagram for TransportOperatorSplitting:
Inheritance graph
[legend]
Collaboration diagram for TransportOperatorSplitting:
Collaboration graph
[legend]

Public Types

typedef AdvectionProcessBase FactoryBaseType
 

Public Member Functions

 TransportOperatorSplitting (Mesh &init_mesh, const Input::Record in_rec)
 Constructor. More...
 
virtual ~TransportOperatorSplitting ()
 Destructor. More...
 
void initialize () override
 
void zero_time_step () override
 
void update_solution () override
 
void compute_until_save_time ()
 
void compute_internal_step ()
 
void output_data () override
 Write computed fields. More...
 
- Public Member Functions inherited from AdvectionProcessBase
 AdvectionProcessBase (Mesh &mesh, const Input::Record in_rec)
 
- Public Member Functions inherited from EquationBase
 EquationBase ()
 
 EquationBase (Mesh &mesh, const Input::Record in_rec)
 
virtual ~EquationBase ()
 
virtual void choose_next_time ()
 
virtual void set_time_upper_constraint (double dt, std::string message)
 
virtual void set_time_lower_constraint (double dt, std::string message)
 
TimeGovernortime ()
 
virtual void set_time_governor (TimeGovernor &time)
 
double planned_time ()
 
virtual double solved_time ()
 
Meshmesh ()
 
std::shared_ptr< Balancebalance () const
 
TimeMark::Type mark_type ()
 
FieldSeteq_fieldset ()
 

Static Public Member Functions

static const Input::Type::Recordget_input_type ()
 Declare input record type for the equation TransportOperatorSplittiong. More...
 
- Static Public Member Functions inherited from AdvectionProcessBase
static Input::Type::Abstractget_input_type ()
 Common specification of the input record for secondary equations. More...
 
- Static Public Member Functions inherited from EquationBase
static Input::Type::Recordrecord_template ()
 Template Record with common keys for derived equations. More...
 

Private Attributes

std::shared_ptr< ConcentrationTransportBaseconvection
 
std::shared_ptr< ReactionTermreaction
 
double cfl_convection
 Time restriction due to transport. More...
 

Static Private Attributes

static const int registrar
 Registrar of class to factory. More...
 

Additional Inherited Members

- Protected Attributes inherited from EquationBase
bool equation_empty_
 flag is true if only default constructor was called More...
 
Meshmesh_
 
TimeGovernortime_
 
Input::Record input_record_
 
FieldSeteq_fieldset_
 
std::shared_ptr< Balancebalance_
 object for calculation and writing the mass balance to file. More...
 

Detailed Description

Coupling of a transport model with a reaction model by operator splitting.

Outline: Transport model is any descendant of TransportBase (even TransportOperatorSplitting itself). This should perform the transport possibly with diffusion and usually without coupling between substances and phases.

Reaction is any descendant of the ReactionBase class. This represents reactions in general way of any coupling that happens between substances and phases on one element or more generally on one DoF.

Definition at line 205 of file transport_operator_splitting.hh.

Member Typedef Documentation

◆ FactoryBaseType

Definition at line 207 of file transport_operator_splitting.hh.

Constructor & Destructor Documentation

◆ TransportOperatorSplitting()

TransportOperatorSplitting::TransportOperatorSplitting ( Mesh init_mesh,
const Input::Record  in_rec 
)

Constructor.

Definition at line 156 of file transport_operator_splitting.cc.

◆ ~TransportOperatorSplitting()

TransportOperatorSplitting::~TransportOperatorSplitting ( )
virtual

Destructor.

Definition at line 219 of file transport_operator_splitting.cc.

Member Function Documentation

◆ compute_internal_step()

void TransportOperatorSplitting::compute_internal_step ( )

◆ compute_until_save_time()

void TransportOperatorSplitting::compute_until_save_time ( )

◆ get_input_type()

const Record & TransportOperatorSplitting::get_input_type ( )
static

Declare input record type for the equation TransportOperatorSplittiong.

TODO: The question is if this should be a general coupling class (e.g. allow coupling TranportDG with reactions even if it is not good idea for numerical reasons.) To make this a coupling class we should modify all main input files for transport problems.

Definition at line 69 of file transport_operator_splitting.cc.

◆ initialize()

void TransportOperatorSplitting::initialize ( )
overridevirtual

This method should initialize fields of the equation. All members (e.g. number of components) that are necessary for the field initialization must be set between construction and call of initialize. After this method the upper level coupling may set sharing of some fields between equations.

Reimplemented from EquationBase.

Definition at line 227 of file transport_operator_splitting.cc.

◆ output_data()

void TransportOperatorSplitting::output_data ( )
overridevirtual

Write computed fields.

Reimplemented from EquationBase.

Definition at line 242 of file transport_operator_splitting.cc.

Here is the caller graph for this function:

◆ update_solution()

void TransportOperatorSplitting::update_solution ( )
overridevirtual

Calculation of the next time step and its output.

Reimplemented from EquationBase.

Definition at line 270 of file transport_operator_splitting.cc.

◆ zero_time_step()

void TransportOperatorSplitting::zero_time_step ( )
overridevirtual

Initialization of the solution in the zero time.

There may be fields that can not be initialized in the initialize method as they are provided by the coupling. Fields coming from coupling has to be set after the initialize method and before zero_time_step.

Reimplemented from EquationBase.

Definition at line 255 of file transport_operator_splitting.cc.

Member Data Documentation

◆ cfl_convection

double TransportOperatorSplitting::cfl_convection
private

Time restriction due to transport.

Definition at line 240 of file transport_operator_splitting.hh.

◆ convection

std::shared_ptr<ConcentrationTransportBase> TransportOperatorSplitting::convection
private

Definition at line 237 of file transport_operator_splitting.hh.

◆ reaction

std::shared_ptr<ReactionTerm> TransportOperatorSplitting::reaction
private

Definition at line 238 of file transport_operator_splitting.hh.

◆ registrar

const int TransportOperatorSplitting::registrar
staticprivate
Initial value:
=
Input::register_class< TransportOperatorSplitting, Mesh &, const Input::Record>("Coupling_OperatorSplitting") +

Registrar of class to factory.

Definition at line 235 of file transport_operator_splitting.hh.


The documentation for this class was generated from the following files:
Input::Type::Record::size
unsigned int size() const
Returns number of keys in the Record.
Definition: type_record.hh:602
TransportOperatorSplitting::get_input_type
static const Input::Type::Record & get_input_type()
Declare input record type for the equation TransportOperatorSplittiong.
Definition: transport_operator_splitting.cc:69