Mushy Layer  1.0
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
AMRNonLinearMultiCompOp Class Reference

Nonlinear variable coefficient operator. More...

#include <AMRNonLinearMultiCompOp.H>

Inheritance diagram for AMRNonLinearMultiCompOp:
AMRPoissonOp LevelTGAHelmOp< LevelData< FArrayBox >, FluxBox > TGAHelmOp< T > AMRLevelOp< T > MGLevelOp< T > MGLevelOp< T > LinearOp< T > MGLevelOpObserver< T > LinearOp< T > MGLevelOpObserver< T >

Public Member Functions

void finerOperatorChanged (const MGLevelOp< LevelData< FArrayBox > > &a_operator, int a_coarseningFactor)
 
LevelData< FArrayBox > & identityCoef ()
 Returns identity coefficient data.
 
void setBCoefInterpolator (RefCountedPtr< CoefficientInterpolatorLinearFace > &a_bCoefInterpolator)
 
void setACoefInterpolator (RefCountedPtr< CoefficientInterpolatorLinear > &a_aCoefInterpolator)
 
LevelData< FluxBox > & BCoef ()
 Returns the B coefficient.
 
RefCountedPtr< CoefficientInterpolatorLinearFaceBCoefInterpolator ()
 Allows access to the B coefficient interpolator.
 
RefCountedPtr< CoefficientInterpolatorLinearACoefInterpolator ()
 Allows access to the A coefficient interpolator.
 
void setTime (Real a_time)
 
void computeDiffusedVar (LevelData< FArrayBox > &liquidConc, const LevelData< FArrayBox > &bulkConc, bool a_homogeneous=false)
 Compute temperature, liquid concentration from enthalpy, bulk concentration etc.
 
virtual void computeDiffusedVar (FArrayBox &a_calculatedVar, const FArrayBox &a_primaryVar, const DataIndex dit, bool a_homogeneous=false)
 Compute temperature, liquid concentration from enthalpy, bulk concentration etc.
 
AMRNonLinearMultiCompOp functions
 AMRNonLinearMultiCompOp ()
 
virtual ~AMRNonLinearMultiCompOp ()
 
virtual void residualI (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs, bool a_homogeneous=false)
 Compute residual.
 
virtual void preCond (LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_residual)
 Preconditioner.
 
virtual void applyOpI (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, bool a_homogeneous=false)
 Apply operator.
 
virtual void applyOpNoBoundary (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi)
 Apply operator.
 
void applyOpNoBoundary2 (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, bool a_homogeneous)
 Apply operator.
 
virtual void diagonalScale (LevelData< FArrayBox > &a_rhs, bool a_kappaWeighted)
 Scale with identity coefficient.
 
virtual void divideByIdentityCoef (LevelData< FArrayBox > &a_rhs)
 Divide by identity coefficient.
 
virtual void setAlphaAndBeta (const Real &a_alpha, const Real &a_beta)
 For tga stuff.
 
virtual void setCoefs (const RefCountedPtr< LevelData< FArrayBox > > &a_aCoef, const RefCountedPtr< LevelData< FluxBox > > &a_bCoef, const Real &a_alpha, const Real &a_beta)
 Also calls reset lambda.
 
virtual void resetLambda ()
 Should be called before the relaxation parameter is needed.
 
void resetLambdaNonLinear (const LevelData< FArrayBox > &a_phi)
 Recalculate lambda for nonlinear calculations (not actually current used)
 
virtual void computeLambda ()
 Compute lambda once alpha, aCoef, beta, bCoef are defined.
 
virtual void reflux (const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, LevelData< FArrayBox > &a_residual, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp)
 Increment flux registers and calculate reflux.
 
virtual void getFlux (FluxBox &a_flux, const LevelData< FArrayBox > &a_data, const Box &a_grid, const DataIndex &a_dit, Real a_scale)
 getFlux function which matches interface to AMRPoissonOp More...
 
virtual void getFlux (FluxBox &a_flux, const LevelData< FArrayBox > &a_data, const FluxBox &a_bCoef, const Box &a_grid, const DataIndex &a_dit, Real a_scale)
 get diffusive flux
 
MGLevelOp functions
virtual void restrictResidual (LevelData< FArrayBox > &a_resCoarse, LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_rhsFine)
 calculate restricted residual More...
 
virtual void restrictResidual (LevelData< FArrayBox > &a_resCoarse, LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > *a_phiCoarse, const LevelData< FArrayBox > &a_rhsFine, bool homogeneous)
 calculate restricted residual
 
virtual void createCoarser (LevelData< FArrayBox > &a_coarse, const LevelData< FArrayBox > &a_fine, bool a_ghosted)
 Create coarser version of field.
 
virtual void prolongIncrement (LevelData< FArrayBox > &a_phiThisLevel, const LevelData< FArrayBox > &a_correctCoarse)
 Prolong correction.
 
virtual void restrictR (LevelData< FArrayBox > &a_phiCoarse, const LevelData< FArrayBox > &a_phiFine)
 Restrict solution to coarser level.
 
void applyOpMg (LevelData< FArrayBox > &a_lhs, LevelData< FArrayBox > &a_phi, LevelData< FArrayBox > *a_phiCoarse, bool a_homogeneous)
 Apply operator.
 
- Public Member Functions inherited from AMRPoissonOp
virtual Real dx () const
 
void define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout &a_gridsFiner, const DisjointBoxLayout &a_gridsCoarser, const Real &a_dxLevel, int a_refRatio, int a_refRatioFiner, const ProblemDomain &a_domain, BCHolder a_bc, const Copier &a_exchange, const CFRegion &a_cfregion, const int a_nComp=1)
 
void define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout &a_gridsFiner, const Real &a_dxLevel, int a_refRatio, int a_refRatioFiner, const ProblemDomain &a_domain, BCHolder a_bc, const Copier &a_exchange, const CFRegion &a_cfregion, const int a_nComp=1)
 
void define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout &a_baseBAPtr, const Real &a_dxLevel, int a_refRatio, const ProblemDomain &a_domain, BCHolder a_bc, const Copier &a_exchange, const CFRegion &a_cfregion, int a_numComp=1)
 
void define (const DisjointBoxLayout &a_grids, const Real &a_dx, const ProblemDomain &a_domain, BCHolder a_bc, const Copier &a_exchange, const CFRegion &a_cfregion)
 
void define (const DisjointBoxLayout &a_grids, const Real &a_dx, const ProblemDomain &a_domain, BCHolder a_bc)
 
void define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout *a_baseBAPtr, Real a_dxLevel, int a_refRatio, const ProblemDomain &a_domain, BCHolder a_bc)
 
virtual void residual (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs, bool a_homogeneous=false)
 
virtual void residualNF (LevelData< FArrayBox > &a_lhs, LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > *a_phiCoarse, const LevelData< FArrayBox > &a_rhs, bool a_homogeneous=false)
 
virtual void applyOp (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, bool a_homogeneous=false)
 
virtual void applyOpI4 (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, bool a_homogeneous=false)
 
virtual void create (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs)
 
virtual void createCoarsened (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs, const int &a_refRat)
 
virtual void assign (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs)
 
virtual void assignLocal (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs)
 
virtual void buildCopier (Copier &a_copier, const LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs)
 
virtual void assignCopier (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs, const Copier &a_copier)
 
virtual void zeroCovered (LevelData< FArrayBox > &a_lhs, LevelData< FArrayBox > &a_rhs, const Copier &a_copier)
 
virtual Real dotProduct (const LevelData< FArrayBox > &a_1, const LevelData< FArrayBox > &a_2)
 
virtual void mDotProduct (const LevelData< FArrayBox > &a_1, const int a_sz, const LevelData< FArrayBox > a_2[], Real a_mdots[])
 
virtual void incr (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_x, Real a_scale)
 
virtual void axby (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_x, const LevelData< FArrayBox > &a_y, Real a_a, Real a_b)
 
virtual void scale (LevelData< FArrayBox > &a_lhs, const Real &a_scale)
 
virtual Real norm (const LevelData< FArrayBox > &a_x, int a_ord)
 
virtual Real localMaxNorm (const LevelData< FArrayBox > &a_x)
 
virtual void setToZero (LevelData< FArrayBox > &a_x)
 
virtual void relax (LevelData< FArrayBox > &a_e, const LevelData< FArrayBox > &a_residual, int a_iterations)
 
virtual void relaxNF (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > *a_phiCoarse, const LevelData< FArrayBox > &a_rhs, int a_iterations)
 
virtual int refToCoarser ()
 
virtual void AMRResidual (LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_phiCoarse, const LevelData< FArrayBox > &a_rhs, bool a_homogeneousPhysBC, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp)
 
virtual void AMRResidualNC (LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs, bool a_homogeneousPhysBC, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp)
 
virtual void AMRResidualNF (LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_phiCoarse, const LevelData< FArrayBox > &a_rhs, bool a_homogeneousPhysBC)
 
virtual void AMROperator (LevelData< FArrayBox > &a_LofPhi, const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_phiCoarse, bool a_homogeneousDomBC, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp)
 
virtual void AMROperatorNC (LevelData< FArrayBox > &a_LofPhi, const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, bool a_homogeneousBC, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp)
 
virtual void AMROperatorNF (LevelData< FArrayBox > &a_LofPhi, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_phiCoarse, bool a_homogeneousBC)
 
virtual void AMRRestrict (LevelData< FArrayBox > &a_resCoarse, const LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection, bool a_skip_res=false)
 
virtual void AMRRestrictS (LevelData< FArrayBox > &a_resCoarse, const LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection, LevelData< FArrayBox > &a_scratch, bool a_skip_res=false)
 
virtual void AMRProlong (LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection)
 
virtual void AMRProlongS (LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection, LevelData< FArrayBox > &a_temp, const Copier &a_copier)
 
virtual void AMRProlongS_2 (LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection, LevelData< FArrayBox > &a_temp, const Copier &a_copier, const Copier &a_cornerCopier, const AMRLevelOp< LevelData< FArrayBox > > *a_crsOp)
 
virtual void AMRUpdateResidual (LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection)
 
virtual Real AMRNorm (const LevelData< FArrayBox > &a_coarseResid, const LevelData< FArrayBox > &a_fineResid, const int &a_refRat, const int &a_ord)
 
virtual void setBC (const BCHolder &a_bc)
 
virtual void fillGrad (const LevelData< FArrayBox > &a_phi)
 
virtual void write (const LevelData< FArrayBox > *a_data, const char *a_filename)
 
 LevelTGAHelmOp ()
 
 LevelTGAHelmOp (bool a_isTimeIndependent)
 
 TGAHelmOp ()
 
 TGAHelmOp (bool a_isTimeDependent)
 
virtual void diagonalScale (LevelData< FArrayBox > &a_rhs)
 
virtual void kappaScale (LevelData< FArrayBox > &a_rhs)
 
virtual void setTime (Real a_oldTime, Real a_mu, Real a_dt)
 
bool isTimeDependent () const
 
virtual void dumpAMR (Vector< LevelData< FArrayBox > *> &a_data, string name)
 
virtual void dumpAMR (Vector< LevelData< FArrayBox > *> &a_data, string name)
 
virtual void dumpLevel (LevelData< FArrayBox > &a_data, string name)
 
virtual void dumpLevel (LevelData< FArrayBox > &a_data, string name)
 
 AMRLevelOp ()
 
 AMRLevelOp ()
 
virtual void dumpStuff (Vector< LevelData< FArrayBox > *> data, string filename)
 
virtual void dumpStuff (Vector< LevelData< FArrayBox > *> data, string filename)
 
virtual void outputLevel (LevelData< FArrayBox > &a_rhs, string &a_name)
 
virtual void outputLevel (LevelData< FArrayBox > &a_rhs, string &a_name)
 
virtual void outputAMR (Vector< LevelData< FArrayBox > *> &a_rhs, string &a_name)
 
virtual void outputAMR (Vector< LevelData< FArrayBox > *> &a_rhs, string &a_name)
 
virtual unsigned int orderOfAccuracy (void) const
 
virtual unsigned int orderOfAccuracy (void) const
 
virtual void enforceCFConsistency (LevelData< FArrayBox > &a_coarseCorrection, const LevelData< FArrayBox > &a_correction)
 
virtual void enforceCFConsistency (LevelData< FArrayBox > &a_coarseCorrection, const LevelData< FArrayBox > &a_correction)
 
 MGLevelOp ()
 
void addObserver (MGLevelOpObserver< LevelData< FArrayBox > > *a_observer)
 
void removeObserver (MGLevelOpObserver< LevelData< FArrayBox > > *a_observer)
 
void addCoarserObserver (MGLevelOp< LevelData< FArrayBox > > *a_operator, int a_coarseningFactor)
 
void notifyObserversOfChange ()
 
int numObservers () const
 
virtual void clear (LevelData< FArrayBox > &a_lhs)
 
 MGLevelOpObserver ()
 
virtual void operatorChanged (const MGLevelOp< LevelData< FArrayBox > > &a_operator)
 
void setObservee (MGLevelOp< LevelData< FArrayBox > > *a_observee)
 
void clearObservee ()
 
- Public Member Functions inherited from LevelTGAHelmOp< LevelData< FArrayBox >, FluxBox >
 LevelTGAHelmOp (bool a_isTimeIndependent)
 
 TGAHelmOp ()
 
 TGAHelmOp (bool a_isTimeDependent)
 
bool isTimeDependent () const
 
- Public Member Functions inherited from AMRLevelOp< T >
virtual void dumpAMR (Vector< T *> &a_data, string name)
 
virtual void dumpLevel (T &a_data, string name)
 
virtual void dumpStuff (Vector< T *> data, string filename)
 
virtual Real AMRNorm (const T &a_coarResid, const T &a_fineResid, const int &a_refRat, const int &a_ord)
 
virtual void outputLevel (T &a_rhs, string &a_name)
 
virtual void outputAMR (Vector< T *> &a_rhs, string &a_name)
 
virtual void AMRResidual (T &a_residual, const T &a_phiFine, const T &a_phi, const T &a_phiCoarse, const T &a_rhs, bool a_homogeneousDomBC, AMRLevelOp< T > *a_finerOp)=0
 
virtual void AMRResidualNF (T &a_residual, const T &a_phi, const T &a_phiCoarse, const T &a_rhs, bool a_homogeneousBC)=0
 
virtual void AMRResidualNC (T &a_residual, const T &a_phiFine, const T &a_phi, const T &a_rhs, bool a_homogeneousBC, AMRLevelOp< T > *a_finerOp)=0
 
virtual void AMROperator (T &a_LofPhi, const T &a_phiFine, const T &a_phi, const T &a_phiCoarse, bool a_homogeneousDomBC, AMRLevelOp< T > *a_finerOp)=0
 
virtual void AMROperatorNF (T &a_LofPhi, const T &a_phi, const T &a_phiCoarse, bool a_homogeneousBC)=0
 
virtual void AMROperatorNC (T &a_LofPhi, const T &a_phiFine, const T &a_phi, bool a_homogeneousBC, AMRLevelOp< T > *a_finerOp)=0
 
virtual void AMRRestrict (T &a_resCoarse, const T &a_residual, const T &a_correction, const T &a_coarseCorrection, bool a_skip_res)=0
 
virtual void AMRProlong (T &a_correction, const T &a_coarseCorrection)=0
 
virtual void AMRUpdateResidual (T &a_residual, const T &a_correction, const T &a_coarseCorrection)=0
 
virtual void createCoarsened (T &a_lhs, const T &a_rhs, const int &a_refRat)=0
 
virtual void buildCopier (Copier &a_copier, const T &a_lhs, const T &a_rhs)
 
virtual void assignCopier (T &a_lhs, const T &a_rhs, const Copier &a_copier)
 
virtual void zeroCovered (T &a_lhs, T &a_rhs, const Copier &a_copier)
 
virtual Real localMaxNorm (const T &a_phi)
 
virtual void AMRProlongS (T &a_correction, const T &a_coarseCorrection, T &a_temp, const Copier &a_copier)
 
virtual void AMRProlongS_2 (T &a_correction, const T &a_coarseCorrection, T &a_temp, const Copier &a_copier, const Copier &a_cornerCopier, const AMRLevelOp< LevelData< FArrayBox > > *a_crsOp)
 
virtual void AMRRestrictS (T &a_resCoarse, const T &a_residual, const T &a_correction, const T &a_coarseCorrection, T &scratch, bool a_skip_res=false)
 
virtual void enforceCFConsistency (T &a_coarseCorrection, const T &a_correction)
 
virtual void dumpAMR (Vector< T *> &a_data, string name)
 
virtual void dumpLevel (T &a_data, string name)
 
virtual void dumpStuff (Vector< T *> data, string filename)
 
virtual Real AMRNorm (const T &a_coarResid, const T &a_fineResid, const int &a_refRat, const int &a_ord)
 
virtual void outputLevel (T &a_rhs, string &a_name)
 
virtual void outputAMR (Vector< T *> &a_rhs, string &a_name)
 
virtual void AMRResidual (T &a_residual, const T &a_phiFine, const T &a_phi, const T &a_phiCoarse, const T &a_rhs, bool a_homogeneousDomBC, AMRLevelOp< T > *a_finerOp)=0
 
virtual void AMRResidualNF (T &a_residual, const T &a_phi, const T &a_phiCoarse, const T &a_rhs, bool a_homogeneousBC)=0
 
virtual void AMRResidualNC (T &a_residual, const T &a_phiFine, const T &a_phi, const T &a_rhs, bool a_homogeneousBC, AMRLevelOp< T > *a_finerOp)=0
 
virtual void AMROperator (T &a_LofPhi, const T &a_phiFine, const T &a_phi, const T &a_phiCoarse, bool a_homogeneousDomBC, AMRLevelOp< T > *a_finerOp)=0
 
virtual void AMROperatorNF (T &a_LofPhi, const T &a_phi, const T &a_phiCoarse, bool a_homogeneousBC)=0
 
virtual void AMROperatorNC (T &a_LofPhi, const T &a_phiFine, const T &a_phi, bool a_homogeneousBC, AMRLevelOp< T > *a_finerOp)=0
 
virtual void AMRRestrict (T &a_resCoarse, const T &a_residual, const T &a_correction, const T &a_coarseCorrection, bool a_skip_res)=0
 
virtual void AMRProlong (T &a_correction, const T &a_coarseCorrection)=0
 
virtual void AMRUpdateResidual (T &a_residual, const T &a_correction, const T &a_coarseCorrection)=0
 
virtual void createCoarsened (T &a_lhs, const T &a_rhs, const int &a_refRat)=0
 
virtual void buildCopier (Copier &a_copier, const T &a_lhs, const T &a_rhs)
 
virtual void assignCopier (T &a_lhs, const T &a_rhs, const Copier &a_copier)
 
virtual void zeroCovered (T &a_lhs, T &a_rhs, const Copier &a_copier)
 
virtual Real localMaxNorm (const T &a_phi)
 
virtual void AMRProlongS (T &a_correction, const T &a_coarseCorrection, T &a_temp, const Copier &a_copier)
 
virtual void AMRProlongS_2 (T &a_correction, const T &a_coarseCorrection, T &a_temp, const Copier &a_copier, const Copier &a_cornerCopier, const AMRLevelOp< LevelData< FArrayBox > > *a_crsOp)
 
virtual void AMRRestrictS (T &a_resCoarse, const T &a_residual, const T &a_correction, const T &a_coarseCorrection, T &scratch, bool a_skip_res=false)
 
virtual void enforceCFConsistency (T &a_coarseCorrection, const T &a_correction)
 
 MGLevelOp ()
 
virtual void createCoarser (T &a_coarse, const T &a_fine, bool ghosted)=0
 
virtual void relax (T &a_correction, const T &a_residual, int a_iterations)=0
 
virtual void relaxNF (T &a_phi, const T *a_phiCoarse, const T &a_rhs, int a_iterations)
 
virtual void restrictResidual (T &a_resCoarse, T &a_phiFine, const T &a_rhsFine)=0
 
virtual void restrictResidual (T &a_resCoarse, T &a_phiFine, const T *a_phiCoarse, const T &a_rhsFine, bool homogeneous)
 
virtual void restrictR (T &a_phiCoarse, const T &a_phiFine)
 
virtual void prolongIncrement (T &a_phiThisLevel, const T &a_correctCoarse)=0
 
void addObserver (MGLevelOpObserver< T > *a_observer)
 
virtual void applyOpMg (T &a_lhs, T &a_phi, T *a_phiCoarse, bool a_homogeneous)
 
virtual void residualNF (T &a_lhs, T &a_phi, const T *a_phiCoarse, const T &a_rhs, bool a_homogeneous=false)
 
void removeObserver (MGLevelOpObserver< T > *a_observer)
 
void addCoarserObserver (MGLevelOp< T > *a_operator, int a_coarseningFactor)
 
void notifyObserversOfChange ()
 
virtual void finerOperatorChanged (const MGLevelOp< T > &a_operator, int a_coarseningFactor)
 
int numObservers () const
 
virtual void residual (T &a_lhs, const T &a_phi, const T &a_rhs, bool a_homogeneous=false)=0
 
virtual void preCond (T &a_cor, const T &a_residual)=0
 
virtual void applyOp (T &a_lhs, const T &a_phi, bool a_homogeneous=false)=0
 
virtual void create (T &a_lhs, const T &a_rhs)=0
 
virtual void clear (T &a_lhs)
 
virtual void assign (T &a_lhs, const T &a_rhs)=0
 
virtual void assignLocal (T &a_lhs, const T &a_rhs)
 
virtual Real dotProduct (const T &a_1, const T &a_2)=0
 
virtual void mDotProduct (const T &a_1, const int a_sz, const T a_2[], Real a_mdots[])
 
virtual void incr (T &a_lhs, const T &a_x, Real a_scale)=0
 
virtual void axby (T &a_lhs, const T &a_x, const T &a_y, Real a_a, Real a_b)=0
 
virtual void scale (T &a_lhs, const Real &a_scale)=0
 
virtual Real norm (const T &a_rhs, int a_ord)=0
 
virtual void setToZero (T &a_lhs)=0
 
virtual void write (const T *a, const char *filename)
 
 MGLevelOpObserver ()
 
virtual void operatorChanged (const MGLevelOp< T > &a_operator)
 
void setObservee (MGLevelOp< T > *a_observee)
 
void clearObservee ()
 

Public Attributes

RefCountedPtr< LevelData< FArrayBox > > m_aCoef
 Identity operator spatially varying coefficient storage (cell-centered) — if you change this call resetLambda()
 
RefCountedPtr< LevelData< FArrayBox > > m_secondaryVar
 Which of enthalpy or bulk concentration we're not solving for.
 
RefCountedPtr< LevelData< FArrayBox > > m_enthalpySolidus
 Enthalpy solidus.
 
RefCountedPtr< LevelData< FArrayBox > > m_enthalpyLiquidus
 Enthalpy liquidus.
 
RefCountedPtr< LevelData< FArrayBox > > m_enthalpyEutectic
 Eutectic enthalpy.
 
BCHolder m_diffusedVarBC
 Boundary conditions for the diffused field.
 
bool m_apply_bcs_to_diagnostic_var
 Should we apply BCs explicitly to the diagnostic variables?
 
RefCountedPtr< LevelData< FluxBox > > m_bCoef
 Laplacian operator spatially varying coefficient storage (face-centered) — if you change this call resetLambda()
 
LevelData< FArrayBoxm_lambda
 Reciprocal of the diagonal entry of the operator matrix.
 
MushyLayerParamsm_params
 Physical parameters for problems.
 
bool m_FAS
 true if we're running in FAS mode (much quicker for nonlinear problems)
 
bool m_superOptimised
 Do some dodgy stuff here to try and make the code quicker. Turned off by default.
 
- Public Attributes inherited from AMRPoissonOp
Real m_alpha
 
Real m_beta
 
Real m_aCoef
 
Real m_bCoef
 
Real m_dxCrse
 
Vector< IntVectm_colors
 

Protected Member Functions

virtual void levelGSRB (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
 Gauss-seidel relaxation.
 
virtual void levelMultiColor (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
 Multicolor relaxation.
 
virtual void looseGSRB (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
 Gauss-seidel relaxation.
 
virtual void overlapGSRB (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
 Gauss-seidel relaxation.
 
virtual void levelGSRBLazy (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
 Gauss-seidel relaxation.
 
virtual void levelJacobi (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs)
 Jacobi relaxation.
 
virtual void getFlux (FArrayBox &a_flux, const FArrayBox &a_data, const FluxBox &a_bCoef, const Box &a_facebox, int a_dir, const DataIndex &a_dit, int a_ref=1) const
 computes flux over face-centered a_facebox.
 
- Protected Member Functions inherited from AMRPoissonOp
virtual void homogeneousCFInterp (LevelData< FArrayBox > &a_phif)
 
virtual void homogeneousCFInterp (LevelData< FArrayBox > &a_phif, const DataIndex &a_datInd, int a_idir, Side::LoHiSide a_hiorlo)
 
virtual void singleBoxCFInterp (FArrayBox &a_phi)
 
virtual void interpOnIVSHomo (LevelData< FArrayBox > &a_phif, const DataIndex &a_datInd, const int a_idir, const Side::LoHiSide a_hiorlo, const IntVectSet &a_interpIVS)
 
virtual void getFlux (FArrayBox &a_flux, const FArrayBox &a_data, const Box &a_edgebox, int a_dir, int a_ref=1) const
 
virtual void getFlux (FArrayBox &a_flux, const FArrayBox &a_data, int a_dir, int a_ref=1) const
 

Protected Attributes

LayoutData< CFIVSm_loCFIVS [SpaceDim]
 Intvects on coarse-fine interfaces.
 
LayoutData< CFIVSm_hiCFIVS [SpaceDim]
 Intvects on coarse-fine interfaces.
 
RefCountedPtr< CoefficientInterpolatorLinearFacem_bCoefInterpolator
 Interpolator for b coefficient data.
 
RefCountedPtr< CoefficientInterpolatorLinearm_aCoefInterpolator
 Interpolator for a coefficient data.
 
Real m_time
 Current time.
 
bool m_lambdaNeedsResetting
 Does the relaxation coefficient need to be reset?
 
- Protected Attributes inherited from AMRPoissonOp
Real m_dx
 
ProblemDomain m_domain
 
LevelDataOps< FArrayBoxm_levelOps
 
BCHolder m_bc
 
CFRegion m_cfregion
 
Copier m_exchangeCopier
 
QuadCFInterp m_interpWithCoarser
 
LevelFluxRegister m_levfluxreg
 
DisjointBoxLayout m_coarsenedMGrids
 
int m_refToCoarser
 
int m_refToFiner
 

Additional Inherited Members

- Static Public Attributes inherited from AMRPoissonOp
static int s_exchangeMode
 
static int s_relaxMode
 
static int s_maxCoarse
 
static int s_prolongType
 

Detailed Description

Nonlinear variable coefficient operator.

Operator for solving variable-coefficient (alpha * aCoef(x) * I - beta * Div(bCoef(x) . Grad)) phi = rho over an AMR hierarchy.

Member Function Documentation

◆ finerOperatorChanged()

void AMRNonLinearMultiCompOp::finerOperatorChanged ( const MGLevelOp< LevelData< FArrayBox > > &  a_operator,
int  a_coarseningFactor 
)
virtual

Has finer operator changed? This is called on multigrid operators when their AMR operators are altered.

Reimplemented from AMRPoissonOp.

◆ getFlux()

virtual void AMRNonLinearMultiCompOp::getFlux ( FluxBox a_flux,
const LevelData< FArrayBox > &  a_data,
const Box a_grid,
const DataIndex a_dit,
Real  a_scale 
)
inlinevirtual

getFlux function which matches interface to AMRPoissonOp

assumes we want to use member-data bCoef, then calls second getFlux function Note that a_data is the thing we take the gradient of, i.e. we calculate $ \chi \nabla \phi $ where $ \phi $ is a_data. a_data is NOT the bulk concentration or enthalpy

Reimplemented from AMRPoissonOp.

◆ restrictResidual()

void AMRNonLinearMultiCompOp::restrictResidual ( LevelData< FArrayBox > &  a_resCoarse,
LevelData< FArrayBox > &  a_phiFine,
const LevelData< FArrayBox > &  a_rhsFine 
)
virtual

calculate restricted residual

a_resCoarse[2h] = I[h->2h] (rhsFine[h] - L[h](phiFine[h])

Reimplemented from AMRPoissonOp.

◆ setACoefInterpolator()

void AMRNonLinearMultiCompOp::setACoefInterpolator ( RefCountedPtr< CoefficientInterpolatorLinear > &  a_aCoefInterpolator)
inline

Sets up a model that modifies a coefficient data when the operator's time is set.

Parameters
a_aCoefInterpolatorA CoefficientInterpolator that will be used to compute the a coefficient at specific times.

◆ setBCoefInterpolator()

void AMRNonLinearMultiCompOp::setBCoefInterpolator ( RefCountedPtr< CoefficientInterpolatorLinearFace > &  a_bCoefInterpolator)
inline

Sets up a model that modifies b coefficient data when the operator's time is set.

Parameters
a_bCoefInterpolatorA CoefficientInterpolator that will be used to compute the b coefficient at specific times.

◆ setTime()

void AMRNonLinearMultiCompOp::setTime ( Real  a_time)
virtual

Sets the time centering of the operator. This interpolates b coefficient data at the given time if an interpolator is set.

Reimplemented from AMRPoissonOp.


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