426 integer :: patch_id, airfoil_id, model_id, encoded_patch_id, i, j, k, il, ir, jl, jr, kl, kr, xp, yp, zp
427 integer :: xp_lower, xp_upper, yp_lower, yp_upper, zp_lower, zp_upper
428 real(wp),
dimension(3) :: center, xyz_local, length
429 real(wp) :: radius, eta
432# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
433#if defined(MFC_OpenACC)
434# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
436# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
437#elif defined(MFC_OpenMP)
438# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
440# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
444 if (num_dims == 3)
then
446 do xp = xp_lower, xp_upper
447 do yp = yp_lower, yp_upper
448 do zp = zp_lower, zp_upper
449 do patch_id = 1, num_ibs
450 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(
x_domain%end -
x_domain%beg)
451 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(
y_domain%end -
y_domain%beg)
452 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(
z_domain%end -
z_domain%beg)
461 if (ir < il .or. jr < jl .or. kr < kl) cycle
464# 73 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
466# 73 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
467#if defined(MFC_OpenACC)
468# 73 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
470# 73 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
471#elif defined(MFC_OpenMP)
472# 73 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
474# 73 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
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"
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"
484# 75 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
489 xyz_local = [
x_cc(i) - center(1),
y_cc(j) - center(2),
z_cc(k) - center(3)]
491 xyz_local = matmul(patch_ib(patch_id)%rotation_matrix_inverse, xyz_local)
494 if (patch_ib(patch_id)%geometry == 8)
then
496 radius = patch_ib(patch_id)%radius
499 & radius)) ib_markers%sf(i, j, k) = encoded_patch_id
500 else if (patch_ib(patch_id)%geometry == 9)
then
502 length = [patch_ib(patch_id)%length_x, patch_ib(patch_id)%length_y, &
503 & patch_ib(patch_id)%length_z]
505 & length)) ib_markers%sf(i, j, k) = encoded_patch_id
506 else if (patch_ib(patch_id)%geometry == 10)
then
508 radius = patch_ib(patch_id)%radius
510 & patch_ib(patch_id)%length_x)) ib_markers%sf(i, j, k) = encoded_patch_id
511 else if (patch_ib(patch_id)%geometry == 11)
then
513 airfoil_id = patch_ib(patch_id)%airfoil_id
514 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
516 & patch_ib(patch_id)%length_z, airfoil_id)) ib_markers%sf(i, j, &
517 & k) = encoded_patch_id
518 else if (patch_ib(patch_id)%geometry == 12)
then
520 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
521 model_id = patch_ib(patch_id)%model_id
523 if (eta > stl_models(model_id)%model_threshold)
then
524 ib_markers%sf(i, j, k) = encoded_patch_id
531# 120 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
532#if defined(MFC_OpenACC)
533# 120 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
535# 120 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
536#elif defined(MFC_OpenMP)
537# 120 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
539# 120 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
541# 120 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
549 else if (num_dims == 2)
then
551 do xp = xp_lower, xp_upper
552 do yp = yp_lower, yp_upper
553 do patch_id = 1, num_ibs
554 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(
x_domain%end -
x_domain%beg)
555 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(
y_domain%end -
y_domain%beg)
565 if (ir < il .or. jr < jl) cycle
568# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
570# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
571#if defined(MFC_OpenACC)
572# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
574# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
575#elif defined(MFC_OpenMP)
576# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
578# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
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"
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"
588# 147 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
592 xyz_local = [
x_cc(i) - center(1),
y_cc(j) - center(2), 0._wp]
594 xyz_local = matmul(patch_ib(patch_id)%rotation_matrix_inverse, xyz_local)
597 if (patch_ib(patch_id)%geometry == 2)
then
599 radius = patch_ib(patch_id)%radius
601 & j, 0) = encoded_patch_id
602 else if (patch_ib(patch_id)%geometry == 3)
then
604 length = [patch_ib(patch_id)%length_x, patch_ib(patch_id)%length_y, 0._wp]
605 if (
f_is_inside_cuboid(xyz_local(1), xyz_local(2), xyz_local(3), length)) ib_markers%sf(i, j, &
606 & 0) = encoded_patch_id
607 else if (patch_ib(patch_id)%geometry == 4)
then
609 airfoil_id = patch_ib(patch_id)%airfoil_id
610 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
612 & airfoil_id)) ib_markers%sf(i, j, 0) = encoded_patch_id
613 else if (patch_ib(patch_id)%geometry == 5)
then
615 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
616 model_id = patch_ib(patch_id)%model_id
618 if (eta > stl_models(model_id)%model_threshold)
then
619 ib_markers%sf(i, j, 0) = encoded_patch_id
621 else if (patch_ib(patch_id)%geometry == 6)
then
623 length = [patch_ib(patch_id)%length_x, patch_ib(patch_id)%length_y, 0._wp]
625 & 0) = encoded_patch_id
630# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
631#if defined(MFC_OpenACC)
632# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
634# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
635#elif defined(MFC_OpenMP)
636# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
638# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
640# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
652 integer :: patch_id, airfoil_id, model_id, encoded_patch_id, i, j, k, il, ir, jl, jr, kl, kr, xp, yp, zp
653 integer :: xp_lower, xp_upper, yp_lower, yp_upper, zp_lower, zp_upper
654 real(wp),
dimension(3) :: center, xyz_local, length
655 real(wp) :: radius, eta
657 if (num_dims == 3)
then
661 do xp = xp_lower, xp_upper
662 do yp = yp_lower, yp_upper
663 do zp = zp_lower, zp_upper
665# 210 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
667# 210 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
668#if defined(MFC_OpenACC)
669# 210 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
671# 210 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
672#elif defined(MFC_OpenMP)
673# 210 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
675# 210 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
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"
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"
685# 212 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
686 do patch_id = 1, num_ibs
687 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(
x_domain%end -
x_domain%beg)
688 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(
y_domain%end -
y_domain%beg)
689 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(
z_domain%end -
z_domain%beg)
701 xyz_local = [
x_cc(i) - center(1),
y_cc(j) - center(2),
z_cc(k) - center(3)]
703 xyz_local = matmul(patch_ib(patch_id)%rotation_matrix_inverse, xyz_local)
706 if (patch_ib(patch_id)%geometry == 8)
then
708 radius = patch_ib(patch_id)%radius
711 & radius)) ib_markers%sf(i, j, k) = encoded_patch_id
712 else if (patch_ib(patch_id)%geometry == 9)
then
714 length = [patch_ib(patch_id)%length_x, patch_ib(patch_id)%length_y, &
715 & patch_ib(patch_id)%length_z]
717 & length)) ib_markers%sf(i, j, k) = encoded_patch_id
718 else if (patch_ib(patch_id)%geometry == 10)
then
720 radius = patch_ib(patch_id)%radius
722 & patch_ib(patch_id)%length_x)) ib_markers%sf(i, j, k) = encoded_patch_id
723 else if (patch_ib(patch_id)%geometry == 11)
then
725 airfoil_id = patch_ib(patch_id)%airfoil_id
726 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
728 & patch_ib(patch_id)%length_z, airfoil_id)) ib_markers%sf(i, j, &
729 & k) = encoded_patch_id
730 else if (patch_ib(patch_id)%geometry == 12)
then
732 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
733 model_id = patch_ib(patch_id)%model_id
735 if (eta > stl_models(model_id)%model_threshold)
then
736 ib_markers%sf(i, j, k) = encoded_patch_id
744# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
745#if defined(MFC_OpenACC)
746# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
748# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
749#elif defined(MFC_OpenMP)
750# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
752# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
754# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
759 else if (num_dims == 2)
then
763 do xp = xp_lower, xp_upper
764 do yp = yp_lower, yp_upper
766# 279 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
768# 279 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
769#if defined(MFC_OpenACC)
770# 279 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
772# 279 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
773#elif defined(MFC_OpenMP)
774# 279 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
776# 279 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
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"
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"
786# 281 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
787 do patch_id = 1, num_ibs
788 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(
x_domain%end -
x_domain%beg)
789 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(
y_domain%end -
y_domain%beg)
801 xyz_local = [
x_cc(i) - center(1),
y_cc(j) - center(2), 0._wp]
803 xyz_local = matmul(patch_ib(patch_id)%rotation_matrix_inverse, xyz_local)
806 if (patch_ib(patch_id)%geometry == 2)
then
808 radius = patch_ib(patch_id)%radius
810 & j, 0) = encoded_patch_id
811 else if (patch_ib(patch_id)%geometry == 3)
then
813 length = [patch_ib(patch_id)%length_x, patch_ib(patch_id)%length_y, 0._wp]
814 if (
f_is_inside_cuboid(xyz_local(1), xyz_local(2), xyz_local(3), length)) ib_markers%sf(i, j, &
815 & 0) = encoded_patch_id
816 else if (patch_ib(patch_id)%geometry == 4)
then
818 airfoil_id = patch_ib(patch_id)%airfoil_id
819 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
821 & airfoil_id)) ib_markers%sf(i, j, 0) = encoded_patch_id
822 else if (patch_ib(patch_id)%geometry == 5)
then
824 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
825 model_id = patch_ib(patch_id)%model_id
827 if (eta > stl_models(model_id)%model_threshold)
then
828 ib_markers%sf(i, j, 0) = encoded_patch_id
830 else if (patch_ib(patch_id)%geometry == 6)
then
832 length = [patch_ib(patch_id)%length_x, patch_ib(patch_id)%length_y, 0._wp]
834 & 0) = encoded_patch_id
840# 333 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
841#if defined(MFC_OpenACC)
842# 333 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
844# 333 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
845#elif defined(MFC_OpenMP)
846# 333 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
848# 333 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
850# 333 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
862 integer :: i,
j, airfoil_id
863 integer :: np, np1, np2
864 real(wp) :: ca_in, pa, ma, ta
865 real(wp) :: xc, xa, yc, dycdxc, yt, xu, yu, xl, yl, sin_c, cos_c
868 if (patch_ib(i)%geometry /= 4 .and. patch_ib(i)%geometry /= 11) cycle
870 airfoil_id = patch_ib(i)%airfoil_id
871 ca_in = ib_airfoil(airfoil_id)%c
872 pa = ib_airfoil(airfoil_id)%p
873 ma = ib_airfoil(airfoil_id)%m
874 ta = ib_airfoil(airfoil_id)%t
876 np1 = int((pa*ca_in/
dx(0))*20)
877 np2 = int(((ca_in - pa*ca_in)/
dx(0))*20)
881# 362 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
882#if defined(MFC_OpenACC)
883# 362 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
885# 362 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
886#elif defined(MFC_OpenMP)
887# 362 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
889# 362 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
894# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
896# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
897 use iso_fortran_env,
only: output_unit
898# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
900# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
901 print *,
'm_ib_patches.fpp:365: ',
'@:ALLOCATE(ib_airfoil_grids(airfoil_id)%upper(1:Np))'
902# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
904# 365 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
905 call flush (output_unit)
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"
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"
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#if defined(MFC_OpenACC)
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"
921#elif defined(MFC_OpenMP)
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"
927# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
929# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
930 use iso_fortran_env,
only: output_unit
931# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
933# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
934 print *,
'm_ib_patches.fpp:366: ',
'@:ALLOCATE(ib_airfoil_grids(airfoil_id)%lower(1:Np))'
935# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
937# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
938 call flush (output_unit)
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"
943# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
944 allocate (ib_airfoil_grids(airfoil_id)%lower(1:np))
945# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
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#if defined(MFC_OpenACC)
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"
954#elif defined(MFC_OpenMP)
955# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
957# 366 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
960 ib_airfoil_grids(airfoil_id)%upper(1)%x = 0._wp
961 ib_airfoil_grids(airfoil_id)%upper(1)%y = 0._wp
962 ib_airfoil_grids(airfoil_id)%lower(1)%x = 0._wp
963 ib_airfoil_grids(airfoil_id)%lower(1)%y = 0._wp
965 do j = 1, np1 + np2 - 1
967 xc =
j*(pa*ca_in/np1)
969 yc = (ma/pa**2)*(2*pa*xa - xa**2)
970 dycdxc = (2*ma/pa**2)*(pa - xa)
972 xc = pa*ca_in + (
j - np1)*((ca_in - pa*ca_in)/np2)
974 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
975 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
978 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)
979 sin_c = dycdxc/(1 + dycdxc**2)**0.5_wp
980 cos_c = 1/(1 + dycdxc**2)**0.5_wp
982 xu = (xa - yt*sin_c)*ca_in
983 yu = (yc + yt*cos_c)*ca_in
984 xl = (xa + yt*sin_c)*ca_in
985 yl = (yc - yt*cos_c)*ca_in
987 ib_airfoil_grids(airfoil_id)%upper(
j + 1)%x = xu
988 ib_airfoil_grids(airfoil_id)%upper(
j + 1)%y = yu
989 ib_airfoil_grids(airfoil_id)%lower(
j + 1)%x = xl
990 ib_airfoil_grids(airfoil_id)%lower(
j + 1)%y = yl
993 ib_airfoil_grids(airfoil_id)%upper(np)%x = ca_in
994 ib_airfoil_grids(airfoil_id)%upper(np)%y = 0._wp
995 ib_airfoil_grids(airfoil_id)%lower(np)%x = ca_in
996 ib_airfoil_grids(airfoil_id)%lower(np)%y = 0._wp
999# 406 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1000#if defined(MFC_OpenACC)
1001# 406 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1003# 406 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1004#elif defined(MFC_OpenMP)
1005# 406 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1007# 406 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1012# 409 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1013#if defined(MFC_OpenACC)
1014# 409 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1016# 409 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1017#elif defined(MFC_OpenMP)
1018# 409 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1020# 409 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1030# 417 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1032# 417 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1034# 417 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1036# 417 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1038# 417 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1040# 417 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1042# 417 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1045 integer,
intent(in) :: patch_id
1046 real(wp),
dimension(3, 3, 3) :: rotation
1051 if (num_dims == 3)
then
1053 angle = patch_ib(patch_id)%angles(1)
1054 rotation(1, 1,:) = [1._wp, 0._wp, 0._wp]
1055 rotation(1, 2,:) = [0._wp, cos(angle), -sin(angle)]
1056 rotation(1, 3,:) = [0._wp, sin(angle), cos(angle)]
1058 angle = patch_ib(patch_id)%angles(2)
1059 rotation(2, 1,:) = [cos(angle), 0._wp, sin(angle)]
1060 rotation(2, 2,:) = [0._wp, 1._wp, 0._wp]
1061 rotation(2, 3,:) = [-sin(angle), 0._wp, cos(angle)]
1064 patch_ib(patch_id)%rotation_matrix(:,:) = matmul(rotation(1,:,:), rotation(2,:,:))
1065 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = matmul(transpose(rotation(2,:,:)), transpose(rotation(1,:,:)))
1069 angle = patch_ib(patch_id)%angles(3)
1070 rotation(3, 1,:) = [cos(angle), -sin(angle), 0._wp]
1071 rotation(3, 2,:) = [sin(angle), cos(angle), 0._wp]
1072 rotation(3, 3,:) = [0._wp, 0._wp, 1._wp]
1074 if (num_dims == 3)
then
1076 patch_ib(patch_id)%rotation_matrix(:,:) = matmul(patch_ib(patch_id)%rotation_matrix(:,:), rotation(3,:,:))
1077 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = matmul(transpose(rotation(3,:,:)), &
1078 & patch_ib(patch_id)%rotation_matrix_inverse(:,:))
1081 patch_ib(patch_id)%rotation_matrix(:,:) = rotation(3,:,:)
1082 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = transpose(rotation(3,:,:))
1090# 463 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1092# 463 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1094# 463 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1096# 463 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1098# 463 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1100# 463 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1102# 463 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1105 type(ib_patch_parameters),
intent(in) :: patch
1106 real(wp),
dimension(3),
intent(in) :: center
1107 integer,
intent(out) :: il, ir, jl, jr, kl, kr
1108 real(wp),
dimension(3) :: bbox_min, bbox_max, local_corner, world_corner
1109 real(wp),
dimension(2) :: lx, ly, lz
1110 integer :: cx, cy, cz
1111 logical :: outside_domain
1113 if (patch%geometry == 2 .or. patch%geometry == 8)
then
1115 bbox_min = center - patch%radius
1116 bbox_max = center + patch%radius
1117 else if (patch%geometry == 3)
then
1119 bbox_min = center - 0.5_wp*sqrt(patch%length_x**2 + patch%length_y**2)
1120 bbox_max = center + 0.5_wp*sqrt(patch%length_x**2 + patch%length_y**2)
1121 else if (patch%geometry == 4 .or. patch%geometry == 11)
then
1123 bbox_min = center - ib_airfoil(patch%airfoil_id)%c
1124 bbox_max = center + ib_airfoil(patch%airfoil_id)%c
1125 else if (patch%geometry == 5)
then
1127 lx(1) = stl_bounding_boxes(patch%model_id, 1, 1) + patch%centroid_offset(1)
1128 lx(2) = stl_bounding_boxes(patch%model_id, 1, 3) + patch%centroid_offset(1)
1129 ly(1) = stl_bounding_boxes(patch%model_id, 2, 1) + patch%centroid_offset(2)
1130 ly(2) = stl_bounding_boxes(patch%model_id, 2, 3) + patch%centroid_offset(2)
1137 local_corner = [lx(cx), ly(cy), 0._wp]
1138 world_corner = matmul(patch%rotation_matrix, local_corner) + center
1139 bbox_min(1) = min(bbox_min(1), world_corner(1))
1140 bbox_min(2) = min(bbox_min(2), world_corner(2))
1141 bbox_max(1) = max(bbox_max(1), world_corner(1))
1142 bbox_max(2) = max(bbox_max(2), world_corner(2))
1145 else if (patch%geometry == 6)
then
1147 bbox_min = center - 0.5_wp*max(patch%length_x, patch%length_y)
1148 bbox_max = center + 0.5_wp*max(patch%length_x, patch%length_y)
1149 else if (patch%geometry == 9)
then
1151 bbox_min = center - 0.5_wp*sqrt(patch%length_x**2 + patch%length_y**2 + patch%length_z**2)
1152 bbox_max = center + 0.5_wp*sqrt(patch%length_x**2 + patch%length_y**2 + patch%length_z**2)
1153 else if (patch%geometry == 10)
then
1155 bbox_min = center - sqrt(patch%radius**2 + patch%length_x**2)
1156 bbox_max = center + sqrt(patch%radius**2 + patch%length_x**2)
1157 else if (patch%geometry == 12)
then
1159 lx(1) = stl_bounding_boxes(patch%model_id, 1, 1) + patch%centroid_offset(1)
1160 lx(2) = stl_bounding_boxes(patch%model_id, 1, 3) + patch%centroid_offset(1)
1161 ly(1) = stl_bounding_boxes(patch%model_id, 2, 1) + patch%centroid_offset(2)
1162 ly(2) = stl_bounding_boxes(patch%model_id, 2, 3) + patch%centroid_offset(2)
1163 lz(1) = stl_bounding_boxes(patch%model_id, 3, 1) + patch%centroid_offset(3)
1164 lz(2) = stl_bounding_boxes(patch%model_id, 3, 3) + patch%centroid_offset(3)
1172 local_corner = [lx(cx), ly(cy), lz(cz)]
1173 world_corner = matmul(patch%rotation_matrix, local_corner) + center
1174 bbox_min(1) = min(bbox_min(1), world_corner(1))
1175 bbox_min(2) = min(bbox_min(2), world_corner(2))
1176 bbox_min(3) = min(bbox_min(3), world_corner(3))
1177 bbox_max(1) = max(bbox_max(1), world_corner(1))
1178 bbox_max(2) = max(bbox_max(2), world_corner(2))
1179 bbox_max(3) = max(bbox_max(3), world_corner(3))
1186 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 &
1187 & + gp_layers + 1) .or. bbox_max(2) < y_cc(-gp_layers - 1)
1188 if (num_dims == 3)
then
1189 outside_domain = outside_domain .or. bbox_min(3) > z_cc(p + gp_layers + 1) .or. bbox_max(3) < z_cc(-gp_layers - 1)
1192 if (outside_domain)
then
1202 ir = m + gp_layers + 1
1203 jr = n + gp_layers + 1
1204 kr = p + gp_layers + 1