48 u, v, w, gamma, p, rho, n)
49 integer,
intent(in) :: n
50 real(kind=
rp),
intent(in) :: gamma
51 real(kind=
rp),
dimension(n),
intent(in) :: u, v, w, p, rho
52 real(kind=
rp),
dimension(n),
intent(inout) :: max_wave_speed
54 real(kind=
rp) :: vel_mag, sound_speed
63 vel_mag = sqrt(u(i)*u(i) + v(i)*v(i) + &
65 sound_speed = sqrt(gamma * p(i) / rho(i))
66 max_wave_speed(i) = vel_mag + sound_speed
75 integer,
intent(in) :: n
76 real(kind=
rp),
intent(in) :: gamma
77 real(kind=
rp),
dimension(n),
intent(in) :: p, rho
78 real(kind=
rp),
dimension(n),
intent(inout) :: s
80 real(kind=
rp) :: inv_gamma_m1
82 inv_gamma_m1 = 1.0_rp / (gamma - 1.0_rp)
90 s(i) = inv_gamma_m1 * rho(i) * &
91 (log(p(i)) - gamma * log(rho(i)))
99 integer,
intent(in) :: n
100 real(kind=
rp),
dimension(n),
intent(inout) :: u, v, w
101 real(kind=
rp),
dimension(n),
intent(in) :: m_x, m_y, m_z, rho
109 u(i) = m_x(i) / rho(i)
110 v(i) = m_y(i) / rho(i)
111 w(i) = m_z(i) / rho(i)
119 u, v, w, E, rho, gamma, n)
120 integer,
intent(in) :: n
121 real(kind=
rp),
dimension(n),
intent(inout) :: m_x, m_y, m_z, p, ruvw
122 real(kind=
rp),
dimension(n),
intent(in) :: u, v, w, e, rho
123 real(kind=
rp),
intent(in) :: gamma
132 m_x(i) = u(i) * rho(i)
133 m_y(i) = v(i) * rho(i)
134 m_z(i) = w(i) * rho(i)
135 tmp = 0.5_rp * rho(i) * (u(i)**2 + v(i)**2 + w(i)**2)
136 p(i) = (gamma - 1.0_rp) * (e(i) - tmp)
145 integer,
intent(in) :: n
146 real(kind=
rp),
dimension(n),
intent(inout) :: e, p
148 real(kind=
rp),
dimension(n),
intent(in) :: ruvw
149 real(kind=
rp),
intent(in) :: gamma
151 real(kind=
rp) :: inv_gamma_m1
153 inv_gamma_m1 = 1.0_rp / (gamma - 1.0_rp)
161 p(i) =
max(p(i), 1.0e-12_rp)
163 e(i) = p(i) * inv_gamma_m1 + ruvw(i)
CPU implementation of compressible flow operations.
subroutine, public compressible_ops_cpu_update_uvw(u, v, w, m_x, m_y, m_z, rho, n)
Update u,v,w fields.
subroutine, public compressible_ops_cpu_update_e(e, p, ruvw, gamma, n)
Update E field.
subroutine, public compressible_ops_cpu_compute_entropy(s, p, rho, gamma, n)
Compute entropy field S = 1/(gamma-1) * rho * (log(p) - gamma * log(rho)) on CPU.
subroutine, public compressible_ops_cpu_compute_max_wave_speed(max_wave_speed, u, v, w, gamma, p, rho, n)
Compute maximum wave speed for compressible flows on CPU.
subroutine, public compressible_ops_cpu_update_mxyz_p_ruvw(m_x, m_y, m_z, p, ruvw, u, v, w, e, rho, gamma, n)
Update m_x, m_y, m_z, p, ruvw, fields.
integer, parameter, public rp
Global precision used in computations.