512 subroutine s_deltafunc(nBubs, lbk_rad, lbk_vel, lbk_s, updatedvar, kcomp)
514 integer,
intent(in) :: nBubs
515 real(wp),
dimension(1:lag_params%nBubs_glb,1:3,1:2),
intent(in) :: lbk_s
516 real(wp),
dimension(1:lag_params%nBubs_glb,1:2),
intent(in) :: lbk_rad, lbk_vel
517 type(scalar_field),
dimension(:),
intent(inout) :: updatedvar
518 type(scalar_field),
dimension(:),
intent(inout) :: kcomp
519 real(wp) :: strength_vel, strength_vol
520 real(wp) :: volpart, Vol
521 real(wp) :: y_kahan, t_kahan
522 integer :: i, j, k, lb, bub_idx
525# 121 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
527# 121 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
528#if defined(MFC_OpenACC)
529# 121 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
531# 121 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
532#elif defined(MFC_OpenMP)
533# 121 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
535# 121 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
537# 121 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
539# 121 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
541# 121 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
543# 121 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
545# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
550 if (num_dims == 2)
then
551 vol = dx(i)*dy(j)*lag_params%charwidth
552 if (cyl_coord) vol = dx(i)*dy(j)*y_cc(j)*2._wp*pi
554 vol = dx(i)*dy(j)*dz(k)
559# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
560#if defined(MFC_OpenACC)
561# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
563# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
564#elif defined(MFC_OpenMP)
565# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
567# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
569# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
573 volpart = 4._wp/3._wp*pi*lbk_rad(bub_idx, 2)**3._wp
574 strength_vol = volpart
575 strength_vel = 4._wp*pi*lbk_rad(bub_idx, 2)**2._wp*lbk_vel(bub_idx, 2)
577 if (lag_params%kahan_summation)
then
579 y_kahan = real(strength_vol/vol, kind=wp) - kcomp(1)%sf(i, j, k)
580 t_kahan = updatedvar(1)%sf(i, j, k) + y_kahan
581 kcomp(1)%sf(i, j, k) = (t_kahan - updatedvar(1)%sf(i, j, k)) - y_kahan
582 updatedvar(1)%sf(i, j, k) = t_kahan
585 y_kahan = real(strength_vel/vol, kind=wp) - kcomp(2)%sf(i, j, k)
586 t_kahan = updatedvar(2)%sf(i, j, k) + y_kahan
587 kcomp(2)%sf(i, j, k) = (t_kahan - updatedvar(2)%sf(i, j, k)) - y_kahan
588 updatedvar(2)%sf(i, j, k) = t_kahan
590 updatedvar(1)%sf(i, j, k) = updatedvar(1)%sf(i, j, k) + real(strength_vol/vol, kind=wp)
591 updatedvar(2)%sf(i, j, k) = updatedvar(2)%sf(i, j, k) + real(strength_vel/vol, kind=wp)
595 if (lag_params%kahan_summation .and. lag_params%cluster_type >= 4)
then
596 y_kahan = real((strength_vol*strength_vel)/vol, kind=wp) - kcomp(5)%sf(i, j, k)
597 t_kahan = updatedvar(5)%sf(i, j, k) + y_kahan
598 kcomp(5)%sf(i, j, k) = (t_kahan - updatedvar(5)%sf(i, j, k)) - y_kahan
599 updatedvar(5)%sf(i, j, k) = t_kahan
600 else if (lag_params%cluster_type >= 4)
then
601 updatedvar(5)%sf(i, j, k) = updatedvar(5)%sf(i, j, k) + real((strength_vol*strength_vel)/vol, kind=wp)
608# 173 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
609#if defined(MFC_OpenACC)
610# 173 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
612# 173 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
613#elif defined(MFC_OpenMP)
614# 173 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
616# 173 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
618# 173 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
620# 174 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
626 subroutine s_gaussian(nBubs, lbk_rad, lbk_vel, lbk_s, lbk_pos, updatedvar, kcomp)
628 integer,
intent(in) :: nBubs
629 real(wp),
dimension(1:lag_params%nBubs_glb,1:3,1:2),
intent(in) :: lbk_s, lbk_pos
630 real(wp),
dimension(1:lag_params%nBubs_glb,1:2),
intent(in) :: lbk_rad, lbk_vel
631 type(scalar_field),
dimension(:),
intent(inout) :: updatedvar
632 type(scalar_field),
dimension(:),
intent(inout) :: kcomp
633 real(wp),
dimension(3) :: center, nodecoord, s_coord
634 integer,
dimension(3) :: cell, cellijk
635 real(wp) :: stddsv, volpart
636 real(wp) :: strength_vel, strength_vol
637 real(wp) :: func, func2
638 real(wp) :: y_kahan, t_kahan
639 integer :: i, j, k, di, dj, dk, lb, bub_idx
640 integer :: di_beg, di_end, dj_beg, dj_end, dk_beg, dk_end
641 integer :: smear_x_beg, smear_x_end
642 integer :: smear_y_beg, smear_y_end
643 integer :: smear_z_beg, smear_z_end
647 smear_x_beg = -mapcells - 1
648 smear_x_end = m + mapcells + 1
649 smear_y_beg = merge(-mapcells - 1, 0, n > 0)
650 smear_y_end = merge(n + mapcells + 1, n, n > 0)
651 smear_z_beg = merge(-mapcells - 1, 0, p > 0)
652 smear_z_end = merge(p + mapcells + 1, p, p > 0)
655# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
657# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
658#if defined(MFC_OpenACC)
659# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
661# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
663# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
664#elif defined(MFC_OpenMP)
665# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
667# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
669# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
671# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
673# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
675# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
677# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
679# 210 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
680 do k = smear_z_beg, smear_z_end
681 do j = smear_y_beg, smear_y_end
682 do i = smear_x_beg, smear_x_end
687 nodecoord(1) = x_cc(i)
688 nodecoord(2) = y_cc(j)
690 if (p > 0) nodecoord(3) = z_cc(k)
693 di_beg = max(i - mapcells, 0)
694 di_end = min(i + mapcells, m)
695 dj_beg = max(j - mapcells, 0)
696 dj_end = min(j + mapcells, n)
697 dk_beg = max(k - mapcells, 0)
698 dk_end = min(k + mapcells, p)
701# 230 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
702#if defined(MFC_OpenACC)
703# 230 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
705# 230 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
706#elif defined(MFC_OpenMP)
707# 230 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
709# 230 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
711# 231 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
712 do dk = dk_beg, dk_end
714# 232 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
715#if defined(MFC_OpenACC)
716# 232 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
718# 232 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
719#elif defined(MFC_OpenMP)
720# 232 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
722# 232 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
724# 233 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
725 do dj = dj_beg, dj_end
727# 234 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
728#if defined(MFC_OpenACC)
729# 234 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
731# 234 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
732#elif defined(MFC_OpenMP)
733# 234 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
735# 234 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
737# 235 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
738 do di = di_beg, di_end
740# 236 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
741#if defined(MFC_OpenACC)
742# 236 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
744# 236 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
745#elif defined(MFC_OpenMP)
746# 236 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
748# 236 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
750# 237 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
755 volpart = 4._wp/3._wp*pi*lbk_rad(bub_idx, 2)**3._wp
756 s_coord(1:3) = lbk_s(bub_idx,1:3,2)
760 strength_vol = volpart
761 strength_vel = 4._wp*pi*lbk_rad(bub_idx, 2)**2._wp*lbk_vel(bub_idx, 2)
763 center(1:2) = lbk_pos(bub_idx,1:2,2)
765 if (p > 0) center(3) = lbk_pos(bub_idx, 3, 2)
770 y_kahan = real(func*strength_vol, kind=wp) - kcomp(1)%sf(i, j, k)
771 t_kahan = updatedvar(1)%sf(i, j, k) + y_kahan
772 kcomp(1)%sf(i, j, k) = (t_kahan - updatedvar(1)%sf(i, j, k)) - y_kahan
773 updatedvar(1)%sf(i, j, k) = t_kahan
776 y_kahan = real(func*strength_vel, kind=wp) - kcomp(2)%sf(i, j, k)
777 t_kahan = updatedvar(2)%sf(i, j, k) + y_kahan
778 kcomp(2)%sf(i, j, k) = (t_kahan - updatedvar(2)%sf(i, j, k)) - y_kahan
779 updatedvar(2)%sf(i, j, k) = t_kahan
781 if (lag_params%cluster_type >= 4)
then
783 y_kahan = real(func2*strength_vol*strength_vel, kind=wp) - kcomp(5)%sf(i, j, k)
784 t_kahan = updatedvar(5)%sf(i, j, k) + y_kahan
785 kcomp(5)%sf(i, j, k) = (t_kahan - updatedvar(5)%sf(i, j, k)) - y_kahan
786 updatedvar(5)%sf(i, j, k) = t_kahan
796# 281 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
797#if defined(MFC_OpenACC)
798# 281 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
800# 281 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
801#elif defined(MFC_OpenMP)
802# 281 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
804# 281 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
806# 281 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
808# 282 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
816# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
818# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
820# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
822# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
824# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
826# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
828# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
830# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
832# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
834# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
836# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
838# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
840# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
842# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
844# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
846# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
848# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
850# 289 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
852 real(wp),
dimension(3),
intent(in) :: center
853 integer,
dimension(3),
intent(in) :: cellaux
854 real(wp),
dimension(3),
intent(in) :: nodecoord
855 real(wp),
intent(in) :: stddsv
856 real(wp),
intent(in) :: strength_idx
857 real(wp),
intent(out) :: func
860 real(wp) :: theta, dtheta, L2, dzp, Lz2, zc
861 real(wp) :: Nr, Nr_count
863 distance = sqrt((center(1) - nodecoord(1))**2._wp + (center(2) - nodecoord(2))**2._wp + (center(3) - nodecoord(3))**2._wp)
865 if (num_dims == 3)
then
867 func = exp(-0.5_wp*(distance/stddsv)**2._wp)/(sqrt(2._wp*pi)*stddsv)**3._wp
873 nr = ceiling(2._wp*pi*nodecoord(2)/(y_cb(cellaux(2)) - y_cb(cellaux(2) - 1)))
875 l2 = center(2)**2._wp + nodecoord(2)**2._wp - 2._wp*center(2)*nodecoord(2)*cos(theta)
876 distance = sqrt((center(1) - nodecoord(1))**2._wp + l2)
878 func = dtheta/2._wp/pi*exp(-0.5_wp*(distance/stddsv)**2._wp)/(sqrt(2._wp*pi)*stddsv)**3._wp
880 do while (nr_count < nr - 1._wp)
881 nr_count = nr_count + 1._wp
882 theta = nr_count*dtheta
884 l2 = center(2)**2._wp + nodecoord(2)**2._wp - 2._wp*center(2)*nodecoord(2)*cos(theta)
885 distance = sqrt((center(1) - nodecoord(1))**2._wp + l2)
887 func = func + dtheta/2._wp/pi*exp(-0.5_wp*(distance/stddsv)**2._wp)/(sqrt(2._wp*pi)*stddsv) &
888 & **(3._wp*(strength_idx + 1._wp))
893 dzp = (lag_params%charwidth/(lag_params%charNz + 1._wp))
896 do i = 0, lag_params%charNz
897 zc = (-lag_params%charwidth/2._wp + dzp*(0.5_wp + i))
898 lz2 = (center(3) - zc)**2._wp
899 distance = sqrt((center(1) - nodecoord(1))**2._wp + (center(2) - nodecoord(2))**2._wp + lz2)
900 func = func + dzp/lag_params%charwidth*exp(-0.5_wp*(distance/stddsv)**2._wp)/(sqrt(2._wp*pi)*stddsv)**3._wp
1413# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1415# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1417# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1419# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1421# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1423# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1425# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1427# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1429# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1431# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1433# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1435# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1437# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1439# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1441# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1443# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1445# 546 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1447# 547 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1449 real(wp),
intent(in) :: pos
1450 integer,
dimension(3),
intent(in) :: cell
1451 integer,
intent(in) :: i
1452 type(scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
1454 real(wp),
dimension(5) :: xi, eta,
l
1456 if (fd_order == 2)
then
1458 xi(1) = x_cc(cell(1) - 1)
1459 eta(1) = q_prim_vf(eqn_idx%mom%beg)%sf(cell(1) - 1, cell(2), cell(3))
1460 xi(2) = x_cc(cell(1))
1461 eta(2) = q_prim_vf(eqn_idx%mom%beg)%sf(cell(1), cell(2), cell(3))
1462 xi(3) = x_cc(cell(1) + 1)
1463 eta(3) = q_prim_vf(eqn_idx%mom%beg)%sf(cell(1) + 1, cell(2), cell(3))
1464 else if (i == 2)
then
1465 xi(1) = y_cc(cell(2) - 1)
1466 eta(1) = q_prim_vf(eqn_idx%mom%beg + 1)%sf(cell(1), cell(2) - 1, cell(3))
1467 xi(2) = y_cc(cell(2))
1468 eta(2) = q_prim_vf(eqn_idx%mom%beg + 1)%sf(cell(1), cell(2), cell(3))
1469 xi(3) = y_cc(cell(2) + 1)
1470 eta(3) = q_prim_vf(eqn_idx%mom%beg + 1)%sf(cell(1), cell(2) + 1, cell(3))
1471 else if (i == 3)
then
1472 xi(1) = z_cc(cell(3) - 1)
1473 eta(1) = q_prim_vf(eqn_idx%mom%end)%sf(cell(1), cell(2), cell(3) - 1)
1474 xi(2) = z_cc(cell(3))
1475 eta(2) = q_prim_vf(eqn_idx%mom%end)%sf(cell(1), cell(2), cell(3))
1476 xi(3) = z_cc(cell(3) + 1)
1477 eta(3) = q_prim_vf(eqn_idx%mom%end)%sf(cell(1), cell(2), cell(3) + 1)
1480 l(1) = ((pos - xi(2))*(pos - xi(3)))/((xi(1) - xi(2))*(xi(1) - xi(3)))
1481 l(2) = ((pos - xi(1))*(pos - xi(3)))/((xi(2) - xi(1))*(xi(2) - xi(3)))
1482 l(3) = ((pos - xi(1))*(pos - xi(2)))/((xi(3) - xi(1))*(xi(3) - xi(2)))
1484 v =
l(1)*eta(1) +
l(2)*eta(2) +
l(3)*eta(3)
1485 else if (fd_order == 4)
then
1487 xi(1) = x_cc(cell(1) - 2)
1488 eta(1) = q_prim_vf(eqn_idx%mom%beg)%sf(cell(1) - 2, cell(2), cell(3))
1489 xi(2) = x_cc(cell(1) - 1)
1490 eta(2) = q_prim_vf(eqn_idx%mom%beg)%sf(cell(1) - 1, cell(2), cell(3))
1491 xi(3) = x_cc(cell(1))
1492 eta(3) = q_prim_vf(eqn_idx%mom%beg)%sf(cell(1), cell(2), cell(3))
1493 xi(4) = x_cc(cell(1) + 1)
1494 eta(4) = q_prim_vf(eqn_idx%mom%beg)%sf(cell(1) + 1, cell(2), cell(3))
1495 xi(5) = x_cc(cell(1) + 2)
1496 eta(5) = q_prim_vf(eqn_idx%mom%beg)%sf(cell(1) + 2, cell(2), cell(3))
1497 else if (i == 2)
then
1498 xi(1) = y_cc(cell(2) - 2)
1499 eta(1) = q_prim_vf(eqn_idx%mom%beg + 1)%sf(cell(1), cell(2) - 2, cell(3))
1500 xi(2) = y_cc(cell(2) - 1)
1501 eta(2) = q_prim_vf(eqn_idx%mom%beg + 1)%sf(cell(1), cell(2) - 1, cell(3))
1502 xi(3) = y_cc(cell(2))
1503 eta(3) = q_prim_vf(eqn_idx%mom%beg + 1)%sf(cell(1), cell(2), cell(3))
1504 xi(4) = y_cc(cell(2) + 1)
1505 eta(4) = q_prim_vf(eqn_idx%mom%beg + 1)%sf(cell(1), cell(2) + 1, cell(3))
1506 xi(5) = y_cc(cell(2) + 2)
1507 eta(5) = q_prim_vf(eqn_idx%mom%beg + 1)%sf(cell(1), cell(2) + 2, cell(3))
1508 else if (i == 3)
then
1509 xi(1) = z_cc(cell(3) - 2)
1510 eta(1) = q_prim_vf(eqn_idx%mom%end)%sf(cell(1), cell(2), cell(3) - 2)
1511 xi(2) = z_cc(cell(3) - 1)
1512 eta(2) = q_prim_vf(eqn_idx%mom%end)%sf(cell(1), cell(2), cell(3) - 1)
1513 xi(3) = z_cc(cell(3))
1514 eta(3) = q_prim_vf(eqn_idx%mom%end)%sf(cell(1), cell(2), cell(3))
1515 xi(4) = z_cc(cell(3) + 1)
1516 eta(4) = q_prim_vf(eqn_idx%mom%end)%sf(cell(1), cell(2), cell(3) + 1)
1517 xi(5) = z_cc(cell(3) + 2)
1518 eta(5) = q_prim_vf(eqn_idx%mom%end)%sf(cell(1), cell(2), cell(3) + 2)
1521 l(1) = ((pos - xi(2))*(pos - xi(3))*(pos - xi(4))*(pos - xi(5)))/((xi(1) - xi(2))*(xi(1) - xi(3))*(xi(1) - xi(4)) &
1523 l(2) = ((pos - xi(1))*(pos - xi(3))*(pos - xi(4))*(pos - xi(5)))/((xi(2) - xi(1))*(xi(2) - xi(3))*(xi(2) - xi(4)) &
1525 l(3) = ((pos - xi(1))*(pos - xi(2))*(pos - xi(4))*(pos - xi(5)))/((xi(3) - xi(1))*(xi(3) - xi(2))*(xi(3) - xi(4)) &
1527 l(4) = ((pos - xi(1))*(pos - xi(2))*(pos - xi(3))*(pos - xi(5)))/((xi(4) - xi(1))*(xi(4) - xi(2))*(xi(4) - xi(3)) &
1529 l(5) = ((pos - xi(1))*(pos - xi(2))*(pos - xi(3))*(pos - xi(4)))/((xi(5) - xi(1))*(xi(5) - xi(2))*(xi(5) - xi(3)) &
1532 v =
l(1)*eta(1) +
l(2)*eta(2) +
l(3)*eta(3) +
l(4)*eta(4) +
l(5)*eta(5)
1542 function f_get_bubble_force(pos, rad, rdot, vel, mg, mv, Re, rho, cell, i, q_prim_vf)
result(force)
1545# 643 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1547# 643 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1549# 643 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1551# 643 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1553# 643 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1555# 643 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1557# 643 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1559# 644 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL_kernels.fpp"
1560 real(wp),
intent(in) :: pos, rad, rdot, mg, mv, re, rho, vel
1561 integer,
dimension(3),
intent(in) :: cell
1562 integer,
intent(in) :: i
1563 type(scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
1564 real(wp) :: dp, vol, force
1567 if (fd_order > 1)
then
1570 v_rel = vel - q_prim_vf(eqn_idx%mom%beg + i - 1)%sf(cell(1), cell(2), cell(3))
1575 if (lag_params%drag_model == 1)
then
1576 force = force - (4._wp*pi*rad*v_rel)/re
1577 else if (lag_params%drag_model == 2)
then
1578 force = force - (6._wp*pi*rad*v_rel)/re
1579 else if (lag_params%drag_model == 3)
then
1580 force = force - (12._wp*pi*rad*v_rel)/re
1583 if (lag_pressure_force)
then
1586 dp =
grad_p_x(cell(1), cell(2), cell(3))
1587 else if (i == 2)
then
1588 dp =
grad_p_y(cell(1), cell(2), cell(3))
1589 else if (i == 3)
then
1590 dp =
grad_p_z(cell(1), cell(2), cell(3))
1593 vol = (4._wp/3._wp)*pi*(rad**3._wp)
1594 force = force - vol*dp
1597 if (lag_params%gravity_force)
then
1598 force = force + (mg + mv)*accel_bf(i)