ppm Module

Reference: Colella, P. and Woodward, P.R., The piecewise parabolic method (PPM) for gas-dynamical simulations, Journal of computational physics, vol. 54, no. 1, pp.174-201, 1984


Uses

  • module~~ppm~~UsesGraph module~ppm ppm module~vartypes vartypes module~ppm->module~vartypes iso_fortran_env iso_fortran_env module~vartypes->iso_fortran_env

Used by

  • module~~ppm~~UsedByGraph module~ppm ppm module~face_interpolant face_interpolant module~face_interpolant->module~ppm module~boundary_state_reconstruction boundary_state_reconstruction module~boundary_state_reconstruction->module~face_interpolant module~time time module~time->module~face_interpolant module~ausmp ausmP module~ausmp->module~face_interpolant module~scheme scheme module~scheme->module~face_interpolant module~scheme->module~ausmp module~update update module~update->module~face_interpolant module~update->module~boundary_state_reconstruction module~update->module~time module~update->module~scheme module~solver solver module~solver->module~time module~solver->module~scheme module~solver->module~update program~main main program~main->module~solver

Contents


Subroutines

private subroutine compute_face_estimates(qp, f_qp_left, f_qp_right, flags, dims)

Subroutine to calculate state at the face, generalized for

Arguments

Type IntentOptional AttributesName
real(kind=wp), intent(in), dimension(-2:dims%imx+2, -2:dims%jmx+2, -2:dims%kmx+2, 1:dims%n_var):: qp

Store primitive variable at cell center

real(kind=wp), intent(inout), dimension(1-flags(1):dims%imx-1+2*flags(1), 1-flags(2):dims%jmx-1+2*flags(2), 1-flags(3):dims%kmx-1+2*flags(3),1:dims%n_var):: f_qp_left

primitive state at faces

real(kind=wp), intent(inout), dimension(1-flags(1):dims%imx-1+2*flags(1), 1-flags(2):dims%jmx-1+2*flags(2), 1-flags(3):dims%kmx-1+2*flags(3),1:dims%n_var):: f_qp_right

primitive state at faces

integer, intent(in), dimension(3):: flags

Flags for direction switch

type(extent), intent(in) :: dims

Extent of the domain:imx,jmx,kmx

private subroutine remove_extrema(qp, f_qp_left, f_qp_right, flags, dims)

Remove extrema from the state estimated. Limiting the value in case of PPM

Arguments

Type IntentOptional AttributesName
real(kind=wp), intent(in), dimension(-2:dims%imx+2, -2:dims%jmx+2, -2:dims%kmx+2, 1:dims%n_var):: qp

Store primitive variable at cell center

real(kind=wp), intent(inout), dimension(1-flags(1):dims%imx-1+2*flags(1), 1-flags(2):dims%jmx-1+2*flags(2), 1-flags(3):dims%kmx-1+2*flags(3),1:dims%n_var):: f_qp_left

primitve state variable at faces

real(kind=wp), intent(inout), dimension(1-flags(1):dims%imx-1+2*flags(1), 1-flags(2):dims%jmx-1+2*flags(2), 1-flags(3):dims%kmx-1+2*flags(3),1:dims%n_var):: f_qp_right

primitve state variable at faces

integer, intent(in), dimension(3):: flags

flags for direction switch

type(extent), intent(in) :: dims

Extent of the domain:imx,jmx,kmx

private subroutine pressure_based_switching(qp, f_qp_left, f_qp_right, pdif, flags, flow, dims)

Pressure based switching. User x,y, or z for I,J,or K face respectively

Arguments

Type IntentOptional AttributesName
real(kind=wp), intent(in), dimension(-2:dims%imx+2, -2:dims%jmx+2, -2:dims%kmx+2, 1:dims%n_var):: qp

Store primitive variable at cell center

real(kind=wp), intent(inout), dimension(1-flags(1):dims%imx-1+2*flags(1), 1-flags(2):dims%jmx-1+2*flags(2), 1-flags(3):dims%kmx-1+2*flags(3),1:dims%n_var):: f_qp_left

primitive state at faces

real(kind=wp), intent(inout), dimension(1-flags(1):dims%imx-1+2*flags(1), 1-flags(2):dims%jmx-1+2*flags(2), 1-flags(3):dims%kmx-1+2*flags(3),1:dims%n_var):: f_qp_right

primitive state at faces

real(kind=wp), intent(inout), dimension(0:dims%imx,0:dims%jmx,0:dims%kmx):: pdif

pressure difference

integer, intent(in), dimension(3):: flags

flags for direction switch

type(flowtype), intent(in) :: flow
type(extent), intent(in) :: dims

Extent of the domain:imx,jmx,kmx

public subroutine compute_ppm_states(qp, x_qp_l, x_qp_r, y_qp_l, y_qp_r, z_qp_l, z_qp_r, pdif, scheme, flow, dims)

Call PPM face-state reconstruction for each face with optional call for remove extrema based on input limter switch and call pressure based switching based on input pressure based switch

Arguments

Type IntentOptional AttributesName
real(kind=wp), intent(in), dimension(-2:dims%imx+2, -2:dims%jmx+2, -2:dims%kmx+2, 1:dims%n_var):: qp

Store primitive variable at cell center

real(kind=wp), intent(inout), dimension(0:dims%imx+1,1:dims%jmx-1,1:dims%kmx-1,1:dims%n_var):: x_qp_l

Store primitive state at the I-face

real(kind=wp), intent(inout), dimension(0:dims%imx+1,1:dims%jmx-1,1:dims%kmx-1,1:dims%n_var):: x_qp_r

Store primitive state at the I-face

real(kind=wp), intent(inout), dimension(1:dims%imx-1,0:dims%jmx+1,1:dims%kmx-1,1:dims%n_var):: y_qp_l

Store primitive state at the J-face

real(kind=wp), intent(inout), dimension(1:dims%imx-1,0:dims%jmx+1,1:dims%kmx-1,1:dims%n_var):: y_qp_r

Store primitive state at the J-face

real(kind=wp), intent(inout), dimension(1:dims%imx-1,1:dims%jmx-1,0:dims%kmx+1,1:dims%n_var):: z_qp_l

Store primitive state at the K-face

real(kind=wp), intent(inout), dimension(1:dims%imx-1,1:dims%jmx-1,0:dims%kmx+1,1:dims%n_var):: z_qp_r

Store primitive state at the K-face

real(kind=wp), intent(inout), dimension(0:dims%imx,0:dims%jmx,0:dims%kmx):: pdif

pressure difference

type(schemetype), intent(in) :: scheme

finite-volume Schemes

type(flowtype), intent(in) :: flow

Information about fluid flow: freestream-speed, ref-viscosity,etc.

type(extent), intent(in) :: dims

Extent of the domain:imx,jmx,kmx