|
chombo-discharge
|
Factory class for making MFHelmholtzOp. More...
#include <CD_MFHelmholtzOpFactory.H>


Public Types | |
| using | MFIS = RefCountedPtr< MultiFluidIndexSpace > |
| alias type alias. | |
| using | AmrLevelGrids = Vector< MFLevelGrid > |
| alias type alias. | |
| using | AmrInterpolators = Vector< MFMultigridInterpolator > |
| alias type alias. | |
| using | AmrFluxRegisters = Vector< MFReflux > |
| alias type alias. | |
| using | AmrCoarseners = Vector< MFCoarAve > |
| alias type alias. | |
| using | AmrResolutions = Vector< Real > |
| alias type alias. | |
| using | AmrRefRatios = Vector< int > |
| alias type alias. | |
| using | AmrMask = Vector< RefCountedPtr< LevelData< BaseFab< bool > > > > |
| alias type alias. | |
| using | AmrCellData = Vector< RefCountedPtr< LevelData< MFCellFAB > > > |
| alias type alias. | |
| using | AmrFluxData = Vector< RefCountedPtr< LevelData< MFFluxFAB > > > |
| alias type alias. | |
| using | AmrIrreData = Vector< RefCountedPtr< LevelData< MFBaseIVFAB > > > |
| alias type alias. | |
| using | DomainBCFactory = RefCountedPtr< MFHelmholtzDomainBCFactory > |
| alias type alias. | |
| using | EBBCFactory = RefCountedPtr< MFHelmholtzEBBCFactory > |
| alias type alias. | |
| using | JumpBCFactory = RefCountedPtr< MFHelmholtzJumpBCFactory > |
| alias type alias. | |
| using | Smoother = MFHelmholtzOp::Smoother |
| Smoother type alias. | |
Protected Member Functions | |
| void | defineMultigridLevels () |
| Function which defines the multigrid levels for this operator factory. | |
| void | defineJump () |
| Define jump data. | |
| bool | getCoarserLayout (MFLevelGrid &a_coarMflg, const MFLevelGrid &a_fineMflg, const int a_refRat, const int a_blockingFactor) const |
| Construct coarsening of a grid level. | |
| int | findAmrLevel (const ProblemDomain &a_domain) const |
| Find level corresponding to amr level. | |
Static Protected Member Functions | |
| static bool | isCoarser (const ProblemDomain &a_domainOne, const ProblemDomain &B) |
| Check if a domain is coarser than the other. | |
| static bool | isFiner (const ProblemDomain &a_domainOne, const ProblemDomain &B) |
| Check if a domain is finer than the other. | |
| static void | coarsenCoefficients (LevelData< MFCellFAB > &a_coarAcoef, LevelData< MFFluxFAB > &a_coarBcoef, LevelData< MFBaseIVFAB > &a_coarBcoefIrreg, const LevelData< MFCellFAB > &a_fineAcoef, const LevelData< MFFluxFAB > &a_fineBcoef, const LevelData< MFBaseIVFAB > &a_fineBcoefIrreg, const MFLevelGrid &a_mflgCoar, const MFLevelGrid &a_mflgFine, const int a_refRat) |
| Coarsen coefficients (conservatively) | |
Protected Attributes | |
| MFIS | m_mfis |
| Index space. | |
| Location::Cell | m_dataLocation |
| Data centering. | |
| Smoother | m_smoother |
| Smoother. | |
| int | m_numAmrLevels |
| Number of AMR levels. | |
| int | m_numPreCondSmooth |
| Number of smoothings in the preconditioner. Passed directly to the operators. | |
| IntVect | m_ghostPhi |
| Number of ghost cells that are used. Need because of Chombo prolongation objects. | |
| IntVect | m_ghostRhs |
| Number of ghost cells that are used. Need because of Chombo prolongation objects. | |
| Real | m_alpha |
| Operator alpha. | |
| Real | m_beta |
| Operator beta. | |
| Real | m_relaxFactor |
| Relaxation factor. | |
| RealVect | m_probLo |
| Lower-left corner of computational domain. | |
| AmrLevelGrids | m_amrLevelGrids |
| AMR grids. | |
| AmrMask | m_validCells |
| Valid cells. | |
| AmrInterpolators | m_amrInterpolators |
| Multigrid interpolators. | |
| AmrFluxRegisters | m_amrFluxRegisters |
| Flux registers. | |
| AmrCoarseners | m_amrCoarseners |
| Data coarseners. | |
| AmrRefRatios | m_amrRefRatios |
| Refinement ratios. | |
| AmrResolutions | m_amrResolutions |
| Grid resolutions. | |
| AmrCellData | m_amrAcoef |
| Operator A-coefficient. | |
| AmrFluxData | m_amrBcoef |
| Operator B-coefficient. | |
| AmrIrreData | m_amrBcoefIrreg |
| Operator B-coefficient. | |
| DomainBCFactory | m_domainBcFactory |
| Domain BC factory. | |
| EBBCFactory | m_ebBcFactory |
| EB BC factory. | |
| JumpBCFactory | m_jumpBcFactory |
| Jump BC factory. | |
| EBAMRIVData | m_amrJump |
| Jump on multiphase cells. | |
| ProblemDomain | m_bottomDomain |
| Coarsest level where we run multigrid. | |
| int | m_mgBlockingFactor |
| Blocking factor for grid aggregation. | |
| int | m_jumpOrder |
| Stencil order in jump cells. | |
| int | m_jumpWeight |
| Weighting for least squares reconstruction in jump cells. | |
| AmrLevelGrids | m_deeperLevelGrids |
| Deeper grids. | |
| std::vector< bool > | m_hasMgLevels |
| For checking if an AMR level has multigrid levels. | |
| Vector< AmrLevelGrids > | m_mgLevelGrids |
| Deeper grids. Always weird to write this but e.g. m_mgLevelGrids[0] corresponds to the the multigrid levels below amr level 0. | |
| Vector< AmrCellData > | m_mgAcoef |
| A-coefficient on deeper grids. Always weird to write this but e.g. m_mgLevelGrids[0] corresponds to the the multigrid levels below amr level 0. | |
| Vector< AmrFluxData > | m_mgBcoef |
| B-coefficient on deeper grids. Always weird to write this but e.g. m_mgLevelGrids[0] corresponds to the the multigrid levels below amr level 0. | |
| Vector< AmrIrreData > | m_mgBcoefIrreg |
| B-coefficient on deeper grids. Always weird to write this but e.g. m_mgLevelGrids[0] corresponds to the the multigrid levels below amr level 0. | |
| Vector< EBAMRIVData > | m_mgJump |
| Jump coefficient on deeper grids. | |
| Vector< Vector< RefCountedPtr< EBCoarAve > > > | m_mgAveOp |
| Coarsneing operator on deeper grids (used for coarsening jump) | |
Static Protected Attributes | |
| static constexpr int | m_comp = 0 |
| Component that this operator solves for. | |
| static constexpr int | m_nComp = 1 |
| Number of components that this operator solves for. | |
| static constexpr int | m_mainPhase = 0 |
| Main phase. | |
Factory class for making MFHelmholtzOp.
| MFHelmholtzOpFactory::MFHelmholtzOpFactory | ( | const MFIS & | a_mfis, |
| const Location::Cell | a_dataLocation, | ||
| const Real & | a_alpha, | ||
| const Real & | a_beta, | ||
| const RealVect & | a_probLo, | ||
| const AmrLevelGrids & | a_amrLevelGrids, | ||
| const AmrMask & | a_validCells, | ||
| const AmrInterpolators & | a_amrInterpolators, | ||
| const AmrFluxRegisters & | a_amrFluxRegisters, | ||
| const AmrCoarseners & | a_amrCoarseners, | ||
| const AmrRefRatios & | a_amrRefRatios, | ||
| const AmrResolutions & | a_amrResolutions, | ||
| const AmrCellData & | a_amrAcoef, | ||
| const AmrFluxData & | a_amrBcoef, | ||
| const AmrIrreData & | a_amrBcoefIrreg, | ||
| const DomainBCFactory & | a_domainBcFactory, | ||
| const EBBCFactory & | a_ebBcFactory, | ||
| const JumpBCFactory & | a_jumpBcFactory, | ||
| const IntVect & | a_ghostPhi, | ||
| const IntVect & | a_ghostRhs, | ||
| const Smoother & | a_smoother, | ||
| const Real & | a_relaxFactor, | ||
| const ProblemDomain & | a_bottomDomain, | ||
| const int & | a_jumpOrder, | ||
| const int & | a_jumpWeight, | ||
| const int & | a_preCondSmooth, | ||
| const int & | a_blockingFactor, | ||
| const AmrLevelGrids & | a_deeperLevelGrids = AmrLevelGrids() |
||
| ) |
Full constructor.
| [in] | a_mfis | Multi-fluid index space |
| [in] | a_dataLocation | Assumed data centering |
| [in] | a_alpha | alpha-coefficient in Helmholtz operator. |
| [in] | a_beta | beta-coefficient in Helmholtz operator. |
| [in] | a_probLo | Lower-left corner of domain |
| [in] | a_validCells | Valid grid cells |
| [in] | a_amrInterpolators | Interpolator objects between AMR levels. |
| [in] | a_amrCoarseners | Conservative coarseners between AMR levels. |
| [in] | a_amrFluxRegisters | Flux registers between AMR levels. |
| [in] | a_amrResolutions | Grid resolutions for AMR levels. |
| [in] | a_amrAcoef | A-coefficient in Helmholtz operator. |
| [in] | a_amrBcoef | B-coefficient in Helmholtz operator. |
| [in] | a_amrBcoefIrreg | B-coefficient in Helmholtz operator. This one is defined on EB faces. |
| [in] | a_ghostPhi | Number of ghost cells in solution vector. |
| [in] | a_ghostRhs | Number of ghost cells in right-hand side. |
| [in] | a_jumpOrder | Stencil order in multiphase cells |
| [in] | a_jumpWeight | Equation weighting in multiphase cells |
| [in] | a_preCondSmooth | Number of smoothings in the preconditioner |
| [in] | a_relaxFactor | Relaxation factor |
| [in] | a_bottomDomain | Coarsest domain on which we run multigrid. Must be a coarsening of the AMR problem domains. |
| [in] | a_deeperLevelGrids | Optional object in case you want to pre-define the deeper multigrid levels. |
| [in] | a_amrLevelGrids | Amr level grids |
| [in] | a_amrRefRatios | Amr ref ratios |
| [in] | a_domainBcFactory | Domain bc factory |
| [in] | a_ebBcFactory | Eb bc factory |
| [in] | a_jumpBcFactory | Jump bc factory |
| [in] | a_smoother | Smoother |
| [in] | a_blockingFactor | Blocking factor |
|
finaloverride |
Create AMR operator for specified domain.
| [in] | a_domain | Domain |
|
staticprotected |
Coarsen coefficients (conservatively)
| [out] | a_coarAcoef | Coarse A-coefficient |
| [out] | a_coarBcoef | Coarse B-coefficient |
| [out] | a_coarBcoefIrreg | Coarse B-coefficient on EB faces |
| [in] | a_fineAcoef | Fine A-coefficient |
| [in] | a_fineBcoef | Fine B-coefficient |
| [in] | a_fineBcoefIrreg | Fine B-coefficient on EB faces |
| [in] | a_mflgCoar | Coarse grids |
| [in] | a_mflgFine | Fine grids |
| [in] | a_refRat | Coarsening factor |
|
protected |
Find level corresponding to amr level.
| [in] | a_domain | Problem domain. |
|
protected |
Construct coarsening of a grid level.
| [out] | a_coarMflg | The coarse grid layout. Must be an undefined MFLevelGrid on input. |
| [in] | a_fineMflg | The fine grid layout. |
| [in] | a_refRat | Refinement ratio |
| [in] | a_blockingFactor | Blocking factor to use for grid aggregation |
| const EBAMRIVData & MFHelmholtzOpFactory::getSigma | ( | ) | const |
Get the BC jump factor.
|
staticprotected |
Check if a domain is coarser than the other.
| [in] | a_domainOne | The first domain |
| [in] | B | The second domain |
|
staticprotected |
Check if a domain is finer than the other.
| [in] | a_domainOne | The first domain |
| [in] | B | The second domain |
|
finaloverride |
Create multigrid operator.
| [in] | a_fineDomain | Domain |
| [in] | a_depth | Depth. This specifies that the operator will be created at depth coarsen(a_fineDomain, 2^a_depth); |
| [in] | a_homogeneousOnly | If true, only homogeneous boundary conditions will be needed. |
|
finaloverride |
Get refinement ratio to next finest level.
| [in] | a_domain | Domain |
| void MFHelmholtzOpFactory::setJump | ( | const EBAMRIVData & | a_sigma, |
| const Real & | a_scale | ||
| ) |
Set jump condition. This is passed to the operators by reference.
| [in] | a_sigma | Jump (must be defined on gas phase) |
| [in] | a_scale | Scaling factor |
| [in] | a_sigma | Jump |
| [in] | a_scale | Scaling factor |