Flow123d  DF_patch_fe_darcy_complete-579fe1e
Public Types | Public Member Functions | Static Public Member Functions | Private Attributes | Friends | List of all members
MatrixMpiAssemblyConvection< dim, TEqData > Class Template Reference

#include <assembly_convection.hh>

Inheritance diagram for MatrixMpiAssemblyConvection< dim, TEqData >:
Inheritance graph
[legend]
Collaboration diagram for MatrixMpiAssemblyConvection< dim, TEqData >:
Collaboration graph
[legend]

Public Types

typedef TEqData::EqFields EqFields
 
typedef TEqData EqData
 

Public Member Functions

 MatrixMpiAssemblyConvection (EqData *eq_data, AssemblyInternals *asm_internals)
 Constructor. More...
 
 ~MatrixMpiAssemblyConvection ()
 Destructor. More...
 
void initialize ()
 Initialize auxiliary vectors and other data members. More...
 
void edge_integral (RangeConvert< DHEdgeSide, DHCellSide > edge_side_range)
 Assembles the fluxes between sides of elements of the same dimension. More...
 
void dimjoin_intergral (DHCellAccessor cell_lower_dim, DHCellSide neighb_side)
 Assembles the fluxes between elements of different dimensions. More...
 
void begin () override
 Implements AssemblyBase::begin. More...
 
void end () override
 Implements AssemblyBase::end. More...
 
- Public Member Functions inherited from AssemblyBase< dim >
 AssemblyBase (unsigned int quad_order, AssemblyInternals *asm_internals)
 
virtual ~AssemblyBase ()
 Destructor. More...
 
virtual void cell_integral (FMT_UNUSED DHCellAccessor cell, FMT_UNUSED unsigned int element_patch_idx)
 
virtual void boundary_side_integral (FMT_UNUSED DHCellSide cell_side)
 
virtual void edge_integral (FMT_UNUSED RangeConvert< DHEdgeSide, DHCellSide > edge_side_range)
 
virtual void dimjoin_intergral (FMT_UNUSED DHCellAccessor cell_lower_dim, FMT_UNUSED DHCellSide neighb_side)
 
std::shared_ptr< BulkIntegralAcc< dim > > create_bulk_integral (Quadrature *quad)
 
std::shared_ptr< EdgeIntegralAcc< dim > > create_edge_integral (Quadrature *quad)
 
std::shared_ptr< CouplingIntegralAcc< dim > > create_coupling_integral (Quadrature *quad)
 
std::shared_ptr< BoundaryIntegralAcc< dim > > create_boundary_integral (Quadrature *quad)
 
bool add_integrals_of_computing_step (DHCellAccessor cell)
 
virtual void assemble_cell_integrals ()
 
void assemble_boundary_side_integrals ()
 
void assemble_edge_integrals ()
 
void assemble_neighbour_integrals ()
 
void set_min_edge_sides (unsigned int val)
 Setter of min_edge_sides_. More...
 
void clean_integral_data ()
 
const DimIntegrals< dim > & integrals () const
 Getter of integrals_. More...
 
const IntegralDataintegral_data () const
 Getter of integral_data_. More...
 

Static Public Member Functions

static constexpr const char * name ()
 

Private Attributes

shared_ptr< FiniteElement< dim > > fe_
 Finite element for the solution of the advection-diffusion equation. More...
 
shared_ptr< FiniteElement< dim+1 > > fe_high_
 Same as previous but represents finite element of higher dim of join integral. More...
 
EqFieldseq_fields_
 Data objects shared with ConvectionTransport. More...
 
EqDataeq_data_
 
FieldSet used_fields_
 Sub field set contains fields used in calculation. More...
 
FEValues< 3 > fe_values_side_
 FEValues of object (of P disc finite element type) More...
 
vector< FEValues< 3 > > fe_values_vec_
 Vector of FEValues of object (of P disc finite element types) More...
 
vector< LongIdxdof_indices_i_
 
vector< LongIdxdof_indices_j_
 Global DOF indices. More...
 
std::vector< LongIdxside_dofs_
 
std::vector< double > side_flux_
 
std::vector< double > elm_meassures_
 
std::vector< LongIdxall_elem_dofs_
 
std::vector< double > row_values_
 
double aij
 
double edg_flux
 
double flux
 
std::shared_ptr< EdgeIntegralAcc< dim > > edge_integral_
 Edge integral of assembly class. More...
 
std::shared_ptr< CouplingIntegralAcc< dim > > coupling_integral_
 Coupling integral of assembly class. More...
 

Friends

template<template< IntDim... > class DimAssembly>
class GenericAssembly
 

Additional Inherited Members

- Protected Member Functions inherited from AssemblyBase< dim >
 AssemblyBase ()
 
void add_volume_integrals (const DHCellAccessor &cell)
 
void add_edge_integrals (const DHCellSide &cell_side)
 
void add_boundary_integrals (const DHCellSide &bdr_side)
 
void add_coupling_integrals (const DHCellAccessor &cell)
 
template<template< unsigned int > class IntegralAcc>
void add_side_points (std::shared_ptr< IntegralAcc< dim > > &integral, DHCellSide cell_side, PatchPointValues< 3 > &ppv)
 
std::string print_update_flags (UpdateFlags u) const
 Print update flags to string format. More...
 
- Protected Attributes inherited from AssemblyBase< dim >
Quadraturequad_
 Quadrature used in assembling methods. More...
 
Quadraturequad_low_
 Quadrature used in assembling methods (dim-1). More...
 
DimIntegrals< dim > integrals_
 Set of used integrals. More...
 
AssemblyInternalsasm_internals_
 Holds shared internals data with GeneriAssembly. More...
 
unsigned int min_edge_sides_
 
IntegralData integral_data_
 Holds patch data for computing different types of integrals. More...
 

Detailed Description

template<unsigned int dim, class TEqData>
class MatrixMpiAssemblyConvection< dim, TEqData >

Auxiliary container class for Finite element and related objects of given dimension.

Assembly convection term part of the matrix and boundary matrix for application of boundary conditions.

Discretization of the convection term use explicit time scheme and finite volumes with full upwinding. We count on with exchange between dimensions and mixing on edges where more then two elements connect (can happen for 2D and 1D elements in 3D embedding space)

In order to get multiplication matrix for explicit transport one have to scale the convection part by the acctual time step and add time term, i. e. unit matrix (see. transport_matrix_step_mpi)

Updates CFL time step constrain.

Definition at line 363 of file assembly_convection.hh.

Member Typedef Documentation

◆ EqData

template<unsigned int dim, class TEqData >
typedef TEqData MatrixMpiAssemblyConvection< dim, TEqData >::EqData

Definition at line 367 of file assembly_convection.hh.

◆ EqFields

template<unsigned int dim, class TEqData >
typedef TEqData::EqFields MatrixMpiAssemblyConvection< dim, TEqData >::EqFields

Definition at line 366 of file assembly_convection.hh.

Constructor & Destructor Documentation

◆ MatrixMpiAssemblyConvection()

template<unsigned int dim, class TEqData >
MatrixMpiAssemblyConvection< dim, TEqData >::MatrixMpiAssemblyConvection ( EqData eq_data,
AssemblyInternals asm_internals 
)
inline

Constructor.

Definition at line 372 of file assembly_convection.hh.

◆ ~MatrixMpiAssemblyConvection()

template<unsigned int dim, class TEqData >
MatrixMpiAssemblyConvection< dim, TEqData >::~MatrixMpiAssemblyConvection ( )
inline

Destructor.

Definition at line 380 of file assembly_convection.hh.

Member Function Documentation

◆ begin()

template<unsigned int dim, class TEqData >
void MatrixMpiAssemblyConvection< dim, TEqData >::begin ( )
inlineoverridevirtual

Implements AssemblyBase::begin.

Reimplemented from AssemblyBase< dim >.

Definition at line 471 of file assembly_convection.hh.

◆ dimjoin_intergral()

template<unsigned int dim, class TEqData >
void MatrixMpiAssemblyConvection< dim, TEqData >::dimjoin_intergral ( DHCellAccessor  cell_lower_dim,
DHCellSide  neighb_side 
)
inline

Assembles the fluxes between elements of different dimensions.

Definition at line 444 of file assembly_convection.hh.

◆ edge_integral()

template<unsigned int dim, class TEqData >
void MatrixMpiAssemblyConvection< dim, TEqData >::edge_integral ( RangeConvert< DHEdgeSide, DHCellSide edge_side_range)
inline

Assembles the fluxes between sides of elements of the same dimension.

Definition at line 405 of file assembly_convection.hh.

◆ end()

template<unsigned int dim, class TEqData >
void MatrixMpiAssemblyConvection< dim, TEqData >::end ( )
inlineoverridevirtual

Implements AssemblyBase::end.

Reimplemented from AssemblyBase< dim >.

Definition at line 478 of file assembly_convection.hh.

◆ initialize()

template<unsigned int dim, class TEqData >
void MatrixMpiAssemblyConvection< dim, TEqData >::initialize ( )
inline

Initialize auxiliary vectors and other data members.

Definition at line 383 of file assembly_convection.hh.

◆ name()

template<unsigned int dim, class TEqData >
static constexpr const char* MatrixMpiAssemblyConvection< dim, TEqData >::name ( )
inlinestaticconstexpr

Definition at line 369 of file assembly_convection.hh.

Friends And Related Function Documentation

◆ GenericAssembly

template<unsigned int dim, class TEqData >
template<template< IntDim... > class DimAssembly>
friend class GenericAssembly
friend

Definition at line 523 of file assembly_convection.hh.

Member Data Documentation

◆ aij

template<unsigned int dim, class TEqData >
double MatrixMpiAssemblyConvection< dim, TEqData >::aij
private

Definition at line 516 of file assembly_convection.hh.

◆ all_elem_dofs_

template<unsigned int dim, class TEqData >
std::vector<LongIdx> MatrixMpiAssemblyConvection< dim, TEqData >::all_elem_dofs_
private

Definition at line 514 of file assembly_convection.hh.

◆ coupling_integral_

template<unsigned int dim, class TEqData >
std::shared_ptr<CouplingIntegralAcc<dim> > MatrixMpiAssemblyConvection< dim, TEqData >::coupling_integral_
private

Coupling integral of assembly class.

Definition at line 520 of file assembly_convection.hh.

◆ dof_indices_i_

template<unsigned int dim, class TEqData >
vector<LongIdx> MatrixMpiAssemblyConvection< dim, TEqData >::dof_indices_i_
private

Definition at line 509 of file assembly_convection.hh.

◆ dof_indices_j_

template<unsigned int dim, class TEqData >
vector<LongIdx> MatrixMpiAssemblyConvection< dim, TEqData >::dof_indices_j_
private

Global DOF indices.

Definition at line 509 of file assembly_convection.hh.

◆ edg_flux

template<unsigned int dim, class TEqData >
double MatrixMpiAssemblyConvection< dim, TEqData >::edg_flux
private

Definition at line 517 of file assembly_convection.hh.

◆ edge_integral_

template<unsigned int dim, class TEqData >
std::shared_ptr<EdgeIntegralAcc<dim> > MatrixMpiAssemblyConvection< dim, TEqData >::edge_integral_
private

Edge integral of assembly class.

Definition at line 519 of file assembly_convection.hh.

◆ elm_meassures_

template<unsigned int dim, class TEqData >
std::vector<double> MatrixMpiAssemblyConvection< dim, TEqData >::elm_meassures_
private

Definition at line 513 of file assembly_convection.hh.

◆ eq_data_

template<unsigned int dim, class TEqData >
EqData* MatrixMpiAssemblyConvection< dim, TEqData >::eq_data_
private

Definition at line 502 of file assembly_convection.hh.

◆ eq_fields_

template<unsigned int dim, class TEqData >
EqFields* MatrixMpiAssemblyConvection< dim, TEqData >::eq_fields_
private

Data objects shared with ConvectionTransport.

Definition at line 501 of file assembly_convection.hh.

◆ fe_

template<unsigned int dim, class TEqData >
shared_ptr<FiniteElement<dim> > MatrixMpiAssemblyConvection< dim, TEqData >::fe_
private

Finite element for the solution of the advection-diffusion equation.

Definition at line 497 of file assembly_convection.hh.

◆ fe_high_

template<unsigned int dim, class TEqData >
shared_ptr<FiniteElement<dim+1> > MatrixMpiAssemblyConvection< dim, TEqData >::fe_high_
private

Same as previous but represents finite element of higher dim of join integral.

Definition at line 498 of file assembly_convection.hh.

◆ fe_values_side_

template<unsigned int dim, class TEqData >
FEValues<3> MatrixMpiAssemblyConvection< dim, TEqData >::fe_values_side_
private

FEValues of object (of P disc finite element type)

Definition at line 507 of file assembly_convection.hh.

◆ fe_values_vec_

template<unsigned int dim, class TEqData >
vector<FEValues<3> > MatrixMpiAssemblyConvection< dim, TEqData >::fe_values_vec_
private

Vector of FEValues of object (of P disc finite element types)

Definition at line 508 of file assembly_convection.hh.

◆ flux

template<unsigned int dim, class TEqData >
double MatrixMpiAssemblyConvection< dim, TEqData >::flux
private

Definition at line 517 of file assembly_convection.hh.

◆ row_values_

template<unsigned int dim, class TEqData >
std::vector<double> MatrixMpiAssemblyConvection< dim, TEqData >::row_values_
private

Definition at line 515 of file assembly_convection.hh.

◆ side_dofs_

template<unsigned int dim, class TEqData >
std::vector<LongIdx> MatrixMpiAssemblyConvection< dim, TEqData >::side_dofs_
private

Definition at line 511 of file assembly_convection.hh.

◆ side_flux_

template<unsigned int dim, class TEqData >
std::vector<double> MatrixMpiAssemblyConvection< dim, TEqData >::side_flux_
private

Definition at line 512 of file assembly_convection.hh.

◆ used_fields_

template<unsigned int dim, class TEqData >
FieldSet MatrixMpiAssemblyConvection< dim, TEqData >::used_fields_
private

Sub field set contains fields used in calculation.

Definition at line 505 of file assembly_convection.hh.


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