500 integer,
intent(in) :: num_considered_collisions
501 real(wp),
dimension(num_ibs, 3),
intent(inout) :: forces, torques
502 integer :: i, encoded_pid1, encoded_pid2, xp1, xp2, yp1, yp2, zp1, zp2, pid1, pid2, l
503 real(wp) :: overlap_distance
504 real(wp),
dimension(3) :: normal_vector, centroid_1, centroid_2
505 real(wp),
dimension(3) :: normal_velocity, tangental_vector, normal_force, tangental_force, torque, radial_vector, &
506 & rotation_velocity, vel1, vel2
507 real(wp) :: k, eta, effective_mass
509 if (num_considered_collisions == 0)
return
515# 91 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
517# 91 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
518#if defined(MFC_OpenACC)
519# 91 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
521# 91 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
522#elif defined(MFC_OpenMP)
523# 91 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
525# 91 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
527# 91 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
529# 91 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
531# 91 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
533# 95 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
534 do i = 1, num_considered_collisions
537 call s_decode_patch_periodicity(encoded_pid1, pid1, xp1, yp1, zp1)
538 call s_decode_patch_periodicity(encoded_pid2, pid2, xp2, yp2, zp2)
540 centroid_1(1) = patch_ib(pid1)%x_centroid + real(xp1, wp)*(x_domain%end - x_domain%beg)
541 centroid_1(2) = patch_ib(pid1)%y_centroid + real(yp1, wp)*(y_domain%end - y_domain%beg)
542 centroid_1(3) = 0._wp
543 centroid_2(1) = patch_ib(pid2)%x_centroid + real(xp2, wp)*(x_domain%end - x_domain%beg)
544 centroid_2(2) = patch_ib(pid2)%y_centroid + real(yp2, wp)*(y_domain%end - y_domain%beg)
545 centroid_2(3) = 0._wp
546 if (num_dims == 3)
then
547 centroid_1(3) = patch_ib(pid1)%z_centroid + real(zp1, wp)*(z_domain%end - z_domain%beg)
548 centroid_2(3) = patch_ib(pid2)%z_centroid + real(zp2, wp)*(z_domain%end - z_domain%beg)
551 normal_vector = centroid_2 - centroid_1
552 overlap_distance = patch_ib(pid1)%radius + patch_ib(pid2)%radius - norm2(normal_vector)
553 if (overlap_distance > 0._wp)
then
554 normal_vector = normal_vector/norm2(normal_vector)
557 effective_mass = 1.0_wp/((1.0_wp/patch_ib(pid1)%mass) + (1._wp/(patch_ib(pid2)%mass)))
562 radial_vector = normal_vector*(patch_ib(pid1)%radius - 0.5_wp*overlap_distance)
563 call s_cross_product(patch_ib(pid1)%angular_vel, radial_vector, rotation_velocity)
564 vel1 = patch_ib(pid1)%vel + rotation_velocity
565 radial_vector = normal_vector*(-1.0_wp)*(patch_ib(pid2)%radius - 0.5_wp*overlap_distance)
566 call s_cross_product(patch_ib(pid2)%angular_vel, radial_vector, rotation_velocity)
567 vel2 = patch_ib(pid2)%vel + rotation_velocity
569 normal_velocity = dot_product(vel1 - vel2, normal_vector)*normal_vector
570 tangental_vector = (vel1 - vel2) - normal_velocity
571 if (.not. f_approx_equal(norm2(tangental_vector), &
572 & 0._wp)) tangental_vector = tangental_vector/norm2(tangental_vector)
575 normal_force = -k*overlap_distance*normal_vector - eta*normal_velocity
576 tangental_force = -ib_coefficient_of_friction*norm2(normal_force)*tangental_vector
577 call s_cross_product(normal_vector*patch_ib(pid1)%radius, tangental_force, torque)
582# 142 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
583#if defined(MFC_OpenACC)
584# 142 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
586# 142 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
587#elif defined(MFC_OpenMP)
588# 142 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
590# 142 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
592 forces(pid1, l) = forces(pid1, l) + (normal_force(l) + tangental_force(l))
594# 144 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
595#if defined(MFC_OpenACC)
596# 144 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
598# 144 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
599#elif defined(MFC_OpenMP)
600# 144 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
602# 144 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
604 torques(pid1, l) = torques(pid1, l) + torque(l)
608# 148 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
609#if defined(MFC_OpenACC)
610# 148 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
612# 148 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
613#elif defined(MFC_OpenMP)
614# 148 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
616# 148 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
618 forces(pid2, l) = forces(pid2, l) - (normal_force(l) + tangental_force(l))
620# 150 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
621#if defined(MFC_OpenACC)
622# 150 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
624# 150 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
625#elif defined(MFC_OpenMP)
626# 150 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
628# 150 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
630 torques(pid2, l) = torques(pid2, l) - torque(l)*patch_ib(pid2)%radius/patch_ib(pid1)%radius
636# 156 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
637#if defined(MFC_OpenACC)
638# 156 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
640# 156 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
641#elif defined(MFC_OpenMP)
642# 156 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
644# 156 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
646# 156 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
654 real(wp),
dimension(num_ibs, 3),
intent(inout) :: forces, torques
655 integer :: patch_id, i, l
656 real(wp),
dimension(3) :: normal_force, tangental_force, normal_vector, normal_velocity, tangental_vector, &
657 & collision_location, torque, radial_vector, rotation_velocity, velocity
661# 169 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
663# 169 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
664#if defined(MFC_OpenACC)
665# 169 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
667# 169 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
668#elif defined(MFC_OpenMP)
669# 169 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
671# 169 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
673# 169 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
675# 169 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
677# 169 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
679# 172 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
680 do patch_id = 1, num_ibs
687 normal_vector = [-1._wp, 0._wp, 0._wp]
689 normal_vector = [1._wp, 0._wp, 0._wp]
691 normal_vector = [0._wp, -1._wp, 0._wp]
693 normal_vector = [0._wp, 1._wp, 0._wp]
695 normal_vector = [0._wp, 0._wp, -1._wp]
697 normal_vector = [0._wp, 0._wp, 1._wp]
701 collision_location = [patch_ib(patch_id)%x_centroid, patch_ib(patch_id)%y_centroid, 0._wp]
702 if (num_dims == 3) collision_location(3) = patch_ib(patch_id)%z_centroid
710 call s_cross_product(patch_ib(patch_id)%angular_vel, radial_vector, rotation_velocity)
711 velocity = patch_ib(patch_id)%vel + rotation_velocity
714 normal_velocity = dot_product(velocity, normal_vector)*normal_vector
715 tangental_vector = velocity - normal_velocity
716 if (.not. f_approx_equal(norm2(tangental_vector), &
717 & 0._wp)) tangental_vector = tangental_vector/norm2(tangental_vector)
719 tangental_force = -ib_coefficient_of_friction*norm2(normal_force)*tangental_vector
720 call s_cross_product(normal_vector*patch_ib(patch_id)%radius, tangental_force, torque)
724# 215 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
725#if defined(MFC_OpenACC)
726# 215 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
728# 215 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
729#elif defined(MFC_OpenMP)
730# 215 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
732# 215 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
734 forces(patch_id, l) = forces(patch_id, l) + (normal_force(l) + tangental_force(l))
736# 217 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
737#if defined(MFC_OpenACC)
738# 217 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
740# 217 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
741#elif defined(MFC_OpenMP)
742# 217 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
744# 217 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
746 torques(patch_id, l) = torques(patch_id, l) + torque(l)
752# 223 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
753#if defined(MFC_OpenACC)
754# 223 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
756# 223 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
757#elif defined(MFC_OpenMP)
758# 223 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
760# 223 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
762# 223 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
771 type(ghost_point),
dimension(num_gps),
intent(in) :: gps
772 type(integer_field),
intent(in) :: ib_markers
773 integer,
intent(in) :: num_gps
774 integer,
intent(out) :: num_considered_collisions
775 integer :: i, j, k, z_bound, ii, jj, kk
776 integer,
dimension(2) :: decoded_pairs
777 integer :: gp_idx, gp_patch_id, neighbor_patch_id
778 integer :: pair_idx, out_idx
779 logical :: already_found
782 integer,
dimension(num_gps, 2) :: raw_pairs
783 integer :: num_raw, local_num_raw
786 z_bound = 0;
if (num_dims == 3) z_bound = 1
789# 248 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
791# 248 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
792#if defined(MFC_OpenACC)
793# 248 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
795# 248 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
796#elif defined(MFC_OpenMP)
797# 248 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
799# 248 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
801# 248 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
803# 248 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
805# 248 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
807# 250 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
808 do gp_idx = 1, num_gps
809 i = gps(gp_idx)%loc(1)
810 j = gps(gp_idx)%loc(2)
811 k = 0;
if (num_dims == 3) k = gps(gp_idx)%loc(3)
812 gp_patch_id = ib_markers%sf(i, j, k)
815 neighbor_search:
do ii = i - 1, i + 1
817 do kk = k - z_bound, k + z_bound
818 neighbor_patch_id = ib_markers%sf(ii, jj, kk)
821 if (gp_patch_id < neighbor_patch_id)
then
823# 264 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
824#if defined(MFC_OpenACC)
825# 264 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
827# 264 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
828#elif defined(MFC_OpenMP)
829# 264 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
831# 264 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
833 num_raw = num_raw + 1
834 local_num_raw = num_raw
835#if defined(MFC_OpenACC)
836# 267 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
838# 267 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
839#elif defined(MFC_OpenMP)
840# 267 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
842# 267 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
846 raw_pairs(local_num_raw, 1) = gp_patch_id
847 raw_pairs(local_num_raw, 2) = neighbor_patch_id
852 end do neighbor_search
855# 278 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
856#if defined(MFC_OpenACC)
857# 278 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
859# 278 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
860#elif defined(MFC_OpenMP)
861# 278 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
863# 278 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
865# 278 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
869 num_considered_collisions = 0
872 do pair_idx = 1, num_raw
873 already_found = .false.
876 call s_decode_patch_periodicity(raw_pairs(pair_idx, 1), decoded_pairs(1), ii, jj, kk)
877 call s_decode_patch_periodicity(raw_pairs(pair_idx, 2), decoded_pairs(2), ii, jj, kk)
880 if (decoded_pairs(1) == decoded_pairs(2)) cycle
883 if (decoded_pairs(2) < decoded_pairs(1))
then
884 decoded_pairs(1) = decoded_pairs(1) + decoded_pairs(2)
885 decoded_pairs(2) = decoded_pairs(1) - decoded_pairs(2)
886 decoded_pairs(1) = decoded_pairs(1) - decoded_pairs(2)
887 raw_pairs(pair_idx, 1) = raw_pairs(pair_idx, 1) + raw_pairs(pair_idx, 2)
888 raw_pairs(pair_idx, 2) = raw_pairs(pair_idx, 1) - raw_pairs(pair_idx, 2)
889 raw_pairs(pair_idx, 1) = raw_pairs(pair_idx, 1) - raw_pairs(pair_idx, 2)
893 do out_idx = 1, num_considered_collisions
895 already_found = .true.
901 if (.not. already_found)
then
902 num_considered_collisions = num_considered_collisions + 1
910# 321 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
911#if defined(MFC_OpenACC)
912# 321 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
914# 321 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
915#elif defined(MFC_OpenMP)
916# 321 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
918# 321 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
925 integer,
intent(out) :: num_considered_collisions
926 integer :: pid1, pid2, encoded_pid1, encoded_pid2, current_collisions
927 real(wp),
dimension(3) :: centroid_1, centroid_2, distance_vec
929 num_considered_collisions = 0
932# 333 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
934# 333 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
935#if defined(MFC_OpenACC)
936# 333 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
938# 333 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
939#elif defined(MFC_OpenMP)
940# 333 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
942# 333 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
944# 333 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
946# 333 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
948# 333 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
950# 335 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
951 do pid1 = 1, num_ibs - 1
952 do pid2 = pid1 + 1, num_ibs
953 centroid_1 = [patch_ib(pid1)%x_centroid, patch_ib(pid1)%y_centroid, 0._wp]
954 centroid_2 = [patch_ib(pid2)%x_centroid, patch_ib(pid2)%y_centroid, 0._wp]
955 if (num_dims == 3)
then
956 centroid_1(3) = patch_ib(pid1)%z_centroid
957 centroid_2(3) = patch_ib(pid2)%z_centroid
959 distance_vec = centroid_2 - centroid_1
961 if (norm2(distance_vec) < patch_ib(pid1)%radius + patch_ib(pid2)%radius)
then
963# 346 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
964#if defined(MFC_OpenACC)
965# 346 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
967# 346 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
968#elif defined(MFC_OpenMP)
969# 346 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
971# 346 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
973 num_considered_collisions = num_considered_collisions + 1
974 current_collisions = num_considered_collisions
975#if defined(MFC_OpenACC)
976# 349 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
978# 349 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
979#elif defined(MFC_OpenMP)
980# 349 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
982# 349 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
991# 356 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
992#if defined(MFC_OpenACC)
993# 356 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
995# 356 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
996#elif defined(MFC_OpenMP)
997# 356 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
999# 356 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1001# 356 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1009 integer :: gp_idx, i, j, k, patch_id
1010 real(wp) :: edge_location, overlap_distance
1015# 368 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1017# 368 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1018#if defined(MFC_OpenACC)
1019# 368 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1021# 368 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1022#elif defined(MFC_OpenMP)
1023# 368 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1025# 368 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1027# 368 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1029# 368 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1031# 368 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1033 do patch_id = 1, num_ibs
1034# 371 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1036 if (ib_bc_x%beg == bc_slip_wall .or. ib_bc_x%beg == bc_no_slip_wall)
then
1038 edge_location = patch_ib(patch_id)%x_centroid - patch_ib(patch_id)%radius
1040 if (edge_location < x_domain%beg)
then
1041 overlap_distance = x_domain%beg - edge_location
1043 overlap_distance = 0._wp
1048 if (ib_bc_x%end == bc_slip_wall .or. ib_bc_x%end == bc_no_slip_wall)
then
1049 edge_location = patch_ib(patch_id)%x_centroid + patch_ib(patch_id)%radius
1050 if (edge_location > x_domain%end)
then
1051 overlap_distance = edge_location - x_domain%end
1053 overlap_distance = 0._wp
1057# 371 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1059 if (ib_bc_y%beg == bc_slip_wall .or. ib_bc_y%beg == bc_no_slip_wall)
then
1061 edge_location = patch_ib(patch_id)%y_centroid - patch_ib(patch_id)%radius
1063 if (edge_location < y_domain%beg)
then
1064 overlap_distance = y_domain%beg - edge_location
1066 overlap_distance = 0._wp
1071 if (ib_bc_y%end == bc_slip_wall .or. ib_bc_y%end == bc_no_slip_wall)
then
1072 edge_location = patch_ib(patch_id)%y_centroid + patch_ib(patch_id)%radius
1073 if (edge_location > y_domain%end)
then
1074 overlap_distance = edge_location - y_domain%end
1076 overlap_distance = 0._wp
1080# 371 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1082 if (ib_bc_z%beg == bc_slip_wall .or. ib_bc_z%beg == bc_no_slip_wall)
then
1084 edge_location = patch_ib(patch_id)%z_centroid - patch_ib(patch_id)%radius
1086 if (edge_location < z_domain%beg)
then
1087 overlap_distance = z_domain%beg - edge_location
1089 overlap_distance = 0._wp
1094 if (ib_bc_z%end == bc_slip_wall .or. ib_bc_z%end == bc_no_slip_wall)
then
1095 edge_location = patch_ib(patch_id)%z_centroid + patch_ib(patch_id)%radius
1096 if (edge_location > z_domain%end)
then
1097 overlap_distance = edge_location - z_domain%end
1099 overlap_distance = 0._wp
1103# 394 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1106# 395 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1107#if defined(MFC_OpenACC)
1108# 395 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1110# 395 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1111#elif defined(MFC_OpenMP)
1112# 395 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1114# 395 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"
1116# 395 "/home/runner/work/MFC/MFC/src/simulation/m_collisions.fpp"