438 integer :: patch_id, airfoil_id, model_id, encoded_patch_id, i, j, k, il, ir, jl, jr, kl, kr, xp, yp, zp
439 integer :: xp_lower, xp_upper, yp_lower, yp_upper, zp_lower, zp_upper
440 real(wp),
dimension(3) :: center, xyz_local, length
441 real(wp) :: radius, eta
444# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
445#if defined(MFC_OpenACC)
446# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
448# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
449#elif defined(MFC_OpenMP)
450# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
452# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
456 if (num_dims == 3)
then
458 do xp = xp_lower, xp_upper
459 do yp = yp_lower, yp_upper
460 do zp = zp_lower, zp_upper
461 do patch_id = 1, num_ibs
462 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(
glb_bounds(1)%end -
glb_bounds(1)%beg)
463 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(
glb_bounds(2)%end -
glb_bounds(2)%beg)
464 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(
glb_bounds(3)%end -
glb_bounds(3)%beg)
473 if (ir < il .or. jr < jl .or. kr < kl) cycle
476# 73 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
478# 73 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
479#if defined(MFC_OpenACC)
480# 73 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
482# 73 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
483#elif defined(MFC_OpenMP)
484# 73 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
486# 73 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
488# 73 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
490# 73 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
492# 73 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
494# 73 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
496# 75 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
501 xyz_local = [
x_cc(i) - center(1),
y_cc(j) - center(2),
z_cc(k) - center(3)]
503 xyz_local = matmul(patch_ib(patch_id)%rotation_matrix_inverse, xyz_local)
506 if (patch_ib(patch_id)%geometry == 8)
then
508 radius = patch_ib(patch_id)%radius
511 & radius)) ib_markers%sf(i, j, k) = encoded_patch_id
512 else if (patch_ib(patch_id)%geometry == 9)
then
514 length = [patch_ib(patch_id)%length_x, patch_ib(patch_id)%length_y, &
515 & patch_ib(patch_id)%length_z]
517 & length)) ib_markers%sf(i, j, k) = encoded_patch_id
518 else if (patch_ib(patch_id)%geometry == 10)
then
520 radius = patch_ib(patch_id)%radius
522 & patch_ib(patch_id)%length_x)) ib_markers%sf(i, j, k) = encoded_patch_id
523 else if (patch_ib(patch_id)%geometry == 11)
then
525 airfoil_id = patch_ib(patch_id)%airfoil_id
526 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
528 & patch_ib(patch_id)%length_z, airfoil_id)) ib_markers%sf(i, j, &
529 & k) = encoded_patch_id
530 else if (patch_ib(patch_id)%geometry == 12)
then
532 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
533 model_id = patch_ib(patch_id)%model_id
535 if (eta > stl_models(model_id)%model_threshold)
then
536 ib_markers%sf(i, j, k) = encoded_patch_id
543# 120 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
544#if defined(MFC_OpenACC)
545# 120 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
547# 120 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
548#elif defined(MFC_OpenMP)
549# 120 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
551# 120 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
553# 120 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
561 else if (num_dims == 2)
then
563 do xp = xp_lower, xp_upper
564 do yp = yp_lower, yp_upper
565 do patch_id = 1, num_ibs
566 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(
glb_bounds(1)%end -
glb_bounds(1)%beg)
567 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(
glb_bounds(2)%end -
glb_bounds(2)%beg)
577 if (ir < il .or. jr < jl) cycle
580# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
582# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
583#if defined(MFC_OpenACC)
584# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
586# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
587#elif defined(MFC_OpenMP)
588# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
590# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
592# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
594# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
596# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
598# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
600# 147 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
604 xyz_local = [
x_cc(i) - center(1),
y_cc(j) - center(2), 0._wp]
606 xyz_local = matmul(patch_ib(patch_id)%rotation_matrix_inverse, xyz_local)
609 if (patch_ib(patch_id)%geometry == 2)
then
611 radius = patch_ib(patch_id)%radius
613 & j, 0) = encoded_patch_id
614 else if (patch_ib(patch_id)%geometry == 3)
then
616 length = [patch_ib(patch_id)%length_x, patch_ib(patch_id)%length_y, 0._wp]
617 if (
f_is_inside_cuboid(xyz_local(1), xyz_local(2), xyz_local(3), length)) ib_markers%sf(i, j, &
618 & 0) = encoded_patch_id
619 else if (patch_ib(patch_id)%geometry == 4)
then
621 airfoil_id = patch_ib(patch_id)%airfoil_id
622 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
624 & airfoil_id)) ib_markers%sf(i, j, 0) = encoded_patch_id
625 else if (patch_ib(patch_id)%geometry == 5)
then
627 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
628 model_id = patch_ib(patch_id)%model_id
630 if (eta > stl_models(model_id)%model_threshold)
then
631 ib_markers%sf(i, j, 0) = encoded_patch_id
633 else if (patch_ib(patch_id)%geometry == 6)
then
635 length = [patch_ib(patch_id)%length_x, patch_ib(patch_id)%length_y, 0._wp]
637 & 0) = encoded_patch_id
642# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
643#if defined(MFC_OpenACC)
644# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
646# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
647#elif defined(MFC_OpenMP)
648# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
650# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
652# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
664 integer :: patch_id, airfoil_id, model_id, encoded_patch_id, i, j, k, il, ir, jl, jr, kl, kr, xp, yp, zp
665 integer :: xp_lower, xp_upper, yp_lower, yp_upper, zp_lower, zp_upper
666 real(wp),
dimension(3) :: center, xyz_local, length
667 real(wp) :: radius, eta
669 if (num_dims == 3)
then
673 do xp = xp_lower, xp_upper
674 do yp = yp_lower, yp_upper
675 do zp = zp_lower, zp_upper
677# 210 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
679# 210 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
680#if defined(MFC_OpenACC)
681# 210 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
683# 210 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
684#elif defined(MFC_OpenMP)
685# 210 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
687# 210 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
689# 210 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
691# 210 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
693# 210 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
695# 210 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
697# 212 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
698 do patch_id = 1, num_ibs
699 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(
glb_bounds(1)%end -
glb_bounds(1)%beg)
700 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(
glb_bounds(2)%end -
glb_bounds(2)%beg)
701 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(
glb_bounds(3)%end -
glb_bounds(3)%beg)
713 xyz_local = [
x_cc(i) - center(1),
y_cc(j) - center(2),
z_cc(k) - center(3)]
715 xyz_local = matmul(patch_ib(patch_id)%rotation_matrix_inverse, xyz_local)
718 if (patch_ib(patch_id)%geometry == 8)
then
720 radius = patch_ib(patch_id)%radius
723 & radius)) ib_markers%sf(i, j, k) = encoded_patch_id
724 else if (patch_ib(patch_id)%geometry == 9)
then
726 length = [patch_ib(patch_id)%length_x, patch_ib(patch_id)%length_y, &
727 & patch_ib(patch_id)%length_z]
729 & length)) ib_markers%sf(i, j, k) = encoded_patch_id
730 else if (patch_ib(patch_id)%geometry == 10)
then
732 radius = patch_ib(patch_id)%radius
734 & patch_ib(patch_id)%length_x)) ib_markers%sf(i, j, k) = encoded_patch_id
735 else if (patch_ib(patch_id)%geometry == 11)
then
737 airfoil_id = patch_ib(patch_id)%airfoil_id
738 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
740 & patch_ib(patch_id)%length_z, airfoil_id)) ib_markers%sf(i, j, &
741 & k) = encoded_patch_id
742 else if (patch_ib(patch_id)%geometry == 12)
then
744 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
745 model_id = patch_ib(patch_id)%model_id
747 if (eta > stl_models(model_id)%model_threshold)
then
748 ib_markers%sf(i, j, k) = encoded_patch_id
756# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
757#if defined(MFC_OpenACC)
758# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
760# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
761#elif defined(MFC_OpenMP)
762# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
764# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
766# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
771 else if (num_dims == 2)
then
775 do xp = xp_lower, xp_upper
776 do yp = yp_lower, yp_upper
778# 279 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
780# 279 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
781#if defined(MFC_OpenACC)
782# 279 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
784# 279 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
785#elif defined(MFC_OpenMP)
786# 279 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
788# 279 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
790# 279 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
792# 279 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
794# 279 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
796# 279 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
798# 281 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
799 do patch_id = 1, num_ibs
800 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(
glb_bounds(1)%end -
glb_bounds(1)%beg)
801 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(
glb_bounds(2)%end -
glb_bounds(2)%beg)
813 xyz_local = [
x_cc(i) - center(1),
y_cc(j) - center(2), 0._wp]
815 xyz_local = matmul(patch_ib(patch_id)%rotation_matrix_inverse, xyz_local)
818 if (patch_ib(patch_id)%geometry == 2)
then
820 radius = patch_ib(patch_id)%radius
822 & j, 0) = encoded_patch_id
823 else if (patch_ib(patch_id)%geometry == 3)
then
825 length = [patch_ib(patch_id)%length_x, patch_ib(patch_id)%length_y, 0._wp]
826 if (
f_is_inside_cuboid(xyz_local(1), xyz_local(2), xyz_local(3), length)) ib_markers%sf(i, j, &
827 & 0) = encoded_patch_id
828 else if (patch_ib(patch_id)%geometry == 4)
then
830 airfoil_id = patch_ib(patch_id)%airfoil_id
831 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
833 & airfoil_id)) ib_markers%sf(i, j, 0) = encoded_patch_id
834 else if (patch_ib(patch_id)%geometry == 5)
then
836 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
837 model_id = patch_ib(patch_id)%model_id
839 if (eta > stl_models(model_id)%model_threshold)
then
840 ib_markers%sf(i, j, 0) = encoded_patch_id
842 else if (patch_ib(patch_id)%geometry == 6)
then
844 length = [patch_ib(patch_id)%length_x, patch_ib(patch_id)%length_y, 0._wp]
846 & 0) = encoded_patch_id
852# 333 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
853#if defined(MFC_OpenACC)
854# 333 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
856# 333 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
857#elif defined(MFC_OpenMP)
858# 333 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
860# 333 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
862# 333 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
874 integer :: i,
j, airfoil_id
875 integer :: np, np1, np2
876 real(wp) :: ca_in, pa, ma, ta
877 real(wp) :: xc, xa, yc, dycdxc, yt, xu, yu, xl, yl, sin_c, cos_c
880 if (patch_ib(i)%geometry /= 4 .and. patch_ib(i)%geometry /= 11) cycle
882 airfoil_id = patch_ib(i)%airfoil_id
883 ca_in = ib_airfoil(airfoil_id)%c
884 pa = ib_airfoil(airfoil_id)%p
885 ma = ib_airfoil(airfoil_id)%m
886 ta = ib_airfoil(airfoil_id)%t
888 np1 = int((pa*ca_in/
dx(0))*20)
889 np2 = int(((ca_in - pa*ca_in)/
dx(0))*20)
893# 362 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
894#if defined(MFC_OpenACC)
895# 362 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
897# 362 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
898#elif defined(MFC_OpenMP)
899# 362 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
901# 362 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
906# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
908# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
909 use iso_fortran_env,
only: output_unit
910# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
912# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
913 print *,
'm_ib_patches.fpp:365: ',
'@:ALLOCATE(ib_airfoil_grids(airfoil_id)%upper(1:Np))'
914# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
916# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
917 call flush (output_unit)
918# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
920# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
922# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
924# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
926# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
928# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
929#if defined(MFC_OpenACC)
930# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
932# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
933#elif defined(MFC_OpenMP)
934# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
936# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
939# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
941# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
942 use iso_fortran_env,
only: output_unit
943# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
945# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
946 print *,
'm_ib_patches.fpp:366: ',
'@:ALLOCATE(ib_airfoil_grids(airfoil_id)%lower(1:Np))'
947# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
949# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
950 call flush (output_unit)
951# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
953# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
955# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
956 allocate (ib_airfoil_grids(airfoil_id)%lower(1:np))
957# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
959# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
961# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
962#if defined(MFC_OpenACC)
963# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
965# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
966#elif defined(MFC_OpenMP)
967# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
969# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
972 ib_airfoil_grids(airfoil_id)%upper(1)%x = 0._wp
973 ib_airfoil_grids(airfoil_id)%upper(1)%y = 0._wp
974 ib_airfoil_grids(airfoil_id)%lower(1)%x = 0._wp
975 ib_airfoil_grids(airfoil_id)%lower(1)%y = 0._wp
977 do j = 1, np1 + np2 - 1
979 xc =
j*(pa*ca_in/np1)
981 yc = (ma/pa**2)*(2*pa*xa - xa**2)
982 dycdxc = (2*ma/pa**2)*(pa - xa)
984 xc = pa*ca_in + (
j - np1)*((ca_in - pa*ca_in)/np2)
986 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
987 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
990 yt = (5._wp*ta)*(0.2969_wp*xa**0.5_wp - 0.126_wp*xa - 0.3516_wp*xa**2._wp + 0.2843_wp*xa**3 - 0.1015_wp*xa**4)
991 sin_c = dycdxc/(1 + dycdxc**2)**0.5_wp
992 cos_c = 1/(1 + dycdxc**2)**0.5_wp
994 xu = (xa - yt*sin_c)*ca_in
995 yu = (yc + yt*cos_c)*ca_in
996 xl = (xa + yt*sin_c)*ca_in
997 yl = (yc - yt*cos_c)*ca_in
999 ib_airfoil_grids(airfoil_id)%upper(
j + 1)%x = xu
1000 ib_airfoil_grids(airfoil_id)%upper(
j + 1)%y = yu
1001 ib_airfoil_grids(airfoil_id)%lower(
j + 1)%x = xl
1002 ib_airfoil_grids(airfoil_id)%lower(
j + 1)%y = yl
1005 ib_airfoil_grids(airfoil_id)%upper(np)%x = ca_in
1006 ib_airfoil_grids(airfoil_id)%upper(np)%y = 0._wp
1007 ib_airfoil_grids(airfoil_id)%lower(np)%x = ca_in
1008 ib_airfoil_grids(airfoil_id)%lower(np)%y = 0._wp
1011# 406 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1012#if defined(MFC_OpenACC)
1013# 406 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1015# 406 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1016#elif defined(MFC_OpenMP)
1017# 406 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1019# 406 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1024# 409 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1025#if defined(MFC_OpenACC)
1026# 409 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1028# 409 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1029#elif defined(MFC_OpenMP)
1030# 409 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1032# 409 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1042# 417 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1044# 417 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1046# 417 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1048# 417 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1050# 417 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1052# 417 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1054# 417 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1057 integer,
intent(in) :: patch_id
1058 real(wp),
dimension(3, 3, 3) :: rotation
1063 if (num_dims == 3)
then
1065 angle = patch_ib(patch_id)%angles(1)
1066 rotation(1, 1,:) = [1._wp, 0._wp, 0._wp]
1067 rotation(1, 2,:) = [0._wp, cos(angle), -sin(angle)]
1068 rotation(1, 3,:) = [0._wp, sin(angle), cos(angle)]
1070 angle = patch_ib(patch_id)%angles(2)
1071 rotation(2, 1,:) = [cos(angle), 0._wp, sin(angle)]
1072 rotation(2, 2,:) = [0._wp, 1._wp, 0._wp]
1073 rotation(2, 3,:) = [-sin(angle), 0._wp, cos(angle)]
1076 patch_ib(patch_id)%rotation_matrix(:,:) = matmul(rotation(1,:,:), rotation(2,:,:))
1077 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = matmul(transpose(rotation(2,:,:)), transpose(rotation(1,:,:)))
1081 angle = patch_ib(patch_id)%angles(3)
1082 rotation(3, 1,:) = [cos(angle), -sin(angle), 0._wp]
1083 rotation(3, 2,:) = [sin(angle), cos(angle), 0._wp]
1084 rotation(3, 3,:) = [0._wp, 0._wp, 1._wp]
1086 if (num_dims == 3)
then
1088 patch_ib(patch_id)%rotation_matrix(:,:) = matmul(patch_ib(patch_id)%rotation_matrix(:,:), rotation(3,:,:))
1089 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = matmul(transpose(rotation(3,:,:)), &
1090 & patch_ib(patch_id)%rotation_matrix_inverse(:,:))
1093 patch_ib(patch_id)%rotation_matrix(:,:) = rotation(3,:,:)
1094 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = transpose(rotation(3,:,:))
1102# 463 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1104# 463 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1106# 463 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1108# 463 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1110# 463 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1112# 463 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1114# 463 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1117 type(ib_patch_parameters),
intent(in) :: patch
1118 real(wp),
intent(out) :: bound
1119 real(wp),
dimension(2) :: lx, ly, lz
1121 if (patch%geometry == 2 .or. patch%geometry == 8)
then
1123 bound = patch%radius
1124 else if (patch%geometry == 3)
then
1125 bound = 0.5_wp*sqrt(patch%length_x**2 + patch%length_y**2)
1126 else if (patch%geometry == 4 .or. patch%geometry == 11)
then
1128 bound = ib_airfoil(patch%airfoil_id)%c
1129 else if (patch%geometry == 5)
then
1131 lx(1) = stl_bounding_boxes(patch%model_id, 1, 1)
1132 lx(2) = stl_bounding_boxes(patch%model_id, 1, 3)
1133 ly(1) = stl_bounding_boxes(patch%model_id, 2, 1)
1134 ly(2) = stl_bounding_boxes(patch%model_id, 2, 3)
1136 bound = 0.5_wp*sqrt((lx(2) - lx(1))**2 + (ly(2) - ly(1))**2)
1137 else if (patch%geometry == 6)
then
1139 bound = 0.5_wp*max(patch%length_x, patch%length_y)
1140 else if (patch%geometry == 9)
then
1142 bound = 0.5_wp*sqrt(patch%length_x**2 + patch%length_y**2 + patch%length_z**2)
1143 else if (patch%geometry == 10)
then
1145 bound = sqrt(patch%radius**2 + patch%length_x**2)
1146 else if (patch%geometry == 12)
then
1148 lx(1) = stl_bounding_boxes(patch%model_id, 1, 1) + patch%centroid_offset(1)
1149 lx(2) = stl_bounding_boxes(patch%model_id, 1, 3) + patch%centroid_offset(1)
1150 ly(1) = stl_bounding_boxes(patch%model_id, 2, 1) + patch%centroid_offset(2)
1151 ly(2) = stl_bounding_boxes(patch%model_id, 2, 3) + patch%centroid_offset(2)
1152 lz(1) = stl_bounding_boxes(patch%model_id, 3, 1) + patch%centroid_offset(3)
1153 lz(2) = stl_bounding_boxes(patch%model_id, 3, 3) + patch%centroid_offset(3)
1155 bound = 0.5_wp*sqrt((lx(2) - lx(1))**2 + (ly(2) - ly(1))**2 + (lz(2) - lz(1))**2)
1163# 510 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1165# 510 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1167# 510 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1169# 510 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1171# 510 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1173# 510 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1175# 510 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1178 type(ib_patch_parameters),
intent(in) :: patch
1179 real(wp),
dimension(3),
intent(in) :: center
1180 integer,
intent(out) :: il, ir, jl, jr, kl, kr
1181 real(wp),
dimension(3) :: bbox_min, bbox_max, local_corner, world_corner
1182 real(wp),
dimension(2) :: lx, ly, lz
1184 integer :: cx, cy, cz
1185 logical :: outside_domain
1187 if (patch%geometry == 5)
then
1189 lx(1) = stl_bounding_boxes(patch%model_id, 1, 1) + patch%centroid_offset(1)
1190 lx(2) = stl_bounding_boxes(patch%model_id, 1, 3) + patch%centroid_offset(1)
1191 ly(1) = stl_bounding_boxes(patch%model_id, 2, 1) + patch%centroid_offset(2)
1192 ly(2) = stl_bounding_boxes(patch%model_id, 2, 3) + patch%centroid_offset(2)
1199 local_corner = [lx(cx), ly(cy), 0._wp]
1200 world_corner = matmul(patch%rotation_matrix, local_corner) + center
1201 bbox_min(1) = min(bbox_min(1), world_corner(1))
1202 bbox_min(2) = min(bbox_min(2), world_corner(2))
1203 bbox_max(1) = max(bbox_max(1), world_corner(1))
1204 bbox_max(2) = max(bbox_max(2), world_corner(2))
1207 else if (patch%geometry == 12)
then
1209 lx(1) = stl_bounding_boxes(patch%model_id, 1, 1) + patch%centroid_offset(1)
1210 lx(2) = stl_bounding_boxes(patch%model_id, 1, 3) + patch%centroid_offset(1)
1211 ly(1) = stl_bounding_boxes(patch%model_id, 2, 1) + patch%centroid_offset(2)
1212 ly(2) = stl_bounding_boxes(patch%model_id, 2, 3) + patch%centroid_offset(2)
1213 lz(1) = stl_bounding_boxes(patch%model_id, 3, 1) + patch%centroid_offset(3)
1214 lz(2) = stl_bounding_boxes(patch%model_id, 3, 3) + patch%centroid_offset(3)
1222 local_corner = [lx(cx), ly(cy), lz(cz)]
1223 world_corner = matmul(patch%rotation_matrix, local_corner) + center
1224 bbox_min(1) = min(bbox_min(1), world_corner(1))
1225 bbox_min(2) = min(bbox_min(2), world_corner(2))
1226 bbox_min(3) = min(bbox_min(3), world_corner(3))
1227 bbox_max(1) = max(bbox_max(1), world_corner(1))
1228 bbox_max(2) = max(bbox_max(2), world_corner(2))
1229 bbox_max(3) = max(bbox_max(3), world_corner(3))
1236 bbox_min = center - bound
1237 bbox_max = center + bound
1241 outside_domain = bbox_min(1) > x_cc(m + gp_layers + 1) .or. bbox_max(1) < x_cc(-gp_layers - 1) .or. bbox_min(2) > y_cc(n &
1242 & + gp_layers + 1) .or. bbox_max(2) < y_cc(-gp_layers - 1)
1243 if (num_dims == 3)
then
1244 outside_domain = outside_domain .or. bbox_min(3) > z_cc(p + gp_layers + 1) .or. bbox_max(3) < z_cc(-gp_layers - 1)
1247 if (outside_domain)
then
1257 ir = m + gp_layers + 1
1258 jr = n + gp_layers + 1
1259 kr = p + gp_layers + 1