Flow123d  master-f44eb46
Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
ConvectionTransport Class Reference

#include <transport.h>

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

Classes

class  EqData
 
class  EqFields
 

Public Types

typedef ConcentrationTransportBase FactoryBaseType
 
- Public Types inherited from ConcentrationTransportBase
typedef std::vector< std::shared_ptr< FieldFE< 3, FieldValue< 3 >::Scalar > > > FieldFEScalarVec
 

Public Member Functions

 ConvectionTransport (Mesh &init_mesh, const Input::Record in_rec)
 
virtual ~ConvectionTransport ()
 
void initialize () override
 
void zero_time_step () override
 
bool evaluate_time_constraint (double &time_constraint) override
 
void update_solution () override
 
void compute_p0_interpolation () override
 
void update_after_reactions (bool) override
 Not used in this class. More...
 
void set_target_time (double target_time) override
 
void set_balance_object (std::shared_ptr< Balance > balance) override
 
const vector< unsigned int > & get_subst_idx () override
 Return substance indices used in balance. More...
 
virtual void output_data () override
 Write computed fields. More...
 
void set_output_stream (std::shared_ptr< OutputTime > stream) override
 Setter for output stream. More...
 
FieldFEScalarVecget_p0_interpolation () override
 Getter for P0 interpolation by FieldFE. More...
 
Vec get_component_vec (unsigned int sbi) override
 Return PETSc vector with solution for sbi-th substance. More...
 
unsigned int n_substances () override
 Returns number of transported substances. More...
 
SubstanceListsubstances () override
 Returns reference to the vector of substance names. More...
 
- Public Member Functions inherited from ConcentrationTransportBase
 ConcentrationTransportBase (Mesh &init_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 ()
 
std::shared_ptr< FieldSeteq_fieldset_ptr ()
 
void init_user_fields (Input::Array user_fields, FieldSet &output_fields)
 

Static Public Member Functions

static const Input::Type::Recordget_input_type ()
 
static const IT::Selectionget_output_selection ()
 
- Static Public Member Functions inherited from ConcentrationTransportBase
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...
 
static Input::Type::Recorduser_fields_template (std::string equation_name)
 Template Record with common key user_fields for derived equations. More...
 

Private Member Functions

void alloc_transport_vectors ()
 
void alloc_transport_structs_mpi ()
 

Private Attributes

std::shared_ptr< EqFieldseq_fields_
 
std::shared_ptr< EqDataeq_data_
 
bool is_src_term_scaled
 
bool is_bc_term_scaled
 
TimeMark::Type target_mark_type
 TimeMark type for time marks denoting end of every time interval where transport matrix remains constant. More...
 
double cfl_max_step
 Time step constraint coming from CFL condition. More...
 
VecScatter vconc_out_scatter
 
Vec vpmass_diag
 
Vec * vpconc
 
Vec * vcumulative_corr
 
const Input::Record input_rec
 Record with input specification. More...
 
std::shared_ptr< OutputTimeoutput_stream_
 
GenericAssembly< MassAssemblyConvection > * mass_assembly_
 general assembly objects, hold assembly objects of appropriate dimension More...
 
GenericAssembly< InitCondAssemblyConvection > * init_cond_assembly_
 
GenericAssembly< ConcSourcesBdrAssemblyConvection > * conc_sources_bdr_assembly_
 
GenericAssembly< MatrixMpiAssemblyConvection > * matrix_mpi_assembly_
 

Static Private Attributes

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

Friends

class TransportOperatorSplitting
 

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_
 
std::shared_ptr< FieldSeteq_fieldset_
 
std::shared_ptr< Balancebalance_
 object for calculation and writing the mass balance to file. More...
 

Detailed Description

TODO:

Definition at line 86 of file transport.h.

Member Typedef Documentation

◆ FactoryBaseType

Definition at line 185 of file transport.h.

Constructor & Destructor Documentation

◆ ConvectionTransport()

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

Constructor.

Definition at line 124 of file transport.cc.

◆ ~ConvectionTransport()

ConvectionTransport::~ConvectionTransport ( )
virtual

TODO: destructor

Definition at line 206 of file transport.cc.

Member Function Documentation

◆ alloc_transport_structs_mpi()

void ConvectionTransport::alloc_transport_structs_mpi ( )
private

Definition at line 251 of file transport.cc.

Here is the caller graph for this function:

◆ alloc_transport_vectors()

void ConvectionTransport::alloc_transport_vectors ( )
private

Definition at line 243 of file transport.cc.

Here is the caller graph for this function:

◆ compute_p0_interpolation()

void ConvectionTransport::compute_p0_interpolation ( )
inlineoverridevirtual

Compute P0 interpolation of the solution (used reaction term). Empty - solution is already P0 interpolation.

Implements ConcentrationTransportBase.

Definition at line 221 of file transport.h.

◆ evaluate_time_constraint()

bool ConvectionTransport::evaluate_time_constraint ( double &  time_constraint)
overridevirtual

Evaluates CFL condition. Assembles the transport matrix and vector (including sources, bc terms).

Parameters
time_constraintis the value CFL constraint (return parameter)
Returns
true if CFL is changed since previous step, false otherwise

Implements ConcentrationTransportBase.

Definition at line 326 of file transport.cc.

◆ get_component_vec()

Vec ConvectionTransport::get_component_vec ( unsigned int  sbi)
overridevirtual

Return PETSc vector with solution for sbi-th substance.

Implements ConcentrationTransportBase.

Definition at line 199 of file transport.cc.

◆ get_input_type()

const IT::Record & ConvectionTransport::get_input_type ( )
static

Definition at line 73 of file transport.cc.

◆ get_output_selection()

static const IT::Selection& ConvectionTransport::get_output_selection ( )
static

◆ get_p0_interpolation()

ConvectionTransport::FieldFEScalarVec & ConvectionTransport::get_p0_interpolation ( )
overridevirtual

Getter for P0 interpolation by FieldFE.

Getters.

Implements ConcentrationTransportBase.

Definition at line 522 of file transport.cc.

◆ get_subst_idx()

const vector<unsigned int>& ConvectionTransport::get_subst_idx ( )
inlineoverridevirtual

Return substance indices used in balance.

Implements ConcentrationTransportBase.

Definition at line 249 of file transport.h.

◆ initialize()

void ConvectionTransport::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 148 of file transport.cc.

◆ n_substances()

unsigned int ConvectionTransport::n_substances ( )
inlineoverridevirtual

Returns number of transported substances.

Implements ConcentrationTransportBase.

Definition at line 271 of file transport.h.

Here is the caller graph for this function:

◆ output_data()

void ConvectionTransport::output_data ( void  )
overridevirtual

Write computed fields.

Reimplemented from EquationBase.

Definition at line 527 of file transport.cc.

Here is the caller graph for this function:

◆ set_balance_object()

void ConvectionTransport::set_balance_object ( std::shared_ptr< Balance balance)
overridevirtual

Use Balance object from upstream equation (e.g. in various couplings) instead of own instance.

Implements ConcentrationTransportBase.

Definition at line 539 of file transport.cc.

◆ set_output_stream()

void ConvectionTransport::set_output_stream ( std::shared_ptr< OutputTime stream)
inlineoverridevirtual

Setter for output stream.

Implements ConcentrationTransportBase.

Definition at line 257 of file transport.h.

◆ set_target_time()

void ConvectionTransport::set_target_time ( double  target_time)
overridevirtual

Set time interval which is considered as one time step by TransportOperatorSplitting. In particular the velocity field doesn't change over this interval.

Dependencies:

velocity, porosity -> matrix, source_vector matrix -> time_step

data_read_times -> time_step (not necessary if we won't stick to jump times) data -> source_vector time_step -> scaling

Implements ConcentrationTransportBase.

Definition at line 499 of file transport.cc.

◆ substances()

SubstanceList& ConvectionTransport::substances ( )
inlineoverridevirtual

Returns reference to the vector of substance names.

Implements ConcentrationTransportBase.

Definition at line 275 of file transport.h.

◆ update_after_reactions()

void ConvectionTransport::update_after_reactions ( bool  )
inlineoverridevirtual

Not used in this class.

Implements ConcentrationTransportBase.

Definition at line 224 of file transport.h.

◆ update_solution()

void ConvectionTransport::update_solution ( void  )
overridevirtual

Calculates one time step of explicit transport.

Reimplemented from EquationBase.

Definition at line 395 of file transport.cc.

◆ zero_time_step()

void ConvectionTransport::zero_time_step ( )
overridevirtual

Initialize solution at zero time.

Reimplemented from EquationBase.

Definition at line 294 of file transport.cc.

Friends And Related Function Documentation

◆ TransportOperatorSplitting

friend class TransportOperatorSplitting
friend

Definition at line 327 of file transport.h.

Member Data Documentation

◆ cfl_max_step

double ConvectionTransport::cfl_max_step
private

Time step constraint coming from CFL condition.

Definition at line 305 of file transport.h.

◆ conc_sources_bdr_assembly_

GenericAssembly< ConcSourcesBdrAssemblyConvection >* ConvectionTransport::conc_sources_bdr_assembly_
private

Definition at line 324 of file transport.h.

◆ eq_data_

std::shared_ptr<EqData> ConvectionTransport::eq_data_
private

Definition at line 292 of file transport.h.

◆ eq_fields_

std::shared_ptr<EqFields> ConvectionTransport::eq_fields_
private

Parameters of the equation, some are shared with other implementations since EqFields is derived from TransportBase::TransportEqFields

Definition at line 291 of file transport.h.

◆ init_cond_assembly_

GenericAssembly< InitCondAssemblyConvection >* ConvectionTransport::init_cond_assembly_
private

Definition at line 323 of file transport.h.

◆ input_rec

const Input::Record ConvectionTransport::input_rec
private

Record with input specification.

Definition at line 316 of file transport.h.

◆ is_bc_term_scaled

bool ConvectionTransport::is_bc_term_scaled
private

Definition at line 300 of file transport.h.

◆ is_src_term_scaled

bool ConvectionTransport::is_src_term_scaled
private

Flag indicates the state of object (transport matrix or source or boundary term). If false, the object is freshly assembled and not rescaled. If true, the object is scaled (not necessarily with the current time step).

Definition at line 300 of file transport.h.

◆ mass_assembly_

GenericAssembly< MassAssemblyConvection >* ConvectionTransport::mass_assembly_
private

general assembly objects, hold assembly objects of appropriate dimension

Definition at line 322 of file transport.h.

◆ matrix_mpi_assembly_

GenericAssembly< MatrixMpiAssemblyConvection >* ConvectionTransport::matrix_mpi_assembly_
private

Definition at line 325 of file transport.h.

◆ output_stream_

std::shared_ptr<OutputTime> ConvectionTransport::output_stream_
private

Definition at line 318 of file transport.h.

◆ registrar

const int ConvectionTransport::registrar
staticprivate
Initial value:
=
Input::register_class< ConvectionTransport, Mesh &, const Input::Record >(_equation_name) +
static const Input::Type::Record & get_input_type()
Definition: transport.cc:73
unsigned int size() const
Returns number of keys in the Record.
Definition: type_record.hh:602
const string _equation_name
Definition: transport.cc:67

Registrar of class to factory.

Definition at line 286 of file transport.h.

◆ target_mark_type

TimeMark::Type ConvectionTransport::target_mark_type
private

TimeMark type for time marks denoting end of every time interval where transport matrix remains constant.

Definition at line 304 of file transport.h.

◆ vconc_out_scatter

VecScatter ConvectionTransport::vconc_out_scatter
private

Definition at line 308 of file transport.h.

◆ vcumulative_corr

Vec* ConvectionTransport::vcumulative_corr
private

Definition at line 313 of file transport.h.

◆ vpconc

Vec* ConvectionTransport::vpconc
private

Definition at line 312 of file transport.h.

◆ vpmass_diag

Vec ConvectionTransport::vpmass_diag
private

Definition at line 309 of file transport.h.


The documentation for this class was generated from the following files: