Skip to content
Snippets Groups Projects
Commit d5b7baf5 authored by Timothy Smith's avatar Timothy Smith
Browse files

Merge branch 'remove-flux-stencil-races' into 'master'

Add a temporary for WENO flux differencing

See merge request !3
parents 4d82a1a9 8d98f12f
No related branches found
No related tags found
1 merge request!3Add a temporary for WENO flux differencing
......@@ -30,6 +30,8 @@ subroutine compute_flux_derivatives(nvars, ndim, nx, ny, nz, &
real, intent(out) :: flux_derivatives(nvars, ndim, -2:nx+3, -2:ny+3, -2:nz+3)
real flux_derivatives_generalized(nvars, ndim, -2:nx+3, -2:ny+3, -2:nz+3)
real weno_flux_tmp(nvars, 0:nx+1, 0:ny+1, 0:nz+1)
real generalized_fluxes(nvars, ndim, -2:nx+3, -2:ny+3, -2:nz+3)
real generalized_states_frozen(nvars, -2:3)
real generalized_fluxes_frozen(nvars, ndim, -2:3)
......@@ -38,7 +40,6 @@ subroutine compute_flux_derivatives(nvars, ndim, nx, ny, nz, &
real lambda(nvars)
integer i, j, k, l, m
real delta_xi, delta_eta, delta_zeta
real flux(nvars)
real characteristic_fluxes_pos(nvars, -2:3)
real characteristic_fluxes_neg(nvars, -2:3)
real metrics_frozen(ndim, ndim)
......@@ -50,6 +51,7 @@ subroutine compute_flux_derivatives(nvars, ndim, nx, ny, nz, &
delta_eta = 1.0
delta_zeta = 1.0
!$loopy begin tagged: init_flux
do k=1,nz
do j=1,ny
do i=1,nx
......@@ -61,11 +63,16 @@ subroutine compute_flux_derivatives(nvars, ndim, nx, ny, nz, &
end do
end do
end do
!$loopy end tagged: init_flux
!$loopy begin tagged: to_generalized
call convert_to_generalized(nvars, ndim, nx, ny, nz, &
fluxes, metrics, metric_jacobians, generalized_fluxes)
!$loopy end tagged: to_generalized
! for the next three loops, note carefully that the inner loop indices have a different range
!$loopy begin tagged: flux_x_compute
do k=1,nz
do j=1,ny
do i=0,nx
......@@ -96,18 +103,27 @@ subroutine compute_flux_derivatives(nvars, ndim, nx, ny, nz, &
call weno_flux(nvars, &
generalized_fluxes(:, 1, i-2:i+3, j, k), &
characteristic_fluxes_pos, characteristic_fluxes_neg, &
combined_frozen_metrics(1), R, flux)
combined_frozen_metrics(1), R, weno_flux_tmp(:, i, j, k))
end do
end do
end do
!$loopy end tagged: flux_x_compute
!$loopy begin tagged: flux_x_diff
do k=1,nz
do j=1,ny
do i=1,nx
do v=1,nvars
flux_derivatives_generalized(v, 1, i, j, k) = &
flux_derivatives_generalized(v, 1, i, j, k) + flux(v) / delta_xi
flux_derivatives_generalized(v, 1, i+1, j, k) = &
flux_derivatives_generalized(v, 1, i+1, j, k) - flux(v) / delta_xi
flux_derivatives_generalized(v, 1, i, j, k) &
+ (weno_flux_tmp(v, i, j, k) - weno_flux_tmp(v, i-1, j, k)) / delta_xi
end do
end do
end do
end do
!$loopy end tagged: flux_x_diff
!$loopy begin tagged: flux_y_compute
do k=1,nz
do i=1,nx
do j=0,ny
......@@ -138,18 +154,28 @@ subroutine compute_flux_derivatives(nvars, ndim, nx, ny, nz, &
call weno_flux(nvars, &
generalized_fluxes(:, 2, i, j-2:j+3, k), &
characteristic_fluxes_pos, characteristic_fluxes_neg, &
combined_frozen_metrics(2), R, flux)
combined_frozen_metrics(2), R, weno_flux_tmp(:, i, j, k))
end do
end do
end do
!$loopy end tagged: flux_y_compute
!$loopy begin tagged: flux_y_diff
do k=1,nz
do j=1,ny
do i=1,nx
do v=1,nvars
flux_derivatives_generalized(v, 2, i, j, k) = &
flux_derivatives_generalized(v, 2, i, j, k) + flux(v) / delta_eta
flux_derivatives_generalized(v, 2, i, j+1, k) = &
flux_derivatives_generalized(v, 2, i, j+1, k) - flux(v) / delta_eta
flux_derivatives_generalized(v, 2, i, j, k) &
+ (weno_flux_tmp(v, i, j, k) - weno_flux_tmp(v, i, j-1, k)) / delta_eta
end do
end do
end do
end do
!$loopy end tagged: flux_y_diff
!$loopy begin tagged: flux_z_compute
do j=1,ny
do i=1,nx
do k=0,nz
......@@ -180,23 +206,33 @@ subroutine compute_flux_derivatives(nvars, ndim, nx, ny, nz, &
call weno_flux(nvars, &
generalized_fluxes(:, 3, i, j, k-2:k+3), &
characteristic_fluxes_pos, characteristic_fluxes_neg, &
combined_frozen_metrics(3), R, flux)
combined_frozen_metrics(3), R, weno_flux_tmp(:, i, j, k))
end do
end do
end do
!$loopy end tagged: flux_z_compute
!$loopy begin tagged: flux_z_diff
do k=1,nz
do j=1,ny
do i=1,nx
do v=1,nvars
flux_derivatives_generalized(v, 3, i, j, k) = &
flux_derivatives_generalized(v, 3, i, j, k) + flux(v) / delta_zeta
flux_derivatives_generalized(v, 3, i, j, k+1) = &
flux_derivatives_generalized(v, 3, i, j, k+1) - flux(v) / delta_zeta
flux_derivatives_generalized(v, 3, i, j, k) + &
(weno_flux_tmp(v, i, j, k) - weno_flux_tmp(v, i, j, k-1)) / delta_zeta
end do
end do
end do
end do
!$loopy end tagged: flux_z_diff
!$loopy begin tagged: from_generalized
call convert_from_generalized(nvars, ndim, nx, ny, nz, &
flux_derivatives_generalized, &
metrics, &
metric_jacobians, &
flux_derivatives)
!$loopy end tagged: from_generalized
end subroutine
subroutine pointwise_eigenvalues(nvars, d, states, lambda_pointwise)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment