BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
belfem::prandtlmeyer::Wave Class Reference

characteristic integral for the Prandtl-Meyer turn of a thermally perfect ideal gas, the working object behind Gas::prandtl_meyer. More...

Public Member Functions

 Wave (const Gas &aGas, const Vector< real > &aGaussPoints, const Vector< real > &aGaussWeights, const real T1, const real p1, const real u1)
 ~Wave ()=default
real f (const real T) const
 integrand cp * sqrt( Ma^2 - 1 ) / V^2 , the negative slope d(nu)/dT.
real nu (const real T)
 turning angle in rad from the upstream state to temperature T on the same isentrope, positive for T < T1
real solve_T (const real alpha, const real Tguess)
 temperature after turning by alpha, solved from nu( T ) = alpha with a Newton iteration that a bisection bracket safeguards against the sonic singularity of the inverse map.
real T_sonic () const
real ht () const

Detailed Description

characteristic integral for the Prandtl-Meyer turn of a thermally perfect ideal gas, the working object behind Gas::prandtl_meyer.

the simple wave relation d(nu) = sqrt( Ma^2 - 1 ) * dV / V and the adiabatic energy conservation dh + V dV = 0 combine to

nu( T ) = int_T^T1  cp * sqrt( Ma^2 - 1 ) / V^2  dT'

along the isentrope through the upstream state, with V^2 = 2 * ( ht - h ) and Ma^2 = V^2 / ( gamma * R * T ). the integral carries the stagnation enthalpy of the upstream state, so unlike the calorically perfect closed form, nu is not a state function of the Mach number alone. one object serves one upstream state.

the caloric data of an ideal gas mixture is a piecewise cubic spline on a uniform temperature grid. the quadrature panels align with the spline knots, so a fixed Gauss rule per panel integrates to round-off, and the panel integrals accumulated from T1 downward are cached over the Newton iterations.

Constructor & Destructor Documentation

◆ Wave()

belfem::prandtlmeyer::Wave::Wave ( const Gas & aGas,
const Vector< real > & aGaussPoints,
const Vector< real > & aGaussWeights,
const real T1,
const real p1,
const real u1 )
inline

◆ ~Wave()

belfem::prandtlmeyer::Wave::~Wave ( )
default

Member Function Documentation

◆ f()

real belfem::prandtlmeyer::Wave::f ( const real T) const
inline

integrand cp * sqrt( Ma^2 - 1 ) / V^2 , the negative slope d(nu)/dT.

vanishes at the sonic point, which makes the quadrature benign there while the inverse map T( nu ) is singular

◆ ht()

real belfem::prandtlmeyer::Wave::ht ( ) const
inline

◆ nu()

real belfem::prandtlmeyer::Wave::nu ( const real T)
inline

turning angle in rad from the upstream state to temperature T on the same isentrope, positive for T < T1

◆ solve_T()

real belfem::prandtlmeyer::Wave::solve_T ( const real alpha,
const real Tguess )
inline

temperature after turning by alpha, solved from nu( T ) = alpha with a Newton iteration that a bisection bracket safeguards against the sonic singularity of the inverse map.

Tguess enters as the initial iterate

◆ T_sonic()

real belfem::prandtlmeyer::Wave::T_sonic ( ) const
inline

The documentation for this class was generated from the following file: