GRINS-0.6.0
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
GRINS::Solver Class Referenceabstract

#include <grins_solver.h>

Inheritance diagram for GRINS::Solver:
Inheritance graph
[legend]

Public Member Functions

 Solver (const GetPot &input)
 
virtual ~Solver ()
 
virtual void initialize (const GetPot &input, std::tr1::shared_ptr< libMesh::EquationSystems > equation_system, GRINS::MultiphysicsSystem *system)
 
virtual void solve (SolverContext &context)=0
 
virtual void adjoint_qoi_parameter_sensitivity (SolverContext &, const libMesh::QoISet &, const libMesh::ParameterVector &, libMesh::SensitivityData &) const
 
virtual void forward_qoi_parameter_sensitivity (SolverContext &, const libMesh::QoISet &, const libMesh::ParameterVector &, libMesh::SensitivityData &) const
 
void steady_adjoint_solve (SolverContext &context)
 Do steady version of adjoint solve. More...
 

Protected Member Functions

void set_solver_options (libMesh::DiffSolver &solver)
 
virtual void init_time_solver (GRINS::MultiphysicsSystem *system)=0
 

Protected Attributes

unsigned int _max_nonlinear_iterations
 
double _relative_step_tolerance
 
double _absolute_step_tolerance
 
double _relative_residual_tolerance
 
double _absolute_residual_tolerance
 
double _initial_linear_tolerance
 
double _minimum_linear_tolerance
 
unsigned int _max_linear_iterations
 
bool _continue_after_backtrack_failure
 
bool _continue_after_max_iterations
 
bool _solver_quiet
 
bool _solver_verbose
 
std::map< std::string, GRINS::NBCContainer > _neumann_bc_funcs
 

Detailed Description

Definition at line 58 of file grins_solver.h.

Constructor & Destructor Documentation

GRINS::Solver::Solver ( const GetPot &  input)

Definition at line 44 of file grins_solver.C.

45  : _max_nonlinear_iterations( input("linear-nonlinear-solver/max_nonlinear_iterations", 10 ) ),
46  _relative_step_tolerance( input("linear-nonlinear-solver/relative_step_tolerance", 1.e-6 ) ),
47  _absolute_step_tolerance( input("linear-nonlinear-solver/absolute_step_tolerance", 0.0 ) ),
48  _relative_residual_tolerance( input("linear-nonlinear-solver/relative_residual_tolerance", 1.e-15 ) ),
49  _absolute_residual_tolerance( input("linear-nonlinear-solver/absolute_residual_tolerance", 0.0 ) ),
50  _initial_linear_tolerance( input("linear-nonlinear-solver/initial_linear_tolerance", 1.e-3 ) ),
51  _minimum_linear_tolerance( input("linear-nonlinear-solver/minimum_linear_tolerance", 1.e-3 ) ),
52  _max_linear_iterations( input("linear-nonlinear-solver/max_linear_iterations", 500 ) ),
53  _continue_after_backtrack_failure( input("linear-nonlinear-solver/continue_after_backtrack_failure", false ) ),
54  _continue_after_max_iterations( input("linear-nonlinear-solver/continue_after_max_iterations", false ) ),
55  _solver_quiet( input("screen-options/solver_quiet", false ) ),
56  _solver_verbose( input("screen-options/solver_verbose", false ) )
57  {
58  return;
59  }
double _absolute_residual_tolerance
Definition: grins_solver.h:103
bool _solver_verbose
Definition: grins_solver.h:112
double _relative_residual_tolerance
Definition: grins_solver.h:101
unsigned int _max_linear_iterations
Definition: grins_solver.h:106
double _relative_step_tolerance
Definition: grins_solver.h:95
bool _continue_after_backtrack_failure
Definition: grins_solver.h:107
double _minimum_linear_tolerance
Definition: grins_solver.h:105
double _absolute_step_tolerance
Definition: grins_solver.h:96
bool _continue_after_max_iterations
Definition: grins_solver.h:108
unsigned int _max_nonlinear_iterations
Definition: grins_solver.h:94
double _initial_linear_tolerance
Definition: grins_solver.h:104
GRINS::Solver::~Solver ( )
virtual

Definition at line 62 of file grins_solver.C.

63  {
64  return;
65  }

Member Function Documentation

virtual void GRINS::Solver::adjoint_qoi_parameter_sensitivity ( SolverContext &  ,
const libMesh::QoISet &  ,
const libMesh::ParameterVector &  ,
libMesh::SensitivityData &   
) const
inlinevirtual

Reimplemented in GRINS::SteadyMeshAdaptiveSolver, and GRINS::SteadySolver.

Definition at line 71 of file grins_solver.h.

76  { libmesh_not_implemented(); }
virtual void GRINS::Solver::forward_qoi_parameter_sensitivity ( SolverContext &  ,
const libMesh::QoISet &  ,
const libMesh::ParameterVector &  ,
libMesh::SensitivityData &   
) const
inlinevirtual

Reimplemented in GRINS::SteadyMeshAdaptiveSolver, and GRINS::SteadySolver.

Definition at line 79 of file grins_solver.h.

84  { libmesh_not_implemented(); }
virtual void GRINS::Solver::init_time_solver ( GRINS::MultiphysicsSystem *  system)
protectedpure virtual
void GRINS::Solver::initialize ( const GetPot &  input,
std::tr1::shared_ptr< libMesh::EquationSystems >  equation_system,
GRINS::MultiphysicsSystem *  system 
)
virtual

Reimplemented in GRINS::DisplacementContinuationSolver.

Definition at line 67 of file grins_solver.C.

References init_time_solver(), and set_solver_options().

Referenced by GRINS::DisplacementContinuationSolver::initialize().

70  {
71 
72  // Defined in subclasses depending on the solver used.
73  this->init_time_solver(system);
74 
75  // Initialize the system
76  equation_system->init();
77 
78  // Get diff solver to set options
79  libMesh::DiffSolver &solver = *(system->time_solver->diff_solver().get());
80 
81  // Set linear/nonlinear solver options
82  this->set_solver_options( solver );
83 
84  return;
85  }
virtual void init_time_solver(GRINS::MultiphysicsSystem *system)=0
void set_solver_options(libMesh::DiffSolver &solver)
Definition: grins_solver.C:87
void GRINS::Solver::set_solver_options ( libMesh::DiffSolver &  solver)
protected

Definition at line 87 of file grins_solver.C.

References _absolute_residual_tolerance, _absolute_step_tolerance, _continue_after_backtrack_failure, _continue_after_max_iterations, _initial_linear_tolerance, _max_linear_iterations, _max_nonlinear_iterations, _minimum_linear_tolerance, _relative_residual_tolerance, _relative_step_tolerance, _solver_quiet, and _solver_verbose.

Referenced by initialize().

88  {
89  solver.quiet = this->_solver_quiet;
90  solver.verbose = this->_solver_verbose;
91  solver.max_nonlinear_iterations = this->_max_nonlinear_iterations;
92  solver.relative_step_tolerance = this->_relative_step_tolerance;
93  solver.absolute_step_tolerance = this->_absolute_step_tolerance;
94  solver.relative_residual_tolerance = this->_relative_residual_tolerance;
95  solver.absolute_residual_tolerance = this->_absolute_residual_tolerance;
96  solver.max_linear_iterations = this->_max_linear_iterations;
97  solver.continue_after_backtrack_failure = this->_continue_after_backtrack_failure;
98  solver.initial_linear_tolerance = this->_initial_linear_tolerance;
99  solver.minimum_linear_tolerance = this->_minimum_linear_tolerance;
100  solver.continue_after_max_iterations = this->_continue_after_max_iterations;
101 
102  return;
103  }
double _absolute_residual_tolerance
Definition: grins_solver.h:103
bool _solver_verbose
Definition: grins_solver.h:112
double _relative_residual_tolerance
Definition: grins_solver.h:101
unsigned int _max_linear_iterations
Definition: grins_solver.h:106
double _relative_step_tolerance
Definition: grins_solver.h:95
bool _continue_after_backtrack_failure
Definition: grins_solver.h:107
double _minimum_linear_tolerance
Definition: grins_solver.h:105
double _absolute_step_tolerance
Definition: grins_solver.h:96
bool _continue_after_max_iterations
Definition: grins_solver.h:108
unsigned int _max_nonlinear_iterations
Definition: grins_solver.h:94
double _initial_linear_tolerance
Definition: grins_solver.h:104
virtual void GRINS::Solver::solve ( SolverContext &  context)
pure virtual
void GRINS::Solver::steady_adjoint_solve ( SolverContext &  context)

Do steady version of adjoint solve.

We put this here since we may want to reuse this in multiple different steady solves.

Definition at line 105 of file grins_solver.C.

References GRINS::SolverContext::system.

Referenced by GRINS::SteadySolver::solve(), and GRINS::SteadyMeshAdaptiveSolver::solve().

106  {
107  libMesh::out << "==========================================================" << std::endl
108  << "Solving adjoint problem." << std::endl
109  << "==========================================================" << std::endl;
110 
111  context.system->adjoint_solve();
112  context.system->set_adjoint_already_solved(true);
113  }

Member Data Documentation

double GRINS::Solver::_absolute_residual_tolerance
protected

Definition at line 103 of file grins_solver.h.

Referenced by set_solver_options().

double GRINS::Solver::_absolute_step_tolerance
protected

Definition at line 96 of file grins_solver.h.

Referenced by set_solver_options().

bool GRINS::Solver::_continue_after_backtrack_failure
protected

Definition at line 107 of file grins_solver.h.

Referenced by set_solver_options().

bool GRINS::Solver::_continue_after_max_iterations
protected

Definition at line 108 of file grins_solver.h.

Referenced by set_solver_options().

double GRINS::Solver::_initial_linear_tolerance
protected

Definition at line 104 of file grins_solver.h.

Referenced by set_solver_options().

unsigned int GRINS::Solver::_max_linear_iterations
protected

Definition at line 106 of file grins_solver.h.

Referenced by set_solver_options().

unsigned int GRINS::Solver::_max_nonlinear_iterations
protected

Definition at line 94 of file grins_solver.h.

Referenced by set_solver_options().

double GRINS::Solver::_minimum_linear_tolerance
protected

Definition at line 105 of file grins_solver.h.

Referenced by set_solver_options().

std::map< std::string, GRINS::NBCContainer > GRINS::Solver::_neumann_bc_funcs
protected

Definition at line 117 of file grins_solver.h.

double GRINS::Solver::_relative_residual_tolerance
protected

Definition at line 101 of file grins_solver.h.

Referenced by set_solver_options().

double GRINS::Solver::_relative_step_tolerance
protected

Definition at line 95 of file grins_solver.h.

Referenced by set_solver_options().

bool GRINS::Solver::_solver_quiet
protected

Definition at line 111 of file grins_solver.h.

Referenced by set_solver_options().

bool GRINS::Solver::_solver_verbose
protected

Definition at line 112 of file grins_solver.h.

Referenced by set_solver_options().


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

Generated on Mon Jun 22 2015 21:32:24 for GRINS-0.6.0 by  doxygen 1.8.9.1