| 
    Chombo + EB
    3.2
    
   | 
 
#include <PetscSolver.H>

Public Member Functions | |
| PetscSolver () | |
| virtual | ~PetscSolver () | 
| void | destroy () | 
| virtual void | setHomogeneous (bool a_homogeneous) | 
| virtual void | setFunctionAndJacobian (PetscErrorCode(*f)(SNES, Vec, Vec, void *), PetscErrorCode(*j)(SNES, Vec, Mat *, Mat *, MatStructure *, void *)) | 
| virtual void | define (Real a_dx, bool a_homogeneous=true) | 
| virtual void | define (LinearOp< T > *, bool a_homogeneous=true) | 
| virtual void | solve (T &a_phi, const T &a_rhs) | 
| int | solve_private (T &a_phi, const T &a_rhs) | 
| virtual void | solve_mfree (T &a_phi, const T &a_rhs, LinearOp< T > *a_op) | 
| int | solve_mfree_private (T &a_phi, const T &a_rhs, LinearOp< T > *a_op) | 
| Real | computeResidual () | 
| virtual int | applyOp (T &a_phi, const T &a_rhs) | 
| void | setInitialGuessNonzero (bool b=true) | 
| void | setOptionsPrefix (const char prefix[]) | 
| KSP | getKSP () | 
| virtual int | getNNZPerRow () const | 
| virtual bool | supportNNZExact () const | 
| virtual void | rhsOperation (const T &a_rhs) | 
| virtual Real | addBCdiagValue (const IntVect &a_iv, const IntVect &a_jv, const T &a_rhs, const DataIndex &a_datInd, const Real coeff=1) | 
| int | resetOperator () | 
| Real | normInfinity (const T &a_phi) const | 
| int | setup_solver (const T &a_phi) | 
| int | create_mat_vec (const T &a_phi) | 
| PetscErrorCode | putPetscInChombo (T &a_phi, const Vec xx) | 
| PetscErrorCode | putChomboInPetsc (Vec out, const T &a_phi) | 
| virtual int | formMatrix (Mat, const T *=0, PetscInt my0=0, PetscInt nloc=0, PetscInt *d=0, PetscInt *o=0)=0 | 
| virtual BaseFab< Real > & | getRegFab (T &a_fab, const DataIndex &a_datInd)=0 | 
| virtual const BaseFab< Real > & | getRegFab (const T &a_fab, const DataIndex &a_datInd) const =0 | 
| virtual const BaseFab< Real > & | getRegFab (const T &a_fab, const DataIndex &a_datInd, Box &a_box) const =0 | 
| void | setNull (bool n=true) | 
  Public Member Functions inherited from LinearSolver< T > | |
| virtual | ~LinearSolver () | 
| virtual void | setConvergenceMetrics (Real a_metric, Real a_tolerance) | 
| Set a convergence metric, along with solver tolerance, if desired.  More... | |
Static Public Member Functions | |
| static PetscErrorCode | ksp_monitor_pout (KSP ksp, PetscInt it, PetscReal rnorm, void *ctx) | 
| static PetscErrorCode | apply_mfree (Mat A, Vec x, Vec f) | 
Public Attributes | |
| LinearOp< T > * | m_op_mfree | 
| T | m_phi_mfree | 
| T | m_Lphi_mfree | 
| bool | m_mfree_homogeneous | 
| bool | m_homogeneous | 
| Real | m_dx | 
| Mat | m_mat | 
| void * | m_ctx | 
| Vec | m_xx | 
| Vec | m_rr | 
| Vec | m_bb | 
| SNES | m_snes | 
| KSP | m_ksp | 
| LevelData< BaseFab< PetscInt > > | m_gids | 
| PetscInt | m_gid0 | 
Protected Member Functions | |
| virtual Real | addBCrhsValue (const IntVect &a_iv, const T &a_phi, const DataIndex &a_datInd, const Real &coeff=1) | 
Protected Attributes | |
| PetscInt | m_defined | 
| PetscErrorCode(* | m_function )(SNES, Vec, Vec, void *) | 
| PetscErrorCode(* | m_jacobian )(SNES, Vec, Mat *, Mat *, MatStructure *, void *) | 
| char | m_prestring [32] | 
| bool | m_null | 
| bool | m_nz_init_guess | 
| LevelData< BaseFab< bool > > | m_bccode | 
Interface to PETSC linear solvers BC implementation hooks: addBCdiagValue (formMatrix) and addBCrhsValue (solveprivate) m_bccode should be encoded true for cells that are at the domain boundaries at formMatrix time.
| PetscSolver< T >::PetscSolver | ( | ) | 
      
  | 
  virtual | 
| void PetscSolver< T >::destroy | ( | ) | 
Referenced by PetscSolver< LevelData< FArrayBox > >::~PetscSolver().
      
  | 
  inlinevirtual | 
Set whether the solver uses only homogeneous boundary conditions
Implements LinearSolver< T >.
      
  | 
  inlinevirtual | 
Set Function F(u) = 0 and Jacobian dF(u)/du for nonlinear solves
      
  | 
  inlinestatic | 
      
  | 
  virtual | 
Reimplemented in PetscSolverPoisson< T >.
Referenced by PetscSolver< LevelData< FArrayBox > >::define(), PetscSolverPoisson< T >::define(), and PetscSolver< LevelData< FArrayBox > >::ksp_monitor_pout().
      
  | 
  virtual | 
Define the operator and whether it is a homogeneous solver or not. The LinearSolver does not take over ownership of this a_operator object. It does not call delete on it when the LinearSolver is deleted. It is meant to be like a late-binding reference. If you created a_operator with new, you should call delete on it after LinearSolver is deleted if you want to avoid memory leaks.
Implements LinearSolver< T >.
Reimplemented in PetscSolverPoisson< T >.
      
  | 
  virtual | 
Solve
Implements LinearSolver< T >.
Referenced by PetscSolver< LevelData< FArrayBox > >::ksp_monitor_pout().
| int PetscSolver< T >::solve_private | ( | T & | a_phi, | 
| const T & | a_rhs | ||
| ) | 
      
  | 
  virtual | 
Solve a_op*a_phi = a_rhs using the PETSC matrix free functions The preconditioner (for which a matrix is formed) need not be the same as the actual operator.
Referenced by PetscSolver< LevelData< FArrayBox > >::ksp_monitor_pout().
| int PetscSolver< T >::solve_mfree_private | ( | T & | a_phi, | 
| const T & | a_rhs, | ||
| LinearOp< T > * | a_op | ||
| ) | 
      
  | 
  static | 
Referenced by PetscSolver< LevelData< FArrayBox > >::solve_mfree_private().
| Real PetscSolver< T >::computeResidual | ( | ) | 
viewResidual
      
  | 
  virtual | 
apply
      
  | 
  inline | 
set initial guess non-zero
      
  | 
  inline | 
set initial guess non-zero
      
  | 
  inline | 
      
  | 
  inlinevirtual | 
get an estimate of the number of nnz/row for matrix allocation
Reimplemented in PetscSolverViscousTensor< T >.
Referenced by PetscSolver< LevelData< FArrayBox > >::create_mat_vec().
      
  | 
  inlinevirtual | 
do I support having formMatrix precompute exact NNZ/row
Referenced by PetscSolver< LevelData< FArrayBox > >::create_mat_vec().
      
  | 
  inlinevirtual | 
      
  | 
  inlinevirtual | 
handling boundary conditions, turn it into a term to be added to the diag term this function coordinates with addBCrhsValue for Dirichlet BC for Neumann BC no RHS modification is required
      
  | 
  inline | 
| Real PetscSolver< T >::normInfinity | ( | const T & | a_phi | ) | const | 
Infinity norm
Referenced by PetscSolver< LevelData< FArrayBox > >::resetOperator().
      
  | 
  inlineprotectedvirtual | 
handling boundary conditions, turn it into a term to be added to the RHS this function coordinates with addBCdiagValue for Dirichlet BC, should return a term that is to be added to RHS
Referenced by PetscSolver< LevelData< FArrayBox > >::putChomboInPetsc(), PetscSolver< LevelData< FArrayBox > >::solve_mfree_private(), and PetscSolver< LevelData< FArrayBox > >::solve_private().
| int PetscSolver< T >::setup_solver | ( | const T & | a_phi | ) | 
| int PetscSolver< T >::create_mat_vec | ( | const T & | a_phi | ) | 
| PetscErrorCode PetscSolver< T >::putPetscInChombo | ( | T & | a_phi, | 
| const Vec | xx | ||
| ) | 
Referenced by PetscSolver< LevelData< FArrayBox > >::apply_mfree(), PetscSolver< LevelData< FArrayBox > >::applyOp(), PetscSolver< LevelData< FArrayBox > >::computeResidual(), PetscSolver< LevelData< FArrayBox > >::normInfinity(), PetscSolver< LevelData< FArrayBox > >::solve_mfree_private(), and PetscSolver< LevelData< FArrayBox > >::solve_private().
| PetscErrorCode PetscSolver< T >::putChomboInPetsc | ( | Vec | out, | 
| const T & | a_phi | ||
| ) | 
      
  | 
  pure virtual | 
      
  | 
  pure virtual | 
Implemented in PetscSolverFAB< LevelData< FArrayBox > >.
Referenced by PetscSolver< LevelData< FArrayBox > >::putChomboInPetsc(), PetscSolver< LevelData< FArrayBox > >::putPetscInChombo(), PetscSolver< LevelData< FArrayBox > >::solve_mfree_private(), and PetscSolver< LevelData< FArrayBox > >::solve_private().
      
  | 
  pure virtual | 
Implemented in PetscSolverFAB< LevelData< FArrayBox > >.
      
  | 
  pure virtual | 
Implemented in PetscSolverFAB< LevelData< FArrayBox > >.
| void PetscSolver< T >::setNull | ( | bool | n = true | ) | 
| LinearOp<T>* PetscSolver< T >::m_op_mfree | 
| T PetscSolver< T >::m_phi_mfree | 
| T PetscSolver< T >::m_Lphi_mfree | 
| bool PetscSolver< T >::m_mfree_homogeneous | 
| bool PetscSolver< T >::m_homogeneous | 
public member data: whether or not to use inhomogeneous boundary conditions.
Referenced by PetscSolver< LevelData< FArrayBox > >::apply_mfree(), PetscSolver< LevelData< FArrayBox > >::define(), and PetscSolver< LevelData< FArrayBox > >::setHomogeneous().
| Real PetscSolver< T >::m_dx | 
member data: grid spacing
Referenced by PetscSolver< LevelData< FArrayBox > >::define(), PetscSolver< LevelData< FArrayBox > >::PetscSolver(), PetscSolver< LevelData< FArrayBox > >::putChomboInPetsc(), PetscSolver< LevelData< FArrayBox > >::solve_mfree_private(), and PetscSolver< LevelData< FArrayBox > >::solve_private().
| Mat PetscSolver< T >::m_mat | 
Referenced by PetscSolver< LevelData< FArrayBox > >::applyOp(), PetscSolver< LevelData< FArrayBox > >::computeResidual(), PetscSolver< LevelData< FArrayBox > >::create_mat_vec(), PetscSolver< LevelData< FArrayBox > >::destroy(), PetscSolver< LevelData< FArrayBox > >::setup_solver(), PetscSolver< LevelData< FArrayBox > >::solve_mfree_private(), and PetscSolver< LevelData< FArrayBox > >::solve_private().
| void* PetscSolver< T >::m_ctx | 
| Vec PetscSolver< T >::m_xx | 
Referenced by PetscSolver< LevelData< FArrayBox > >::applyOp(), PetscSolver< LevelData< FArrayBox > >::computeResidual(), PetscSolver< LevelData< FArrayBox > >::create_mat_vec(), PetscSolver< LevelData< FArrayBox > >::destroy(), PetscSolver< LevelData< FArrayBox > >::solve_mfree_private(), and PetscSolver< LevelData< FArrayBox > >::solve_private().
| Vec PetscSolver< T >::m_rr | 
| Vec PetscSolver< T >::m_bb | 
Referenced by PetscSolver< LevelData< FArrayBox > >::applyOp(), PetscSolver< LevelData< FArrayBox > >::computeResidual(), PetscSolver< LevelData< FArrayBox > >::create_mat_vec(), PetscSolver< LevelData< FArrayBox > >::destroy(), PetscSolver< LevelData< FArrayBox > >::solve_mfree_private(), and PetscSolver< LevelData< FArrayBox > >::solve_private().
| SNES PetscSolver< T >::m_snes | 
| KSP PetscSolver< T >::m_ksp | 
Referenced by PetscSolver< LevelData< FArrayBox > >::destroy(), PetscSolver< LevelData< FArrayBox > >::getKSP(), PetscSolver< LevelData< FArrayBox > >::setOptionsPrefix(), PetscSolver< LevelData< FArrayBox > >::setup_solver(), PetscSolver< LevelData< FArrayBox > >::solve_mfree_private(), and PetscSolver< LevelData< FArrayBox > >::solve_private().
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
Referenced by PetscSolver< LevelData< FArrayBox > >::create_mat_vec(), PetscSolver< LevelData< FArrayBox > >::PetscSolver(), PetscSolver< LevelData< FArrayBox > >::setOptionsPrefix(), PetscSolver< LevelData< FArrayBox > >::setup_solver(), and PetscSolver< LevelData< FArrayBox > >::solve_mfree_private().
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
Referenced by PetscSolver< LevelData< FArrayBox > >::create_mat_vec().
| LevelData<BaseFab<PetscInt> > PetscSolver< T >::m_gids | 
Referenced by PetscSolver< LevelData< FArrayBox > >::computeResidual(), PetscSolver< LevelData< FArrayBox > >::create_mat_vec(), PetscSolver< LevelData< FArrayBox > >::putChomboInPetsc(), PetscSolver< LevelData< FArrayBox > >::putPetscInChombo(), PetscSolver< LevelData< FArrayBox > >::solve_mfree_private(), and PetscSolver< LevelData< FArrayBox > >::solve_private().
| PetscInt PetscSolver< T >::m_gid0 | 
 1.8.13