EBViscousTensorOp Class Reference

#include <EBViscousTensorOp.H>

Inheritance diagram for EBViscousTensorOp:

Inheritance graph
[legend]

List of all members.


Detailed Description

This class implements an operator that solves the equation alpha a I + (divF) = alpha a I + beta*div(eta(grad B + grad B^T) + lambda* I div B ) = rhs where beta, lambda, and eta are incorporated into the flux F. It uses the AMRLevelOp interface.

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< CFIVSm_loCFIVS [CH_SPACEDIM]
LayoutData< CFIVSm_hiCFIVS [CH_SPACEDIM]
LayoutData< RefCountedPtr
< DivergenceStencil > > 
m_divergenceStencil
LayoutData< TensorFineStencilSetm_hiTanStencilSets [SpaceDim]
LayoutData< TensorFineStencilSetm_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< EBCellFABm_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< EBCellFABm_relCoef
LevelData< EBCellFABm_grad
LayoutData< VoFIteratorm_vofIterIrreg
LayoutData< VoFIteratorm_vofIterMulti
LayoutData< VoFIteratorm_vofIterDomLo [CH_SPACEDIM]
LayoutData< VoFIteratorm_vofIterDomHi [CH_SPACEDIM]
RefCountedPtr< EBTensorCFInterpm_interpWithCoarser
EBMGAverage m_ebAverage
EBMGAverage m_ebAverageMG
EBMGInterp m_ebInterp
EBMGInterp m_ebInterpMG
RefCountedPtr
< ViscousBaseDomainBC
m_domainBC
RefCountedPtr< ViscousBaseEBBCm_ebBC
Vector< IntVectm_colors
Copier m_exchangeCopier
Copier m_exchangeCopierGrad
LayoutData< IntVectSetm_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)

Constructor & Destructor Documentation

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]

weak construction is bad

References MayDay::Error().

EBViscousTensorOp::EBViscousTensorOp ( const EBViscousTensorOp a_opin  )  [inline, private]

References MayDay::Error().


Member Function Documentation

virtual void EBViscousTensorOp::setAlphaAndBeta ( const Real a_alpha,
const Real a_beta 
) [virtual]

for tga to reset stuff

Implements TGAHelmOp< LevelData< EBCellFAB > >.

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]

virtual void EBViscousTensorOp::outputAMR ( Vector< LevelData< EBCellFAB > * > &  a_rhs,
string &  a_name 
) [inline, virtual]

virtual void EBViscousTensorOp::kappaScale ( LevelData< EBCellFAB > &  a_rhs  )  [inline, virtual]

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]

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).

Parameters:
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.

virtual void EBViscousTensorOp::fillGrad ( const LevelData< EBCellFAB > &  a_phi  )  [virtual]

virtual void EBViscousTensorOp::getFlux ( EBFluxFAB a_flux,
const LevelData< EBCellFAB > &  a_data,
const Box a_grid,
const DataIndex a_dit,
Real  a_scale 
) [virtual]

another leveltgaism

Implements LevelTGAHelmOp< LevelData< EBCellFAB >, EBFluxFAB >.

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 
)

void EBViscousTensorOp::setTime ( Real  a_oldTime,
Real  a_mu,
Real  a_dt 
) [virtual]

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).

Parameters:
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]

Real EBViscousTensorOp::AMRNorm ( const LevelData< EBCellFAB > &  a_coarResid,
const LevelData< EBCellFAB > &  a_fineResid,
const int &  a_refRat,
const int &  a_ord 
) [virtual]

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 > >.

virtual Real EBViscousTensorOp::norm ( const LevelData< EBCellFAB > &  a_rhs,
int  a_ord 
) [virtual]

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]

virtual Real EBViscousTensorOp::localMaxNorm ( const LevelData< EBCellFAB > &  a_rhs  )  [virtual]

virtual void EBViscousTensorOp::setToZero ( LevelData< EBCellFAB > &  a_lhs  )  [virtual]

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::homogeneousCFInterp ( LevelData< EBCellFAB > &  a_phi  )  [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().


Member Data Documentation

Referenced by outputAMR(), and outputLevel().

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]

"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().

bool EBViscousTensorOp::m_hasFine [protected]

bool EBViscousTensorOp::m_hasCoar [protected]


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

Generated on Fri Apr 5 04:25:04 2019 for Chombo + EB by  doxygen 1.5.5