75 coef, gs, h, effective_visc, rk_scheme, dt)
76 type(
field_t),
intent(inout) :: rho_field, m_x, m_y, m_z, E
77 type(
field_t),
intent(in) :: p, u, v, w, h, effective_visc
78 class(
ax_t),
intent(inout) :: Ax
79 type(
coef_t),
intent(inout) :: coef
80 type(
gs_t),
intent(inout) :: gs
82 real(kind=
rp),
intent(in) :: dt
83 integer :: n, s, i, j, l
84 type(
field_t),
pointer :: k_rho_1, k_rho_2, k_rho_3, k_rho_4, &
85 k_m_x_1, k_m_x_2, k_m_x_3, k_m_x_4, &
86 k_m_y_1, k_m_y_2, k_m_y_3, k_m_y_4, &
87 k_m_z_1, k_m_z_2, k_m_z_3, k_m_z_4, &
88 k_E_1, k_E_2, k_E_3, k_E_4, &
89 temp_rho, temp_m_x, temp_m_y, temp_m_z, temp_E
90 integer :: tmp_indices(25)
94 real(kind=
rp),
contiguous,
pointer :: k_rho_ptr(:,:,:,:)
95 real(kind=
rp),
contiguous,
pointer :: k_m_x_ptr(:,:,:,:)
96 real(kind=
rp),
contiguous,
pointer :: k_m_y_ptr(:,:,:,:)
97 real(kind=
rp),
contiguous,
pointer :: k_m_z_ptr(:,:,:,:)
98 real(kind=
rp),
contiguous,
pointer :: k_e_ptr(:,:,:,:)
130 call k_rho%assign(1, k_rho_1)
131 call k_rho%assign(2, k_rho_2)
132 call k_rho%assign(3, k_rho_3)
133 call k_rho%assign(4, k_rho_4)
135 call k_m_x%assign(1, k_m_x_1)
136 call k_m_x%assign(2, k_m_x_2)
137 call k_m_x%assign(3, k_m_x_3)
138 call k_m_x%assign(4, k_m_x_4)
140 call k_m_y%assign(1, k_m_y_1)
141 call k_m_y%assign(2, k_m_y_2)
142 call k_m_y%assign(3, k_m_y_3)
143 call k_m_y%assign(4, k_m_y_4)
145 call k_m_z%assign(1, k_m_z_1)
146 call k_m_z%assign(2, k_m_z_2)
147 call k_m_z%assign(3, k_m_z_3)
148 call k_m_z%assign(4, k_m_z_4)
150 call k_e%assign(1, k_e_1)
151 call k_e%assign(2, k_e_2)
152 call k_e%assign(3, k_e_3)
153 call k_e%assign(4, k_e_4)
167 temp_rho%x(l,1,1,1) = rho_field%x(l,1,1,1)
168 temp_m_x%x(l,1,1,1) = m_x%x(l,1,1,1)
169 temp_m_y%x(l,1,1,1) = m_y%x(l,1,1,1)
170 temp_m_z%x(l,1,1,1) = m_z%x(l,1,1,1)
171 temp_e%x(l,1,1,1) = e%x(l,1,1,1)
180 k_rho_ptr => k_rho%items(j)%ptr%x
181 k_m_x_ptr => k_m_x%items(j)%ptr%x
182 k_m_y_ptr => k_m_y%items(j)%ptr%x
183 k_m_z_ptr => k_m_z%items(j)%ptr%x
184 k_e_ptr => k_e%items(j)%ptr%x
191 temp_rho%x(l,1,1,1) = temp_rho%x(l,1,1,1) + &
192 dt * rk_scheme%coeffs_A(i, j) * k_rho_ptr(l,1,1,1)
193 temp_m_x%x(l,1,1,1) = temp_m_x%x(l,1,1,1) + &
194 dt * rk_scheme%coeffs_A(i, j) * k_m_x_ptr(l,1,1,1)
195 temp_m_y%x(l,1,1,1) = temp_m_y%x(l,1,1,1) + &
196 dt * rk_scheme%coeffs_A(i, j) * k_m_y_ptr(l,1,1,1)
197 temp_m_z%x(l,1,1,1) = temp_m_z%x(l,1,1,1) + &
198 dt * rk_scheme%coeffs_A(i, j) * k_m_z_ptr(l,1,1,1)
199 temp_e%x(l,1,1,1) = temp_e%x(l,1,1,1) + &
200 dt * rk_scheme%coeffs_A(i, j) * k_e_ptr(l,1,1,1)
208 k_m_y%items(i)%ptr, k_m_z%items(i)%ptr, &
210 temp_rho, temp_m_x, temp_m_y, temp_m_z, temp_e, &
212 coef, gs, h, effective_visc)
219 k_rho_ptr => k_rho%items(i)%ptr%x
220 k_m_x_ptr => k_m_x%items(i)%ptr%x
221 k_m_y_ptr => k_m_y%items(i)%ptr%x
222 k_m_z_ptr => k_m_z%items(i)%ptr%x
223 k_e_ptr => k_e%items(i)%ptr%x
230 rho_field%x(l,1,1,1) = rho_field%x(l,1,1,1) + &
231 dt * rk_scheme%coeffs_b(i) * k_rho_ptr(l,1,1,1)
232 m_x%x(l,1,1,1) = m_x%x(l,1,1,1) + &
233 dt * rk_scheme%coeffs_b(i) * k_m_x_ptr(l,1,1,1)
234 m_y%x(l,1,1,1) = m_y%x(l,1,1,1) + &
235 dt * rk_scheme%coeffs_b(i) * k_m_y_ptr(l,1,1,1)
236 m_z%x(l,1,1,1) = m_z%x(l,1,1,1) + &
237 dt * rk_scheme%coeffs_b(i) * k_m_z_ptr(l,1,1,1)
238 e%x(l,1,1,1) = e%x(l,1,1,1) + &
239 dt * rk_scheme%coeffs_b(i) * k_e_ptr(l,1,1,1)
271 rho_field, m_x, m_y, m_z, E, p, u, v, w, Ax, &
272 coef, gs, h, effective_visc)
273 type(
field_t),
intent(inout) :: rhs_rho_field, &
274 rhs_m_x, rhs_m_y, rhs_m_z, rhs_e
275 type(
field_t),
intent(inout) :: rho_field, m_x, m_y, m_z, E
276 type(
field_t),
intent(in) :: p, u, v, w, h, effective_visc
277 class(
ax_t),
intent(inout) :: Ax
278 type(
coef_t),
intent(inout) :: coef
279 type(
gs_t),
intent(inout) :: gs
281 type(
field_t),
pointer :: f_x, f_y, f_z, &
282 visc_rho, visc_m_x, visc_m_y, visc_m_z, visc_E
283 integer :: tmp_indices(8)
301 call div(rhs_rho_field%x, m_x%x, m_y%x, m_z%x, coef)
311 f_x%x(i,1,1,1) = m_x%x(i,1,1,1) * m_x%x(i,1,1,1) / &
312 rho_field%x(i,1,1,1) + p%x(i,1,1,1)
313 f_y%x(i,1,1,1) = m_x%x(i,1,1,1) * m_y%x(i,1,1,1) / &
315 f_z%x(i,1,1,1) = m_x%x(i,1,1,1) * m_z%x(i,1,1,1) / &
319 call div(rhs_m_x%x, f_x%x, f_y%x, f_z%x, coef)
326 f_x%x(i,1,1,1) = m_y%x(i,1,1,1) * m_x%x(i,1,1,1) / &
328 f_y%x(i,1,1,1) = m_y%x(i,1,1,1) * m_y%x(i,1,1,1) / &
329 rho_field%x(i,1,1,1) + p%x(i,1,1,1)
330 f_z%x(i,1,1,1) = m_y%x(i,1,1,1) * m_z%x(i,1,1,1) / &
334 call div(rhs_m_y%x, f_x%x, f_y%x, f_z%x, coef)
341 f_x%x(i,1,1,1) = m_z%x(i,1,1,1) * m_x%x(i,1,1,1) / &
343 f_y%x(i,1,1,1) = m_z%x(i,1,1,1) * m_y%x(i,1,1,1) / &
345 f_z%x(i,1,1,1) = m_z%x(i,1,1,1) * m_z%x(i,1,1,1) / &
346 rho_field%x(i,1,1,1) + p%x(i,1,1,1)
349 call div(rhs_m_z%x, f_x%x, f_y%x, f_z%x, coef)
358 f_x%x(i,1,1,1) = (e%x(i,1,1,1) + p%x(i,1,1,1)) * &
360 f_y%x(i,1,1,1) = (e%x(i,1,1,1) + p%x(i,1,1,1)) * &
362 f_z%x(i,1,1,1) = (e%x(i,1,1,1) + p%x(i,1,1,1)) * &
366 call div(rhs_e%x, f_x%x, f_y%x, f_z%x, coef)
370 call rotate_cyc(rhs_m_x%x, rhs_m_y%x, rhs_m_z%x, 1, coef)
374 call rotate_cyc(rhs_m_x%x, rhs_m_y%x, rhs_m_z%x, 0, coef)
385 rhs_rho_field%x(i,1,1,1) = rhs_rho_field%x(i,1,1,1) * &
387 rhs_m_x%x(i,1,1,1) = rhs_m_x%x(i,1,1,1) * coef%mult(i,1,1,1)
388 rhs_m_y%x(i,1,1,1) = rhs_m_y%x(i,1,1,1) * coef%mult(i,1,1,1)
389 rhs_m_z%x(i,1,1,1) = rhs_m_z%x(i,1,1,1) * coef%mult(i,1,1,1)
390 rhs_e%x(i,1,1,1) = rhs_e%x(i,1,1,1) * coef%mult(i,1,1,1)
391 coef%h1(i,1,1,1) = effective_visc%x(i,1,1,1)
396 call ax%compute(visc_rho%x, rho_field%x, coef, p%msh, p%Xh)
397 call ax%compute(visc_m_x%x, m_x%x, coef, p%msh, p%Xh)
398 call ax%compute(visc_m_y%x, m_y%x, coef, p%msh, p%Xh)
399 call ax%compute(visc_m_z%x, m_z%x, coef, p%msh, p%Xh)
400 call ax%compute(visc_e%x, e%x, coef, p%msh, p%Xh)
405 call rotate_cyc(visc_m_x%x, visc_m_y%x, visc_m_z%x, 1, coef)
409 call rotate_cyc(visc_m_x%x, visc_m_y%x, visc_m_z%x, 0, coef)
420 rhs_rho_field%x(i,1,1,1) = -rhs_rho_field%x(i,1,1,1) - &
421 coef%Binv(i,1,1,1) * visc_rho%x(i,1,1,1)
422 rhs_m_x%x(i,1,1,1) = -rhs_m_x%x(i,1,1,1) - &
423 coef%Binv(i,1,1,1) * visc_m_x%x(i,1,1,1)
424 rhs_m_y%x(i,1,1,1) = -rhs_m_y%x(i,1,1,1) - &
425 coef%Binv(i,1,1,1) * visc_m_y%x(i,1,1,1)
426 rhs_m_z%x(i,1,1,1) = -rhs_m_z%x(i,1,1,1) - &
427 coef%Binv(i,1,1,1) * visc_m_z%x(i,1,1,1)
428 rhs_e%x(i,1,1,1) = -rhs_e%x(i,1,1,1) - &
429 coef%Binv(i,1,1,1) * visc_e%x(i,1,1,1)
430 coef%h1(i,1,1,1) = 1.0_rp