#include <EBViscousTensorOp.H>
Public Member Functions | |
EBViscousTensorOp (const EBLevelGrid &a_eblgFine, const EBLevelGrid &a_eblg, const EBLevelGrid &a_eblgCoar, const EBLevelGrid &a_eblgCoarMG, const Real &a_alpha, const Real &a_beta, const RefCountedPtr< LevelData< EBCellFAB > > &a_acoef, const RefCountedPtr< LevelData< EBFluxFAB > > &a_eta, const RefCountedPtr< LevelData< EBFluxFAB > > &a_lambda, const RefCountedPtr< LevelData< BaseIVFAB< Real > > > &a_etaIrreg, const RefCountedPtr< LevelData< BaseIVFAB< Real > > > &a_lambdaIrreg, const Real &a_dx, const Real &a_dxCoar, const int &a_refToFine, const int &a_refToCoar, const RefCountedPtr< ViscousBaseDomainBC > &a_domainBC, const RefCountedPtr< ViscousBaseEBBC > &a_ebBC, const bool &a_hasMGObjects, const IntVect &a_ghostCellsPhi, const IntVect &a_ghostCellsRHS) | |
virtual | ~EBViscousTensorOp () |
Destructor. | |
virtual void | setAlphaAndBeta (const Real &a_alpha, const Real &a_beta) |
for tga to reset stuff | |
void | resetACoefficient (RefCountedPtr< LevelData< EBCellFAB > > &a_acoef) |
virtual void | outputLevel (LevelData< EBCellFAB > &a_rhs, string &a_name) |
virtual void | outputAMR (Vector< LevelData< EBCellFAB > * > &a_rhs, string &a_name) |
virtual void | kappaScale (LevelData< EBCellFAB > &a_rhs) |
it's tga's world---we just live in it. | |
void | getShearStressDotGradU (LevelData< EBCellFAB > &a_source, const LevelData< EBCellFAB > &a_gradU, int a_level) |
compute (tau dot grad u) (for energy equation) | |
void | getKappaDivSigmaU (LevelData< EBCellFAB > &a_divSigmaU, const LevelData< EBCellFAB > &a_velocity, const LevelData< EBCellFAB > *a_veloCoar, int a_level) |
compute volfrac(sigma dot grad u) (for energy equation) | |
void | getCellCenteredCoefficients (LevelData< EBCellFAB > &a_etaCell, LevelData< EBCellFAB > &a_lambdaCell) |
void | getCCSigma (LevelData< EBCellFAB > &a_source, const LevelData< EBCellFAB > &a_gradU, const LevelData< EBCellFAB > &a_eta, const LevelData< EBCellFAB > &a_lambda) |
virtual void | diagonalScale (LevelData< EBCellFAB > &a_rhs, bool a_kappaWeighted) |
another tgaism | |
virtual void | divideByIdentityCoef (LevelData< EBCellFAB > &a_rhs) |
virtual void | fillGrad (const LevelData< EBCellFAB > &a_phi) |
a leveltgaism | |
virtual void | getFlux (EBFluxFAB &a_flux, const LevelData< EBCellFAB > &a_data, const Box &a_grid, const DataIndex &a_dit, Real a_scale) |
another leveltgaism | |
void | getVelDotSigma (LevelData< EBFluxFAB > &a_velDotSigma, const LevelData< EBFluxFAB > &a_vel, const LevelData< EBFluxFAB > &a_sigma) |
void | getFlux (EBFaceFAB &a_fluxCentroid, const EBCellFAB &a_phi, const Box &a_ghostedBox, const Box &a_fabBox, const ProblemDomain &a_domain, const EBISBox &a_ebisBox, const Real &a_dx, const DataIndex &a_datInd, const int &a_idir) |
void | setTime (Real a_oldTime, Real a_mu, Real a_dt) |
virtual void | applyOpNoBoundary (LevelData< EBCellFAB > &a_opPhi, const LevelData< EBCellFAB > &a_phi) |
apply operator without any boundary or coarse-fine boundary conditions and no finer level | |
void | finerOperatorChanged (const MGLevelOp< LevelData< EBCellFAB > > &a_operator, int a_coarseningFactor) |
void | AMRResidualNC (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs, bool a_homogeneousBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp) |
void | AMROperatorNC (LevelData< EBCellFAB > &a_LofPhi, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, bool a_homogeneousBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp) |
virtual void | residual (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs, bool a_homogeneousPhysBC=false) |
virtual void | preCond (LevelData< EBCellFAB > &a_opPhi, const LevelData< EBCellFAB > &a_phi) |
virtual void | applyOp (LevelData< EBCellFAB > &a_opPhi, const LevelData< EBCellFAB > &a_phi, bool a_homogeneousPhysBC) |
void | incrOpWithExternalFlux (EBCellFAB &a_lhs, const DataIndex &a_dit, const BaseIVFAB< Real > &a_ebflux) |
void | applyOp (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_phi, bool a_homogeneous, const LevelData< BaseIVFAB< Real > > *a_ebflux) |
if the flux is null, it is not used | |
virtual void | create (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs) |
virtual void | createCoarsened (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs, const int &a_refRat) |
Real | AMRNorm (const LevelData< EBCellFAB > &a_coarResid, const LevelData< EBCellFAB > &a_fineResid, const int &a_refRat, const int &a_ord) |
virtual void | assign (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs) |
virtual Real | dotProduct (const LevelData< EBCellFAB > &a_1, const LevelData< EBCellFAB > &a_2) |
virtual void | incr (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_x, Real a_scale) |
virtual void | axby (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_x, const LevelData< EBCellFAB > &a_y, Real a_a, Real a_b) |
virtual void | scale (LevelData< EBCellFAB > &a_lhs, const Real &a_scale) |
virtual Real | norm (const LevelData< EBCellFAB > &a_rhs, int a_ord) |
virtual Real | localMaxNorm (const LevelData< EBCellFAB > &a_rhs) |
virtual void | setToZero (LevelData< EBCellFAB > &a_lhs) |
virtual void | setVal (LevelData< EBCellFAB > &a_lhs, const Real &a_value) |
virtual void | createCoarser (LevelData< EBCellFAB > &a_coarse, const LevelData< EBCellFAB > &a_fine, bool a_ghosted) |
virtual void | relax (LevelData< EBCellFAB > &a_e, const LevelData< EBCellFAB > &a_residual, int a_iterations) |
virtual void | restrictResidual (LevelData< EBCellFAB > &a_resCoarse, LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_rhsFine) |
virtual void | prolongIncrement (LevelData< EBCellFAB > &a_phiThisLevel, const LevelData< EBCellFAB > &a_correctCoarse) |
virtual int | refToCoarser () |
virtual int | refToFiner () |
virtual void | AMRResidual (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoarse, const LevelData< EBCellFAB > &a_rhs, bool a_homogeneousBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp) |
virtual void | AMRResidualNF (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoarse, const LevelData< EBCellFAB > &a_rhs, bool a_homogeneousBC) |
virtual void | AMROperator (LevelData< EBCellFAB > &a_LofPhi, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoarse, bool a_homogeneousBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp) |
virtual void | AMROperatorNF (LevelData< EBCellFAB > &a_LofPhi, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoarse, bool a_homogeneousBC) |
virtual void | AMRRestrict (LevelData< EBCellFAB > &a_resCoarse, const LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_coarseCorrection, bool a_skip_res=false) |
virtual void | AMRProlong (LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_coarseCorrection) |
virtual void | AMRUpdateResidual (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_coarseCorrection) |
void | defineStencils () |
(Re)define the stencils for the given coefficients. | |
Static Public Member Functions | |
static Real | staticMaxNorm (const LevelData< EBCellFAB > &a_rhs, const EBLevelGrid &a_eblg) |
static void | getFaceCenteredFluxStencil (VoFStencil &a_fluxStencil, const RefCountedPtr< LevelData< EBFluxFAB > > &a_eta, const RefCountedPtr< LevelData< EBFluxFAB > > &a_lambda, const Real &a_dx, const EBLevelGrid &a_eblg, const FaceIndex &a_face, const DataIndex &a_dit, int a_ivar) |
static for code reuse in bcs | |
static void | getFluxStencil (VoFStencil &a_fluxStencil, const RefCountedPtr< LevelData< EBFluxFAB > > &a_eta, const RefCountedPtr< LevelData< EBFluxFAB > > &a_lambda, const Real &a_dx, const EBLevelGrid &a_eblg, const FaceIndex &a_face, const DataIndex &a_dit, int a_ivar) |
static for code reuse in bcs | |
static void | getDivergenceStencil (VoFStencil &a_divStencil, const FaceIndex &a_face, const DataIndex &a_dit, const Real &a_dx, const EBLevelGrid &a_eblg) |
static for code reuse in bcs | |
static void | getGradientStencil (VoFStencil &a_gradStencil, int a_ivar, int a_diffDir, const FaceIndex &a_face, const DataIndex &a_dit, const Real &a_dx, const EBLevelGrid &a_eblg) |
static for code reuse in bcs | |
static void | doLazyRelax (bool a_doLazyRelax) |
static void | setForceNoEBCF (bool a_forceNoEBCF) |
Static Public Attributes | |
static int | s_whichLev |
static int | s_step |
Protected Member Functions | |
void | incrOpRegularDir (EBCellFAB &a_lhs, const EBCellFAB &a_phi, const bool &a_homogeneous, const int &a_dir, const DataIndex &a_datInd) |
void | applyOpIrregular (EBCellFAB &a_lhs, const EBCellFAB &a_phi, const bool &a_homogeneous, const DataIndex &a_datInd) |
void | getFlux (FArrayBox &a_flux, const FArrayBox &a_phi, const FArrayBox &a_gradPhi, const Box &a_faceBox, const int &a_idir, const DataIndex &a_datInd) |
void | cfinterp (const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoarse) |
void | reflux (const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, LevelData< EBCellFAB > &residual, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp) |
void | homogeneousCFInterp (LevelData< EBCellFAB > &a_phi) |
void | getVoFStencil (VoFStencil &a_vofStencil, const VolIndex &a_vof, const DataIndex &a_dit, int a_ivar) |
void | getDivergenceStencil (VoFStencil &a_gradStencil, const FaceIndex &a_face, const DataIndex &a_dit) |
void | getGradientStencil (VoFStencil &a_gradStencil, int a_ivar, int a_diffDir, const FaceIndex &a_face, const DataIndex &a_dit) |
void | gsrbColor (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_lph, const LevelData< EBCellFAB > &a_rhs, const IntVect &a_color) |
void | getFaceCenteredFluxStencil (VoFStencil &a_fluxStencil, const FaceIndex &a_face, const DataIndex &a_dit, int a_ivar) |
void | cellGrad (EBCellFAB &a_gradPhi, const EBCellFAB &a_phi, const Box &a_grid, const DataIndex &a_datInd) |
void | incrementFRCoar (EBFastFR &a_fr, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi) |
void | averageToCells (LevelData< EBCellFAB > &a_cellCoef, const LevelData< EBFluxFAB > &a_faceCoef, const LevelData< BaseIVFAB< Real > > &a_irregCoef) |
void | incrementFRFine (EBFastFR &a_fr, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp) |
Real | getSafety () |
virtual void | calculateAlphaWeight () |
virtual void | calculateRelaxationCoefficient () |
void | averageCellToFace (EBFaceFAB &a_fluxData, const EBCellFAB &a_cellData, const Box &a_grid, const EBISBox &a_ebisBox, const ProblemDomain &a_domain, const DataIndex &a_dit, int isrc, int idst, int inco, bool a_interpolateToCentroid) |
void | averageCellToFace (LevelData< EBFluxFAB > &a_fluxData, const LevelData< EBCellFAB > &a_cellData, const DisjointBoxLayout &a_grids, const EBISLayout &a_ebisl, const ProblemDomain &a_domain, int isrc, int idst, int inco, bool a_interpolateToCentroid) |
void | faceCenteredAverageCellsToFaces (EBFaceFAB &a_faceData, const EBCellFAB &a_cellData, const Box &ccFluxBox, const EBISBox &a_ebisBox, const ProblemDomain &a_domain, const DataIndex &a_dit, int isrc, int idst, int inco) |
Protected Attributes | |
LayoutData< CFIVS > | m_loCFIVS [CH_SPACEDIM] |
LayoutData< CFIVS > | m_hiCFIVS [CH_SPACEDIM] |
LayoutData< RefCountedPtr < DivergenceStencil > > | m_divergenceStencil |
LayoutData< TensorFineStencilSet > | m_hiTanStencilSets [SpaceDim] |
LayoutData< TensorFineStencilSet > | m_loTanStencilSets [SpaceDim] |
IntVect | m_ghostPhi |
IntVect | m_ghostRHS |
EBLevelGrid | m_eblgFine |
EBLevelGrid | m_eblg |
EBLevelGrid | m_eblgCoar |
EBLevelGrid | m_eblgCoarMG |
Real | m_alpha |
Real | m_beta |
LayoutData< BaseIVFAB< Real > > | m_alphaDiagWeight |
LayoutData< BaseIVFAB< Real > > | m_betaDiagWeight |
LevelData< EBCellFAB > | m_zeroCoarse |
RefCountedPtr< LevelData < EBCellFAB > > | m_acoef |
RefCountedPtr< LevelData < EBFluxFAB > > | m_eta |
RefCountedPtr< LevelData < EBFluxFAB > > | m_lambda |
RefCountedPtr< LevelData < BaseIVFAB< Real > > > | m_etaIrreg |
RefCountedPtr< LevelData < BaseIVFAB< Real > > > | m_lambdaIrreg |
EBFastFR | m_fastFR |
Real | m_dx |
Real | m_dxCoar |
bool | m_hasFine |
bool | m_hasCoar |
int | m_refToFine |
int | m_refToCoar |
bool | m_hasMGObjects |
IntVect | m_ghostCellsPhi |
IntVect | m_ghostCellsRHS |
LayoutData< RefCountedPtr < EBStencil > > | m_opEBStencil [CH_SPACEDIM] |
LevelData< EBCellFAB > | m_relCoef |
LevelData< EBCellFAB > | m_grad |
LayoutData< VoFIterator > | m_vofIterIrreg |
LayoutData< VoFIterator > | m_vofIterMulti |
LayoutData< VoFIterator > | m_vofIterDomLo [CH_SPACEDIM] |
LayoutData< VoFIterator > | m_vofIterDomHi [CH_SPACEDIM] |
RefCountedPtr< EBTensorCFInterp > | m_interpWithCoarser |
EBMGAverage | m_ebAverage |
EBMGAverage | m_ebAverageMG |
EBMGInterp | m_ebInterp |
EBMGInterp | m_ebInterpMG |
RefCountedPtr < ViscousBaseDomainBC > | m_domainBC |
RefCountedPtr< ViscousBaseEBBC > | m_ebBC |
Vector< IntVect > | m_colors |
Copier | m_exchangeCopier |
Copier | m_exchangeCopierGrad |
LayoutData< IntVectSet > | m_ivsIrregCCFlux |
Static Protected Attributes | |
static bool | s_turnOffBCs |
static bool | s_forceNoEBCF |
static bool | s_doLazyRelax |
Private Member Functions | |
EBViscousTensorOp () | |
weak construction is bad | |
EBViscousTensorOp (const EBViscousTensorOp &a_opin) | |
void | operator= (const EBViscousTensorOp &a_opin) |
EBViscousTensorOp::EBViscousTensorOp | ( | const EBLevelGrid & | a_eblgFine, | |
const EBLevelGrid & | a_eblg, | |||
const EBLevelGrid & | a_eblgCoar, | |||
const EBLevelGrid & | a_eblgCoarMG, | |||
const Real & | a_alpha, | |||
const Real & | a_beta, | |||
const RefCountedPtr< LevelData< EBCellFAB > > & | a_acoef, | |||
const RefCountedPtr< LevelData< EBFluxFAB > > & | a_eta, | |||
const RefCountedPtr< LevelData< EBFluxFAB > > & | a_lambda, | |||
const RefCountedPtr< LevelData< BaseIVFAB< Real > > > & | a_etaIrreg, | |||
const RefCountedPtr< LevelData< BaseIVFAB< Real > > > & | a_lambdaIrreg, | |||
const Real & | a_dx, | |||
const Real & | a_dxCoar, | |||
const int & | a_refToFine, | |||
const int & | a_refToCoar, | |||
const RefCountedPtr< ViscousBaseDomainBC > & | a_domainBC, | |||
const RefCountedPtr< ViscousBaseEBBC > & | a_ebBC, | |||
const bool & | a_hasMGObjects, | |||
const IntVect & | a_ghostCellsPhi, | |||
const IntVect & | a_ghostCellsRHS | |||
) |
Constructs a viscous tensor operator using the given data. This constructor is for time-independent a and b coefficients.
virtual EBViscousTensorOp::~EBViscousTensorOp | ( | ) | [virtual] |
Destructor.
EBViscousTensorOp::EBViscousTensorOp | ( | ) | [inline, private] |
EBViscousTensorOp::EBViscousTensorOp | ( | const EBViscousTensorOp & | a_opin | ) | [inline, private] |
References MayDay::Error().
void EBViscousTensorOp::resetACoefficient | ( | RefCountedPtr< LevelData< EBCellFAB > > & | a_acoef | ) | [inline] |
This sets the data storage for the a coefficient to a different object and recalculates the stuff that depends on it. Use this only if you know what you're doing.
References calculateAlphaWeight(), calculateRelaxationCoefficient(), and m_acoef.
virtual void EBViscousTensorOp::outputLevel | ( | LevelData< EBCellFAB > & | a_rhs, | |
string & | a_name | |||
) | [inline, virtual] |
Reimplemented from AMRLevelOp< LevelData< EBCellFAB > >.
References s_step, s_whichLev, and writeEBLevelname().
virtual void EBViscousTensorOp::outputAMR | ( | Vector< LevelData< EBCellFAB > * > & | a_rhs, | |
string & | a_name | |||
) | [inline, virtual] |
Reimplemented from AMRLevelOp< LevelData< EBCellFAB > >.
References s_step, s_whichLev, and writeEBAMRname().
it's tga's world---we just live in it.
Reimplemented from TGAHelmOp< LevelData< EBCellFAB > >.
References EBLevelDataOps::kappaWeight().
void EBViscousTensorOp::getShearStressDotGradU | ( | LevelData< EBCellFAB > & | a_source, | |
const LevelData< EBCellFAB > & | a_gradU, | |||
int | a_level | |||
) |
compute (tau dot grad u) (for energy equation)
void EBViscousTensorOp::getKappaDivSigmaU | ( | LevelData< EBCellFAB > & | a_divSigmaU, | |
const LevelData< EBCellFAB > & | a_velocity, | |||
const LevelData< EBCellFAB > * | a_veloCoar, | |||
int | a_level | |||
) |
compute volfrac(sigma dot grad u) (for energy equation)
void EBViscousTensorOp::getCellCenteredCoefficients | ( | LevelData< EBCellFAB > & | a_etaCell, | |
LevelData< EBCellFAB > & | a_lambdaCell | |||
) |
void EBViscousTensorOp::getCCSigma | ( | LevelData< EBCellFAB > & | a_source, | |
const LevelData< EBCellFAB > & | a_gradU, | |||
const LevelData< EBCellFAB > & | a_eta, | |||
const LevelData< EBCellFAB > & | a_lambda | |||
) |
virtual void EBViscousTensorOp::diagonalScale | ( | LevelData< EBCellFAB > & | a_rhs, | |
bool | a_kappaWeighted | |||
) | [inline, virtual] |
another tgaism
Reimplemented from TGAHelmOp< LevelData< EBCellFAB > >.
References BoxLayout::dataIterator(), EBLevelGrid::getDBL(), EBLevelDataOps::kappaWeight(), m_acoef, m_eblg, LayoutIterator::ok(), and SpaceDim.
virtual void EBViscousTensorOp::divideByIdentityCoef | ( | LevelData< EBCellFAB > & | a_rhs | ) | [inline, virtual] |
Divides the right hand side of the Helmholtz equation by the identity coefficient rho(x) in the equation rho(x) dphi/dt = L(phi).
a_rhs | The right hand side of the equation to be scaled. |
Implements TGAHelmOp< LevelData< EBCellFAB > >.
References BoxLayout::dataIterator(), EBLevelGrid::getDBL(), m_acoef, m_eblg, LayoutIterator::ok(), and SpaceDim.
void EBViscousTensorOp::getVelDotSigma | ( | LevelData< EBFluxFAB > & | a_velDotSigma, | |
const LevelData< EBFluxFAB > & | a_vel, | |||
const LevelData< EBFluxFAB > & | a_sigma | |||
) |
void EBViscousTensorOp::getFlux | ( | EBFaceFAB & | a_fluxCentroid, | |
const EBCellFAB & | a_phi, | |||
const Box & | a_ghostedBox, | |||
const Box & | a_fabBox, | |||
const ProblemDomain & | a_domain, | |||
const EBISBox & | a_ebisBox, | |||
const Real & | a_dx, | |||
const DataIndex & | a_datInd, | |||
const int & | a_idir | |||
) |
Sets the time-dependent state of the operator. This version of setTime allows one to linearly interpolate coefficients across an integration step, since it accepts arguments that define where in the step it is to be updated. The default implementation calls setTime(a_oldTime + a_mu * a_dt).
a_oldTime | The time at the beginning of the current step. | |
a_mu | The fraction of the current step that has elapsed. | |
a_dt | The size of the current step. |
Reimplemented from TGAHelmOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::applyOpNoBoundary | ( | LevelData< EBCellFAB > & | a_opPhi, | |
const LevelData< EBCellFAB > & | a_phi | |||
) | [inline, virtual] |
apply operator without any boundary or coarse-fine boundary conditions and no finer level
Implements TGAHelmOp< LevelData< EBCellFAB > >.
References applyOp(), and s_turnOffBCs.
void EBViscousTensorOp::finerOperatorChanged | ( | const MGLevelOp< LevelData< EBCellFAB > > & | a_operator, | |
int | a_coarseningFactor | |||
) | [virtual] |
This is called on multigrid operators when their AMR operators are altered.
Reimplemented from MGLevelOp< LevelData< EBCellFAB > >.
void EBViscousTensorOp::AMRResidualNC | ( | LevelData< EBCellFAB > & | a_residual, | |
const LevelData< EBCellFAB > & | a_phiFine, | |||
const LevelData< EBCellFAB > & | a_phi, | |||
const LevelData< EBCellFAB > & | a_rhs, | |||
bool | a_homogeneousBC, | |||
AMRLevelOp< LevelData< EBCellFAB > > * | a_finerOp | |||
) | [virtual] |
a_residual = a_rhs - L(a_phiFine, a_phi) no coaser AMR level
Implements AMRLevelOp< LevelData< EBCellFAB > >.
void EBViscousTensorOp::AMROperatorNC | ( | LevelData< EBCellFAB > & | a_LofPhi, | |
const LevelData< EBCellFAB > & | a_phiFine, | |||
const LevelData< EBCellFAB > & | a_phi, | |||
bool | a_homogeneousBC, | |||
AMRLevelOp< LevelData< EBCellFAB > > * | a_finerOp | |||
) | [virtual] |
apply AMR operator no coaser AMR level
Implements AMRLevelOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::residual | ( | LevelData< EBCellFAB > & | a_lhs, | |
const LevelData< EBCellFAB > & | a_phi, | |||
const LevelData< EBCellFAB > & | a_rhs, | |||
bool | a_homogeneous = false | |||
) | [virtual] |
Say you are solving L(phi) = rhs. Make a_lhs = L(a_phi) - a_rhs. If a_homogeneous is true, evaluate the operator using homogeneous boundary conditions.
Implements LinearOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::preCond | ( | LevelData< EBCellFAB > & | a_cor, | |
const LevelData< EBCellFAB > & | a_residual | |||
) | [virtual] |
Given the current state of the residual the correction, apply your preconditioner to a_cor.
Implements LinearOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::applyOp | ( | LevelData< EBCellFAB > & | a_opPhi, | |
const LevelData< EBCellFAB > & | a_phi, | |||
bool | a_homogeneousPhysBC | |||
) | [virtual] |
this is the linearop function. CFBC is set to homogeneous. phic is null
Implements LinearOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
void EBViscousTensorOp::incrOpWithExternalFlux | ( | EBCellFAB & | a_lhs, | |
const DataIndex & | a_dit, | |||
const BaseIVFAB< Real > & | a_ebflux | |||
) |
void EBViscousTensorOp::applyOp | ( | LevelData< EBCellFAB > & | a_lhs, | |
const LevelData< EBCellFAB > & | a_phi, | |||
bool | a_homogeneous, | |||
const LevelData< BaseIVFAB< Real > > * | a_ebflux | |||
) |
if the flux is null, it is not used
virtual void EBViscousTensorOp::create | ( | LevelData< EBCellFAB > & | a_lhs, | |
const LevelData< EBCellFAB > & | a_rhs | |||
) | [virtual] |
Creat data holder a_lhs that mirrors a_rhs. You do not need to copy the data of a_rhs, just make a holder the same size.
Implements LinearOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::createCoarsened | ( | LevelData< EBCellFAB > & | a_lhs, | |
const LevelData< EBCellFAB > & | a_rhs, | |||
const int & | a_refRat | |||
) | [virtual] |
Implements AMRLevelOp< LevelData< EBCellFAB > >.
Real EBViscousTensorOp::AMRNorm | ( | const LevelData< EBCellFAB > & | a_coarResid, | |
const LevelData< EBCellFAB > & | a_fineResid, | |||
const int & | a_refRat, | |||
const int & | a_ord | |||
) | [virtual] |
Reimplemented from AMRLevelOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::assign | ( | LevelData< EBCellFAB > & | a_lhs, | |
const LevelData< EBCellFAB > & | a_rhs | |||
) | [virtual] |
Set a_lhs equal to a_rhs.
Implements LinearOp< LevelData< EBCellFAB > >.
virtual Real EBViscousTensorOp::dotProduct | ( | const LevelData< EBCellFAB > & | a_1, | |
const LevelData< EBCellFAB > & | a_2 | |||
) | [virtual] |
Compute and return the dot product of a_1 and a_2. In most contexts, this means return the sum over all data points of a_1*a_2.
Implements LinearOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::incr | ( | LevelData< EBCellFAB > & | a_lhs, | |
const LevelData< EBCellFAB > & | a_x, | |||
Real | a_scale | |||
) | [virtual] |
Increment by scaled amount (a_lhs += a_scale*a_x).
Implements LinearOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::axby | ( | LevelData< EBCellFAB > & | a_lhs, | |
const LevelData< EBCellFAB > & | a_x, | |||
const LevelData< EBCellFAB > & | a_y, | |||
Real | a_a, | |||
Real | a_b | |||
) | [virtual] |
Set input to a scaled sum (a_lhs = a_a*a_x + a_b*a_y).
Implements LinearOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::scale | ( | LevelData< EBCellFAB > & | a_lhs, | |
const Real & | a_scale | |||
) | [virtual] |
Multiply the input by a given scale (a_lhs *= a_scale).
Implements LinearOp< LevelData< EBCellFAB > >.
Return the norm of a_rhs. a_ord == 0 max norm, a_ord == 1 sum(abs(a_rhs)), else, L(a_ord) norm.
Implements LinearOp< LevelData< EBCellFAB > >.
static Real EBViscousTensorOp::staticMaxNorm | ( | const LevelData< EBCellFAB > & | a_rhs, | |
const EBLevelGrid & | a_eblg | |||
) | [static] |
Reimplemented from AMRLevelOp< LevelData< EBCellFAB > >.
Set a_lhs to zero.
Implements LinearOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::setVal | ( | LevelData< EBCellFAB > & | a_lhs, | |
const Real & | a_value | |||
) | [virtual] |
virtual void EBViscousTensorOp::createCoarser | ( | LevelData< EBCellFAB > & | a_coarse, | |
const LevelData< EBCellFAB > & | a_fine, | |||
bool | ghosted | |||
) | [virtual] |
Create a coarsened (by two) version of the input data. This does not include averaging the data. So if a_fine is over a Box of (0, 0, 0) (63, 63, 63), a_fine should be over a Box (0, 0, 0) (31, 31, 31).
Implements MGLevelOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::relax | ( | LevelData< EBCellFAB > & | a_correction, | |
const LevelData< EBCellFAB > & | a_residual, | |||
int | a_iterations | |||
) | [virtual] |
Use your relaxation operator to remove the high frequency wave numbers from the correction so that it may be averaged to a coarser refinement. A point relaxtion scheme, for example takes the form a_correction -= lambda*(L(a_correction) - a_residual).
Implements MGLevelOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::restrictResidual | ( | LevelData< EBCellFAB > & | a_resCoarse, | |
LevelData< EBCellFAB > & | a_phiFine, | |||
const LevelData< EBCellFAB > & | a_rhsFine | |||
) | [virtual] |
Calculate restricted residual: a_resCoarse[2h] = I[h->2h] (a_rhsFine[h] - L[h](a_phiFine[h]))
Implements MGLevelOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::prolongIncrement | ( | LevelData< EBCellFAB > & | a_phiThisLevel, | |
const LevelData< EBCellFAB > & | a_correctCoarse | |||
) | [virtual] |
Correct the fine solution based on coarse correction: a_phiThisLevel += I[2h->h] (a_correctCoarse)
Implements MGLevelOp< LevelData< EBCellFAB > >.
virtual int EBViscousTensorOp::refToCoarser | ( | ) | [virtual] |
Refinement ratio between this level and coarser level. Returns 1 when there are no coarser AMRLevelOp objects
Implements AMRLevelOp< LevelData< EBCellFAB > >.
virtual int EBViscousTensorOp::refToFiner | ( | ) | [virtual] |
Refinement ratio between this level and coarser level. Returns 1 when there are no coarser AMRLevelOp objects
virtual void EBViscousTensorOp::AMRResidual | ( | LevelData< EBCellFAB > & | a_residual, | |
const LevelData< EBCellFAB > & | a_phiFine, | |||
const LevelData< EBCellFAB > & | a_phi, | |||
const LevelData< EBCellFAB > & | a_phiCoarse, | |||
const LevelData< EBCellFAB > & | a_rhs, | |||
bool | a_homogeneousBC, | |||
AMRLevelOp< LevelData< EBCellFAB > > * | a_finerOp | |||
) | [virtual] |
a_residual = a_rhs - L(a_phi, a_phiFine, a_phiCoarse)
Implements AMRLevelOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::AMRResidualNF | ( | LevelData< EBCellFAB > & | a_residual, | |
const LevelData< EBCellFAB > & | a_phi, | |||
const LevelData< EBCellFAB > & | a_phiCoarse, | |||
const LevelData< EBCellFAB > & | a_rhs, | |||
bool | a_homogeneousBC | |||
) | [virtual] |
a_residual = a_rhs - L(a_phi, a_phiCoarse)
Implements AMRLevelOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::AMROperator | ( | LevelData< EBCellFAB > & | a_LofPhi, | |
const LevelData< EBCellFAB > & | a_phiFine, | |||
const LevelData< EBCellFAB > & | a_phi, | |||
const LevelData< EBCellFAB > & | a_phiCoarse, | |||
bool | a_homogeneousBC, | |||
AMRLevelOp< LevelData< EBCellFAB > > * | a_finerOp | |||
) | [virtual] |
a_residual = a_rhs - L(a_phi, a_phiFine, a_phiCoarse)
Implements AMRLevelOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::AMROperatorNF | ( | LevelData< EBCellFAB > & | a_LofPhi, | |
const LevelData< EBCellFAB > & | a_phi, | |||
const LevelData< EBCellFAB > & | a_phiCoarse, | |||
bool | a_homogeneousBC | |||
) | [virtual] |
a_residual = a_rhs - L(a_phi, a_phiCoarse)
Implements AMRLevelOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::AMRRestrict | ( | LevelData< EBCellFAB > & | a_resCoarse, | |
const LevelData< EBCellFAB > & | a_residual, | |||
const LevelData< EBCellFAB > & | a_correction, | |||
const LevelData< EBCellFAB > & | a_coarseCorrection, | |||
bool | a_skip_res = false | |||
) | [virtual] |
a_resCoarse = I[h-2h] (a_residual - L(a_correction, a_coarseCorrection))
Implements AMRLevelOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::AMRProlong | ( | LevelData< EBCellFAB > & | a_correction, | |
const LevelData< EBCellFAB > & | a_coarseCorrection | |||
) | [virtual] |
a_correction += I[2h->h](a_coarseCorrection)
Implements AMRLevelOp< LevelData< EBCellFAB > >.
virtual void EBViscousTensorOp::AMRUpdateResidual | ( | LevelData< EBCellFAB > & | a_residual, | |
const LevelData< EBCellFAB > & | a_correction, | |||
const LevelData< EBCellFAB > & | a_coarseCorrection | |||
) | [virtual] |
a_residual = a_residual - L(a_correction, a_coarseCorrection)
Implements AMRLevelOp< LevelData< EBCellFAB > >.
static void EBViscousTensorOp::getFaceCenteredFluxStencil | ( | VoFStencil & | a_fluxStencil, | |
const RefCountedPtr< LevelData< EBFluxFAB > > & | a_eta, | |||
const RefCountedPtr< LevelData< EBFluxFAB > > & | a_lambda, | |||
const Real & | a_dx, | |||
const EBLevelGrid & | a_eblg, | |||
const FaceIndex & | a_face, | |||
const DataIndex & | a_dit, | |||
int | a_ivar | |||
) | [static] |
static for code reuse in bcs
static void EBViscousTensorOp::getFluxStencil | ( | VoFStencil & | a_fluxStencil, | |
const RefCountedPtr< LevelData< EBFluxFAB > > & | a_eta, | |||
const RefCountedPtr< LevelData< EBFluxFAB > > & | a_lambda, | |||
const Real & | a_dx, | |||
const EBLevelGrid & | a_eblg, | |||
const FaceIndex & | a_face, | |||
const DataIndex & | a_dit, | |||
int | a_ivar | |||
) | [static] |
static for code reuse in bcs
static void EBViscousTensorOp::getDivergenceStencil | ( | VoFStencil & | a_divStencil, | |
const FaceIndex & | a_face, | |||
const DataIndex & | a_dit, | |||
const Real & | a_dx, | |||
const EBLevelGrid & | a_eblg | |||
) | [static] |
static for code reuse in bcs
static void EBViscousTensorOp::getGradientStencil | ( | VoFStencil & | a_gradStencil, | |
int | a_ivar, | |||
int | a_diffDir, | |||
const FaceIndex & | a_face, | |||
const DataIndex & | a_dit, | |||
const Real & | a_dx, | |||
const EBLevelGrid & | a_eblg | |||
) | [static] |
static for code reuse in bcs
static void EBViscousTensorOp::doLazyRelax | ( | bool | a_doLazyRelax | ) | [inline, static] |
References s_doLazyRelax.
static void EBViscousTensorOp::setForceNoEBCF | ( | bool | a_forceNoEBCF | ) | [inline, static] |
References s_forceNoEBCF.
void EBViscousTensorOp::defineStencils | ( | ) |
(Re)define the stencils for the given coefficients.
void EBViscousTensorOp::incrOpRegularDir | ( | EBCellFAB & | a_lhs, | |
const EBCellFAB & | a_phi, | |||
const bool & | a_homogeneous, | |||
const int & | a_dir, | |||
const DataIndex & | a_datInd | |||
) | [protected] |
void EBViscousTensorOp::applyOpIrregular | ( | EBCellFAB & | a_lhs, | |
const EBCellFAB & | a_phi, | |||
const bool & | a_homogeneous, | |||
const DataIndex & | a_datInd | |||
) | [protected] |
void EBViscousTensorOp::getFlux | ( | FArrayBox & | a_flux, | |
const FArrayBox & | a_phi, | |||
const FArrayBox & | a_gradPhi, | |||
const Box & | a_faceBox, | |||
const int & | a_idir, | |||
const DataIndex & | a_datInd | |||
) | [protected] |
void EBViscousTensorOp::cfinterp | ( | const LevelData< EBCellFAB > & | a_phi, | |
const LevelData< EBCellFAB > & | a_phiCoarse | |||
) | [protected] |
void EBViscousTensorOp::reflux | ( | const LevelData< EBCellFAB > & | a_phiFine, | |
const LevelData< EBCellFAB > & | a_phi, | |||
LevelData< EBCellFAB > & | residual, | |||
AMRLevelOp< LevelData< EBCellFAB > > * | a_finerOp | |||
) | [protected] |
void EBViscousTensorOp::getVoFStencil | ( | VoFStencil & | a_vofStencil, | |
const VolIndex & | a_vof, | |||
const DataIndex & | a_dit, | |||
int | a_ivar | |||
) | [protected] |
void EBViscousTensorOp::getDivergenceStencil | ( | VoFStencil & | a_gradStencil, | |
const FaceIndex & | a_face, | |||
const DataIndex & | a_dit | |||
) | [protected] |
void EBViscousTensorOp::getGradientStencil | ( | VoFStencil & | a_gradStencil, | |
int | a_ivar, | |||
int | a_diffDir, | |||
const FaceIndex & | a_face, | |||
const DataIndex & | a_dit | |||
) | [protected] |
void EBViscousTensorOp::gsrbColor | ( | LevelData< EBCellFAB > & | a_phi, | |
const LevelData< EBCellFAB > & | a_lph, | |||
const LevelData< EBCellFAB > & | a_rhs, | |||
const IntVect & | a_color | |||
) | [protected] |
void EBViscousTensorOp::getFaceCenteredFluxStencil | ( | VoFStencil & | a_fluxStencil, | |
const FaceIndex & | a_face, | |||
const DataIndex & | a_dit, | |||
int | a_ivar | |||
) | [protected] |
void EBViscousTensorOp::cellGrad | ( | EBCellFAB & | a_gradPhi, | |
const EBCellFAB & | a_phi, | |||
const Box & | a_grid, | |||
const DataIndex & | a_datInd | |||
) | [protected] |
void EBViscousTensorOp::incrementFRCoar | ( | EBFastFR & | a_fr, | |
const LevelData< EBCellFAB > & | a_phiFine, | |||
const LevelData< EBCellFAB > & | a_phi | |||
) | [protected] |
void EBViscousTensorOp::averageToCells | ( | LevelData< EBCellFAB > & | a_cellCoef, | |
const LevelData< EBFluxFAB > & | a_faceCoef, | |||
const LevelData< BaseIVFAB< Real > > & | a_irregCoef | |||
) | [protected] |
void EBViscousTensorOp::incrementFRFine | ( | EBFastFR & | a_fr, | |
const LevelData< EBCellFAB > & | a_phiFine, | |||
const LevelData< EBCellFAB > & | a_phi, | |||
AMRLevelOp< LevelData< EBCellFAB > > * | a_finerOp | |||
) | [protected] |
Real EBViscousTensorOp::getSafety | ( | ) | [protected] |
virtual void EBViscousTensorOp::calculateAlphaWeight | ( | ) | [protected, virtual] |
Referenced by resetACoefficient().
virtual void EBViscousTensorOp::calculateRelaxationCoefficient | ( | ) | [protected, virtual] |
Referenced by resetACoefficient().
void EBViscousTensorOp::averageCellToFace | ( | EBFaceFAB & | a_fluxData, | |
const EBCellFAB & | a_cellData, | |||
const Box & | a_grid, | |||
const EBISBox & | a_ebisBox, | |||
const ProblemDomain & | a_domain, | |||
const DataIndex & | a_dit, | |||
int | isrc, | |||
int | idst, | |||
int | inco, | |||
bool | a_interpolateToCentroid | |||
) | [protected] |
void EBViscousTensorOp::averageCellToFace | ( | LevelData< EBFluxFAB > & | a_fluxData, | |
const LevelData< EBCellFAB > & | a_cellData, | |||
const DisjointBoxLayout & | a_grids, | |||
const EBISLayout & | a_ebisl, | |||
const ProblemDomain & | a_domain, | |||
int | isrc, | |||
int | idst, | |||
int | inco, | |||
bool | a_interpolateToCentroid | |||
) | [protected] |
void EBViscousTensorOp::faceCenteredAverageCellsToFaces | ( | EBFaceFAB & | a_faceData, | |
const EBCellFAB & | a_cellData, | |||
const Box & | ccFluxBox, | |||
const EBISBox & | a_ebisBox, | |||
const ProblemDomain & | a_domain, | |||
const DataIndex & | a_dit, | |||
int | isrc, | |||
int | idst, | |||
int | inco | |||
) | [protected] |
void EBViscousTensorOp::operator= | ( | const EBViscousTensorOp & | a_opin | ) | [inline, private] |
References MayDay::Error().
int EBViscousTensorOp::s_whichLev [static] |
Referenced by outputAMR(), and outputLevel().
int EBViscousTensorOp::s_step [static] |
Referenced by outputAMR(), and outputLevel().
bool EBViscousTensorOp::s_turnOffBCs [static, protected] |
Referenced by applyOpNoBoundary().
bool EBViscousTensorOp::s_forceNoEBCF [static, protected] |
Referenced by setForceNoEBCF().
bool EBViscousTensorOp::s_doLazyRelax [static, protected] |
Referenced by doLazyRelax().
LayoutData<CFIVS> EBViscousTensorOp::m_loCFIVS[CH_SPACEDIM] [protected] |
LayoutData<CFIVS> EBViscousTensorOp::m_hiCFIVS[CH_SPACEDIM] [protected] |
IntVect EBViscousTensorOp::m_ghostPhi [protected] |
IntVect EBViscousTensorOp::m_ghostRHS [protected] |
EBLevelGrid EBViscousTensorOp::m_eblgFine [protected] |
EBLevelGrid EBViscousTensorOp::m_eblg [protected] |
Referenced by diagonalScale(), and divideByIdentityCoef().
EBLevelGrid EBViscousTensorOp::m_eblgCoar [protected] |
EBLevelGrid EBViscousTensorOp::m_eblgCoarMG [protected] |
Real EBViscousTensorOp::m_alpha [protected] |
Real EBViscousTensorOp::m_beta [protected] |
LayoutData<BaseIVFAB<Real> > EBViscousTensorOp::m_alphaDiagWeight [protected] |
LayoutData<BaseIVFAB<Real> > EBViscousTensorOp::m_betaDiagWeight [protected] |
LevelData<EBCellFAB> EBViscousTensorOp::m_zeroCoarse [protected] |
RefCountedPtr<LevelData<EBCellFAB> > EBViscousTensorOp::m_acoef [protected] |
"Current" (time-interpolated) value of the a coefficient. For a time-independent a coefficient, this is where the coefficient lives.
Referenced by diagonalScale(), divideByIdentityCoef(), and resetACoefficient().
RefCountedPtr<LevelData<EBFluxFAB> > EBViscousTensorOp::m_eta [protected] |
RefCountedPtr<LevelData<EBFluxFAB> > EBViscousTensorOp::m_lambda [protected] |
RefCountedPtr<LevelData<BaseIVFAB<Real> > > EBViscousTensorOp::m_etaIrreg [protected] |
RefCountedPtr<LevelData<BaseIVFAB<Real> > > EBViscousTensorOp::m_lambdaIrreg [protected] |
EBFastFR EBViscousTensorOp::m_fastFR [protected] |
Real EBViscousTensorOp::m_dx [protected] |
Real EBViscousTensorOp::m_dxCoar [protected] |
bool EBViscousTensorOp::m_hasFine [protected] |
bool EBViscousTensorOp::m_hasCoar [protected] |
int EBViscousTensorOp::m_refToFine [protected] |
int EBViscousTensorOp::m_refToCoar [protected] |
bool EBViscousTensorOp::m_hasMGObjects [protected] |
IntVect EBViscousTensorOp::m_ghostCellsPhi [protected] |
IntVect EBViscousTensorOp::m_ghostCellsRHS [protected] |
LayoutData<RefCountedPtr<EBStencil> > EBViscousTensorOp::m_opEBStencil[CH_SPACEDIM] [protected] |
LevelData<EBCellFAB> EBViscousTensorOp::m_relCoef [protected] |
LevelData<EBCellFAB> EBViscousTensorOp::m_grad [protected] |
LayoutData<VoFIterator > EBViscousTensorOp::m_vofIterIrreg [protected] |
LayoutData<VoFIterator > EBViscousTensorOp::m_vofIterMulti [protected] |
LayoutData<VoFIterator > EBViscousTensorOp::m_vofIterDomLo[CH_SPACEDIM] [protected] |
LayoutData<VoFIterator > EBViscousTensorOp::m_vofIterDomHi[CH_SPACEDIM] [protected] |
EBMGAverage EBViscousTensorOp::m_ebAverage [protected] |
EBMGAverage EBViscousTensorOp::m_ebAverageMG [protected] |
EBMGInterp EBViscousTensorOp::m_ebInterp [protected] |
EBMGInterp EBViscousTensorOp::m_ebInterpMG [protected] |
RefCountedPtr<ViscousBaseEBBC> EBViscousTensorOp::m_ebBC [protected] |
Vector<IntVect> EBViscousTensorOp::m_colors [protected] |
Copier EBViscousTensorOp::m_exchangeCopier [protected] |
Copier EBViscousTensorOp::m_exchangeCopierGrad [protected] |
LayoutData<IntVectSet> EBViscousTensorOp::m_ivsIrregCCFlux [protected] |