Finite Volume Solver  prototype
A framework to build finite volume solvers for the AG Klein at the Freie Universität Berlin.
Public Types | Public Member Functions | Static Public Attributes | Private Attributes | List of all members
fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod > Class Template Reference

#include <SplitSystemSourceLevelIntegrator.hpp>

Public Types

using GriddingAlgorithm = meta::GriddingAlgorithm< SystemSolver & >
 

Public Member Functions

 SplitSystemSourceLevelIntegrator (SystemSolver system_solver, SourceTerm source_term, SplittingMethod split=SplittingMethod())
 Constructs a system source solver from given sub solvers. More...
 
SystemSolver & GetSystem () noexcept
 
const SystemSolver & GetSystem () const noexcept
 
SourceTerm & GetSource () noexcept
 
const SourceTerm & GetSource () const noexcept
 
void PreAdvanceHierarchy ()
 Invokes any "pre-advance" logic of both sub solvers. More...
 
void PostAdvanceHierarchy (Duration dt)
 Invokes any "post-advance" logic of both sub solvers. More...
 
void PreAdvanceLevel (int level, Duration dt, std::pair< int, int > subcycle)
 
Result< void, TimeStepTooLargePostAdvanceLevel (int level, Duration dt, std::pair< int, int > subcycle)
 
template<typename... Args>
void ResetHierarchyConfiguration (const Args &... args)
 Resets the hierarchy configuration of both sub solvers. More...
 
Duration ComputeStableDt (int level)
 Returns the minimum of stable time step sizes for both sub solvers. More...
 
Result< void, TimeStepTooLargeAdvanceLevelNonRecursively (int level, Duration dt, std::pair< int, int > subcycle={0, 1})
 

Static Public Attributes

static const int Rank
 

Private Attributes

SourceTerm source_term_
 
SplittingMethod splitting_
 

Member Typedef Documentation

◆ GriddingAlgorithm

template<typename SystemSolver , typename SourceTerm , typename SplittingMethod = StrangSplitting>
using fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod >::GriddingAlgorithm = meta::GriddingAlgorithm<SystemSolver&>

Constructor & Destructor Documentation

◆ SplitSystemSourceLevelIntegrator()

template<typename SystemSolver , typename SourceTerm , typename SplittingMethod >
fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod >::SplitSystemSourceLevelIntegrator ( SystemSolver  system_solver,
SourceTerm  source_term,
SplittingMethod  split = SplittingMethod() 
)

Constructs a system source solver from given sub solvers.

Member Function Documentation

◆ AdvanceLevelNonRecursively()

template<typename SystemSolver , typename SourceTerm , typename SplittingMethod >
Result< void, TimeStepTooLarge > fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod >::AdvanceLevelNonRecursively ( int  level,
Duration  dt,
std::pair< int, int >  subcycle = {0, 1} 
)

◆ ComputeStableDt()

template<typename SystemSolver , typename SourceTerm , typename SplittingMethod >
Duration fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod >::ComputeStableDt ( int  level)

Returns the minimum of stable time step sizes for both sub solvers.

◆ GetSource() [1/2]

template<typename SystemSolver , typename SourceTerm , typename SplittingMethod = StrangSplitting>
const SourceTerm& fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod >::GetSource ( ) const
inlinenoexcept

◆ GetSource() [2/2]

template<typename SystemSolver , typename SourceTerm , typename SplittingMethod = StrangSplitting>
SourceTerm& fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod >::GetSource ( )
inlinenoexcept

◆ GetSystem() [1/2]

template<typename SystemSolver , typename SourceTerm , typename SplittingMethod = StrangSplitting>
const SystemSolver& fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod >::GetSystem ( ) const
inlinenoexcept

◆ GetSystem() [2/2]

template<typename SystemSolver , typename SourceTerm , typename SplittingMethod = StrangSplitting>
SystemSolver& fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod >::GetSystem ( )
inlinenoexcept

◆ PostAdvanceHierarchy()

template<typename SystemSolver , typename SourceTerm , typename SplittingMethod = StrangSplitting>
void fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod >::PostAdvanceHierarchy ( Duration  dt)

Invokes any "post-advance" logic of both sub solvers.

◆ PostAdvanceLevel()

template<typename SystemSolver , typename SourceTerm , typename SplittingMethod >
Result< void, TimeStepTooLarge > fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod >::PostAdvanceLevel ( int  level,
Duration  dt,
std::pair< int, int >  subcycle 
)

◆ PreAdvanceHierarchy()

template<typename SystemSolver , typename SourceTerm , typename SplittingMethod >
void fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod >::PreAdvanceHierarchy

Invokes any "pre-advance" logic of both sub solvers.

◆ PreAdvanceLevel()

template<typename SystemSolver , typename SourceTerm , typename SplittingMethod >
void fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod >::PreAdvanceLevel ( int  level,
Duration  dt,
std::pair< int, int >  subcycle 
)

◆ ResetHierarchyConfiguration()

template<typename SystemSolver , typename SourceTerm , typename SplittingMethod >
template<typename... Args>
void fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod >::ResetHierarchyConfiguration ( const Args &...  args)

Resets the hierarchy configuration of both sub solvers.

Member Data Documentation

◆ Rank

template<typename SystemSolver , typename SourceTerm , typename SplittingMethod = StrangSplitting>
const int fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod >::Rank
static

◆ source_term_

template<typename SystemSolver , typename SourceTerm , typename SplittingMethod = StrangSplitting>
SourceTerm fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod >::source_term_
private

◆ splitting_

template<typename SystemSolver , typename SourceTerm , typename SplittingMethod = StrangSplitting>
SplittingMethod fub::SplitSystemSourceLevelIntegrator< SystemSolver, SourceTerm, SplittingMethod >::splitting_
private

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