TGAHelmOp< T > Class Template Reference

#include <AMRTGA.H>

Inheritance diagram for TGAHelmOp< T >:

Inheritance graph
[legend]

List of all members.


Detailed Description

template<class T>
class TGAHelmOp< T >

This operator is meant to represent the general helmholtz operator that AMRTGA will be solving. This operator is of the form alpha A(x) phi + beta div B(x) grad phi = rho. AMRTGA needs to reset the constants alpha and beta often.
Template Parameters:
T The LevelData class that holds solution data for the operator.

Public Member Functions

 TGAHelmOp ()
 TGAHelmOp (bool a_isTimeDependent)
virtual ~TGAHelmOp ()
 Destructor.
virtual void setAlphaAndBeta (const Real &a_alpha, const Real &a_beta)=0
virtual void diagonalScale (T &a_rhs, bool a_kappaWeighted)
virtual void kappaScale (T &a_rhs)
 for eb only. kappa weight the rhs but do not multiply by the identity coefficient
virtual void diagonalScale (T &a_rhs)
virtual void divideByIdentityCoef (T &a_rhs)=0
virtual void applyOpNoBoundary (T &a_ans, const T &a_phi)=0
virtual void setTime (Real a_time)
virtual void setTime (Real a_oldTime, Real a_mu, Real a_dt)
bool isTimeDependent () const
 Returns true if the operator is time-dependent, false otherwise.
virtual T & identityCoef ()
 Allows access to the identity coefficient data for the operator.

Private Member Functions

 TGAHelmOp (const TGAHelmOp &)
TGAHelmOpoperator= (const TGAHelmOp &)

Private Attributes

bool m_isTimeDependent
T * m_phonyIdentityCoef

Constructor & Destructor Documentation

template<class T>
TGAHelmOp< T >::TGAHelmOp (  )  [inline]

Base class default constructor. This constructs a time-independent operator.

template<class T>
TGAHelmOp< T >::TGAHelmOp ( bool  a_isTimeDependent  )  [inline, explicit]

Base class constructor which specifies explicitly whether this operator is time-dependent.

Parameters:
a_isTimeDependent If set to true, this Helmholtz operator will be treated as a time-dependent operator.

template<class T>
virtual TGAHelmOp< T >::~TGAHelmOp (  )  [inline, virtual]

Destructor.

template<class T>
TGAHelmOp< T >::TGAHelmOp ( const TGAHelmOp< T > &   )  [private]


Member Function Documentation

template<class T>
virtual void TGAHelmOp< T >::setAlphaAndBeta ( const Real a_alpha,
const Real a_beta 
) [pure virtual]

Sets the scaling constants in the Helmholtz equation.

Parameters:
a_alpha The scaling constant that multiplies the identity term.
a_beta The scaling constant that multiplies the derivative term.

Implemented in AMRPoissonOp, ViscousTensorOp, NWOViscousTensorOp, ResistivityOp, VCAMRPoissonOp2, ViscousTensorOp, EBAMRPoissonOp, EBConductivityOp, EBViscousTensorOp, NWOEBConductivityOp, NWOEBViscousTensorOp, and slowEBCO.

Referenced by AMRTGA< T >::resetAlphaAndBeta(), and BaseLevelHeatSolver< LevelData< FArrayBox >, FluxBox, LevelFluxRegister >::resetSolverAlphaAndBeta().

template<class T>
virtual void TGAHelmOp< T >::diagonalScale ( T &  a_rhs,
bool  a_kappaWeighted 
) [inline, virtual]

Scales the right hand side of the Helmholtz equation by the identity term in the operator. If you are solving rho(x) dphi/dt = L(phi), this means multiply by rho (or kappa * rho in embedded boundary calculations.

Parameters:
a_rhs The right hand side of the equation to be scaled.
a_kappaWeighted If set to true, a_rhs will be scaled by the volume fraction in addition to the identity term.

Reimplemented in AMRPoissonOp, ViscousTensorOp, NWOViscousTensorOp, ResistivityOp, VCAMRPoissonOp2, ViscousTensorOp, EBAMRPoissonOp, EBConductivityOp, EBViscousTensorOp, NWOEBConductivityOp, NWOEBViscousTensorOp, and slowEBCO.

Referenced by TGAHelmOp< LevelData< FArrayBox > >::diagonalScale().

template<class T>
virtual void TGAHelmOp< T >::kappaScale ( T &  a_rhs  )  [inline, virtual]

for eb only. kappa weight the rhs but do not multiply by the identity coefficient

Reimplemented in EBAMRPoissonOp, EBConductivityOp, EBViscousTensorOp, NWOEBConductivityOp, and NWOEBViscousTensorOp.

template<class T>
virtual void TGAHelmOp< T >::diagonalScale ( T &  a_rhs  )  [inline, virtual]

Scales the right hand side of the Helmholtz equation by the identity term in the operator. This version assumes volume fraction weighting.

Parameters:
a_rhs The right hand side of the equation to be scaled.

Reimplemented in ViscousTensorOp, NWOViscousTensorOp, ResistivityOp, and ViscousTensorOp.

template<class T>
virtual void TGAHelmOp< T >::divideByIdentityCoef ( T &  a_rhs  )  [pure 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.

Implemented in AMRPoissonOp, ViscousTensorOp, NWOViscousTensorOp, ResistivityOp, VCAMRPoissonOp2, ViscousTensorOp, EBAMRPoissonOp, EBConductivityOp, EBViscousTensorOp, NWOEBConductivityOp, NWOEBViscousTensorOp, and slowEBCO.

template<class T>
virtual void TGAHelmOp< T >::applyOpNoBoundary ( T &  a_ans,
const T &  a_phi 
) [pure virtual]

Apply the differential operator without any boundary or coarse-fine boundary conditions and no finer level

Parameters:
a_ans The result of the application of the operator to a_phi.
a_phi The data to which the operator is applied.

Implemented in AMRPoissonOp, ViscousTensorOp, NWOViscousTensorOp, ResistivityOp, VCAMRPoissonOp2, ViscousTensorOp, EBAMRPoissonOp, EBConductivityOp, EBViscousTensorOp, NWOEBConductivityOp, NWOEBViscousTensorOp, and slowEBCO.

template<class T>
virtual void TGAHelmOp< T >::setTime ( Real  a_time  )  [inline, virtual]

Sets the time-dependent state of the operator. The default implementation does nothing and is appropriate for time-independent operators.

Parameters:
a_time The time to be used to update the time-dependent operator.

Reimplemented in VCAMRPoissonOp2, and EBAMRPoissonOp.

Referenced by AMRTGA< T >::setTime(), and TGAHelmOp< LevelData< FArrayBox > >::setTime().

template<class T>
virtual void TGAHelmOp< T >::setTime ( Real  a_oldTime,
Real  a_mu,
Real  a_dt 
) [inline, 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 in EBConductivityOp, EBViscousTensorOp, and NWOEBViscousTensorOp.

template<class T>
bool TGAHelmOp< T >::isTimeDependent (  )  const [inline]

Returns true if the operator is time-dependent, false otherwise.

template<class T>
virtual T& TGAHelmOp< T >::identityCoef (  )  [inline, virtual]

Allows access to the identity coefficient data for the operator.

Reimplemented in VCAMRPoissonOp2.

template<class T>
TGAHelmOp& TGAHelmOp< T >::operator= ( const TGAHelmOp< T > &   )  [private]


Member Data Documentation

template<class T>
bool TGAHelmOp< T >::m_isTimeDependent [private]

This flag is set if the Helmholtz operator's coefficiens are time-dependent.

Referenced by TGAHelmOp< LevelData< FArrayBox > >::isTimeDependent().

template<class T>
T* TGAHelmOp< T >::m_phonyIdentityCoef [private]


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

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