[P]arallel [Hi]gh-order [Li]brary for [P]DEs  Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
rrk_ode_solver_base.cpp
1 #include "rrk_ode_solver_base.h"
2 
3 namespace PHiLiP {
4 namespace ODE {
5 
6 template <int dim, typename real, typename MeshType>
8  std::shared_ptr<RKTableauBase<dim,real,MeshType>> rk_tableau_input)
9  : RKNumEntropy<dim,real,MeshType>(rk_tableau_input)
10 {
11  // Do nothing
12 }
13 
14 template <int dim, typename real, typename MeshType>
16  std::shared_ptr<DGBase<dim,real,MeshType>> dg,
17  const std::vector<dealii::LinearAlgebra::distributed::Vector<double>> &rk_stage,
18  const dealii::LinearAlgebra::distributed::Vector<double> &solution_update)
19 {
20  // Update solution such that dg is holding u^n (not last stage of RK)
21  dg->solution = solution_update;
22  dg->assemble_residual();
23 
24  relaxation_parameter = compute_relaxation_parameter(dt, dg, rk_stage, solution_update);
25  const double relaxation_parameter_RRK_solver = relaxation_parameter;
26 
27  if (relaxation_parameter < 0.5 ){
28  this->pcout << "RRK failed to find a reasonable relaxation factor. Aborting..." << std::endl;
30  std::abort();
31  }
32 
33  return relaxation_parameter_RRK_solver;
34 }
35 
38 #if PHILIP_DIM != 1
40 #endif
41 
42 } // ODESolver namespace
43 } // PHiLiP namespace
RRKODESolverBase(std::shared_ptr< RKTableauBase< dim, real, MeshType >> rk_tableau_input)
Constructor.
real relaxation_parameter
Relaxation Runge-Kutta parameter gamma^n.
Files for the baseline physics.
Definition: ADTypes.hpp:10
real update_relaxation_parameter(const real dt, std::shared_ptr< DGBase< dim, real, MeshType >> dg, const std::vector< dealii::LinearAlgebra::distributed::Vector< double >> &rk_stage, const dealii::LinearAlgebra::distributed::Vector< double > &solution_update) override
dealii::ConditionalOStream pcout
Parallel std::cout that only outputs on mpi_rank==0.
Base class for storing the RK method.
DGBase is independent of the number of state variables.
Definition: dg_base.hpp:82
Relaxation Runge-Kutta ODE solver base class.
virtual real compute_relaxation_parameter(const real dt, std::shared_ptr< DGBase< dim, real, MeshType >> dg, const std::vector< dealii::LinearAlgebra::distributed::Vector< double >> &rk_stage, const dealii::LinearAlgebra::distributed::Vector< double > &)=0