GRINS-0.6.0
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
GRINS::SteadySolver Class Reference

#include <grins_steady_solver.h>

Inheritance diagram for GRINS::SteadySolver:
Inheritance graph
[legend]
Collaboration diagram for GRINS::SteadySolver:
Collaboration graph
[legend]

Public Member Functions

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

Protected Member Functions

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

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 34 of file grins_steady_solver.h.

Constructor & Destructor Documentation

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

Definition at line 43 of file grins_steady_solver.C.

44  : Solver( input )
45  {
46  return;
47  }
Solver(const GetPot &input)
Definition: grins_solver.C:44
GRINS::SteadySolver::~SteadySolver ( )
virtual

Definition at line 49 of file grins_steady_solver.C.

50  {
51  return;
52  }

Member Function Documentation

void GRINS::SteadySolver::adjoint_qoi_parameter_sensitivity ( SolverContext &  context,
const libMesh::QoISet &  qoi_indices,
const libMesh::ParameterVector &  parameters_in,
libMesh::SensitivityData &  sensitivities 
) const
virtual

Reimplemented from GRINS::Solver.

Definition at line 113 of file grins_steady_solver.C.

References GRINS::SolverContext::system.

117  {
118  context.system->adjoint_qoi_parameter_sensitivity
119  (qoi_indices, parameters_in, sensitivities);
120  }
void GRINS::SteadySolver::forward_qoi_parameter_sensitivity ( SolverContext &  context,
const libMesh::QoISet &  qoi_indices,
const libMesh::ParameterVector &  parameters_in,
libMesh::SensitivityData &  sensitivities 
) const
virtual

Reimplemented from GRINS::Solver.

Definition at line 123 of file grins_steady_solver.C.

References GRINS::SolverContext::equation_system, GRINS::SolverContext::output_residual_sensitivities, GRINS::SolverContext::output_solution_sensitivities, GRINS::SolverContext::system, and GRINS::SolverContext::vis.

127  {
128  context.system->forward_qoi_parameter_sensitivity
129  (qoi_indices, parameters_in, sensitivities);
130 
131  if( context.output_residual_sensitivities )
132  context.vis->output_residual_sensitivities
133  ( context.equation_system, context.system, parameters_in );
134 
135  if( context.output_solution_sensitivities )
136  context.vis->output_solution_sensitivities
137  ( context.equation_system, context.system, parameters_in );
138  }
void GRINS::SteadySolver::init_time_solver ( GRINS::MultiphysicsSystem *  system)
protectedvirtual

Implements GRINS::Solver.

Definition at line 54 of file grins_steady_solver.C.

55  {
56  libMesh::SteadySolver* time_solver = new libMesh::SteadySolver( *(system) );
57 
58  system->time_solver = libMesh::AutoPtr<libMesh::TimeSolver>(time_solver);
59  return;
60  }
void GRINS::Solver::initialize ( const GetPot &  input,
std::tr1::shared_ptr< libMesh::EquationSystems >  equation_system,
GRINS::MultiphysicsSystem *  system 
)
virtualinherited

Reimplemented in GRINS::DisplacementContinuationSolver.

Definition at line 67 of file grins_solver.C.

References GRINS::Solver::init_time_solver(), and GRINS::Solver::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)
protectedinherited

Definition at line 87 of file grins_solver.C.

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

Referenced by GRINS::Solver::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
void GRINS::SteadySolver::solve ( SolverContext &  context)
virtual

Implements GRINS::Solver.

Reimplemented in GRINS::DisplacementContinuationSolver.

Definition at line 62 of file grins_steady_solver.C.

References GRINS::SolverContext::do_adjoint_solve, GRINS::SolverContext::equation_system, GRINS::SolverContext::output_adjoint, GRINS::SolverContext::output_residual, GRINS::SolverContext::output_vis, GRINS::SolverContext::postprocessing, GRINS::SolverContext::print_scalars, GRINS::Solver::steady_adjoint_solve(), GRINS::SolverContext::system, and GRINS::SolverContext::vis.

63  {
64  libmesh_assert( context.system );
65 
66  if( context.output_vis )
67  {
68  context.postprocessing->update_quantities( *(context.equation_system) );
69  context.vis->output( context.equation_system );
70  }
71 
72  // GRVY timers contained in here (if enabled)
73  context.system->solve();
74 
75  if ( context.print_scalars )
76  for (unsigned int v=0; v != context.system->n_vars(); ++v)
77  if (context.system->variable(v).type().family ==
78  libMesh::SCALAR)
79  {
80  std::cout << context.system->variable_name(v) <<
81  " = {";
82  std::vector<libMesh::dof_id_type> scalar_indices;
83  context.system->get_dof_map().SCALAR_dof_indices
84  (scalar_indices, v);
85  if (scalar_indices.size())
86  std::cout <<
87  context.system->current_solution(scalar_indices[0]);
88  for (unsigned int i=1; i < scalar_indices.size();
89  ++i)
90  std::cout << ", " <<
91  context.system->current_solution(scalar_indices[i]);
92  std::cout << '}' << std::endl;
93  }
94 
95  if( context.do_adjoint_solve )
96  this->steady_adjoint_solve(context);
97 
98  if( context.output_adjoint )
99  context.vis->output_adjoint( context.equation_system, context.system );
100 
101  if( context.output_vis )
102  {
103  context.postprocessing->update_quantities( *(context.equation_system) );
104  context.vis->output( context.equation_system );
105  }
106 
107  if( context.output_residual ) context.vis->output_residual( context.equation_system, context.system );
108 
109  return;
110  }
void steady_adjoint_solve(SolverContext &context)
Do steady version of adjoint solve.
Definition: grins_solver.C:105
void GRINS::Solver::steady_adjoint_solve ( SolverContext &  context)
inherited

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 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
protectedinherited

Definition at line 103 of file grins_solver.h.

Referenced by GRINS::Solver::set_solver_options().

double GRINS::Solver::_absolute_step_tolerance
protectedinherited

Definition at line 96 of file grins_solver.h.

Referenced by GRINS::Solver::set_solver_options().

bool GRINS::Solver::_continue_after_backtrack_failure
protectedinherited

Definition at line 107 of file grins_solver.h.

Referenced by GRINS::Solver::set_solver_options().

bool GRINS::Solver::_continue_after_max_iterations
protectedinherited

Definition at line 108 of file grins_solver.h.

Referenced by GRINS::Solver::set_solver_options().

double GRINS::Solver::_initial_linear_tolerance
protectedinherited

Definition at line 104 of file grins_solver.h.

Referenced by GRINS::Solver::set_solver_options().

unsigned int GRINS::Solver::_max_linear_iterations
protectedinherited

Definition at line 106 of file grins_solver.h.

Referenced by GRINS::Solver::set_solver_options().

unsigned int GRINS::Solver::_max_nonlinear_iterations
protectedinherited

Definition at line 94 of file grins_solver.h.

Referenced by GRINS::Solver::set_solver_options().

double GRINS::Solver::_minimum_linear_tolerance
protectedinherited

Definition at line 105 of file grins_solver.h.

Referenced by GRINS::Solver::set_solver_options().

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

Definition at line 117 of file grins_solver.h.

double GRINS::Solver::_relative_residual_tolerance
protectedinherited

Definition at line 101 of file grins_solver.h.

Referenced by GRINS::Solver::set_solver_options().

double GRINS::Solver::_relative_step_tolerance
protectedinherited

Definition at line 95 of file grins_solver.h.

Referenced by GRINS::Solver::set_solver_options().

bool GRINS::Solver::_solver_quiet
protectedinherited

Definition at line 111 of file grins_solver.h.

Referenced by GRINS::Solver::set_solver_options().

bool GRINS::Solver::_solver_verbose
protectedinherited

Definition at line 112 of file grins_solver.h.

Referenced by GRINS::Solver::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