@@ -279,7 +279,7 @@ contains
279279
280280 print * , " Lagrange bubbles running, in proc" , proc_rank, " number:" , bub_id, " /" , id
281281
282- call s_mpi_reduce_int_sum(bub_id)
282+ call s_mpi_reduce_int_sum(bub_id, bub_id )
283283
284284 if (proc_rank == 0 ) then
285285 if (bub_id == 0 ) call s_mpi_abort(' No bubbles in the domain. Check input/lag_bubbles.dat' )
@@ -621,7 +621,7 @@ contains
621621 real (wp) :: myR, myV, myBeta_c, myBeta_t, myR0, myPbdot, myMvdot
622622 real (wp) :: myPinf, aux1, aux2, myCson, myRho
623623 real (wp), dimension (3 ) :: myPos, myVel
624- real (wp) :: gamma, pi_inf, qv
624+ real (wp) :: gamma, pi_inf, qv, f_b
625625 real (wp), dimension (contxe) :: myalpha_rho, myalpha
626626 real (wp), dimension (2 ) :: Re
627627 integer , dimension (3 ) :: cell
@@ -734,10 +734,18 @@ contains
734734 mtn_dveldt(k, l, stage) = 0._wp
735735 elseif (lag_params%vel_model == 2 ) then
736736 mtn_dposdt(k, l, stage) = myVel(l)
737- mtn_dveldt(k, l, stage) = f_get_acceleration(myPos(l), &
738- myR, myVel(l), &
739- myMass_n, myMass_v, &
740- Re(1 ), myRho, cell, l, q_prim_vf)
737+ f_b = f_get_bubble_force(myPos(l), &
738+ myR, myV, myVel, &
739+ myMass_n, myMass_v, &
740+ Re(1 ), myRho, cell, l, q_prim_vf)
741+ mtn_dveldt(k, l, stage) = f_b / (myMass_n + myMass_v)
742+ elseif (lag_params%vel_model == 3 ) then
743+ mtn_dposdt(k, l, stage) = myVel(l)
744+ f_b = f_get_bubble_force(myPos(l), &
745+ myR, myV, myVel, &
746+ myMass_n, myMass_v, &
747+ Re(1 ), myRho, cell, l, q_prim_vf)
748+ mtn_dveldt(k, l, stage) = 2._wp * f_b / (myMass_n + myMass_v) - 3._wp * myV * myVel(l) / myR
741749 else
742750 mtn_dposdt(k, l, stage) = 0._wp
743751 mtn_dveldt(k, l, stage) = 0._wp
@@ -776,6 +784,7 @@ contains
776784
777785 if (lag_params%solver_approach == 2 ) then
778786
787+ ! (q / (1 - beta)) * d(beta)/ dt source
779788 if (p == 0 ) then
780789 $:GPU_PARALLEL_LOOP(collapse= 4 )
781790 do k = 0 , p
@@ -813,6 +822,7 @@ contains
813822
814823 call s_gradient_dir(q_prim_vf(E_idx), q_beta%vf(3 ), l)
815824
825+ ! (beta / (1 - beta)) * dP/ dl source
816826 $:GPU_PARALLEL_LOOP(collapse= 3 )
817827 do k = 0 , p
818828 do j = 0 , n
@@ -839,6 +849,7 @@ contains
839849
840850 call s_gradient_dir(q_beta%vf(3 ), q_beta%vf(4 ), l)
841851
852+ ! (beta / (1 - beta)) * d(Pu)/ dl source
842853 $:GPU_PARALLEL_LOOP(collapse= 3 )
843854 do k = 0 , p
844855 do j = 0 , n
@@ -852,7 +863,6 @@ contains
852863 end do
853864 end do
854865 end do
855-
856866 end if
857867
858868 end subroutine s_compute_bubbles_EL_source
@@ -1541,6 +1551,13 @@ contains
15411551 nBubs = nBubs + newBubs
15421552 end if
15431553
1554+ if (run_time_info) then
1555+ call s_mpi_reduce_int_sum(nBubs, active_bubs)
1556+ if (proc_rank == 0 .and. active_bubs == 0 ) then
1557+ call s_mpi_abort(' No bubbles remain in the domain. Simulation ending.' )
1558+ end if
1559+ end if
1560+
15441561 ! Handle MPI transfer of bubbles going to another processor' s local domain
15451562 if (num_procs > 1) then
15461563 call nvtxStartRange("LAG-BC-TRANSFER-LIST")
@@ -1745,36 +1762,34 @@ contains
17451762 end do
17461763 end do
17471764 end do
1748- else
1749- if (dir == 2) then
1750- ! Gradient in y dir.
1751- $:GPU_PARALLEL_LOOP(collapse=3)
1752- do k = 0, p
1753- do j = 0, n
1754- do i = 0, m
1755- dq%sf(i, j, k) = q%sf(i, j, k)*(dy(j + 1) - dy(j - 1)) &
1756- + q%sf(i, j + 1, k)*(dy(j) + dy(j - 1)) &
1757- - q%sf(i, j - 1, k)*(dy(j) + dy(j + 1))
1758- dq%sf(i, j, k) = dq%sf(i, j, k)/ &
1759- ((dy(j) + dy(j - 1))*(dy(j) + dy(j + 1)))
1760- end do
1765+ elseif (dir == 2) then
1766+ ! Gradient in y dir.
1767+ $:GPU_PARALLEL_LOOP(collapse=3)
1768+ do k = 0, p
1769+ do j = 0, n
1770+ do i = 0, m
1771+ dq%sf(i, j, k) = q%sf(i, j, k)*(dy(j + 1) - dy(j - 1)) &
1772+ + q%sf(i, j + 1, k)*(dy(j) + dy(j - 1)) &
1773+ - q%sf(i, j - 1, k)*(dy(j) + dy(j + 1))
1774+ dq%sf(i, j, k) = dq%sf(i, j, k)/ &
1775+ ((dy(j) + dy(j - 1))*(dy(j) + dy(j + 1)))
17611776 end do
17621777 end do
1763- else
1764- ! Gradient in z dir.
1765- $:GPU_PARALLEL_LOOP(collapse=3)
1766- do k = 0, p
1767- do j = 0, n
1768- do i = 0, m
1769- dq%sf(i, j, k) = q%sf(i, j, k)*(dz(k + 1) - dz(k - 1)) &
1770- + q%sf(i, j, k + 1 )*(dz(k) + dz(k - 1)) &
1771- - q%sf(i, j, k - 1)*(dz(k) + dz(k + 1))
1772- dq %sf(i, j, k) = dq%sf(i, j, k)/ &
1773- ((dz( k) + dz(k - 1))*(dz(k) + dz(k + 1)))
1774- end do
1778+ end do
1779+ elseif (dir == 3) then
1780+ ! Gradient in z dir.
1781+ $:GPU_PARALLEL_LOOP(collapse=3)
1782+ do k = 0, p
1783+ do j = 0, n
1784+ do i = 0, m
1785+ dq%sf(i, j, k) = q%sf(i, j, k)*(dz(k + 1) - dz(k - 1)) &
1786+ + q%sf(i, j, k + 1)*(dz(k) + dz(k - 1)) &
1787+ - q %sf(i, j, k - 1)*(dz(k) + dz(k + 1))
1788+ dq%sf(i, j, k) = dq%sf(i, j, k)/ &
1789+ ((dz(k) + dz(k - 1))*(dz(k) + dz(k + 1)))
17751790 end do
17761791 end do
1777- end if
1792+ end do
17781793 end if
17791794
17801795 end subroutine s_gradient_dir
0 commit comments