Chombo + EB  3.0
Public Member Functions | List of all members
LinearOp< T > Class Template Referenceabstract

#include <LinearSolver.H>

Inheritance diagram for LinearOp< T >:
Inheritance graph
[legend]

Public Member Functions

virtual ~LinearOp ()
 
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 Real dx () const
 
virtual void setToZero (T &a_lhs)=0
 
virtual void write (const T *a, const char *filename)
 

Detailed Description

template<class T>
class LinearOp< T >

Operator class for Linear solver for solving L(phi) = rhs.

Constructor & Destructor Documentation

template<class T>
virtual LinearOp< T >::~LinearOp ( )
inlinevirtual

Member Function Documentation

template<class T>
virtual void LinearOp< T >::residual ( T &  a_lhs,
const T &  a_phi,
const T &  a_rhs,
bool  a_homogeneous = false 
)
pure 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.

Implemented in EBAMRPoissonOp, EBViscousTensorOp, EBConductivityOp, slowEBCO, ViscousTensorOp, AMRPoissonOp, EBPoissonOp, ResistivityOp, AMRNodeOp, MultilevelLinearOp< T >, NewPoissonOp, and NewPoissonOp4.

template<class T>
virtual void LinearOp< T >::preCond ( T &  a_cor,
const T &  a_residual 
)
pure virtual

Given the current state of the residual the correction, apply your preconditioner to a_cor.

Implemented in EBAMRPoissonOp, EBViscousTensorOp, EBConductivityOp, slowEBCO, ViscousTensorOp, AMRPoissonOp, EBPoissonOp, ResistivityOp, AMRNodeOp, MultilevelLinearOp< T >, VCAMRPoissonOp2, NewPoissonOp, and NewPoissonOp4.

template<class T>
virtual void LinearOp< T >::applyOp ( T &  a_lhs,
const T &  a_phi,
bool  a_homogeneous = false 
)
pure virtual

In the context of solving L(phi) = rhs, set a_lhs = L(a_phi). If a_homogeneous is true, evaluate the operator using homogeneous boundary conditions.

Implemented in EBAMRPoissonOp, EBConductivityOp, EBViscousTensorOp, slowEBCO, ViscousTensorOp, EBPoissonOp, AMRPoissonOp, AMRNodeOp, ResistivityOp, MultilevelLinearOp< T >, NewPoissonOp, and NewPoissonOp4.

template<class T>
virtual void LinearOp< T >::create ( T &  a_lhs,
const T &  a_rhs 
)
pure 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.

Implemented in EBAMRPoissonOp, EBConductivityOp, EBViscousTensorOp, slowEBCO, ViscousTensorOp, EBPoissonOp, AMRPoissonOp, ResistivityOp, AMRNodeOp, MultilevelLinearOp< T >, NewPoissonOp, and NewPoissonOp4.

Referenced by AMRMultiGrid< T >::init().

template<class T>
virtual void LinearOp< T >::clear ( T &  a_lhs)
inlinevirtual

Opposite of create – perform any operations required before lhs goes out of scope. In general, the only time this needs to be defined in a derived class is if the create() function called new. Otherwise, the default no-op function is sufficient.

Reimplemented in MultilevelLinearOp< T >.

template<class T>
virtual void LinearOp< T >::assign ( T &  a_lhs,
const T &  a_rhs 
)
pure virtual
template<class T>
virtual void LinearOp< T >::assignLocal ( T &  a_lhs,
const T &  a_rhs 
)
inlinevirtual

Reimplemented in AMRPoissonOp.

template<class T>
virtual Real LinearOp< T >::dotProduct ( const T &  a_1,
const T &  a_2 
)
pure 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.

Implemented in EBAMRPoissonOp, EBConductivityOp, EBViscousTensorOp, ViscousTensorOp, slowEBCO, AMRPoissonOp, EBPoissonOp, ResistivityOp, MultilevelLinearOp< T >, AMRNodeOp, NewPoissonOp, and NewPoissonOp4.

Referenced by LinearOp< LevelData< NodeFArrayBox > >::mDotProduct().

template<class T>
virtual void LinearOp< T >::mDotProduct ( const T &  a_1,
const int  a_sz,
const T  a_2[],
Real  a_mdots[] 
)
inlinevirtual

Reimplemented in AMRPoissonOp.

template<class T>
virtual void LinearOp< T >::incr ( T &  a_lhs,
const T &  a_x,
Real  a_scale 
)
pure virtual
template<class T>
virtual void LinearOp< T >::axby ( T &  a_lhs,
const T &  a_x,
const T &  a_y,
Real  a_a,
Real  a_b 
)
pure virtual
template<class T>
virtual void LinearOp< T >::scale ( T &  a_lhs,
const Real a_scale 
)
pure virtual
template<class T>
virtual Real LinearOp< T >::norm ( const T &  a_rhs,
int  a_ord 
)
pure virtual
template<class T>
virtual Real LinearOp< T >::dx ( ) const
inlinevirtual

Return dx at this level of refinement

Reimplemented in AMRPoissonOp, ViscousTensorOp, and EBAMRPoissonOp.

Referenced by PetscSolver< T >::define().

template<class T>
virtual void LinearOp< T >::setToZero ( T &  a_lhs)
pure virtual
template<class T>
virtual void LinearOp< T >::write ( const T *  a,
const char *  filename 
)
inlinevirtual

Debugging aid for solvers. Print out a "T" to a file named "filename" default implementation is to print out a message saying "LinearOp::write not implemented"

Reimplemented in AMRPoissonOp, and MultilevelLinearOp< T >.


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