@@ -357,6 +357,52 @@ contains
357357
358358 end subroutine s_initialize_time_steppers_module
359359
360+ subroutine s_evolve_q_pb_mv (index1 , index2 , scaler1 , scaler2 , scaler3 , scaler4 ) !! TODO :: Get a better name for this
361+
362+ integer , intent (in ) :: index1, index2 !! TODO :: I have no idea what index is meant to represent. Rename this.
363+ real (wp), intent (in ) :: scaler1, scaler2, scaler3, scaler4
364+ integer :: i, j, k, l, q
365+
366+ !$acc parallel loop collapse(4 ) gang vector default(present)
367+ do i = 1 , sys_size
368+ do l = 0 , p
369+ do k = 0 , n
370+ do j = 0 , m
371+ q_cons_ts(index1)%vf(i)%sf(j, k, l) = &
372+ (scaler1 * q_cons_ts(1 )%vf(i)%sf(j, k, l) &
373+ + scaler2 * q_cons_ts(index2)%vf(i)%sf(j, k, l) &
374+ + scaler3 * dt * rhs_vf(i)%sf(j, k, l)) / scaler4
375+ end do
376+ end do
377+ end do
378+ end do
379+
380+ !Evolve pb and mv for non- polytropic qbmm
381+ !! TODO :: It really feels like this loop should be separated from the above loop. Consider making two different subroutines
382+ if (qbmm .and. (.not. polytropic)) then
383+ !$acc parallel loop collapse(5 ) gang vector default(present)
384+ do i = 1 , nb
385+ do l = 0 , p
386+ do k = 0 , n
387+ do j = 0 , m
388+ do q = 1 , nnode
389+ pb_ts(index1)%sf(j, k, l, q, i) = &
390+ (scaler1 * pb_ts(1 )%sf(j, k, l, q, i) &
391+ + scaler2 * pb_ts(index2)%sf(j, k, l, q, i) &
392+ + scaler3 * dt * rhs_pb(j, k, l, q, i)) / scaler4
393+ mv_ts(index1)%sf(j, k, l, q, i) = &
394+ (scaler1 * mv_ts(1 )%sf(j, k, l, q, i) &
395+ + scaler2 * mv_ts(index2)%sf(j, k, l, q, i) &
396+ + scaler3 * dt * rhs_mv(j, k, l, q, i)) / scaler4
397+ end do
398+ end do
399+ end do
400+ end do
401+ end do
402+ end if
403+
404+ end subroutine s_evolve_q_pb_mv
405+
360406 !> 1st order TVD RK time- stepping algorithm
361407 !! @param t_step Current time step
362408 subroutine s_1st_order_tvd_rk (t_step , time_avg )
@@ -398,53 +444,8 @@ contains
398444 call s_update_lagrange_tdv_rk(stage= 1 )
399445 end if
400446
401- !$acc parallel loop collapse(4 ) gang vector default(present)
402- do i = 1 , sys_size
403- do l = 0 , p
404- do k = 0 , n
405- do j = 0 , m
406- q_cons_ts(1 )%vf(i)%sf(j, k, l) = &
407- q_cons_ts(1 )%vf(i)%sf(j, k, l) &
408- + dt* rhs_vf(i)%sf(j, k, l)
409- end do
410- end do
411- end do
412- end do
413-
414- !Evolve pb and mv for non- polytropic qbmm
415- if (qbmm .and. (.not. polytropic)) then
416- !$acc parallel loop collapse(5 ) gang vector default(present)
417- do i = 1 , nb
418- do l = 0 , p
419- do k = 0 , n
420- do j = 0 , m
421- do q = 1 , nnode
422- pb_ts(1 )%sf(j, k, l, q, i) = &
423- pb_ts(1 )%sf(j, k, l, q, i) &
424- + dt* rhs_pb(j, k, l, q, i)
425- end do
426- end do
427- end do
428- end do
429- end do
430- end if
431-
432- if (qbmm .and. (.not. polytropic)) then
433- !$acc parallel loop collapse(5 ) gang vector default(present)
434- do i = 1 , nb
435- do l = 0 , p
436- do k = 0 , n
437- do j = 0 , m
438- do q = 1 , nnode
439- mv_ts(1 )%sf(j, k, l, q, i) = &
440- mv_ts(1 )%sf(j, k, l, q, i) &
441- + dt* rhs_mv(j, k, l, q, i)
442- end do
443- end do
444- end do
445- end do
446- end do
447- end if
447+ call s_evolve_q_pb_mv(1 , 1 , 1._wp , 1._wp , 1._wp , 1._wp )
448+
448449
449450 if (bodyForces) call s_apply_bodyforces(q_cons_ts(1 )%vf, q_prim_vf, rhs_vf, dt)
450451
0 commit comments