37 #include "libmesh/error_vector.h"
38 #include "libmesh/steady_solver.h"
39 #include "libmesh/adjoint_refinement_estimator.h"
58 libMesh::SteadySolver* time_solver =
new libMesh::SteadySolver( *(system) );
60 system->time_solver = libMesh::UniquePtr<libMesh::TimeSolver>( time_solver );
72 std::string error_message =
"You asked for QoI error estimates but did not use an Adjoint Refinement Error Estimator!\n";
73 error_message +=
"Please use the ADJOINT_REFINEMENT option for the estimator_type if you want QoI error estimates.\n";
74 std::cout<<error_message<<std::endl;
89 std::cout <<
"==========================================================" << std::endl
91 <<
" adaptive refinements" << std::endl
92 <<
"==========================================================" << std::endl;
97 std::cout <<
"==========================================================" << std::endl
98 <<
"Adaptive Refinement Step " << r_step << std::endl
99 <<
"==========================================================" << std::endl;
123 libMesh::ErrorVector error;
128 for(
unsigned int i = 0; i != context.
system->qoi.size(); i++)
130 libMesh::AdjointRefinementEstimator* adjoint_ref_error_estimator = libMesh::libmesh_cast_ptr<libMesh::AdjointRefinementEstimator*>( context.
error_estimator.get() );
131 std::cout<<
"The error estimate for QoI("<<i<<
") is: "<<adjoint_ref_error_estimator->get_global_QoI_error_estimate(i)<<std::endl;
140 std::cout <<
"==========================================================" << std::endl
141 <<
"Convergence detected!" << std::endl
142 <<
"==========================================================" << std::endl;
166 const libMesh::QoISet& qoi_indices,
167 const libMesh::ParameterVector& parameters_in,
168 libMesh::SensitivityData& sensitivities)
const
170 context.
system->adjoint_qoi_parameter_sensitivity
171 (qoi_indices, parameters_in, sensitivities);
176 const libMesh::QoISet& qoi_indices,
177 const libMesh::ParameterVector& parameters_in,
178 libMesh::SensitivityData& sensitivities)
const
180 context.
system->forward_qoi_parameter_sensitivity
181 (qoi_indices, parameters_in, sensitivities);
184 context.
vis->output_residual_sensitivities
188 context.
vis->output_solution_sensitivities
virtual void forward_qoi_parameter_sensitivity(SolverContext &context, const libMesh::QoISet &qoi_indices, const libMesh::ParameterVector ¶meters_in, libMesh::SensitivityData &sensitivities) const
SharedPtr< libMesh::EquationSystems > equation_system
virtual void solve(SolverContext &context)
SharedPtr< PostProcessedQuantities< libMesh::Real > > postprocessing
void build_mesh_refinement(libMesh::MeshBase &mesh)
void check_qoi_error_option_consistency(SolverContext &context)
void perform_amr(SolverContext &context, const libMesh::ErrorVector &error)
void estimate_error_for_amr(SolverContext &context, libMesh::ErrorVector &error)
void steady_adjoint_solve(SolverContext &context)
Do steady version of adjoint solve.
bool check_for_convergence(SolverContext &context, const libMesh::ErrorVector &error) const
SharedPtr< libMesh::ErrorEstimator > error_estimator
virtual ~SteadyMeshAdaptiveSolver()
bool output_residual_sensitivities
GRINS::MultiphysicsSystem * system
SharedPtr< GRINS::Visualization > vis
Interface with libMesh for solving Multiphysics problems.
SteadyMeshAdaptiveSolver(const GetPot &input)
void print_qoi(SolverContext &context, std::ostream &output)
ErrorEstimatorOptions _error_estimator_options
Simple class to hold objects passed to Solver::solve.
unsigned int max_refinement_steps() const
bool compute_qoi_error_estimate() const
MeshAdaptivityOptions _mesh_adaptivity_options
virtual void adjoint_qoi_parameter_sensitivity(SolverContext &context, const libMesh::QoISet &qoi_indices, const libMesh::ParameterVector ¶meters_in, libMesh::SensitivityData &sensitivities) const
bool output_solution_sensitivities
virtual void init_time_solver(MultiphysicsSystem *system)