libMesh
twostep_time_solver.h
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2024 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License, or (at your option) any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
13 
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 
18 
19 
20 #ifndef LIBMESH_TWOSTEP_TIME_SOLVER_H
21 #define LIBMESH_TWOSTEP_TIME_SOLVER_H
22 
23 // Local includes
24 #include "libmesh/adaptive_time_solver.h"
25 
26 // C++ includes
27 
28 namespace libMesh
29 {
30 
31 // Forward declarations
32 class System;
33 
34 // UPDATE THIS DESCRIPTION
35 
51 {
52 public:
57 
62  explicit
64 
69 
70  virtual void solve() override;
71 
72  virtual std::pair<unsigned int, Real> adjoint_solve (const QoISet & qoi_indices) override;
73 
77  virtual void integrate_qoi_timestep() override;
78 
84  virtual void integrate_adjoint_sensitivity(const QoISet & qois, const ParameterVector & parameter_vector, SensitivityData & sensitivities) override;
85 
86 #ifdef LIBMESH_ENABLE_AMR
87 
94  virtual void integrate_adjoint_refinement_error_estimate(AdjointRefinementEstimator & adjoint_refinement_error_estimator, ErrorVector & QoI_elementwise_error) override;
95 #endif // LIBMESH_ENABLE_AMR
96 
97 };
98 
99 
100 } // namespace libMesh
101 
102 
103 #endif // LIBMESH_TWOSTEP_TIME_SOLVER_H
Data structure for specifying which Parameters should be independent variables in a parameter sensiti...
This class implements a "brute force" goal-oriented error estimator which computes an estimate of err...
Data structure for specifying which Quantities of Interest should be calculated in an adjoint or a pa...
Definition: qoi_set.h:45
The ErrorVector is a specialization of the StatisticsVector for error data computed on a finite eleme...
Definition: error_vector.h:50
The libMesh namespace provides an interface to certain functionality in the library.
virtual void integrate_qoi_timestep() override
A method to integrate the system::QoI functionals.
virtual void integrate_adjoint_refinement_error_estimate(AdjointRefinementEstimator &adjoint_refinement_error_estimator, ErrorVector &QoI_elementwise_error) override
A method to compute the adjoint refinement error estimate at the current timestep.
This class provides a specific system class.
Definition: diff_system.h:54
virtual std::pair< unsigned int, Real > adjoint_solve(const QoISet &qoi_indices) override
This method solves for the adjoint solution at the next adjoint timestep (or a steady state adjoint s...
Data structure for holding completed parameter sensitivity calculations.
This class wraps another UnsteadySolver derived class, and compares the results of timestepping with ...
virtual void integrate_adjoint_sensitivity(const QoISet &qois, const ParameterVector &parameter_vector, SensitivityData &sensitivities) override
A method to integrate the adjoint sensitivity w.r.t a given parameter vector.
AdaptiveTimeSolver Parent
The parent class.
TwostepTimeSolver(sys_type &s)
Constructor.
This class wraps another UnsteadySolver derived class, and compares the results of timestepping with ...
~TwostepTimeSolver()
Destructor.
virtual void solve() override
This method solves for the solution at the next timestep.