BISICLES AMR ice sheet model  0.9
Public Member Functions | Friends | List of all members
LinearizedVTOp Class Reference

#include <JFNKSolver.H>

Inheritance diagram for LinearizedVTOp:
Inheritance graph
[legend]
Collaboration diagram for LinearizedVTOp:
Collaboration graph
[legend]

Public Member Functions

NonlinearViscousTensorcurrent () const
 
virtual ~LinearizedVTOp ()
 
 LinearizedVTOp (NonlinearViscousTensor *a_currentState, Vector< LevelData< FArrayBox > *> &a_u, Real a_h, Real m_err, Real m_umin, bool m_hAdaptive, Vector< DisjointBoxLayout > &a_grids, Vector< int > &a_refRatio, Vector< ProblemDomain > &a_domains, Vector< RealVect > &a_dxs, int a_lBase, int a_numMGSmooth, int a_numMGIter, LinearizationMode a_mode)
 
virtual void setU (Vector< LevelData< FArrayBox > *> &a_u)
 
virtual void applyOp (Vector< LevelData< FArrayBox > *> &a_lhs, const Vector< LevelData< FArrayBox > *> &a_v, bool a_homogeneous=false)
 
virtual void residual (Vector< LevelData< FArrayBox > *> &a_lhs, const Vector< LevelData< FArrayBox > *> &a_v, const Vector< LevelData< FArrayBox > *> &a_rhs, bool a_homogeneous=false)
 
virtual void outerResidual (Vector< LevelData< FArrayBox > *> &a_lhs, const Vector< LevelData< FArrayBox > *> &a_u, const Vector< LevelData< FArrayBox > *> &a_rhs, bool a_homogeneous=false)
 
virtual void outerLHS (Vector< LevelData< FArrayBox > *> &a_lhs, const Vector< LevelData< FArrayBox > *> &a_u, bool a_homogeneous=false)
 
virtual void preCond (Vector< LevelData< FArrayBox > *> &a_cor, const Vector< LevelData< FArrayBox > *> &a_residual)
 
virtual void create (Vector< LevelData< FArrayBox > *> &a_lhs, const Vector< LevelData< FArrayBox > *> &a_rhs)
 
virtual void clear (Vector< LevelData< FArrayBox > *> &a_lhs)
 
virtual void clearStorage (Vector< LevelData< FArrayBox > * > &a_lhs)
 
virtual void assign (Vector< LevelData< FArrayBox > *> &a_lhs, const Vector< LevelData< FArrayBox > *> &a_rhs)
 
virtual Real dotProduct (const Vector< LevelData< FArrayBox > *> &a_1, const Vector< LevelData< FArrayBox > *> &a_2)
 
virtual void incr (Vector< LevelData< FArrayBox > *> &a_lhs, const Vector< LevelData< FArrayBox > *> &a_x, Real a_scale)
 
virtual void axby (Vector< LevelData< FArrayBox > *> &a_lhs, const Vector< LevelData< FArrayBox > *> &a_x, const Vector< LevelData< FArrayBox > *> &a_y, Real a_a, Real a_b)
 
virtual void scale (Vector< LevelData< FArrayBox > *> &a_lhs, const Real &a_scale)
 
virtual Real norm (const Vector< LevelData< FArrayBox > *> &a_rhs, int a_ord)
 
virtual void setToZero (Vector< LevelData< FArrayBox > *> &a_lhs)
 

Friends

class JFNKSolver
 
class PetscAMRSolver
 

Detailed Description

LinearOp implementation which uses a finite difference approximation to evaluate L v = 1/h * ( f(u + h*v) - f(u)) at the current iterate u, where f is a nonlinear function f:<Vector<LevelData<FArrayBox>*> -> <Vector<LevelData<FArrayBox>*> which is defined in terms of Chombo's MultilevelLinearOp interface. If we say that an operator L[u] is a linear operator defined at the state u, then f(u) = L[u]u, and so ( f(u + h*v) - f(u)) = L[u+hv](u+hv) - L[u](u) JFNK methods need a preconditioner: in this case we employ the multigrid method of MultilevelLinearOp<FArrayBox>, with its operator factory defined at u.

Constructor & Destructor Documentation

◆ ~LinearizedVTOp()

virtual LinearizedVTOp::~LinearizedVTOp ( )
inlinevirtual

◆ LinearizedVTOp()

LinearizedVTOp::LinearizedVTOp ( NonlinearViscousTensor a_currentState,
Vector< LevelData< FArrayBox > *> &  a_u,
Real  a_h,
Real  m_err,
Real  m_umin,
bool  m_hAdaptive,
Vector< DisjointBoxLayout > &  a_grids,
Vector< int > &  a_refRatio,
Vector< ProblemDomain > &  a_domains,
Vector< RealVect > &  a_dxs,
int  a_lBase,
int  a_numMGSmooth,
int  a_numMGIter,
LinearizationMode  a_mode 
)

Member Function Documentation

◆ applyOp()

void LinearizedVTOp::applyOp ( Vector< LevelData< FArrayBox > *> &  a_lhs,
const Vector< LevelData< FArrayBox > *> &  a_v,
bool  a_homogeneous = false 
)
virtual

◆ assign()

virtual void LinearizedVTOp::assign ( Vector< LevelData< FArrayBox > *> &  a_lhs,
const Vector< LevelData< FArrayBox > *> &  a_rhs 
)
inlinevirtual

◆ axby()

virtual void LinearizedVTOp::axby ( Vector< LevelData< FArrayBox > *> &  a_lhs,
const Vector< LevelData< FArrayBox > *> &  a_x,
const Vector< LevelData< FArrayBox > *> &  a_y,
Real  a_a,
Real  a_b 
)
inlinevirtual

Referenced by applyOp().

◆ clear()

virtual void LinearizedVTOp::clear ( Vector< LevelData< FArrayBox > *> &  a_lhs)
inlinevirtual

◆ clearStorage()

virtual void LinearizedVTOp::clearStorage ( Vector< LevelData< FArrayBox > * > &  a_lhs)
inlinevirtual

◆ create()

virtual void LinearizedVTOp::create ( Vector< LevelData< FArrayBox > *> &  a_lhs,
const Vector< LevelData< FArrayBox > *> &  a_rhs 
)
inlinevirtual

◆ current()

NonlinearViscousTensor& LinearizedVTOp::current ( ) const
inline

Referenced by JFNKSolver::solve().

◆ dotProduct()

virtual Real LinearizedVTOp::dotProduct ( const Vector< LevelData< FArrayBox > *> &  a_1,
const Vector< LevelData< FArrayBox > *> &  a_2 
)
inlinevirtual

Referenced by setU().

◆ incr()

virtual void LinearizedVTOp::incr ( Vector< LevelData< FArrayBox > *> &  a_lhs,
const Vector< LevelData< FArrayBox > *> &  a_x,
Real  a_scale 
)
inlinevirtual

◆ norm()

virtual Real LinearizedVTOp::norm ( const Vector< LevelData< FArrayBox > *> &  a_rhs,
int  a_ord 
)
inlinevirtual

Referenced by applyOp(), setU(), and JFNKSolver::solve().

◆ outerLHS()

virtual void LinearizedVTOp::outerLHS ( Vector< LevelData< FArrayBox > *> &  a_lhs,
const Vector< LevelData< FArrayBox > *> &  a_u,
bool  a_homogeneous = false 
)
inlinevirtual

References preCond().

◆ outerResidual()

void LinearizedVTOp::outerResidual ( Vector< LevelData< FArrayBox > *> &  a_lhs,
const Vector< LevelData< FArrayBox > *> &  a_u,
const Vector< LevelData< FArrayBox > *> &  a_rhs,
bool  a_homogeneous = false 
)
virtual

References incr(), and scale().

Referenced by JFNKSolver::solve(), and ~LinearizedVTOp().

◆ preCond()

void LinearizedVTOp::preCond ( Vector< LevelData< FArrayBox > *> &  a_cor,
const Vector< LevelData< FArrayBox > *> &  a_residual 
)
virtual

Referenced by outerLHS().

◆ residual()

void LinearizedVTOp::residual ( Vector< LevelData< FArrayBox > *> &  a_lhs,
const Vector< LevelData< FArrayBox > *> &  a_v,
const Vector< LevelData< FArrayBox > *> &  a_rhs,
bool  a_homogeneous = false 
)
virtual

◆ scale()

virtual void LinearizedVTOp::scale ( Vector< LevelData< FArrayBox > *> &  a_lhs,
const Real &  a_scale 
)
inlinevirtual

Referenced by applyOp(), outerResidual(), residual(), and setU().

◆ setToZero()

virtual void LinearizedVTOp::setToZero ( Vector< LevelData< FArrayBox > *> &  a_lhs)
inlinevirtual

Referenced by applyOp(), and JFNKSolver::solve().

◆ setU()

void LinearizedVTOp::setU ( Vector< LevelData< FArrayBox > *> &  a_u)
virtual

Friends And Related Function Documentation

◆ JFNKSolver

friend class JFNKSolver
friend

Referenced by JFNKSolver::~JFNKSolver().

◆ PetscAMRSolver

friend class PetscAMRSolver
friend

Referenced by JFNKSolver::solve().


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