Helmholtz operator for equations like alpha*a(x)*phi(x) + beta*div(b(x)*grad(phi(x))) = rho.
More...
|
|
| EBHelmholtzOp ()=delete |
| | Disallowed default constructor.
|
| |
| | EBHelmholtzOp (const EBHelmholtzOp &a_other)=delete |
| | Disallowed copy constructor.
|
| |
| | EBHelmholtzOp (const EBHelmholtzOp &&a_other)=delete |
| | Disallowed move constructor.
|
| |
| | EBHelmholtzOp (const Location::Cell a_dataLocation, const EBLevelGrid &a_eblgFine, const EBLevelGrid &a_eblg, const EBLevelGrid &a_eblgCoFi, const EBLevelGrid &a_eblgCoar, const EBLevelGrid &a_eblgCoarMG, const RefCountedPtr< LevelData< BaseFab< bool > > > &a_validCells, const RefCountedPtr< EBMultigridInterpolator > &a_interpolator, const RefCountedPtr< EBReflux > &a_fluxReg, const RefCountedPtr< EBCoarAve > &a_coarAve, const RefCountedPtr< EBHelmholtzDomainBC > &a_domainBC, const RefCountedPtr< EBHelmholtzEBBC > &a_ebBC, const RealVect &a_probLo, const Real &a_dx, const int &a_refToFine, const int &a_refToCoar, const bool &a_hasFine, const bool &a_hasCoar, const bool &a_hasMGObjects, const Real &a_alpha, const Real &a_beta, const RefCountedPtr< LevelData< EBCellFAB > > &a_Acoef, const RefCountedPtr< LevelData< EBFluxFAB > > &a_Bcoef, const RefCountedPtr< LevelData< BaseIVFAB< Real > > > &a_BcoIrreg, const IntVect &a_ghostCellsPhi, const IntVect &a_ghostCellsRHS, const Smoother &a_smoother, const Real &a_relaxFactor) |
| | Full constructor.
|
| |
|
virtual | ~EBHelmholtzOp () |
| | Dtor.
|
| |
| EBHelmholtzOp & | operator= (const EBHelmholtzOp &a_oper)=delete |
| | No copy assigment allowed.
|
| |
| EBHelmholtzOp & | operator= (const EBHelmholtzOp &&a_oper)=delete |
| | No move assigment allowed.
|
| |
|
void | turnOffCFInterp () |
| | Turn off BCs.
|
| |
|
void | turnOnCFInterp () |
| | Turn on BCs.
|
| |
| void | turnOffExchange () |
| | Turn off exchange operation.
|
| |
| void | turnOnExchange () |
| | Turn on exchange operation.
|
| |
| void | turnOffCoarsening () |
| | Turn off coarsening operation.
|
| |
| void | turnOnCoarsening () |
| | Turn on coarsening operation.
|
| |
| void | setAcoAndBco (const RefCountedPtr< LevelData< EBCellFAB > > &a_Acoef, const RefCountedPtr< LevelData< EBFluxFAB > > &a_Bcoef, const RefCountedPtr< LevelData< BaseIVFAB< Real > > > &a_BcoefIrreg) |
| | Update with new A and B coefficients.
|
| |
| const RefCountedPtr< LevelData< EBCellFAB > > & | getAcoef () |
| | Get the Helmholtz A-coefficient on cell centers.
|
| |
| const RefCountedPtr< LevelData< EBFluxFAB > > & | getBcoef () |
| | Get the Helmholtz B-coefficient on faces.
|
| |
| const RefCountedPtr< LevelData< BaseIVFAB< Real > > > & | getBcoefIrreg () |
| | Get the Helmholtz B-coefficient on the EB.
|
| |
| void | coarsenCell (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiFine) |
| | Coarsen data from fine to coar level.
|
| |
| void | coarsenFlux (LevelData< EBFluxFAB > &a_flux, const LevelData< EBFluxFAB > &a_fineFlux) |
| | Coarsen fluxes on the fine level onto this level.
|
| |
| void | pointJacobiKernel (EBCellFAB &a_Lcorr, EBCellFAB &a_corr, const EBCellFAB &a_resid, const EBCellFAB &a_Acoef, const EBFluxFAB &a_Bcoef, const BaseIVFAB< Real > &a_BcoefIrreg, const Box &a_cellBox, const DataIndex &a_dit) const noexcept |
| | Point Jacobi kernel.
|
| |
| void | gauSaiRedBlackKernel (EBCellFAB &a_Lcorr, EBCellFAB &a_corr, const EBCellFAB &a_resid, const EBCellFAB &a_Acoef, const EBFluxFAB &a_Bcoef, const BaseIVFAB< Real > &a_BcoefIrreg, const Box &a_cellBox, const DataIndex &a_dit, const int &a_redBlack) const noexcept |
| | Red-black Gauss-Seidel kernel.
|
| |
| void | gauSaiMultiColorKernel (EBCellFAB &a_Lcorr, EBCellFAB &a_corr, const EBCellFAB &a_resid, const EBCellFAB &a_Acoef, const EBFluxFAB &a_Bcoef, const BaseIVFAB< Real > &a_BcoefIrreg, const Box &a_cellBox, const DataIndex &a_dit, const IntVect &a_color) const noexcept |
| | Multi-color Gauss-Seidel kernel.
|
| |
| void | residual (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs, const bool a_homogeneousPhysBc) override |
| | Compute residual on this level.
|
| |
| void | preCond (LevelData< EBCellFAB > &a_corr, const LevelData< EBCellFAB > &a_residual) override final |
| | Precondition system before bottom solve.
|
| |
| void | interpolateCF (LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > *a_phiCoar, const bool a_homogeneousCFBC) |
| | Apply coarse-fine boundary conditions.
|
| |
| void | homogeneousCFInterp (LevelData< EBCellFAB > &a_phi) |
| | Do homogeneous coarse-fine interpolation.
|
| |
| void | inhomogeneousCFInterp (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoar) |
| | Inhomogeneous coarse-fine interpolation.
|
| |
| void | gauSaiMultiColor (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_Lphi, const LevelData< EBCellFAB > &a_rhs, const IntVect &a_color) const |
| | Multi-colored Gauss-Seidel kernel. Public because MFHelmholtzOp may want to use use.
|
| |
| void | applyOp (LevelData< EBCellFAB > &a_Lphi, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > *const a_phiCoar, const bool a_homogeneousPhysBC, const bool a_homogeneousCFBC) |
| | Apply operator on this level. This is a more general version which can turn on/off homogeneous and CF bcs.
|
| |
| void | applyOp (LevelData< EBCellFAB > &a_Lphi, const LevelData< EBCellFAB > &a_phi, bool a_homogeneousPhysBc) override final |
| | Apply operator.
|
| |
| void | applyOp (EBCellFAB &a_Lphi, EBCellFAB &a_phi, const EBCellFAB &a_Acoef, const EBFluxFAB &a_Bcoef, const BaseIVFAB< Real > &a_BcoefIrreg, const Box &a_cellBox, const DataIndex &a_dit, const bool a_homogeneousPhysBC) const noexcept |
| | Apply operator in a grid box.
|
| |
| void | applyOpRegular (EBCellFAB &a_Lphi, EBCellFAB &a_phi, const EBCellFAB &a_Acoef, const EBFluxFAB &a_Bcoef, const BaseIVFAB< Real > &a_BcoefIrreg, const Box &a_cellBox, const DataIndex &a_dit, const bool a_homogeneousPhysBC) const noexcept |
| | Apply operator in regular cells.
|
| |
| void | applyDomainFlux (EBCellFAB &a_phi, const EBFluxFAB &a_Bcoef, const Box &a_cellBox, const DataIndex &a_dit, const bool a_homogeneousPhysBc) const noexcept |
| | Apply domain flux.
|
| |
| void | fillDomainFlux (EBFluxFAB &a_flux, const EBCellFAB &a_phi, const Box &a_cellBox, const DataIndex &a_dit) |
| | Fill domain flux. This fills the flux on the domain face using centered differencing ala applyDomainFlux.
|
| |
| void | applyOpIrregular (EBCellFAB &a_Lphi, const EBCellFAB &a_phi, const EBCellFAB &a_Acoef, const EBFluxFAB &a_Bcoef, const BaseIVFAB< Real > &a_BcoefIrreg, const BaseIVFAB< Real > &a_alphaDiagWeight, const Box &a_cellBox, const DataIndex &a_dit, const bool a_homogeneousPhysBC) const noexcept |
| | Apply operator in irregular cells.
|
| |
| void | create (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs) override final |
| | Create data which clones the layout of the other.
|
| |
| void | assign (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs) override final |
| | Assign data.
|
| |
| void | assignCopier (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs, const Copier &a_copier) override final |
| | Assign lhs.
|
| |
| void | assignLocal (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs) override final |
| | Local assignment function.
|
| |
| void | buildCopier (Copier &a_copier, const LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs) override |
| | Build copier.
|
| |
|
Real | dotProduct (const LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs) override final |
| | Compute the dot product??
|
| |
| void | incr (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs, const Real a_scale) override final |
| | Increment operator.
|
| |
| void | axby (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_x, const LevelData< EBCellFAB > &a_y, const Real a_a, const Real a_b) override final |
| | Set a_lhs = a*x + b*y.
|
| |
| void | scale (LevelData< EBCellFAB > &a_lhs, const Real &a_scale) override final |
| | Scale data. Returns a_lhs = a_lhs*a_scale.
|
| |
| void | scaleLocal (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs) const noexcept |
| | Local scaling function. Multiplies the left-hand side by the right-hand side.
|
| |
| Real | norm (const LevelData< EBCellFAB > &a_rhs, const int a_order) override final |
| | Compute norm of data.
|
| |
| void | setToZero (LevelData< EBCellFAB > &a_lhs) override final |
| | Set data to zero.
|
| |
| void | createCoarser (LevelData< EBCellFAB > &a_coarse, const LevelData< EBCellFAB > &a_fine, bool a_ghosted) override final |
| | Create coarsened data.
|
| |
| void | relax (LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_residual, int a_iterations) override final |
| | Relaxation method. This does smoothing for the system L(correction) = residual.
|
| |
| void | restrictResidual (LevelData< EBCellFAB > &a_resCoar, LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs) override final |
| | Restrict residual onto coarse level.
|
| |
| void | prolongIncrement (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_correctCoarse) override final |
| | Prolongation method.
|
| |
|
int | refToCoarser () override final |
| | Return coarsening factor to coarser level (1 if there is no coarser level);.
|
| |
| void | AMROperator (LevelData< EBCellFAB > &a_Lphi, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoar, const bool a_homogeneousPhysBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp) override final |
| | Apply the AMR operator, i.e. compute L(phi) in an AMR context.
|
| |
| void | refluxFreeAMROperator (LevelData< EBCellFAB > &a_Lphi, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoar, const bool a_homogeneousPhysBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp) |
| | Apply the AMR operator, i.e. compute L(phi) in an AMR context.
|
| |
| void | AMRResidual (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoar, const LevelData< EBCellFAB > &a_rhs, bool a_homogeneousPhysBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp) override final |
| | Compute residual on this level. AMR version.
|
| |
| void | AMRResidualNF (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoar, const LevelData< EBCellFAB > &a_rhs, bool a_homogeneousPhysBC) override final |
| | Compute AMR residual on finest AMR level.
|
| |
| void | AMRResidualNC (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs, bool a_homogeneousPhysBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp) override final |
| | Compute AMR residual on coarsest.
|
| |
| void | AMROperatorNF (LevelData< EBCellFAB > &a_Lphi, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoar, bool a_homogeneousPhysBC) override final |
| | Apply the AMR operator, i.e. compute L(phi) in an AMR context, assuming no finer levels.
|
| |
| void | AMROperatorNC (LevelData< EBCellFAB > &a_Lphi, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoar, bool a_homogeneousPhysBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp) override final |
| | Apply the AMR operator, i.e. compute L(phi) in an AMR context, assuming no coarser AMR levels.
|
| |
| void | AMRRestrict (LevelData< EBCellFAB > &a_residualCoarse, const LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_coarseCorrection, bool a_skip_res) override final |
| | Restrict residual.
|
| |
| void | AMRProlong (LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_coarseCorrection) override final |
| | Prolongation onto AMR level.
|
| |
| void | AMRUpdateResidual (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_coarseCorrection) override final |
| | Update AMR residual.
|
| |
| void | setAlphaAndBeta (const Real &a_alpha, const Real &a_beta) override final |
| | Set alpha coefficient and beta coefficient (can change as diffusion solvers progress)
|
| |
| void | createCoarsened (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs, const int &a_refRat) override final |
| | Create coarsening of data holder.
|
| |
| void | diagonalScale (LevelData< EBCellFAB > &a_rhs, bool a_kappaWeighted) override final |
| | Do diagonal scaling.
|
| |
| void | divideByIdentityCoef (LevelData< EBCellFAB > &a_rhs) override final |
| | Divide by the a-coefficient.
|
| |
|
void | applyOpNoBoundary (LevelData< EBCellFAB > &a_ans, const LevelData< EBCellFAB > &a_phi) override final |
| | Apply operator but turn off all BCs.
|
| |
| void | fillGrad (const LevelData< EBCellFAB > &a_phi) override final |
| | Not called, I think.
|
| |
| void | getFlux (EBFluxFAB &a_flux, const LevelData< EBCellFAB > &a_data, const Box &a_grid, const DataIndex &a_dit, Real a_scale) override final |
| | Fill flux.
|
| |
|
void | allocateFlux () const noexcept |
| | Allocate m_flux.
|
| |
|
void | deallocateFlux () const noexcept |
| | Deallocate m_flux.
|
| |
|
LevelData< EBFluxFAB > & | getFlux () const |
| | Returns m_flux. This is used in refluxing routines.
|
| |
|
const LevelData< EBCellFAB > & | getRelaxationCoeff () const noexcept |
| | Returns m_relCoef. Used by MFHelmholtzOp.
|
| |
Helmholtz operator for equations like alpha*a(x)*phi(x) + beta*div(b(x)*grad(phi(x))) = rho.
This can be used with TGA time stepping.