ryujin 2.1.1 revision ae95f0746689649c34c5726a2385af071c7c8efd
Hyperbolic Module


class  ryujin::HyperbolicModule< Description, dim, Number >


template<typename Number >
DEAL_II_ALWAYS_INLINE void ryujin::quadratic_newton_step (Number &p_1, Number &p_2, const Number phi_p_1, const Number phi_p_2, const Number dphi_p_1, const Number dphi_p_2, const Number sign=Number(1.0))

Detailed Description

This module contains classes and functions used during different stages of the explicit hyperbolic update performed in HyperbolicModule::step().

Function Documentation

◆ quadratic_newton_step()

template<typename Number >
DEAL_II_ALWAYS_INLINE void ryujin::quadratic_newton_step ( Number &  p_1,
Number &  p_2,
const Number  phi_p_1,
const Number  phi_p_2,
const Number  dphi_p_1,
const Number  dphi_p_2,
const Number  sign = Number(1.0) 

Perform one step of a quadratic Newton iteration, see [ryujin-2022-1], Algorithm 3.

For this, it has to hold true that \(p_1\le p^\ast\le p_2\), and \(\phi(p_1)\le 0\le \phi(p_2)\), or \(\phi(p_1)\ge 0\ge \phi(p_2)\) and that \(\phi\) itself is a 3-convex/concave function, i.e., \(\phi'''<0\), or \(\phi'''>0\).

Modifies p_1 and P_2 ensures that p_1 <= p_2, and that p_1 (p_2) is monotonically increasing (decreasing).

Write out the quadratic Newton step in more detail.

Definition at line 39 of file newton.h.

Referenced by ryujin::Euler::Limiter< dim, Number >::limit(), ryujin::EulerAEOS::Limiter< dim, Number >::limit(), and ryujin::ShallowWater::Limiter< dim, Number >::limit().