Skip to content

Remove redundant timestep code #836

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 16 commits into
base: master
Choose a base branch
from
Draft
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
310 changes: 69 additions & 241 deletions src/simulation/m_time_steppers.fpp
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,65 @@

end subroutine s_initialize_time_steppers_module

subroutine s_evolve_q_pb_mv(index, scaler1, scaler2, scaler3, scaler4) !! TODO :: Get a better name for this

integer, intent(in) :: index !! TODO :: Rename this
real(wp), intent(in) :: scaler1, scaler2, scaler3, scaler4 !! TODO :: Rename these too
integer :: i, j, k, l, q

!$acc parallel loop collapse(4) gang vector default(present)
do i = 1, sys_size
do l = 0, p
do k = 0, n
do j = 0, m
q_cons_ts(index)%vf(i)%sf(j, k, l) = &
(scaler1*q_cons_ts(1)%vf(i)%sf(j, k, l) &
+ scaler2*q_cons_ts(2)%vf(i)%sf(j, k, l) &
+ scaler3*dt*rhs_vf(i)%sf(j, k, l))/scaler4 !! TODO :: scaler4 should be called a normalization constant
end do
end do
end do
end do

!Evolve pb and mv for non-polytropic qbmm
if (qbmm .and. (.not. polytropic)) then
!$acc parallel loop collapse(5) gang vector default(present)
do i = 1, nb
do l = 0, p
do k = 0, n
do j = 0, m
do q = 1, nnode
pb_ts(index)%sf(j, k, l, q, i) = &
(scaler1*pb_ts(1)%sf(j, k, l, q, i) &
+ scaler2*pb_ts(2)%sf(j, k, l, q, i) &
+ scaler3*dt*rhs_pb(j, k, l, q, i))/scaler4
end do
end do
end do
end do
end do
end if

if (qbmm .and. (.not. polytropic)) then
!$acc parallel loop collapse(5) gang vector default(present)
do i = 1, nb
do l = 0, p
do k = 0, n
do j = 0, m
do q = 1, nnode
mv_ts(index)%sf(j, k, l, q, i) = &
(scaler1*mv_ts(1)%sf(j, k, l, q, i) &
+ scaler2*mv_ts(2)%sf(j, k, l, q, i) &

Check warning on line 390 in src/simulation/m_time_steppers.fpp

View check run for this annotation

Codecov / codecov/patch

src/simulation/m_time_steppers.fpp#L390

Added line #L390 was not covered by tests
+ scaler3*dt*rhs_mv(j, k, l, q, i))/scaler4
end do
end do
end do
end do
end do
end if

end subroutine s_evolve_q_pb_mv

!> 1st order TVD RK time-stepping algorithm
!! @param t_step Current time step
subroutine s_1st_order_tvd_rk(t_step, time_avg)
Expand Down Expand Up @@ -479,53 +538,8 @@

if (bubbles_lagrange .and. .not. adap_dt) call s_update_lagrange_tdv_rk(stage=1)

!$acc parallel loop collapse(4) gang vector default(present)
do i = 1, sys_size
do l = 0, p
do k = 0, n
do j = 0, m
q_cons_ts(2)%vf(i)%sf(j, k, l) = &
q_cons_ts(1)%vf(i)%sf(j, k, l) &
+ dt*rhs_vf(i)%sf(j, k, l)
end do
end do
end do
end do

!Evolve pb and mv for non-polytropic qbmm
if (qbmm .and. (.not. polytropic)) then
!$acc parallel loop collapse(5) gang vector default(present)
do i = 1, nb
do l = 0, p
do k = 0, n
do j = 0, m
do q = 1, nnode
pb_ts(2)%sf(j, k, l, q, i) = &
pb_ts(1)%sf(j, k, l, q, i) &
+ dt*rhs_pb(j, k, l, q, i)
end do
end do
end do
end do
end do
end if

if (qbmm .and. (.not. polytropic)) then
!$acc parallel loop collapse(5) gang vector default(present)
do i = 1, nb
do l = 0, p
do k = 0, n
do j = 0, m
do q = 1, nnode
mv_ts(2)%sf(j, k, l, q, i) = &
mv_ts(1)%sf(j, k, l, q, i) &
+ dt*rhs_mv(j, k, l, q, i)
end do
end do
end do
end do
end do
end if
!DIR$ FORCEINLINE
call s_evolve_q_pb_mv(2, 1._wp, 0._wp, 1._wp, 1._wp)

if (bodyForces) call s_apply_bodyforces(q_cons_ts(2)%vf, q_prim_vf, rhs_vf, dt)

Expand All @@ -551,55 +565,8 @@

if (bubbles_lagrange .and. .not. adap_dt) call s_update_lagrange_tdv_rk(stage=2)

!$acc parallel loop collapse(4) gang vector default(present)
do i = 1, sys_size
do l = 0, p
do k = 0, n
do j = 0, m
q_cons_ts(1)%vf(i)%sf(j, k, l) = &
(q_cons_ts(1)%vf(i)%sf(j, k, l) &
+ q_cons_ts(2)%vf(i)%sf(j, k, l) &
+ dt*rhs_vf(i)%sf(j, k, l))/2._wp
end do
end do
end do
end do

if (qbmm .and. (.not. polytropic)) then
!$acc parallel loop collapse(5) gang vector default(present)
do i = 1, nb
do l = 0, p
do k = 0, n
do j = 0, m
do q = 1, nnode
pb_ts(1)%sf(j, k, l, q, i) = &
(pb_ts(1)%sf(j, k, l, q, i) &
+ pb_ts(2)%sf(j, k, l, q, i) &
+ dt*rhs_pb(j, k, l, q, i))/2._wp
end do
end do
end do
end do
end do
end if

if (qbmm .and. (.not. polytropic)) then
!$acc parallel loop collapse(5) gang vector default(present)
do i = 1, nb
do l = 0, p
do k = 0, n
do j = 0, m
do q = 1, nnode
mv_ts(1)%sf(j, k, l, q, i) = &
(mv_ts(1)%sf(j, k, l, q, i) &
+ mv_ts(2)%sf(j, k, l, q, i) &
+ dt*rhs_mv(j, k, l, q, i))/2._wp
end do
end do
end do
end do
end do
end if
!DIR$ FORCEINLINE
call s_evolve_q_pb_mv(1, 1._wp, 1._wp, 1._wp, 2._wp)

Check warning on line 569 in src/simulation/m_time_steppers.fpp

View check run for this annotation

Codecov / codecov/patch

src/simulation/m_time_steppers.fpp#L569

Added line #L569 was not covered by tests

if (bodyForces) call s_apply_bodyforces(q_cons_ts(1)%vf, q_prim_vf, rhs_vf, 2._wp*dt/3._wp)

Expand Down Expand Up @@ -661,53 +628,8 @@

if (bubbles_lagrange .and. .not. adap_dt) call s_update_lagrange_tdv_rk(stage=1)

!$acc parallel loop collapse(4) gang vector default(present)
do i = 1, sys_size
do l = 0, p
do k = 0, n
do j = 0, m
q_cons_ts(2)%vf(i)%sf(j, k, l) = &
q_cons_ts(1)%vf(i)%sf(j, k, l) &
+ dt*rhs_vf(i)%sf(j, k, l)
end do
end do
end do
end do

!Evolve pb and mv for non-polytropic qbmm
if (qbmm .and. (.not. polytropic)) then
!$acc parallel loop collapse(5) gang vector default(present)
do i = 1, nb
do l = 0, p
do k = 0, n
do j = 0, m
do q = 1, nnode
pb_ts(2)%sf(j, k, l, q, i) = &
pb_ts(1)%sf(j, k, l, q, i) &
+ dt*rhs_pb(j, k, l, q, i)
end do
end do
end do
end do
end do
end if

if (qbmm .and. (.not. polytropic)) then
!$acc parallel loop collapse(5) gang vector default(present)
do i = 1, nb
do l = 0, p
do k = 0, n
do j = 0, m
do q = 1, nnode
mv_ts(2)%sf(j, k, l, q, i) = &
mv_ts(1)%sf(j, k, l, q, i) &
+ dt*rhs_mv(j, k, l, q, i)
end do
end do
end do
end do
end do
end if
!DIR$ FORCEINLINE
call s_evolve_q_pb_mv(2, 1._wp, 0._wp, 1._wp, 1._wp)

if (bodyForces) call s_apply_bodyforces(q_cons_ts(2)%vf, q_prim_vf, rhs_vf, dt)

Expand All @@ -733,55 +655,8 @@

if (bubbles_lagrange .and. .not. adap_dt) call s_update_lagrange_tdv_rk(stage=2)

!$acc parallel loop collapse(4) gang vector default(present)
do i = 1, sys_size
do l = 0, p
do k = 0, n
do j = 0, m
q_cons_ts(2)%vf(i)%sf(j, k, l) = &
(3._wp*q_cons_ts(1)%vf(i)%sf(j, k, l) &
+ q_cons_ts(2)%vf(i)%sf(j, k, l) &
+ dt*rhs_vf(i)%sf(j, k, l))/4._wp
end do
end do
end do
end do

if (qbmm .and. (.not. polytropic)) then
!$acc parallel loop collapse(5) gang vector default(present)
do i = 1, nb
do l = 0, p
do k = 0, n
do j = 0, m
do q = 1, nnode
pb_ts(2)%sf(j, k, l, q, i) = &
(3._wp*pb_ts(1)%sf(j, k, l, q, i) &
+ pb_ts(2)%sf(j, k, l, q, i) &
+ dt*rhs_pb(j, k, l, q, i))/4._wp
end do
end do
end do
end do
end do
end if

if (qbmm .and. (.not. polytropic)) then
!$acc parallel loop collapse(5) gang vector default(present)
do i = 1, nb
do l = 0, p
do k = 0, n
do j = 0, m
do q = 1, nnode
mv_ts(2)%sf(j, k, l, q, i) = &
(3._wp*mv_ts(1)%sf(j, k, l, q, i) &
+ mv_ts(2)%sf(j, k, l, q, i) &
+ dt*rhs_mv(j, k, l, q, i))/4._wp
end do
end do
end do
end do
end do
end if
!DIR$ FORCEINLINE
call s_evolve_q_pb_mv(2, 3._wp, 1._wp, 1._wp, 4._wp)

if (bodyForces) call s_apply_bodyforces(q_cons_ts(2)%vf, q_prim_vf, rhs_vf, dt/4._wp)

Expand All @@ -806,55 +681,8 @@

if (bubbles_lagrange .and. .not. adap_dt) call s_update_lagrange_tdv_rk(stage=3)

!$acc parallel loop collapse(4) gang vector default(present)
do i = 1, sys_size
do l = 0, p
do k = 0, n
do j = 0, m
q_cons_ts(1)%vf(i)%sf(j, k, l) = &
(q_cons_ts(1)%vf(i)%sf(j, k, l) &
+ 2._wp*q_cons_ts(2)%vf(i)%sf(j, k, l) &
+ 2._wp*dt*rhs_vf(i)%sf(j, k, l))/3._wp
end do
end do
end do
end do

if (qbmm .and. (.not. polytropic)) then
!$acc parallel loop collapse(5) gang vector default(present)
do i = 1, nb
do l = 0, p
do k = 0, n
do j = 0, m
do q = 1, nnode
pb_ts(1)%sf(j, k, l, q, i) = &
(pb_ts(1)%sf(j, k, l, q, i) &
+ 2._wp*pb_ts(2)%sf(j, k, l, q, i) &
+ 2._wp*dt*rhs_pb(j, k, l, q, i))/3._wp
end do
end do
end do
end do
end do
end if

if (qbmm .and. (.not. polytropic)) then
!$acc parallel loop collapse(5) gang vector default(present)
do i = 1, nb
do l = 0, p
do k = 0, n
do j = 0, m
do q = 1, nnode
mv_ts(1)%sf(j, k, l, q, i) = &
(mv_ts(1)%sf(j, k, l, q, i) &
+ 2._wp*mv_ts(2)%sf(j, k, l, q, i) &
+ 2._wp*dt*rhs_mv(j, k, l, q, i))/3._wp
end do
end do
end do
end do
end do
end if
!DIR$ FORCEINLINE

Check warning on line 684 in src/simulation/m_time_steppers.fpp

View check run for this annotation

Codecov / codecov/patch

src/simulation/m_time_steppers.fpp#L684

Added line #L684 was not covered by tests
call s_evolve_q_pb_mv(1, 1._wp, 2._wp, 2._wp, 3._wp)

if (bodyForces) call s_apply_bodyforces(q_cons_ts(1)%vf, q_prim_vf, rhs_vf, 2._wp*dt/3._wp)

Expand Down
Loading