34 #include "libmesh/getpot.h"
35 #include "libmesh/parameter_vector.h"
36 #include "libmesh/steady_solver.h"
42 (
const GetPot& input,
43 const libMesh::Parallel::Communicator &comm )
55 ( std::tr1::shared_ptr<libMesh::EquationSystems> equation_system,
57 const unsigned int time_step,
58 const libMesh::Real time )
60 std::stringstream suffix;
63 std::string filename = this->_vis_output_file_prefix+
"_unsteady_residual";
65 filename+=
"."+suffix.str();
73 libMesh::AutoPtr<libMesh::TimeSolver> prev_time_solver(system->time_solver);
75 libMesh::SteadySolver* steady_solver =
new libMesh::SteadySolver( *(system) );
77 system->time_solver = libMesh::AutoPtr<libMesh::TimeSolver>(steady_solver);
79 system->assembly(
true ,
false );
83 system->solution->swap( *(system->rhs) );
85 equation_system->update();
87 this->dump_visualization( equation_system, filename, time );
90 system->solution->swap( *(system->rhs) );
91 equation_system->update();
93 system->time_solver = prev_time_solver;
99 (std::tr1::shared_ptr<libMesh::EquationSystems> equation_system,
101 const libMesh::ParameterVector & params,
102 const unsigned int time_step,
103 const libMesh::Real time )
105 for (
unsigned int p=0; p != params.size(); ++p)
107 std::stringstream suffix;
110 std::stringstream pstr;
113 std::string filename =
114 this->_vis_output_file_prefix +
"_unsteady_dRdp" +
115 pstr.str() +
'.' + suffix.str();
118 system->solution->swap(system->get_sensitivity_rhs(p));
119 equation_system->update();
121 this->dump_visualization( equation_system, filename, time );
124 system->solution->swap(system->get_sensitivity_rhs(p));
125 equation_system->update();
130 ( std::tr1::shared_ptr<libMesh::EquationSystems> equation_system,
132 const unsigned int time_step,
133 const libMesh::Real time )
135 std::stringstream suffix;
138 const libMesh::DifferentiableQoI* raw_qoi = system->get_qoi();
141 unsigned int n_qois = qoi->
n_qois();
143 for(
unsigned int q = 0; q < n_qois; q++ )
145 libMesh::NumericVector<libMesh::Number>& dual_solution = system->get_adjoint_solution(q);
147 const std::string& qoi_name = qoi->
get_qoi(q).
name();
148 std::string filename = this->_vis_output_file_prefix+
"_unsteady_adjoint_"+qoi_name;
149 filename+=
"."+suffix.str();
151 system->solution->swap( dual_solution );
152 equation_system->update();
154 this->dump_visualization( equation_system, filename, time );
157 system->solution->swap( dual_solution );
158 equation_system->update();
163 (std::tr1::shared_ptr<libMesh::EquationSystems> equation_system,
165 const libMesh::ParameterVector & params,
166 const unsigned int time_step,
167 const libMesh::Real time )
169 for (
unsigned int p=0; p != params.size(); ++p)
171 std::stringstream suffix;
174 std::stringstream pstr;
177 std::string filename =
178 this->_vis_output_file_prefix +
"_unsteady_dudp" +
179 pstr.str() +
'.' + suffix.str();
182 system->solution->swap(system->get_sensitivity_solution(p));
183 equation_system->update();
185 this->dump_visualization( equation_system, filename, time );
188 system->solution->swap(system->get_sensitivity_solution(p));
189 equation_system->update();
const std::string & name() const
Returns the name of this QoI.
virtual void output_adjoint(std::tr1::shared_ptr< libMesh::EquationSystems > equation_system, GRINS::MultiphysicsSystem *system, const unsigned int time_step, const libMesh::Real time)
const QoIBase & get_qoi(unsigned int qoi_index) const
UnsteadyVisualization(const GetPot &input, const libMesh::Parallel::Communicator &comm LIBMESH_CAN_DEFAULT_TO_COMMWORLD)
virtual void output_residual(std::tr1::shared_ptr< libMesh::EquationSystems > equation_system, GRINS::MultiphysicsSystem *system, const unsigned int time_step, const libMesh::Real time)
virtual void output_solution_sensitivities(std::tr1::shared_ptr< libMesh::EquationSystems > equation_system, GRINS::MultiphysicsSystem *system, const libMesh::ParameterVector ¶ms, const unsigned int time_step, const libMesh::Real time)
Interface with libMesh for solving Multiphysics problems.
virtual void output_residual_sensitivities(std::tr1::shared_ptr< libMesh::EquationSystems > equation_system, GRINS::MultiphysicsSystem *system, const libMesh::ParameterVector ¶ms, const unsigned int time_step, const libMesh::Real time)
unsigned int n_qois() const