Opm::PressureTransferPolicy< FineOperator, Communication, transpose > Class Template Referenceabstract

#include <PressureTransferPolicy.hpp>

Inheritance diagram for Opm::PressureTransferPolicy< FineOperator, Communication, transpose >:
Inheritance graph

Public Types

typedef Details::CoarseOperatorType< Communication > CoarseOperator
 
typedef Dune::Amg::LevelTransferPolicyCpr< FineOperator, CoarseOperatorParentType
 
typedef Communication ParallelInformation
 
typedef FineOperator::domain_type FineVectorType
 
typedef FineOperator FineOperatorType
 The linear operator of the finel level system. Has to be derived from AssembledLinearOperator. More...
 
typedef FineOperatorType::range_type FineRangeType
 The type of the range of the fine level operator. More...
 
typedef FineOperatorType::domain_type FineDomainType
 The type of the domain of the fine level operator. More...
 
typedef Details::CoarseOperatorType< Communication > CoarseOperatorType
 The linear operator of the finel level system. Has to be derived from AssembledLinearOperator. More...
 
typedef CoarseOperatorType::range_type CoarseRangeType
 The type of the range of the coarse level operator. More...
 
typedef CoarseOperatorType::domain_type CoarseDomainType
 The type of the domain of the coarse level operator. More...
 

Public Member Functions

 PressureTransferPolicy (const Communication &comm, const FineVectorType &weights, const Opm::PropertyTree &, int pressure_var_index)
 
virtual void createCoarseLevelSystem (const FineOperator &fineOperator) override
 Algebraically creates the coarse level system. More...
 
virtual void calculateCoarseEntries (const FineOperator &fineOperator) override
 ???. More...
 
virtual void moveToCoarseLevel (const typename ParentType::FineRangeType &fine) override
 
virtual void moveToFineLevel (typename ParentType::FineDomainType &fine) override
 Updates the fine level linear system after the correction of the coarse levels system. More...
 
virtual PressureTransferPolicyclone () const override
 Clone the current object. More...
 
const Communication & getCoarseLevelCommunication () const
 
std::size_t getPressureIndex () const
 
std::shared_ptr< CoarseOperatorType > & getCoarseLevelOperator ()
 Get the coarse level operator. More...
 
CoarseRangeTypegetCoarseLevelRhs ()
 Get the coarse level right hand side. More...
 
CoarseDomainTypegetCoarseLevelLhs ()
 Get the coarse level left hand side. More...
 
virtual void moveToCoarseLevel (const FineRangeType &fineRhs)=0
 Transfers the data to the coarse level. More...
 

Protected Attributes

CoarseRangeType rhs_
 The coarse level rhs. More...
 
CoarseDomainType lhs_
 The coarse level lhs. More...
 
std::shared_ptr< CoarseOperatorTypeoperator_
 the coarse level linear operator. More...
 

Member Typedef Documentation

◆ CoarseDomainType

typedef CoarseOperatorType::domain_type Dune::Amg::LevelTransferPolicyCpr< FineOperator , Details::CoarseOperatorType< Communication > >::CoarseDomainType
inherited

The type of the domain of the coarse level operator.

◆ CoarseOperator

template<class FineOperator , class Communication , bool transpose = false>
typedef Details::CoarseOperatorType<Communication> Opm::PressureTransferPolicy< FineOperator, Communication, transpose >::CoarseOperator

◆ CoarseOperatorType

typedef Details::CoarseOperatorType< Communication > Dune::Amg::LevelTransferPolicyCpr< FineOperator , Details::CoarseOperatorType< Communication > >::CoarseOperatorType
inherited

The linear operator of the finel level system. Has to be derived from AssembledLinearOperator.

◆ CoarseRangeType

typedef CoarseOperatorType::range_type Dune::Amg::LevelTransferPolicyCpr< FineOperator , Details::CoarseOperatorType< Communication > >::CoarseRangeType
inherited

The type of the range of the coarse level operator.

◆ FineDomainType

typedef FineOperatorType::domain_type Dune::Amg::LevelTransferPolicyCpr< FineOperator , Details::CoarseOperatorType< Communication > >::FineDomainType
inherited

The type of the domain of the fine level operator.

◆ FineOperatorType

typedef FineOperator Dune::Amg::LevelTransferPolicyCpr< FineOperator , Details::CoarseOperatorType< Communication > >::FineOperatorType
inherited

The linear operator of the finel level system. Has to be derived from AssembledLinearOperator.

◆ FineRangeType

typedef FineOperatorType::range_type Dune::Amg::LevelTransferPolicyCpr< FineOperator , Details::CoarseOperatorType< Communication > >::FineRangeType
inherited

The type of the range of the fine level operator.

◆ FineVectorType

template<class FineOperator , class Communication , bool transpose = false>
typedef FineOperator::domain_type Opm::PressureTransferPolicy< FineOperator, Communication, transpose >::FineVectorType

◆ ParallelInformation

template<class FineOperator , class Communication , bool transpose = false>
typedef Communication Opm::PressureTransferPolicy< FineOperator, Communication, transpose >::ParallelInformation

◆ ParentType

template<class FineOperator , class Communication , bool transpose = false>
typedef Dune::Amg::LevelTransferPolicyCpr<FineOperator, CoarseOperator> Opm::PressureTransferPolicy< FineOperator, Communication, transpose >::ParentType

Constructor & Destructor Documentation

◆ PressureTransferPolicy()

template<class FineOperator , class Communication , bool transpose = false>
Opm::PressureTransferPolicy< FineOperator, Communication, transpose >::PressureTransferPolicy ( const Communication &  comm,
const FineVectorType weights,
const Opm::PropertyTree ,
int  pressure_var_index 
)
inline

Member Function Documentation

◆ calculateCoarseEntries()

template<class FineOperator , class Communication , bool transpose = false>
virtual void Opm::PressureTransferPolicy< FineOperator, Communication, transpose >::calculateCoarseEntries ( const FineOperator &  fineOperator)
inlineoverridevirtual

◆ clone()

template<class FineOperator , class Communication , bool transpose = false>
virtual PressureTransferPolicy * Opm::PressureTransferPolicy< FineOperator, Communication, transpose >::clone ( ) const
inlineoverridevirtual

◆ createCoarseLevelSystem()

template<class FineOperator , class Communication , bool transpose = false>
virtual void Opm::PressureTransferPolicy< FineOperator, Communication, transpose >::createCoarseLevelSystem ( const FineOperator &  fineOperator)
inlineoverridevirtual

◆ getCoarseLevelCommunication()

template<class FineOperator , class Communication , bool transpose = false>
const Communication & Opm::PressureTransferPolicy< FineOperator, Communication, transpose >::getCoarseLevelCommunication ( ) const
inline

◆ getCoarseLevelLhs()

CoarseDomainType & Dune::Amg::LevelTransferPolicyCpr< FineOperator , Details::CoarseOperatorType< Communication > >::getCoarseLevelLhs ( )
inlineinherited

Get the coarse level left hand side.

Returns
The coarse level leftt hand side.

◆ getCoarseLevelOperator()

std::shared_ptr< CoarseOperatorType > & Dune::Amg::LevelTransferPolicyCpr< FineOperator , Details::CoarseOperatorType< Communication > >::getCoarseLevelOperator ( )
inlineinherited

Get the coarse level operator.

Returns
A shared pointer to the coarse level system.

◆ getCoarseLevelRhs()

CoarseRangeType & Dune::Amg::LevelTransferPolicyCpr< FineOperator , Details::CoarseOperatorType< Communication > >::getCoarseLevelRhs ( )
inlineinherited

Get the coarse level right hand side.

Returns
The coarse level right hand side.

◆ getPressureIndex()

template<class FineOperator , class Communication , bool transpose = false>
std::size_t Opm::PressureTransferPolicy< FineOperator, Communication, transpose >::getPressureIndex ( ) const
inline

◆ moveToCoarseLevel() [1/2]

virtual void Dune::Amg::LevelTransferPolicyCpr< FineOperator , Details::CoarseOperatorType< Communication > >::moveToCoarseLevel ( const FineRangeType fineRhs)
pure virtualinherited

Transfers the data to the coarse level.

Restricts the residual to the right hand side of the coarse level system and initialies the left hand side of the coarse level system. These can afterwards be accessed usinf getCoarseLevelRhs() and getCoarseLevelLhs().

Parameters
fineDefectThe current residual of the fine level system.

◆ moveToCoarseLevel() [2/2]

template<class FineOperator , class Communication , bool transpose = false>
virtual void Opm::PressureTransferPolicy< FineOperator, Communication, transpose >::moveToCoarseLevel ( const typename ParentType::FineRangeType fine)
inlineoverridevirtual

◆ moveToFineLevel()

template<class FineOperator , class Communication , bool transpose = false>
virtual void Opm::PressureTransferPolicy< FineOperator, Communication, transpose >::moveToFineLevel ( typename ParentType::FineDomainType fineLhs)
inlineoverridevirtual

Updates the fine level linear system after the correction of the coarse levels system.

After returning from this function the coarse level correction will have been added to fine level system.

Parameters
[in,out]fineLhsThe left hand side of the fine level to update with the coarse level correction.

Implements Dune::Amg::LevelTransferPolicyCpr< FineOperator, Details::CoarseOperatorType< Communication > >.

References Dune::Amg::LevelTransferPolicyCpr< FineOperator, Details::CoarseOperatorType< Communication > >::lhs_.

Member Data Documentation

◆ lhs_

CoarseDomainType Dune::Amg::LevelTransferPolicyCpr< FineOperator , Details::CoarseOperatorType< Communication > >::lhs_
protectedinherited

The coarse level lhs.

◆ operator_

std::shared_ptr<CoarseOperatorType> Dune::Amg::LevelTransferPolicyCpr< FineOperator , Details::CoarseOperatorType< Communication > >::operator_
protectedinherited

the coarse level linear operator.

◆ rhs_

CoarseRangeType Dune::Amg::LevelTransferPolicyCpr< FineOperator , Details::CoarseOperatorType< Communication > >::rhs_
protectedinherited

The coarse level rhs.


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