euler_physics Module



Functions

public function compute_max_wave_speed(state) result(s_max)

Return the global maximum wave speed max_i(|u_i| + c_i).

Read more…

Arguments

Type IntentOptional Attributes Name
type(solver_state_t), intent(in) :: state

Solver state (reads state%ub, state%n_pt, state%cfg%gam)

Return Value real(kind=wp)


Subroutines

public subroutine init_flux_scheme(state, scheme)

Bind the flux dispatch pointers in @p state to the requested scheme.

Read more…

Arguments

Type IntentOptional Attributes Name
type(solver_state_t), intent(inout) :: state

Solver instance; use_fds, flux_split and

character(len=*), intent(in) :: scheme

Name of the flux scheme.

private pure subroutine extract_primitives(q, gam, rho, u, p)

Extract primitive variables (rho, u, p) from a conserved state vector.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: q(:)
real(kind=wp), intent(in) :: gam

Ratio of specific heats γ

real(kind=wp), intent(out) :: rho

Density

real(kind=wp), intent(out) :: u

Density Velocity

real(kind=wp), intent(out) :: p

Density Velocity Pressure

private pure subroutine compute_roe_averages(rho_L, u_L, h_L, rho_R, u_R, h_R, gam, u_roe, h_roe, c_roe)

Compute Roe-averaged velocity, enthalpy, and sound speed.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: rho_L
real(kind=wp), intent(in) :: u_L
real(kind=wp), intent(in) :: h_L
real(kind=wp), intent(in) :: rho_R
real(kind=wp), intent(in) :: u_R
real(kind=wp), intent(in) :: h_R
real(kind=wp), intent(in) :: gam

Ratio of specific heats γ

real(kind=wp), intent(out) :: u_roe

Roe-averaged velocity

real(kind=wp), intent(out) :: h_roe

Roe-averaged velocity Roe-averaged specific enthalpy

real(kind=wp), intent(out) :: c_roe

Roe-averaged velocity Roe-averaged specific enthalpy Roe-averaged sound speed

public pure subroutine compute_euler_flux(q, flux, gam)

Compute the Euler flux vector F(Q) for a given conserved state.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: q(:)
real(kind=wp), intent(out) :: flux(:)
real(kind=wp), intent(in) :: gam

Ratio of specific heats

private pure subroutine lax_friedrichs_split(q, flux, sign, gam)

Lax-Friedrichs flux splitting.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: q(:)
real(kind=wp), intent(out) :: flux(:)
integer, intent(in) :: sign

+1 for F^+, -1 for F^-

real(kind=wp), intent(in) :: gam

Ratio of specific heats

private pure subroutine lax_friedrichs_split_both(q, fp, fm, gam)

Fused Lax-Friedrichs flux splitting: returns F^+ and F^- in one call.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: q(:)
real(kind=wp), intent(out) :: fp(:)
real(kind=wp), intent(out) :: fm(:)
real(kind=wp), intent(in) :: gam

Ratio of specific heats.

private pure subroutine steger_warming_split_both(q, fp, fm, gam)

Fused Steger-Warming flux splitting: returns F^+ and F^- in one call.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: q(:)
real(kind=wp), intent(out) :: fp(:)
real(kind=wp), intent(out) :: fm(:)
real(kind=wp), intent(in) :: gam

Ratio of specific heats.

private pure subroutine van_leer_split_both(q, fp, fm, gam)

Fused van Leer flux splitting: returns F^+ and F^- in one call.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: q(:)
real(kind=wp), intent(out) :: fp(:)
real(kind=wp), intent(out) :: fm(:)
real(kind=wp), intent(in) :: gam

Ratio of specific heats.

public pure subroutine compute_eigensystem(q_avg, r_mat, r_inv, gam)

Compute the right eigenvector matrix K and its inverse K^{-1} of the Euler Jacobian at a given state.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: q_avg(neq)
real(kind=wp), intent(out) :: r_mat(neq,neq)
real(kind=wp), intent(out) :: r_inv(neq,neq)
real(kind=wp), intent(in) :: gam

Ratio of specific heats

private pure subroutine steger_warming_split(q, flux, sign, gam)

Steger-Warming flux vector splitting.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: q(:)
real(kind=wp), intent(out) :: flux(:)
integer, intent(in) :: sign

+1 for F^+, -1 for F^-

real(kind=wp), intent(in) :: gam

Ratio of specific heats

private pure subroutine van_leer_split(q, flux, sign, gam)

van Leer flux vector splitting.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: q(:)
real(kind=wp), intent(out) :: flux(:)
integer, intent(in) :: sign

+1 for F^+, -1 for F^-

real(kind=wp), intent(in) :: gam

Ratio of specific heats

private pure subroutine ausm_plus(q_L, q_R, flux, gam)

AUSM+ FDS scheme (AUSM family).

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: q_L(:)
real(kind=wp), intent(in) :: q_R(:)
real(kind=wp), intent(out) :: flux(:)
real(kind=wp), intent(in) :: gam

Ratio of specific heats

private pure subroutine hll_flux(q_L, q_R, flux, gam)

HLL approximate Riemann solver.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: q_L(:)
real(kind=wp), intent(in) :: q_R(:)
real(kind=wp), intent(out) :: flux(:)
real(kind=wp), intent(in) :: gam

Ratio of specific heats

private pure subroutine hllc_flux(q_L, q_R, flux, gam)

HLLC approximate Riemann solver with contact-wave restoration.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: q_L(:)
real(kind=wp), intent(in) :: q_R(:)
real(kind=wp), intent(out) :: flux(:)
real(kind=wp), intent(in) :: gam

Ratio of specific heats

private pure subroutine roe_flux(q_L, q_R, flux, gam)

Roe approximate Riemann solver with Harten entropy fix.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: q_L(:)
real(kind=wp), intent(in) :: q_R(:)
real(kind=wp), intent(out) :: flux(:)
real(kind=wp), intent(in) :: gam

Ratio of specific heats