diff --git a/documentation/architecture.html b/documentation/architecture.html index e25000894..6ac4a06b7 100644 --- a/documentation/architecture.html +++ b/documentation/architecture.html @@ -401,7 +401,7 @@

  • Add the module to docs/module_categories.json so it appears in this page
  • Follow the pattern of existing modules like m_body_forces (simple) or m_viscous (more involved) as a template.

    -
    Page last updated: 2026-02-26
    +
    Page last updated: 2026-02-27
    +
    Page last updated: 2026-02-27
    +
    Page last updated: 2026-02-27
    +
    Page last updated: 2026-02-27
    Page last updated: 2026-02-26
    +
    Page last updated: 2026-02-27
    +
    Page last updated: 2026-02-27
    -
    2842 end subroutine s_mpi_decompose_computational_domain
    -
    2843
    -
    2844 !> The goal of this procedure is to populate the buffers of
    -
    2845 !! the grid variables by communicating with the neighboring
    -
    2846 !! processors. Note that only the buffers of the cell-width
    -
    2847 !! distributions are handled in such a way. This is because
    -
    2848 !! the buffers of cell-boundary locations may be calculated
    -
    2849 !! directly from those of the cell-width distributions.
    -
    2850 !! @param mpi_dir MPI communication coordinate direction
    -
    2851 !! @param pbc_loc Processor boundary condition (PBC) location
    -
    2852#ifndef MFC_PRE_PROCESS
    -
    -
    2853 subroutine s_mpi_sendrecv_grid_variables_buffers(mpi_dir, pbc_loc)
    -
    2854
    -
    2855 integer, intent(in) :: mpi_dir
    -
    2856 integer, intent(in) :: pbc_loc
    -
    2857
    -
    2858#ifdef MFC_MPI
    -
    2859 integer :: ierr !< Generic flag used to identify and report MPI errors
    -
    2860
    -
    2861 ! MPI Communication in x-direction
    -
    2862 if (mpi_dir == 1) then
    + +
    2841
    +
    2842 !> The goal of this procedure is to populate the buffers of
    +
    2843 !! the grid variables by communicating with the neighboring
    +
    2844 !! processors. Note that only the buffers of the cell-width
    +
    2845 !! distributions are handled in such a way. This is because
    +
    2846 !! the buffers of cell-boundary locations may be calculated
    +
    2847 !! directly from those of the cell-width distributions.
    +
    2848 !! @param mpi_dir MPI communication coordinate direction
    +
    2849 !! @param pbc_loc Processor boundary condition (PBC) location
    +
    2850#ifndef MFC_PRE_PROCESS
    +
    +
    2851 subroutine s_mpi_sendrecv_grid_variables_buffers(mpi_dir, pbc_loc)
    +
    2852
    +
    2853 integer, intent(in) :: mpi_dir
    +
    2854 integer, intent(in) :: pbc_loc
    +
    2855
    +
    2856#ifdef MFC_MPI
    +
    2857 integer :: ierr !< Generic flag used to identify and report MPI errors
    +
    2858
    +
    2859 ! MPI Communication in x-direction
    +
    2860 if (mpi_dir == 1) then
    +
    2861
    +
    2862 if (pbc_loc == -1) then ! PBC at the beginning
    2863
    -
    2864 if (pbc_loc == -1) then ! PBC at the beginning
    +
    2864 if (bc_x%end >= 0) then ! PBC at the beginning and end
    2865
    -
    2866 if (bc_x%end >= 0) then ! PBC at the beginning and end
    -
    2867
    -
    2868 ! Send/receive buffer to/from bc_x%end/bc_x%beg
    -
    2869 call mpi_sendrecv( &
    -
    2870 dx(m - buff_size + 1), buff_size, &
    -
    2871 mpi_p, bc_x%end, 0, &
    -
    2872 dx(-buff_size), buff_size, &
    -
    2873 mpi_p, bc_x%beg, 0, &
    -
    2874 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2866 ! Send/receive buffer to/from bc_x%end/bc_x%beg
    +
    2867 call mpi_sendrecv( &
    +
    2868 dx(m - buff_size + 1), buff_size, &
    +
    2869 mpi_p, bc_x%end, 0, &
    +
    2870 dx(-buff_size), buff_size, &
    +
    2871 mpi_p, bc_x%beg, 0, &
    +
    2872 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2873
    +
    2874 else ! PBC at the beginning only
    2875
    -
    2876 else ! PBC at the beginning only
    -
    2877
    -
    2878 ! Send/receive buffer to/from bc_x%beg/bc_x%beg
    -
    2879 call mpi_sendrecv( &
    -
    2880 dx(0), buff_size, &
    -
    2881 mpi_p, bc_x%beg, 1, &
    -
    2882 dx(-buff_size), buff_size, &
    -
    2883 mpi_p, bc_x%beg, 0, &
    -
    2884 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2876 ! Send/receive buffer to/from bc_x%beg/bc_x%beg
    +
    2877 call mpi_sendrecv( &
    +
    2878 dx(0), buff_size, &
    +
    2879 mpi_p, bc_x%beg, 1, &
    +
    2880 dx(-buff_size), buff_size, &
    +
    2881 mpi_p, bc_x%beg, 0, &
    +
    2882 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2883
    +
    2884 end if
    2885
    -
    2886 end if
    +
    2886 else ! PBC at the end
    2887
    -
    2888 else ! PBC at the end
    +
    2888 if (bc_x%beg >= 0) then ! PBC at the end and beginning
    2889
    -
    2890 if (bc_x%beg >= 0) then ! PBC at the end and beginning
    -
    2891
    -
    2892 ! Send/receive buffer to/from bc_x%beg/bc_x%end
    -
    2893 call mpi_sendrecv( &
    -
    2894 dx(0), buff_size, &
    -
    2895 mpi_p, bc_x%beg, 1, &
    -
    2896 dx(m + 1), buff_size, &
    -
    2897 mpi_p, bc_x%end, 1, &
    -
    2898 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2890 ! Send/receive buffer to/from bc_x%beg/bc_x%end
    +
    2891 call mpi_sendrecv( &
    +
    2892 dx(0), buff_size, &
    +
    2893 mpi_p, bc_x%beg, 1, &
    +
    2894 dx(m + 1), buff_size, &
    +
    2895 mpi_p, bc_x%end, 1, &
    +
    2896 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2897
    +
    2898 else ! PBC at the end only
    2899
    -
    2900 else ! PBC at the end only
    -
    2901
    -
    2902 ! Send/receive buffer to/from bc_x%end/bc_x%end
    -
    2903 call mpi_sendrecv( &
    -
    2904 dx(m - buff_size + 1), buff_size, &
    -
    2905 mpi_p, bc_x%end, 0, &
    -
    2906 dx(m + 1), buff_size, &
    -
    2907 mpi_p, bc_x%end, 1, &
    -
    2908 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2900 ! Send/receive buffer to/from bc_x%end/bc_x%end
    +
    2901 call mpi_sendrecv( &
    +
    2902 dx(m - buff_size + 1), buff_size, &
    +
    2903 mpi_p, bc_x%end, 0, &
    +
    2904 dx(m + 1), buff_size, &
    +
    2905 mpi_p, bc_x%end, 1, &
    +
    2906 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2907
    +
    2908 end if
    2909
    -
    2910 end if
    -
    2911
    -
    2912 end if
    -
    2913 ! END: MPI Communication in x-direction
    -
    2914
    -
    2915 ! MPI Communication in y-direction
    -
    2916 elseif (mpi_dir == 2) then
    +
    2910 end if
    +
    2911 ! END: MPI Communication in x-direction
    +
    2912
    +
    2913 ! MPI Communication in y-direction
    +
    2914 elseif (mpi_dir == 2) then
    +
    2915
    +
    2916 if (pbc_loc == -1) then ! PBC at the beginning
    2917
    -
    2918 if (pbc_loc == -1) then ! PBC at the beginning
    +
    2918 if (bc_y%end >= 0) then ! PBC at the beginning and end
    2919
    -
    2920 if (bc_y%end >= 0) then ! PBC at the beginning and end
    -
    2921
    -
    2922 ! Send/receive buffer to/from bc_y%end/bc_y%beg
    -
    2923 call mpi_sendrecv( &
    -
    2924 dy(n - buff_size + 1), buff_size, &
    -
    2925 mpi_p, bc_y%end, 0, &
    -
    2926 dy(-buff_size), buff_size, &
    -
    2927 mpi_p, bc_y%beg, 0, &
    -
    2928 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2920 ! Send/receive buffer to/from bc_y%end/bc_y%beg
    +
    2921 call mpi_sendrecv( &
    +
    2922 dy(n - buff_size + 1), buff_size, &
    +
    2923 mpi_p, bc_y%end, 0, &
    +
    2924 dy(-buff_size), buff_size, &
    +
    2925 mpi_p, bc_y%beg, 0, &
    +
    2926 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2927
    +
    2928 else ! PBC at the beginning only
    2929
    -
    2930 else ! PBC at the beginning only
    -
    2931
    -
    2932 ! Send/receive buffer to/from bc_y%beg/bc_y%beg
    -
    2933 call mpi_sendrecv( &
    -
    2934 dy(0), buff_size, &
    -
    2935 mpi_p, bc_y%beg, 1, &
    -
    2936 dy(-buff_size), buff_size, &
    -
    2937 mpi_p, bc_y%beg, 0, &
    -
    2938 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2930 ! Send/receive buffer to/from bc_y%beg/bc_y%beg
    +
    2931 call mpi_sendrecv( &
    +
    2932 dy(0), buff_size, &
    +
    2933 mpi_p, bc_y%beg, 1, &
    +
    2934 dy(-buff_size), buff_size, &
    +
    2935 mpi_p, bc_y%beg, 0, &
    +
    2936 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2937
    +
    2938 end if
    2939
    -
    2940 end if
    +
    2940 else ! PBC at the end
    2941
    -
    2942 else ! PBC at the end
    +
    2942 if (bc_y%beg >= 0) then ! PBC at the end and beginning
    2943
    -
    2944 if (bc_y%beg >= 0) then ! PBC at the end and beginning
    -
    2945
    -
    2946 ! Send/receive buffer to/from bc_y%beg/bc_y%end
    -
    2947 call mpi_sendrecv( &
    -
    2948 dy(0), buff_size, &
    -
    2949 mpi_p, bc_y%beg, 1, &
    -
    2950 dy(n + 1), buff_size, &
    -
    2951 mpi_p, bc_y%end, 1, &
    -
    2952 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2944 ! Send/receive buffer to/from bc_y%beg/bc_y%end
    +
    2945 call mpi_sendrecv( &
    +
    2946 dy(0), buff_size, &
    +
    2947 mpi_p, bc_y%beg, 1, &
    +
    2948 dy(n + 1), buff_size, &
    +
    2949 mpi_p, bc_y%end, 1, &
    +
    2950 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2951
    +
    2952 else ! PBC at the end only
    2953
    -
    2954 else ! PBC at the end only
    -
    2955
    -
    2956 ! Send/receive buffer to/from bc_y%end/bc_y%end
    -
    2957 call mpi_sendrecv( &
    -
    2958 dy(n - buff_size + 1), buff_size, &
    -
    2959 mpi_p, bc_y%end, 0, &
    -
    2960 dy(n + 1), buff_size, &
    -
    2961 mpi_p, bc_y%end, 1, &
    -
    2962 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2954 ! Send/receive buffer to/from bc_y%end/bc_y%end
    +
    2955 call mpi_sendrecv( &
    +
    2956 dy(n - buff_size + 1), buff_size, &
    +
    2957 mpi_p, bc_y%end, 0, &
    +
    2958 dy(n + 1), buff_size, &
    +
    2959 mpi_p, bc_y%end, 1, &
    +
    2960 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2961
    +
    2962 end if
    2963
    -
    2964 end if
    -
    2965
    -
    2966 end if
    -
    2967 ! END: MPI Communication in y-direction
    -
    2968
    -
    2969 ! MPI Communication in z-direction
    -
    2970 else
    +
    2964 end if
    +
    2965 ! END: MPI Communication in y-direction
    +
    2966
    +
    2967 ! MPI Communication in z-direction
    +
    2968 else
    +
    2969
    +
    2970 if (pbc_loc == -1) then ! PBC at the beginning
    2971
    -
    2972 if (pbc_loc == -1) then ! PBC at the beginning
    +
    2972 if (bc_z%end >= 0) then ! PBC at the beginning and end
    2973
    -
    2974 if (bc_z%end >= 0) then ! PBC at the beginning and end
    -
    2975
    -
    2976 ! Send/receive buffer to/from bc_z%end/bc_z%beg
    -
    2977 call mpi_sendrecv( &
    -
    2978 dz(p - buff_size + 1), buff_size, &
    -
    2979 mpi_p, bc_z%end, 0, &
    -
    2980 dz(-buff_size), buff_size, &
    -
    2981 mpi_p, bc_z%beg, 0, &
    -
    2982 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2974 ! Send/receive buffer to/from bc_z%end/bc_z%beg
    +
    2975 call mpi_sendrecv( &
    +
    2976 dz(p - buff_size + 1), buff_size, &
    +
    2977 mpi_p, bc_z%end, 0, &
    +
    2978 dz(-buff_size), buff_size, &
    +
    2979 mpi_p, bc_z%beg, 0, &
    +
    2980 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2981
    +
    2982 else ! PBC at the beginning only
    2983
    -
    2984 else ! PBC at the beginning only
    -
    2985
    -
    2986 ! Send/receive buffer to/from bc_z%beg/bc_z%beg
    -
    2987 call mpi_sendrecv( &
    -
    2988 dz(0), buff_size, &
    -
    2989 mpi_p, bc_z%beg, 1, &
    -
    2990 dz(-buff_size), buff_size, &
    -
    2991 mpi_p, bc_z%beg, 0, &
    -
    2992 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2984 ! Send/receive buffer to/from bc_z%beg/bc_z%beg
    +
    2985 call mpi_sendrecv( &
    +
    2986 dz(0), buff_size, &
    +
    2987 mpi_p, bc_z%beg, 1, &
    +
    2988 dz(-buff_size), buff_size, &
    +
    2989 mpi_p, bc_z%beg, 0, &
    +
    2990 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2991
    +
    2992 end if
    2993
    -
    2994 end if
    +
    2994 else ! PBC at the end
    2995
    -
    2996 else ! PBC at the end
    +
    2996 if (bc_z%beg >= 0) then ! PBC at the end and beginning
    2997
    -
    2998 if (bc_z%beg >= 0) then ! PBC at the end and beginning
    -
    2999
    -
    3000 ! Send/receive buffer to/from bc_z%beg/bc_z%end
    -
    3001 call mpi_sendrecv( &
    -
    3002 dz(0), buff_size, &
    -
    3003 mpi_p, bc_z%beg, 1, &
    -
    3004 dz(p + 1), buff_size, &
    -
    3005 mpi_p, bc_z%end, 1, &
    -
    3006 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2998 ! Send/receive buffer to/from bc_z%beg/bc_z%end
    +
    2999 call mpi_sendrecv( &
    +
    3000 dz(0), buff_size, &
    +
    3001 mpi_p, bc_z%beg, 1, &
    +
    3002 dz(p + 1), buff_size, &
    +
    3003 mpi_p, bc_z%end, 1, &
    +
    3004 mpi_comm_world, mpi_status_ignore, ierr)
    +
    3005
    +
    3006 else ! PBC at the end only
    3007
    -
    3008 else ! PBC at the end only
    -
    3009
    -
    3010 ! Send/receive buffer to/from bc_z%end/bc_z%end
    -
    3011 call mpi_sendrecv( &
    -
    3012 dz(p - buff_size + 1), buff_size, &
    -
    3013 mpi_p, bc_z%end, 0, &
    -
    3014 dz(p + 1), buff_size, &
    -
    3015 mpi_p, bc_z%end, 1, &
    -
    3016 mpi_comm_world, mpi_status_ignore, ierr)
    +
    3008 ! Send/receive buffer to/from bc_z%end/bc_z%end
    +
    3009 call mpi_sendrecv( &
    +
    3010 dz(p - buff_size + 1), buff_size, &
    +
    3011 mpi_p, bc_z%end, 0, &
    +
    3012 dz(p + 1), buff_size, &
    +
    3013 mpi_p, bc_z%end, 1, &
    +
    3014 mpi_comm_world, mpi_status_ignore, ierr)
    +
    3015
    +
    3016 end if
    3017
    -
    3018 end if
    +
    3018 end if
    3019
    -
    3020 end if
    -
    3021
    -
    3022 end if
    -
    3023 ! END: MPI Communication in z-direction
    -
    3024#endif
    -
    3025
    +
    3020 end if
    +
    3021 ! END: MPI Communication in z-direction
    +
    3022#endif
    +
    3023
    - -
    3027#endif
    -
    3028
    -
    3029 !> Module deallocation and/or disassociation procedures
    -
    - -
    3031
    -
    3032#ifdef MFC_MPI
    -
    3033 deallocate (buff_send, buff_recv)
    -
    3034#endif
    -
    3035
    + +
    3025#endif
    +
    3026
    +
    3027 !> Module deallocation and/or disassociation procedures
    +
    + +
    3029
    +
    3030#ifdef MFC_MPI
    +
    3031 deallocate (buff_send, buff_recv)
    +
    3032#endif
    +
    3033
    -
    3036 end subroutine s_finalize_mpi_common_module
    -
    3037
    -
    3038end module m_mpi_common
    +
    3034 end subroutine s_finalize_mpi_common_module
    +
    3035
    +
    3036end module m_mpi_common
    type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
    integer, intent(in) j
    Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
    @@ -3241,7 +3239,7 @@
    real(wp), dimension(:), allocatable, private buff_recv
    buff_recv is utilized to receive and unpack the buffer of the cell- average primitive variables,...
    impure subroutine s_initialize_mpi_data(q_cons_vf, ib_markers, beta)
    impure subroutine s_mpi_reduce_maxloc(var_loc)
    The following subroutine takes the first element of the 2-element inputted variable and determines it...
    -
    subroutine s_mpi_sendrecv_grid_variables_buffers(mpi_dir, pbc_loc)
    The goal of this procedure is to populate the buffers of the grid variables by communicating with the...
    +
    subroutine s_mpi_sendrecv_grid_variables_buffers(mpi_dir, pbc_loc)
    The goal of this procedure is to populate the buffers of the grid variables by communicating with the...
    impure subroutine s_mpi_reduce_stability_criteria_extrema(icfl_max_loc, vcfl_max_loc, rc_min_loc, icfl_max_glb, vcfl_max_glb, rc_min_glb)
    The goal of this subroutine is to determine the global extrema of the stability criteria in the compu...
    impure subroutine s_mpi_allreduce_sum(var_loc, var_glb)
    The following subroutine takes the input local variable from all processors and reduces to the sum of...
    real(wp), dimension(:), allocatable, private buff_send
    This variable is utilized to pack and send the buffer of the cell-average primitive variables,...
    @@ -3255,7 +3253,7 @@
    integer, private v_size
    impure subroutine mpi_bcast_time_step_values(proc_time, time_avg)
    Gathers per-rank time step wall-clock times onto rank 0 for performance reporting.
    impure subroutine s_mpi_reduce_min(var_loc)
    The following subroutine takes the inputted variable and determines its minimum value on the entire c...
    -
    impure subroutine s_finalize_mpi_common_module
    Module deallocation and/or disassociation procedures.
    +
    impure subroutine s_finalize_mpi_common_module
    Module deallocation and/or disassociation procedures.
    integer(kind=8) halo_size
    subroutine s_mpi_decompose_computational_domain
    The purpose of this procedure is to optimally decompose the computational domain among the available ...
    NVIDIA NVTX profiling API bindings for GPU performance instrumentation.
    Definition m_nvtx.f90:6
    diff --git a/post_process/m__start__up_8fpp_8f90_source.html b/post_process/m__start__up_8fpp_8f90_source.html index 525eb8ffd..f8df92ef6 100644 --- a/post_process/m__start__up_8fpp_8f90_source.html +++ b/post_process/m__start__up_8fpp_8f90_source.html @@ -2159,7 +2159,7 @@
    integer, dimension(2) cart2d12_coords
    Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
    real(wp), dimension(:, :, :), allocatable, public pi_inf_sf
    Scalar liquid stiffness function.
    -
    subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, h, adv, vel_sum, c_c, c, qv)
    Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state...
    +
    subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, h, adv, vel_sum, c_c, c, qv)
    Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state...
    real(wp), dimension(:, :, :), allocatable, public rho_sf
    Scalar density function.
    real(wp), dimension(:, :, :), allocatable, public qv_sf
    Scalar liquid energy reference function.
    subroutine, public s_convert_conservative_to_primitive_variables(qk_cons_vf, q_t_sf, qk_prim_vf, ibounds)
    The following procedure handles the conversion between the conservative variables and the primitive v...
    diff --git a/post_process/m__variables__conversion_8fpp_8f90_source.html b/post_process/m__variables__conversion_8fpp_8f90_source.html index 38fec277c..ec2ae8457 100644 --- a/post_process/m__variables__conversion_8fpp_8f90_source.html +++ b/post_process/m__variables__conversion_8fpp_8f90_source.html @@ -1918,21 +1918,21 @@
    1764 end if
    1765
    1766 if (hypoelasticity) then
    -
    1767
    -
    1768# 855 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    1769#if defined(MFC_OpenACC)
    -
    1770# 855 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    1771!$acc loop seq
    -
    1772# 855 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    1773#elif defined(MFC_OpenMP)
    -
    1774# 855 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    1775
    -
    1776# 855 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    1777#endif
    -
    1778 do i = strxb, strxe
    -
    1779 ! subtracting elastic contribution for pressure calculation
    -
    1780 if (g_k > verysmall) then
    -
    1781 if (cont_damage) g_k = g_k*max((1._wp - qk_cons_vf(damage_idx)%sf(j, k, l)), 0._wp)
    +
    1767 if (cont_damage) g_k = g_k*max((1._wp - qk_cons_vf(damage_idx)%sf(j, k, l)), 0._wp)
    +
    1768
    +
    1769# 856 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    1770#if defined(MFC_OpenACC)
    +
    1771# 856 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    1772!$acc loop seq
    +
    1773# 856 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    1774#elif defined(MFC_OpenMP)
    +
    1775# 856 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    1776
    +
    1777# 856 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    1778#endif
    +
    1779 do i = strxb, strxe
    +
    1780 ! subtracting elastic contribution for pressure calculation
    +
    1781 if (g_k > verysmall) then
    1782 qk_prim_vf(e_idx)%sf(j, k, l) = qk_prim_vf(e_idx)%sf(j, k, l) - &
    1783 ((qk_prim_vf(i)%sf(j, k, l)**2._wp)/(4._wp*g_k))/gamma_k
    1784 ! Double for shear stresses
    @@ -2239,737 +2239,736 @@
    2083 end if
    2084
    2085 if (hypoelasticity) then
    -
    2086 do i = strxb, strxe
    -
    2087 ! adding elastic contribution
    -
    2088 if (g > verysmall) then
    -
    2089 if (cont_damage) g = g*max((1._wp - q_prim_vf(damage_idx)%sf(j, k, l)), 0._wp)
    -
    2090
    -
    2091 q_cons_vf(e_idx)%sf(j, k, l) = q_cons_vf(e_idx)%sf(j, k, l) + &
    -
    2092 (q_prim_vf(i)%sf(j, k, l)**2._wp)/(4._wp*g)
    -
    2093 ! Double for shear stresses
    -
    2094 if (any(i == shear_indices)) then
    -
    2095 q_cons_vf(e_idx)%sf(j, k, l) = q_cons_vf(e_idx)%sf(j, k, l) + &
    -
    2096 (q_prim_vf(i)%sf(j, k, l)**2._wp)/(4._wp*g)
    -
    2097 end if
    -
    2098 end if
    -
    2099 end do
    -
    2100 end if
    -
    2101
    -
    2102 ! using \rho xi as the conservative formulation stated in Kamrin et al. JFM 2022
    -
    2103 if (hyperelasticity) then
    -
    2104 ! Multiply \xi to \rho \xi
    -
    2105 do i = xibeg, xiend
    -
    2106 q_cons_vf(i)%sf(j, k, l) = rho*q_prim_vf(i)%sf(j, k, l)
    -
    2107 end do
    -
    2108 end if
    -
    2109
    -
    2110 if (surface_tension) then
    -
    2111 q_cons_vf(c_idx)%sf(j, k, l) = q_prim_vf(c_idx)%sf(j, k, l)
    -
    2112 end if
    -
    2113
    -
    2114 if (cont_damage) q_cons_vf(damage_idx)%sf(j, k, l) = q_prim_vf(damage_idx)%sf(j, k, l)
    -
    2115
    -
    2116 if (hyper_cleaning) q_cons_vf(psi_idx)%sf(j, k, l) = q_prim_vf(psi_idx)%sf(j, k, l)
    -
    2117
    -
    2118 end do
    -
    2119 end do
    -
    2120 end do
    -
    2121#else
    -
    2122 if (proc_rank == 0) then
    -
    2123 call s_mpi_abort('Conversion from primitive to '// &
    -
    2124 'conservative variables not '// &
    -
    2125 'implemented. Exiting.')
    -
    2126 end if
    -
    2127#endif
    +
    2086 if (cont_damage) g = g*max((1._wp - q_prim_vf(damage_idx)%sf(j, k, l)), 0._wp)
    +
    2087 do i = strxb, strxe
    +
    2088 ! adding elastic contribution
    +
    2089 if (g > verysmall) then
    +
    2090 q_cons_vf(e_idx)%sf(j, k, l) = q_cons_vf(e_idx)%sf(j, k, l) + &
    +
    2091 (q_prim_vf(i)%sf(j, k, l)**2._wp)/(4._wp*g)
    +
    2092 ! Double for shear stresses
    +
    2093 if (any(i == shear_indices)) then
    +
    2094 q_cons_vf(e_idx)%sf(j, k, l) = q_cons_vf(e_idx)%sf(j, k, l) + &
    +
    2095 (q_prim_vf(i)%sf(j, k, l)**2._wp)/(4._wp*g)
    +
    2096 end if
    +
    2097 end if
    +
    2098 end do
    +
    2099 end if
    +
    2100
    +
    2101 ! using \rho xi as the conservative formulation stated in Kamrin et al. JFM 2022
    +
    2102 if (hyperelasticity) then
    +
    2103 ! Multiply \xi to \rho \xi
    +
    2104 do i = xibeg, xiend
    +
    2105 q_cons_vf(i)%sf(j, k, l) = rho*q_prim_vf(i)%sf(j, k, l)
    +
    2106 end do
    +
    2107 end if
    +
    2108
    +
    2109 if (surface_tension) then
    +
    2110 q_cons_vf(c_idx)%sf(j, k, l) = q_prim_vf(c_idx)%sf(j, k, l)
    +
    2111 end if
    +
    2112
    +
    2113 if (cont_damage) q_cons_vf(damage_idx)%sf(j, k, l) = q_prim_vf(damage_idx)%sf(j, k, l)
    +
    2114
    +
    2115 if (hyper_cleaning) q_cons_vf(psi_idx)%sf(j, k, l) = q_prim_vf(psi_idx)%sf(j, k, l)
    +
    2116
    +
    2117 end do
    +
    2118 end do
    +
    2119 end do
    +
    2120#else
    +
    2121 if (proc_rank == 0) then
    +
    2122 call s_mpi_abort('Conversion from primitive to '// &
    +
    2123 'conservative variables not '// &
    +
    2124 'implemented. Exiting.')
    +
    2125 end if
    +
    2126#endif
    - -
    2129
    -
    2130 !> The following subroutine handles the conversion between
    -
    2131 !! the primitive variables and the Eulerian flux variables.
    -
    2132 !! @param qK_prim_vf Primitive variables
    -
    2133 !! @param FK_vf Flux variables
    -
    2134 !! @param FK_src_vf Flux source variables
    -
    2135 !! @param is1 Index bounds in the first coordinate direction
    -
    2136 !! @param is2 Index bounds in the second coordinate direction
    -
    2137 !! @param is3 Index bounds in the third coordinate direction
    -
    2138 !! @param s2b Starting boundary index in the second coordinate direction
    -
    2139 !! @param s3b Starting boundary index in the third coordinate direction
    -
    - -
    2141 FK_vf, &
    -
    2142 FK_src_vf, &
    -
    2143 is1, is2, is3, s2b, s3b)
    -
    2144
    -
    2145 integer, intent(in) :: s2b, s3b
    -
    2146 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(in) :: qk_prim_vf
    -
    2147 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) :: fk_vf
    -
    2148 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, advxb:), intent(inout) :: fk_src_vf
    -
    2149
    -
    2150 type(int_bounds_info), intent(in) :: is1, is2, is3
    -
    2151
    -
    2152 ! Partial densities, density, velocity, pressure, energy, advection
    -
    2153 ! variables, the specific heat ratio and liquid stiffness functions,
    -
    2154 ! the shear and volume Reynolds numbers and the Weber numbers
    -
    2155# 1201 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2156 real(wp), dimension(num_fluids) :: alpha_rho_k
    -
    2157 real(wp), dimension(num_fluids) :: alpha_k
    -
    2158 real(wp), dimension(num_vels) :: vel_k
    -
    2159 real(wp), dimension(num_species) :: y_k
    -
    2160# 1206 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2161 real(wp) :: rho_k
    -
    2162 real(wp) :: vel_k_sum
    -
    2163 real(wp) :: pres_k
    -
    2164 real(wp) :: e_k
    -
    2165 real(wp) :: gamma_k
    -
    2166 real(wp) :: pi_inf_k
    -
    2167 real(wp) :: qv_k
    -
    2168 real(wp), dimension(2) :: re_k
    -
    2169 real(wp) :: g_k
    -
    2170 real(wp) :: t_k, mix_mol_weight, r_gas
    -
    2171
    -
    2172 integer :: i, j, k, l !< Generic loop iterators
    -
    2173
    -
    2174 is1b = is1%beg; is1e = is1%end
    -
    2175 is2b = is2%beg; is2e = is2%end
    -
    2176 is3b = is3%beg; is3e = is3%end
    + +
    2128
    +
    2129 !> The following subroutine handles the conversion between
    +
    2130 !! the primitive variables and the Eulerian flux variables.
    +
    2131 !! @param qK_prim_vf Primitive variables
    +
    2132 !! @param FK_vf Flux variables
    +
    2133 !! @param FK_src_vf Flux source variables
    +
    2134 !! @param is1 Index bounds in the first coordinate direction
    +
    2135 !! @param is2 Index bounds in the second coordinate direction
    +
    2136 !! @param is3 Index bounds in the third coordinate direction
    +
    2137 !! @param s2b Starting boundary index in the second coordinate direction
    +
    2138 !! @param s3b Starting boundary index in the third coordinate direction
    +
    + +
    2140 FK_vf, &
    +
    2141 FK_src_vf, &
    +
    2142 is1, is2, is3, s2b, s3b)
    +
    2143
    +
    2144 integer, intent(in) :: s2b, s3b
    +
    2145 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(in) :: qk_prim_vf
    +
    2146 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) :: fk_vf
    +
    2147 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, advxb:), intent(inout) :: fk_src_vf
    +
    2148
    +
    2149 type(int_bounds_info), intent(in) :: is1, is2, is3
    +
    2150
    +
    2151 ! Partial densities, density, velocity, pressure, energy, advection
    +
    2152 ! variables, the specific heat ratio and liquid stiffness functions,
    +
    2153 ! the shear and volume Reynolds numbers and the Weber numbers
    +
    2154# 1200 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2155 real(wp), dimension(num_fluids) :: alpha_rho_k
    +
    2156 real(wp), dimension(num_fluids) :: alpha_k
    +
    2157 real(wp), dimension(num_vels) :: vel_k
    +
    2158 real(wp), dimension(num_species) :: y_k
    +
    2159# 1205 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2160 real(wp) :: rho_k
    +
    2161 real(wp) :: vel_k_sum
    +
    2162 real(wp) :: pres_k
    +
    2163 real(wp) :: e_k
    +
    2164 real(wp) :: gamma_k
    +
    2165 real(wp) :: pi_inf_k
    +
    2166 real(wp) :: qv_k
    +
    2167 real(wp), dimension(2) :: re_k
    +
    2168 real(wp) :: g_k
    +
    2169 real(wp) :: t_k, mix_mol_weight, r_gas
    +
    2170
    +
    2171 integer :: i, j, k, l !< Generic loop iterators
    +
    2172
    +
    2173 is1b = is1%beg; is1e = is1%end
    +
    2174 is2b = is2%beg; is2e = is2%end
    +
    2175 is3b = is3%beg; is3e = is3%end
    +
    2176
    2177
    -
    2178
    -
    2179# 1223 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2180#if defined(MFC_OpenACC)
    -
    2181# 1223 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2182!$acc update device(is1b, is2b, is3b, is1e, is2e, is3e)
    -
    2183# 1223 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2184#elif defined(MFC_OpenMP)
    -
    2185# 1223 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2186!$omp target update to(is1b, is2b, is3b, is1e, is2e, is3e)
    -
    2187# 1223 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2188#endif
    -
    2189
    -
    2190 ! Computing the flux variables from the primitive variables, without
    -
    2191 ! accounting for the contribution of either viscosity or capillarity
    -
    2192#ifdef MFC_SIMULATION
    -
    2193
    -
    2194# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2195
    -
    2196# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2197#if defined(MFC_OpenACC)
    -
    2198# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2199!$acc parallel loop collapse(3) gang vector default(present) private(alpha_rho_K, vel_K, alpha_K, Re_K, Y_K, rho_K, vel_K_sum, pres_K, E_K, gamma_K, pi_inf_K, qv_K, G_K, T_K, mix_mol_weight, R_gas)
    -
    2200# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2201#elif defined(MFC_OpenMP)
    -
    2202# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2203
    -
    2204# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2205
    -
    2206# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2207
    -
    2208# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2209!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(alpha_rho_K, vel_K, alpha_K, Re_K, Y_K, rho_K, vel_K_sum, pres_K, E_K, gamma_K, pi_inf_K, qv_K, G_K, T_K, mix_mol_weight, R_gas)
    -
    2210# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2211#endif
    -
    2212# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2213
    -
    2214 do l = is3b, is3e
    -
    2215 do k = is2b, is2e
    -
    2216 do j = is1b, is1e
    +
    2178# 1222 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2179#if defined(MFC_OpenACC)
    +
    2180# 1222 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2181!$acc update device(is1b, is2b, is3b, is1e, is2e, is3e)
    +
    2182# 1222 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2183#elif defined(MFC_OpenMP)
    +
    2184# 1222 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2185!$omp target update to(is1b, is2b, is3b, is1e, is2e, is3e)
    +
    2186# 1222 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2187#endif
    +
    2188
    +
    2189 ! Computing the flux variables from the primitive variables, without
    +
    2190 ! accounting for the contribution of either viscosity or capillarity
    +
    2191#ifdef MFC_SIMULATION
    +
    2192
    +
    2193# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2194
    +
    2195# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2196#if defined(MFC_OpenACC)
    +
    2197# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2198!$acc parallel loop collapse(3) gang vector default(present) private(alpha_rho_K, vel_K, alpha_K, Re_K, Y_K, rho_K, vel_K_sum, pres_K, E_K, gamma_K, pi_inf_K, qv_K, G_K, T_K, mix_mol_weight, R_gas)
    +
    2199# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2200#elif defined(MFC_OpenMP)
    +
    2201# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2202
    +
    2203# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2204
    +
    2205# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2206
    +
    2207# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2208!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(alpha_rho_K, vel_K, alpha_K, Re_K, Y_K, rho_K, vel_K_sum, pres_K, E_K, gamma_K, pi_inf_K, qv_K, G_K, T_K, mix_mol_weight, R_gas)
    +
    2209# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2210#endif
    +
    2211# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2212
    +
    2213 do l = is3b, is3e
    +
    2214 do k = is2b, is2e
    +
    2215 do j = is1b, is1e
    +
    2216
    2217
    -
    2218
    -
    2219# 1233 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2220#if defined(MFC_OpenACC)
    -
    2221# 1233 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2222!$acc loop seq
    -
    2223# 1233 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2224#elif defined(MFC_OpenMP)
    -
    2225# 1233 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2226
    -
    2227# 1233 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2228#endif
    -
    2229 do i = 1, contxe
    -
    2230 alpha_rho_k(i) = qk_prim_vf(j, k, l, i)
    -
    2231 end do
    +
    2218# 1232 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2219#if defined(MFC_OpenACC)
    +
    2220# 1232 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2221!$acc loop seq
    +
    2222# 1232 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2223#elif defined(MFC_OpenMP)
    +
    2224# 1232 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2225
    +
    2226# 1232 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2227#endif
    +
    2228 do i = 1, contxe
    +
    2229 alpha_rho_k(i) = qk_prim_vf(j, k, l, i)
    +
    2230 end do
    +
    2231
    2232
    -
    2233
    -
    2234# 1238 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2235#if defined(MFC_OpenACC)
    -
    2236# 1238 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2237!$acc loop seq
    -
    2238# 1238 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2239#elif defined(MFC_OpenMP)
    -
    2240# 1238 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2241
    -
    2242# 1238 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2243#endif
    -
    2244 do i = advxb, advxe
    -
    2245 alpha_k(i - e_idx) = qk_prim_vf(j, k, l, i)
    -
    2246 end do
    +
    2233# 1237 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2234#if defined(MFC_OpenACC)
    +
    2235# 1237 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2236!$acc loop seq
    +
    2237# 1237 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2238#elif defined(MFC_OpenMP)
    +
    2239# 1237 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2240
    +
    2241# 1237 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2242#endif
    +
    2243 do i = advxb, advxe
    +
    2244 alpha_k(i - e_idx) = qk_prim_vf(j, k, l, i)
    +
    2245 end do
    +
    2246
    2247
    -
    2248
    -
    2249# 1243 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2250#if defined(MFC_OpenACC)
    -
    2251# 1243 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2252!$acc loop seq
    -
    2253# 1243 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2254#elif defined(MFC_OpenMP)
    -
    2255# 1243 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2256
    -
    2257# 1243 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2258#endif
    -
    2259 do i = 1, num_vels
    -
    2260 vel_k(i) = qk_prim_vf(j, k, l, contxe + i)
    -
    2261 end do
    -
    2262
    -
    2263 vel_k_sum = 0._wp
    -
    2264
    -
    2265# 1249 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2266#if defined(MFC_OpenACC)
    -
    2267# 1249 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2268!$acc loop seq
    -
    2269# 1249 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2270#elif defined(MFC_OpenMP)
    -
    2271# 1249 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2272
    -
    2273# 1249 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2274#endif
    -
    2275 do i = 1, num_vels
    -
    2276 vel_k_sum = vel_k_sum + vel_k(i)**2._wp
    -
    2277 end do
    -
    2278
    -
    2279 pres_k = qk_prim_vf(j, k, l, e_idx)
    -
    2280 if (elasticity) then
    -
    2281 call s_convert_species_to_mixture_variables_acc(rho_k, gamma_k, pi_inf_k, qv_k, &
    -
    2282 alpha_k, alpha_rho_k, re_k, &
    -
    2283 g_k, gs_vc)
    -
    2284 else
    -
    2285 call s_convert_species_to_mixture_variables_acc(rho_k, gamma_k, pi_inf_k, qv_k, &
    -
    2286 alpha_k, alpha_rho_k, re_k)
    -
    2287 end if
    -
    2288
    -
    2289 ! Computing the energy from the pressure
    -
    2290
    -
    2291 if (chemistry) then
    -
    2292
    -
    2293# 1267 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2294#if defined(MFC_OpenACC)
    -
    2295# 1267 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2296!$acc loop seq
    -
    2297# 1267 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2298#elif defined(MFC_OpenMP)
    -
    2299# 1267 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2300
    -
    2301# 1267 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2302#endif
    -
    2303 do i = chemxb, chemxe
    -
    2304 y_k(i - chemxb + 1) = qk_prim_vf(j, k, l, i)
    -
    2305 end do
    -
    2306 !Computing the energy from the internal energy of the mixture
    -
    2307 call get_mixture_molecular_weight(y_k, mix_mol_weight)
    -
    2308 r_gas = gas_constant/mix_mol_weight
    -
    2309 t_k = pres_k/rho_k/r_gas
    -
    2310 call get_mixture_energy_mass(t_k, y_k, e_k)
    -
    2311 e_k = rho_k*e_k + 5.e-1_wp*rho_k*vel_k_sum
    -
    2312 else
    -
    2313 ! Computing the energy from the pressure
    -
    2314 e_k = gamma_k*pres_k + pi_inf_k &
    -
    2315 + 5.e-1_wp*rho_k*vel_k_sum + qv_k
    -
    2316 end if
    -
    2317
    -
    2318 ! mass flux, this should be \alpha_i \rho_i u_i
    -
    2319
    -
    2320# 1284 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2321#if defined(MFC_OpenACC)
    -
    2322# 1284 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2323!$acc loop seq
    -
    2324# 1284 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2325#elif defined(MFC_OpenMP)
    -
    2326# 1284 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2327
    -
    2328# 1284 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2329#endif
    -
    2330 do i = 1, contxe
    -
    2331 fk_vf(j, k, l, i) = alpha_rho_k(i)*vel_k(dir_idx(1))
    -
    2332 end do
    +
    2248# 1242 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2249#if defined(MFC_OpenACC)
    +
    2250# 1242 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2251!$acc loop seq
    +
    2252# 1242 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2253#elif defined(MFC_OpenMP)
    +
    2254# 1242 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2255
    +
    2256# 1242 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2257#endif
    +
    2258 do i = 1, num_vels
    +
    2259 vel_k(i) = qk_prim_vf(j, k, l, contxe + i)
    +
    2260 end do
    +
    2261
    +
    2262 vel_k_sum = 0._wp
    +
    2263
    +
    2264# 1248 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2265#if defined(MFC_OpenACC)
    +
    2266# 1248 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2267!$acc loop seq
    +
    2268# 1248 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2269#elif defined(MFC_OpenMP)
    +
    2270# 1248 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2271
    +
    2272# 1248 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2273#endif
    +
    2274 do i = 1, num_vels
    +
    2275 vel_k_sum = vel_k_sum + vel_k(i)**2._wp
    +
    2276 end do
    +
    2277
    +
    2278 pres_k = qk_prim_vf(j, k, l, e_idx)
    +
    2279 if (elasticity) then
    +
    2280 call s_convert_species_to_mixture_variables_acc(rho_k, gamma_k, pi_inf_k, qv_k, &
    +
    2281 alpha_k, alpha_rho_k, re_k, &
    +
    2282 g_k, gs_vc)
    +
    2283 else
    +
    2284 call s_convert_species_to_mixture_variables_acc(rho_k, gamma_k, pi_inf_k, qv_k, &
    +
    2285 alpha_k, alpha_rho_k, re_k)
    +
    2286 end if
    +
    2287
    +
    2288 ! Computing the energy from the pressure
    +
    2289
    +
    2290 if (chemistry) then
    +
    2291
    +
    2292# 1266 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2293#if defined(MFC_OpenACC)
    +
    2294# 1266 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2295!$acc loop seq
    +
    2296# 1266 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2297#elif defined(MFC_OpenMP)
    +
    2298# 1266 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2299
    +
    2300# 1266 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2301#endif
    +
    2302 do i = chemxb, chemxe
    +
    2303 y_k(i - chemxb + 1) = qk_prim_vf(j, k, l, i)
    +
    2304 end do
    +
    2305 !Computing the energy from the internal energy of the mixture
    +
    2306 call get_mixture_molecular_weight(y_k, mix_mol_weight)
    +
    2307 r_gas = gas_constant/mix_mol_weight
    +
    2308 t_k = pres_k/rho_k/r_gas
    +
    2309 call get_mixture_energy_mass(t_k, y_k, e_k)
    +
    2310 e_k = rho_k*e_k + 5.e-1_wp*rho_k*vel_k_sum
    +
    2311 else
    +
    2312 ! Computing the energy from the pressure
    +
    2313 e_k = gamma_k*pres_k + pi_inf_k &
    +
    2314 + 5.e-1_wp*rho_k*vel_k_sum + qv_k
    +
    2315 end if
    +
    2316
    +
    2317 ! mass flux, this should be \alpha_i \rho_i u_i
    +
    2318
    +
    2319# 1283 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2320#if defined(MFC_OpenACC)
    +
    2321# 1283 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2322!$acc loop seq
    +
    2323# 1283 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2324#elif defined(MFC_OpenMP)
    +
    2325# 1283 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2326
    +
    2327# 1283 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2328#endif
    +
    2329 do i = 1, contxe
    +
    2330 fk_vf(j, k, l, i) = alpha_rho_k(i)*vel_k(dir_idx(1))
    +
    2331 end do
    +
    2332
    2333
    -
    2334
    -
    2335# 1289 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2336#if defined(MFC_OpenACC)
    -
    2337# 1289 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2338!$acc loop seq
    -
    2339# 1289 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2340#elif defined(MFC_OpenMP)
    -
    2341# 1289 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2342
    -
    2343# 1289 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2344#endif
    -
    2345 do i = 1, num_vels
    -
    2346 fk_vf(j, k, l, contxe + dir_idx(i)) = &
    -
    2347 rho_k*vel_k(dir_idx(1)) &
    -
    2348 *vel_k(dir_idx(i)) &
    -
    2349 + pres_k*dir_flg(dir_idx(i))
    -
    2350 end do
    -
    2351
    -
    2352 ! energy flux, u(E+p)
    -
    2353 fk_vf(j, k, l, e_idx) = vel_k(dir_idx(1))*(e_k + pres_k)
    -
    2354
    -
    2355 ! Species advection Flux, \rho*u*Y
    -
    2356 if (chemistry) then
    -
    2357
    -
    2358# 1302 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2359#if defined(MFC_OpenACC)
    -
    2360# 1302 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2361!$acc loop seq
    -
    2362# 1302 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2363#elif defined(MFC_OpenMP)
    -
    2364# 1302 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2365
    -
    2366# 1302 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2367#endif
    -
    2368 do i = 1, num_species
    -
    2369 fk_vf(j, k, l, i - 1 + chemxb) = vel_k(dir_idx(1))*(rho_k*y_k(i))
    -
    2370 end do
    -
    2371 end if
    -
    2372
    -
    2373 if (riemann_solver == 1 .or. riemann_solver == 4) then
    -
    2374
    -
    2375# 1309 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2376#if defined(MFC_OpenACC)
    -
    2377# 1309 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2378!$acc loop seq
    -
    2379# 1309 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2380#elif defined(MFC_OpenMP)
    -
    2381# 1309 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2382
    -
    2383# 1309 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2384#endif
    -
    2385 do i = advxb, advxe
    -
    2386 fk_vf(j, k, l, i) = 0._wp
    -
    2387 fk_src_vf(j, k, l, i) = alpha_k(i - e_idx)
    -
    2388 end do
    -
    2389
    -
    2390 else
    -
    2391 ! Could be bubbles_euler!
    -
    2392
    -
    2393# 1317 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2394#if defined(MFC_OpenACC)
    -
    2395# 1317 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2396!$acc loop seq
    -
    2397# 1317 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2398#elif defined(MFC_OpenMP)
    -
    2399# 1317 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2400
    -
    2401# 1317 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2402#endif
    -
    2403 do i = advxb, advxe
    -
    2404 fk_vf(j, k, l, i) = vel_k(dir_idx(1))*alpha_k(i - e_idx)
    -
    2405 end do
    +
    2334# 1288 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2335#if defined(MFC_OpenACC)
    +
    2336# 1288 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2337!$acc loop seq
    +
    2338# 1288 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2339#elif defined(MFC_OpenMP)
    +
    2340# 1288 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2341
    +
    2342# 1288 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2343#endif
    +
    2344 do i = 1, num_vels
    +
    2345 fk_vf(j, k, l, contxe + dir_idx(i)) = &
    +
    2346 rho_k*vel_k(dir_idx(1)) &
    +
    2347 *vel_k(dir_idx(i)) &
    +
    2348 + pres_k*dir_flg(dir_idx(i))
    +
    2349 end do
    +
    2350
    +
    2351 ! energy flux, u(E+p)
    +
    2352 fk_vf(j, k, l, e_idx) = vel_k(dir_idx(1))*(e_k + pres_k)
    +
    2353
    +
    2354 ! Species advection Flux, \rho*u*Y
    +
    2355 if (chemistry) then
    +
    2356
    +
    2357# 1301 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2358#if defined(MFC_OpenACC)
    +
    2359# 1301 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2360!$acc loop seq
    +
    2361# 1301 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2362#elif defined(MFC_OpenMP)
    +
    2363# 1301 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2364
    +
    2365# 1301 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2366#endif
    +
    2367 do i = 1, num_species
    +
    2368 fk_vf(j, k, l, i - 1 + chemxb) = vel_k(dir_idx(1))*(rho_k*y_k(i))
    +
    2369 end do
    +
    2370 end if
    +
    2371
    +
    2372 if (riemann_solver == 1 .or. riemann_solver == 4) then
    +
    2373
    +
    2374# 1308 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2375#if defined(MFC_OpenACC)
    +
    2376# 1308 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2377!$acc loop seq
    +
    2378# 1308 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2379#elif defined(MFC_OpenMP)
    +
    2380# 1308 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2381
    +
    2382# 1308 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2383#endif
    +
    2384 do i = advxb, advxe
    +
    2385 fk_vf(j, k, l, i) = 0._wp
    +
    2386 fk_src_vf(j, k, l, i) = alpha_k(i - e_idx)
    +
    2387 end do
    +
    2388
    +
    2389 else
    +
    2390 ! Could be bubbles_euler!
    +
    2391
    +
    2392# 1316 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2393#if defined(MFC_OpenACC)
    +
    2394# 1316 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2395!$acc loop seq
    +
    2396# 1316 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2397#elif defined(MFC_OpenMP)
    +
    2398# 1316 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2399
    +
    2400# 1316 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2401#endif
    +
    2402 do i = advxb, advxe
    +
    2403 fk_vf(j, k, l, i) = vel_k(dir_idx(1))*alpha_k(i - e_idx)
    +
    2404 end do
    +
    2405
    2406
    -
    2407
    -
    2408# 1322 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2409#if defined(MFC_OpenACC)
    -
    2410# 1322 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2411!$acc loop seq
    -
    2412# 1322 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2413#elif defined(MFC_OpenMP)
    -
    2414# 1322 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2415
    -
    2416# 1322 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2417#endif
    -
    2418 do i = advxb, advxe
    -
    2419 fk_src_vf(j, k, l, i) = vel_k(dir_idx(1))
    -
    2420 end do
    -
    2421
    -
    2422 end if
    -
    2423
    -
    2424 end do
    -
    2425 end do
    -
    2426 end do
    -
    2427
    -
    2428# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2429
    -
    2430# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2431#if defined(MFC_OpenACC)
    -
    2432# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2433!$acc end parallel loop
    -
    2434# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2435#elif defined(MFC_OpenMP)
    -
    2436# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2437
    -
    2438# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2439
    -
    2440# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2441!$omp end target teams loop
    -
    2442# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2443#endif
    -
    2444# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2445
    -
    2446#endif
    +
    2407# 1321 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2408#if defined(MFC_OpenACC)
    +
    2409# 1321 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2410!$acc loop seq
    +
    2411# 1321 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2412#elif defined(MFC_OpenMP)
    +
    2413# 1321 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2414
    +
    2415# 1321 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2416#endif
    +
    2417 do i = advxb, advxe
    +
    2418 fk_src_vf(j, k, l, i) = vel_k(dir_idx(1))
    +
    2419 end do
    +
    2420
    +
    2421 end if
    +
    2422
    +
    2423 end do
    +
    2424 end do
    +
    2425 end do
    +
    2426
    +
    2427# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2428
    +
    2429# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2430#if defined(MFC_OpenACC)
    +
    2431# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2432!$acc end parallel loop
    +
    2433# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2434#elif defined(MFC_OpenMP)
    +
    2435# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2436
    +
    2437# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2438
    +
    2439# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2440!$omp end target teams loop
    +
    2441# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2442#endif
    +
    2443# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2444
    +
    2445#endif
    - -
    2448
    -
    2449 !> This subroutine computes partial densities and volume fractions
    -
    -
    2450 subroutine s_compute_species_fraction(q_vf, k, l, r, alpha_rho_K, alpha_K)
    -
    2451
    -
    2452# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2453#ifdef _CRAYFTN
    -
    2454# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2455!DIR$ INLINEALWAYS s_compute_species_fraction
    -
    2456# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2457#elif MFC_OpenACC
    -
    2458# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2459!$acc routine seq
    -
    2460# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2461#elif MFC_OpenMP
    -
    2462# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2463
    -
    2464# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2465
    -
    2466# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2467!$omp declare target device_type(any)
    -
    2468# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2469#endif
    -
    2470# 1340 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2471 type(scalar_field), dimension(sys_size), intent(in) :: q_vf
    -
    2472 integer, intent(in) :: k, l, r
    -
    2473# 1345 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2474 real(wp), dimension(num_fluids), intent(out) :: alpha_rho_k, alpha_k
    -
    2475# 1347 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2476 integer :: i
    -
    2477 real(wp) :: alpha_k_sum
    -
    2478
    -
    2479 if (num_fluids == 1) then
    -
    2480 alpha_rho_k(1) = q_vf(contxb)%sf(k, l, r)
    -
    2481 if (igr .or. bubbles_euler) then
    -
    2482 alpha_k(1) = 1._wp
    -
    2483 else
    -
    2484 alpha_k(1) = q_vf(advxb)%sf(k, l, r)
    -
    2485 end if
    -
    2486 else
    -
    2487 if (igr) then
    -
    2488 do i = 1, num_fluids - 1
    -
    2489 alpha_rho_k(i) = q_vf(i)%sf(k, l, r)
    -
    2490 alpha_k(i) = q_vf(advxb + i - 1)%sf(k, l, r)
    -
    2491 end do
    -
    2492 alpha_rho_k(num_fluids) = q_vf(num_fluids)%sf(k, l, r)
    -
    2493 alpha_k(num_fluids) = 1._wp - sum(alpha_k(1:num_fluids - 1))
    -
    2494 else
    -
    2495 do i = 1, num_fluids
    -
    2496 alpha_rho_k(i) = q_vf(i)%sf(k, l, r)
    -
    2497 alpha_k(i) = q_vf(advxb + i - 1)%sf(k, l, r)
    -
    2498 end do
    -
    2499 end if
    -
    2500 end if
    -
    2501
    -
    2502 if (mpp_lim) then
    -
    2503 alpha_k_sum = 0._wp
    -
    2504 do i = 1, num_fluids
    -
    2505 alpha_rho_k(i) = max(0._wp, alpha_rho_k(i))
    -
    2506 alpha_k(i) = min(max(0._wp, alpha_k(i)), 1._wp)
    -
    2507 alpha_k_sum = alpha_k_sum + alpha_k(i)
    -
    2508 end do
    -
    2509 alpha_k = alpha_k/max(alpha_k_sum, 1.e-16_wp)
    -
    2510 end if
    -
    2511
    -
    2512 if (num_fluids == 1 .and. bubbles_euler) alpha_k(1) = q_vf(advxb)%sf(k, l, r)
    -
    2513
    + +
    2447
    +
    2448 !> This subroutine computes partial densities and volume fractions
    +
    +
    2449 subroutine s_compute_species_fraction(q_vf, k, l, r, alpha_rho_K, alpha_K)
    +
    2450
    +
    2451# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2452#ifdef _CRAYFTN
    +
    2453# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2454!DIR$ INLINEALWAYS s_compute_species_fraction
    +
    2455# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2456#elif MFC_OpenACC
    +
    2457# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2458!$acc routine seq
    +
    2459# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2460#elif MFC_OpenMP
    +
    2461# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2462
    +
    2463# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2464
    +
    2465# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2466!$omp declare target device_type(any)
    +
    2467# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2468#endif
    +
    2469# 1339 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2470 type(scalar_field), dimension(sys_size), intent(in) :: q_vf
    +
    2471 integer, intent(in) :: k, l, r
    +
    2472# 1344 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2473 real(wp), dimension(num_fluids), intent(out) :: alpha_rho_k, alpha_k
    +
    2474# 1346 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2475 integer :: i
    +
    2476 real(wp) :: alpha_k_sum
    +
    2477
    +
    2478 if (num_fluids == 1) then
    +
    2479 alpha_rho_k(1) = q_vf(contxb)%sf(k, l, r)
    +
    2480 if (igr .or. bubbles_euler) then
    +
    2481 alpha_k(1) = 1._wp
    +
    2482 else
    +
    2483 alpha_k(1) = q_vf(advxb)%sf(k, l, r)
    +
    2484 end if
    +
    2485 else
    +
    2486 if (igr) then
    +
    2487 do i = 1, num_fluids - 1
    +
    2488 alpha_rho_k(i) = q_vf(i)%sf(k, l, r)
    +
    2489 alpha_k(i) = q_vf(advxb + i - 1)%sf(k, l, r)
    +
    2490 end do
    +
    2491 alpha_rho_k(num_fluids) = q_vf(num_fluids)%sf(k, l, r)
    +
    2492 alpha_k(num_fluids) = 1._wp - sum(alpha_k(1:num_fluids - 1))
    +
    2493 else
    +
    2494 do i = 1, num_fluids
    +
    2495 alpha_rho_k(i) = q_vf(i)%sf(k, l, r)
    +
    2496 alpha_k(i) = q_vf(advxb + i - 1)%sf(k, l, r)
    +
    2497 end do
    +
    2498 end if
    +
    2499 end if
    +
    2500
    +
    2501 if (mpp_lim) then
    +
    2502 alpha_k_sum = 0._wp
    +
    2503 do i = 1, num_fluids
    +
    2504 alpha_rho_k(i) = max(0._wp, alpha_rho_k(i))
    +
    2505 alpha_k(i) = min(max(0._wp, alpha_k(i)), 1._wp)
    +
    2506 alpha_k_sum = alpha_k_sum + alpha_k(i)
    +
    2507 end do
    +
    2508 alpha_k = alpha_k/max(alpha_k_sum, 1.e-16_wp)
    +
    2509 end if
    +
    2510
    +
    2511 if (num_fluids == 1 .and. bubbles_euler) alpha_k(1) = q_vf(advxb)%sf(k, l, r)
    +
    2512
    -
    2514 end subroutine s_compute_species_fraction
    -
    2515
    -
    2516 !> @brief Deallocates fluid property arrays and post-processing fields allocated during module initialization.
    -
    - -
    2518
    -
    2519 ! Deallocating the density, the specific heat ratio function and the
    -
    2520 ! liquid stiffness function
    -
    2521#ifdef MFC_POST_PROCESS
    -
    2522 deallocate (rho_sf, gamma_sf, pi_inf_sf, qv_sf)
    -
    2523#endif
    -
    2524
    -
    2525#ifdef MFC_SIMULATION
    -
    2526#ifdef MFC_DEBUG
    -
    2527# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2528 block
    -
    2529# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2530 use iso_fortran_env, only: output_unit
    -
    2531# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2532
    -
    2533# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2534 print *, 'm_variables_conversion.fpp:1397: ', '@:DEALLOCATE(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)'
    -
    2535# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2536
    -
    2537# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2538 call flush (output_unit)
    -
    2539# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2540 end block
    -
    2541# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2542#endif
    -
    2543# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2544
    -
    2545# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2546#if defined(MFC_OpenACC)
    -
    2547# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2548!$acc exit data delete(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    -
    2549# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2550#elif defined(MFC_OpenMP)
    -
    2551# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2552!$omp target exit data map(release:gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    -
    2553# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2554#endif
    -
    2555# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2556 deallocate (gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, gs_vc)
    -
    2557 if (bubbles_euler) then
    -
    2558#ifdef MFC_DEBUG
    -
    2559# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2560 block
    -
    2561# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2562 use iso_fortran_env, only: output_unit
    -
    2563# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2564
    -
    2565# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2566 print *, 'm_variables_conversion.fpp:1399: ', '@:DEALLOCATE(bubrs_vc)'
    -
    2567# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2568
    -
    2569# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2570 call flush (output_unit)
    -
    2571# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2572 end block
    -
    2573# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2574#endif
    -
    2575# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2576
    -
    2577# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2578#if defined(MFC_OpenACC)
    -
    2579# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2580!$acc exit data delete(bubrs_vc)
    -
    2581# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2582#elif defined(MFC_OpenMP)
    -
    2583# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2584!$omp target exit data map(release:bubrs_vc)
    -
    2585# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2586#endif
    -
    2587# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2588 deallocate (bubrs_vc)
    -
    2589 end if
    -
    2590#else
    -
    2591#ifdef MFC_DEBUG
    -
    2592# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2593 block
    -
    2594# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2595 use iso_fortran_env, only: output_unit
    -
    2596# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2597
    -
    2598# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2599 print *, 'm_variables_conversion.fpp:1402: ', '@:DEALLOCATE(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)'
    -
    2600# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2601
    -
    2602# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2603 call flush (output_unit)
    -
    2604# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2605 end block
    -
    2606# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2607#endif
    -
    2608# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2609
    -
    2610# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2611#if defined(MFC_OpenACC)
    -
    2612# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2613!$acc exit data delete(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    -
    2614# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2615#elif defined(MFC_OpenMP)
    -
    2616# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2617!$omp target exit data map(release:gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    -
    2618# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2619#endif
    -
    2620# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2621 deallocate (gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, gs_vc)
    -
    2622 if (bubbles_euler) then
    -
    2623#ifdef MFC_DEBUG
    -
    2624# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2625 block
    -
    2626# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2627 use iso_fortran_env, only: output_unit
    -
    2628# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2629
    -
    2630# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2631 print *, 'm_variables_conversion.fpp:1404: ', '@:DEALLOCATE(bubrs_vc)'
    -
    2632# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2633
    -
    2634# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2635 call flush (output_unit)
    -
    2636# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2637 end block
    -
    2638# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2639#endif
    -
    2640# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2641
    -
    2642# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2643#if defined(MFC_OpenACC)
    -
    2644# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2645!$acc exit data delete(bubrs_vc)
    -
    2646# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2647#elif defined(MFC_OpenMP)
    -
    2648# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2649!$omp target exit data map(release:bubrs_vc)
    -
    2650# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2651#endif
    -
    2652# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2653 deallocate (bubrs_vc)
    -
    2654 end if
    -
    2655#endif
    -
    2656
    +
    2513 end subroutine s_compute_species_fraction
    +
    2514
    +
    2515 !> @brief Deallocates fluid property arrays and post-processing fields allocated during module initialization.
    +
    + +
    2517
    +
    2518 ! Deallocating the density, the specific heat ratio function and the
    +
    2519 ! liquid stiffness function
    +
    2520#ifdef MFC_POST_PROCESS
    +
    2521 deallocate (rho_sf, gamma_sf, pi_inf_sf, qv_sf)
    +
    2522#endif
    +
    2523
    +
    2524#ifdef MFC_SIMULATION
    +
    2525#ifdef MFC_DEBUG
    +
    2526# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2527 block
    +
    2528# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2529 use iso_fortran_env, only: output_unit
    +
    2530# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2531
    +
    2532# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2533 print *, 'm_variables_conversion.fpp:1396: ', '@:DEALLOCATE(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)'
    +
    2534# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2535
    +
    2536# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2537 call flush (output_unit)
    +
    2538# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2539 end block
    +
    2540# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2541#endif
    +
    2542# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2543
    +
    2544# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2545#if defined(MFC_OpenACC)
    +
    2546# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2547!$acc exit data delete(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    +
    2548# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2549#elif defined(MFC_OpenMP)
    +
    2550# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2551!$omp target exit data map(release:gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    +
    2552# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2553#endif
    +
    2554# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2555 deallocate (gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, gs_vc)
    +
    2556 if (bubbles_euler) then
    +
    2557#ifdef MFC_DEBUG
    +
    2558# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2559 block
    +
    2560# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2561 use iso_fortran_env, only: output_unit
    +
    2562# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2563
    +
    2564# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2565 print *, 'm_variables_conversion.fpp:1398: ', '@:DEALLOCATE(bubrs_vc)'
    +
    2566# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2567
    +
    2568# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2569 call flush (output_unit)
    +
    2570# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2571 end block
    +
    2572# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2573#endif
    +
    2574# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2575
    +
    2576# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2577#if defined(MFC_OpenACC)
    +
    2578# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2579!$acc exit data delete(bubrs_vc)
    +
    2580# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2581#elif defined(MFC_OpenMP)
    +
    2582# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2583!$omp target exit data map(release:bubrs_vc)
    +
    2584# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2585#endif
    +
    2586# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2587 deallocate (bubrs_vc)
    +
    2588 end if
    +
    2589#else
    +
    2590#ifdef MFC_DEBUG
    +
    2591# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2592 block
    +
    2593# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2594 use iso_fortran_env, only: output_unit
    +
    2595# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2596
    +
    2597# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2598 print *, 'm_variables_conversion.fpp:1401: ', '@:DEALLOCATE(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)'
    +
    2599# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2600
    +
    2601# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2602 call flush (output_unit)
    +
    2603# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2604 end block
    +
    2605# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2606#endif
    +
    2607# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2608
    +
    2609# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2610#if defined(MFC_OpenACC)
    +
    2611# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2612!$acc exit data delete(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    +
    2613# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2614#elif defined(MFC_OpenMP)
    +
    2615# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2616!$omp target exit data map(release:gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    +
    2617# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2618#endif
    +
    2619# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2620 deallocate (gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, gs_vc)
    +
    2621 if (bubbles_euler) then
    +
    2622#ifdef MFC_DEBUG
    +
    2623# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2624 block
    +
    2625# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2626 use iso_fortran_env, only: output_unit
    +
    2627# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2628
    +
    2629# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2630 print *, 'm_variables_conversion.fpp:1403: ', '@:DEALLOCATE(bubrs_vc)'
    +
    2631# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2632
    +
    2633# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2634 call flush (output_unit)
    +
    2635# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2636 end block
    +
    2637# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2638#endif
    +
    2639# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2640
    +
    2641# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2642#if defined(MFC_OpenACC)
    +
    2643# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2644!$acc exit data delete(bubrs_vc)
    +
    2645# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2646#elif defined(MFC_OpenMP)
    +
    2647# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2648!$omp target exit data map(release:bubrs_vc)
    +
    2649# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2650#endif
    +
    2651# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2652 deallocate (bubrs_vc)
    +
    2653 end if
    +
    2654#endif
    +
    2655
    - -
    2658
    -
    2659#ifndef MFC_PRE_PROCESS
    -
    2660 !> @brief Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state models.
    -
    -
    2661 subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, H, adv, vel_sum, c_c, c, qv)
    -
    2662
    -
    2663# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2664#if MFC_OpenACC
    -
    2665# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2666!$acc routine seq
    -
    2667# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2668#elif MFC_OpenMP
    -
    2669# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2670
    -
    2671# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2672
    -
    2673# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2674!$omp declare target device_type(any)
    -
    2675# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2676#endif
    -
    2677
    -
    2678 real(wp), intent(in) :: pres
    -
    2679 real(wp), intent(in) :: rho, gamma, pi_inf, qv
    -
    2680 real(wp), intent(in) :: H
    -
    2681# 1421 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2682 real(wp), dimension(num_fluids), intent(in) :: adv
    -
    2683# 1423 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2684 real(wp), intent(in) :: vel_sum
    -
    2685 real(wp), intent(in) :: c_c
    -
    2686 real(wp), intent(out) :: c
    -
    2687
    -
    2688 real(wp) :: blkmod1, blkmod2
    -
    2689
    -
    2690 integer :: q
    -
    2691
    -
    2692 if (chemistry) then
    -
    2693 if (avg_state == 1 .and. abs(c_c) > verysmall) then
    -
    2694 c = sqrt(c_c - (gamma - 1.0_wp)*(vel_sum - h))
    -
    2695 else
    -
    2696 c = sqrt((1.0_wp + 1.0_wp/gamma)*pres/rho)
    -
    2697 end if
    -
    2698 elseif (relativity) then
    -
    2699 ! Only supports perfect gas for now
    -
    2700 c = sqrt((1._wp + 1._wp/gamma)*pres/rho/h)
    -
    2701 else
    -
    2702 if (alt_soundspeed) then
    -
    2703 blkmod1 = ((gammas(1) + 1._wp)*pres + &
    -
    2704 pi_infs(1))/gammas(1)
    -
    2705 blkmod2 = ((gammas(2) + 1._wp)*pres + &
    -
    2706 pi_infs(2))/gammas(2)
    -
    2707 c = (1._wp/(rho*(adv(1)/blkmod1 + adv(2)/blkmod2)))
    -
    2708 elseif (model_eqns == 3) then
    -
    2709 c = 0._wp
    -
    2710
    -
    2711# 1449 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2712#if defined(MFC_OpenACC)
    -
    2713# 1449 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2714!$acc loop seq
    -
    2715# 1449 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2716#elif defined(MFC_OpenMP)
    -
    2717# 1449 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2718
    -
    2719# 1449 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2720#endif
    -
    2721 do q = 1, num_fluids
    -
    2722 c = c + adv(q)*gs_min(q)* &
    -
    2723 (pres + pi_infs(q)/(gammas(q) + 1._wp))
    -
    2724 end do
    -
    2725 c = c/rho
    -
    2726 elseif (((model_eqns == 4) .or. (model_eqns == 2 .and. bubbles_euler))) then
    -
    2727 ! Sound speed for bubble mixture to order O(\alpha)
    -
    2728
    -
    2729 if (mpp_lim .and. (num_fluids > 1)) then
    -
    2730 c = (1._wp/gamma + 1._wp)* &
    -
    2731 (pres + pi_inf/(gamma + 1._wp))/rho
    -
    2732 else
    -
    2733 c = &
    -
    2734 (1._wp/gamma + 1._wp)* &
    -
    2735 (pres + pi_inf/(gamma + 1._wp))/ &
    -
    2736 (rho*(1._wp - adv(num_fluids)))
    -
    2737 end if
    -
    2738 else
    -
    2739 c = (h - 5.e-1*vel_sum - qv/rho)/gamma
    -
    2740 end if
    -
    2741
    -
    2742 if (mixture_err .and. c < 0._wp) then
    -
    2743 c = 100._wp*sgm_eps
    -
    2744 else
    -
    2745 c = sqrt(c)
    -
    2746 end if
    -
    2747 end if
    + +
    2657
    +
    2658#ifndef MFC_PRE_PROCESS
    +
    2659 !> @brief Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state models.
    +
    +
    2660 subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, H, adv, vel_sum, c_c, c, qv)
    +
    2661
    +
    2662# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2663#if MFC_OpenACC
    +
    2664# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2665!$acc routine seq
    +
    2666# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2667#elif MFC_OpenMP
    +
    2668# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2669
    +
    2670# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2671
    +
    2672# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2673!$omp declare target device_type(any)
    +
    2674# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2675#endif
    +
    2676
    +
    2677 real(wp), intent(in) :: pres
    +
    2678 real(wp), intent(in) :: rho, gamma, pi_inf, qv
    +
    2679 real(wp), intent(in) :: H
    +
    2680# 1420 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2681 real(wp), dimension(num_fluids), intent(in) :: adv
    +
    2682# 1422 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2683 real(wp), intent(in) :: vel_sum
    +
    2684 real(wp), intent(in) :: c_c
    +
    2685 real(wp), intent(out) :: c
    +
    2686
    +
    2687 real(wp) :: blkmod1, blkmod2
    +
    2688
    +
    2689 integer :: q
    +
    2690
    +
    2691 if (chemistry) then
    +
    2692 if (avg_state == 1 .and. abs(c_c) > verysmall) then
    +
    2693 c = sqrt(c_c - (gamma - 1.0_wp)*(vel_sum - h))
    +
    2694 else
    +
    2695 c = sqrt((1.0_wp + 1.0_wp/gamma)*pres/rho)
    +
    2696 end if
    +
    2697 elseif (relativity) then
    +
    2698 ! Only supports perfect gas for now
    +
    2699 c = sqrt((1._wp + 1._wp/gamma)*pres/rho/h)
    +
    2700 else
    +
    2701 if (alt_soundspeed) then
    +
    2702 blkmod1 = ((gammas(1) + 1._wp)*pres + &
    +
    2703 pi_infs(1))/gammas(1)
    +
    2704 blkmod2 = ((gammas(2) + 1._wp)*pres + &
    +
    2705 pi_infs(2))/gammas(2)
    +
    2706 c = (1._wp/(rho*(adv(1)/blkmod1 + adv(2)/blkmod2)))
    +
    2707 elseif (model_eqns == 3) then
    +
    2708 c = 0._wp
    +
    2709
    +
    2710# 1448 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2711#if defined(MFC_OpenACC)
    +
    2712# 1448 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2713!$acc loop seq
    +
    2714# 1448 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2715#elif defined(MFC_OpenMP)
    +
    2716# 1448 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2717
    +
    2718# 1448 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2719#endif
    +
    2720 do q = 1, num_fluids
    +
    2721 c = c + adv(q)*gs_min(q)* &
    +
    2722 (pres + pi_infs(q)/(gammas(q) + 1._wp))
    +
    2723 end do
    +
    2724 c = c/rho
    +
    2725 elseif (((model_eqns == 4) .or. (model_eqns == 2 .and. bubbles_euler))) then
    +
    2726 ! Sound speed for bubble mixture to order O(\alpha)
    +
    2727
    +
    2728 if (mpp_lim .and. (num_fluids > 1)) then
    +
    2729 c = (1._wp/gamma + 1._wp)* &
    +
    2730 (pres + pi_inf/(gamma + 1._wp))/rho
    +
    2731 else
    +
    2732 c = &
    +
    2733 (1._wp/gamma + 1._wp)* &
    +
    2734 (pres + pi_inf/(gamma + 1._wp))/ &
    +
    2735 (rho*(1._wp - adv(num_fluids)))
    +
    2736 end if
    +
    2737 else
    +
    2738 c = (h - 5.e-1*vel_sum - qv/rho)/gamma
    +
    2739 end if
    +
    2740
    +
    2741 if (mixture_err .and. c < 0._wp) then
    +
    2742 c = 100._wp*sgm_eps
    +
    2743 else
    +
    2744 c = sqrt(c)
    +
    2745 end if
    +
    2746 end if
    -
    2748 end subroutine s_compute_speed_of_sound
    -
    2749#endif
    -
    2750
    -
    2751#ifndef MFC_PRE_PROCESS
    -
    2752 !> @brief Computes the fast magnetosonic wave speed from the sound speed, density, and magnetic field components.
    -
    -
    2753 subroutine s_compute_fast_magnetosonic_speed(rho, c, B, norm, c_fast, h)
    -
    2754
    -
    2755# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2756#ifdef _CRAYFTN
    -
    2757# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2758!DIR$ INLINEALWAYS s_compute_fast_magnetosonic_speed
    -
    2759# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2760#elif MFC_OpenACC
    -
    2761# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2762!$acc routine seq
    -
    2763# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2764#elif MFC_OpenMP
    -
    2765# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2766
    -
    2767# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2768
    -
    2769# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2770!$omp declare target device_type(any)
    -
    2771# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2772#endif
    -
    2773# 1485 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2774
    -
    2775 real(wp), intent(in) :: B(3), rho, c
    -
    2776 real(wp), intent(in) :: h ! only used for relativity
    -
    2777 real(wp), intent(out) :: c_fast
    -
    2778 integer, intent(in) :: norm
    -
    2779
    -
    2780 real(wp) :: B2, term, disc
    -
    2781
    -
    2782 b2 = sum(b**2)
    -
    2783
    -
    2784 if (.not. relativity) then
    -
    2785 term = c**2 + b2/rho
    -
    2786 disc = term**2 - 4*c**2*(b(norm)**2/rho)
    -
    2787 else
    -
    2788 ! Note: this is approximation for the non-relatisitic limit; accurate solution requires solving a quartic equation
    -
    2789 term = (c**2*(b(norm)**2 + rho*h) + b2)/(rho*h + b2)
    -
    2790 disc = term**2 - 4*c**2*b(norm)**2/(rho*h + b2)
    -
    2791 end if
    -
    2792
    -
    2793#ifdef DEBUG
    -
    2794 if (disc < 0._wp) then
    -
    2795 print *, 'rho, c, Bx, By, Bz, h, term, disc:', rho, c, b(1), b(2), b(3), h, term, disc
    -
    2796 call s_mpi_abort('Error: negative discriminant in s_compute_fast_magnetosonic_speed')
    -
    2797 end if
    -
    2798#endif
    -
    2799
    -
    2800 c_fast = sqrt(0.5_wp*(term + sqrt(disc)))
    -
    2801
    +
    2747 end subroutine s_compute_speed_of_sound
    +
    2748#endif
    +
    2749
    +
    2750#ifndef MFC_PRE_PROCESS
    +
    2751 !> @brief Computes the fast magnetosonic wave speed from the sound speed, density, and magnetic field components.
    +
    +
    2752 subroutine s_compute_fast_magnetosonic_speed(rho, c, B, norm, c_fast, h)
    +
    2753
    +
    2754# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2755#ifdef _CRAYFTN
    +
    2756# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2757!DIR$ INLINEALWAYS s_compute_fast_magnetosonic_speed
    +
    2758# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2759#elif MFC_OpenACC
    +
    2760# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2761!$acc routine seq
    +
    2762# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2763#elif MFC_OpenMP
    +
    2764# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2765
    +
    2766# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2767
    +
    2768# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2769!$omp declare target device_type(any)
    +
    2770# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2771#endif
    +
    2772# 1484 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2773
    +
    2774 real(wp), intent(in) :: B(3), rho, c
    +
    2775 real(wp), intent(in) :: h ! only used for relativity
    +
    2776 real(wp), intent(out) :: c_fast
    +
    2777 integer, intent(in) :: norm
    +
    2778
    +
    2779 real(wp) :: B2, term, disc
    +
    2780
    +
    2781 b2 = sum(b**2)
    +
    2782
    +
    2783 if (.not. relativity) then
    +
    2784 term = c**2 + b2/rho
    +
    2785 disc = term**2 - 4*c**2*(b(norm)**2/rho)
    +
    2786 else
    +
    2787 ! Note: this is approximation for the non-relatisitic limit; accurate solution requires solving a quartic equation
    +
    2788 term = (c**2*(b(norm)**2 + rho*h) + b2)/(rho*h + b2)
    +
    2789 disc = term**2 - 4*c**2*b(norm)**2/(rho*h + b2)
    +
    2790 end if
    +
    2791
    +
    2792#ifdef DEBUG
    +
    2793 if (disc < 0._wp) then
    +
    2794 print *, 'rho, c, Bx, By, Bz, h, term, disc:', rho, c, b(1), b(2), b(3), h, term, disc
    +
    2795 call s_mpi_abort('Error: negative discriminant in s_compute_fast_magnetosonic_speed')
    +
    2796 end if
    +
    2797#endif
    +
    2798
    +
    2799 c_fast = sqrt(0.5_wp*(term + sqrt(disc)))
    +
    2800
    - -
    2803#endif
    -
    2804
    -
    2805end module m_variables_conversion
    + +
    2802#endif
    +
    2803
    +
    2804end module m_variables_conversion
    type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
    integer, intent(in) k
    integer, intent(in) j
    @@ -2994,13 +2993,13 @@
    Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
    MPI gather and scatter operations for distributing post-process grid and flow-variable data.
    Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
    -
    subroutine s_compute_fast_magnetosonic_speed(rho, c, b, norm, c_fast, h)
    Computes the fast magnetosonic wave speed from the sound speed, density, and magnetic field component...
    -
    subroutine, public s_convert_primitive_to_flux_variables(qk_prim_vf, fk_vf, fk_src_vf, is1, is2, is3, s2b, s3b)
    The following subroutine handles the conversion between the primitive variables and the Eulerian flux...
    +
    subroutine s_compute_fast_magnetosonic_speed(rho, c, b, norm, c_fast, h)
    Computes the fast magnetosonic wave speed from the sound speed, density, and magnetic field component...
    +
    subroutine, public s_convert_primitive_to_flux_variables(qk_prim_vf, fk_vf, fk_src_vf, is1, is2, is3, s2b, s3b)
    The following subroutine handles the conversion between the primitive variables and the Eulerian flux...
    real(wp), dimension(:), allocatable, public gammas
    real(wp), dimension(:, :, :), allocatable, public pi_inf_sf
    Scalar liquid stiffness function.
    real(wp), dimension(:), allocatable, public ps_inf
    -
    subroutine, public s_compute_species_fraction(q_vf, k, l, r, alpha_rho_k, alpha_k)
    This subroutine computes partial densities and volume fractions.
    -
    subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, h, adv, vel_sum, c_c, c, qv)
    Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state...
    +
    subroutine, public s_compute_species_fraction(q_vf, k, l, r, alpha_rho_k, alpha_k)
    This subroutine computes partial densities and volume fractions.
    +
    subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, h, adv, vel_sum, c_c, c, qv)
    Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state...
    real(wp), dimension(:), allocatable, public gs_min
    real(wp), dimension(:), allocatable, public qvs
    @@ -3025,7 +3024,7 @@
    integer, dimension(:), allocatable bubrs_vc
    real(wp), dimension(:), allocatable gs_vc
    -
    impure subroutine s_finalize_variables_conversion_module()
    Deallocates fluid property arrays and post-processing fields allocated during module initialization.
    +
    impure subroutine s_finalize_variables_conversion_module()
    Deallocates fluid property arrays and post-processing fields allocated during module initialization.
    subroutine, public s_convert_to_mixture_variables(q_vf, i, j, k, rho, gamma, pi_inf, qv, re_k, g_k, g)
    Dispatch to the s_convert_mixture_to_mixture_variables and s_convert_species_to_mixture_variables sub...
    subroutine, public s_convert_species_to_mixture_variables_acc(rho_k, gamma_k, pi_inf_k, qv_k, alpha_k, alpha_rho_k, re_k, g_k, g)
    GPU-accelerated conversion of species volume fractions and partial densities to mixture density,...
    diff --git a/post_process/namespacem__mpi__common.html b/post_process/namespacem__mpi__common.html index cb1d71c46..ff169176d 100644 --- a/post_process/namespacem__mpi__common.html +++ b/post_process/namespacem__mpi__common.html @@ -257,7 +257,7 @@

    Definition at line 3030 of file m_mpi_common.fpp.f90.

    +

    Definition at line 3028 of file m_mpi_common.fpp.f90.

    @@ -796,7 +796,7 @@

    Definition at line 2853 of file m_mpi_common.fpp.f90.

    +

    Definition at line 2851 of file m_mpi_common.fpp.f90.

    @@ -853,6 +853,11 @@

    Definition at line 1035 of file m_mpi_common.fpp.f90.

    +
    +Here is the call graph for this function:
    +
    +
    +

    diff --git a/post_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.map b/post_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.map index ef14768e7..4da403340 100644 --- a/post_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.map +++ b/post_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.map @@ -1,38 +1,40 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/post_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.md5 b/post_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.md5 index 7bcd177f8..b3588baec 100644 --- a/post_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.md5 +++ b/post_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.md5 @@ -1 +1 @@ -4d9e145e19045a77a39137be688d23d9 \ No newline at end of file +24d3910d80a0dcf201da7d79b497998e \ No newline at end of file diff --git a/post_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.svg b/post_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.svg index 03a9b5758..f38cbdca9 100644 --- a/post_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.svg +++ b/post_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.svg @@ -4,7 +4,7 @@ - + @@ -48,7 +48,7 @@ @@ -59,9 +59,9 @@ var sectionId = 'dynsection-3'; Node1 - -m_mpi_common::s_mpi -_abort + +m_mpi_common::s_mpi +_abort @@ -69,9 +69,9 @@ var sectionId = 'dynsection-3'; Node2 - -m_start_up::s_check -_input_file + +m_start_up::s_check +_input_file @@ -79,8 +79,8 @@ var sectionId = 'dynsection-3'; Node1->Node2 - - + + @@ -88,10 +88,10 @@ var sectionId = 'dynsection-3'; Node5 - -m_mpi_common::s_mpi -_decompose_computational -_domain + +m_mpi_common::s_mpi +_decompose_computational +_domain @@ -99,18 +99,19 @@ var sectionId = 'dynsection-3'; Node1->Node5 - - + + Node6 - - -m_mpi_common::s_prohibit -_abort + + +m_mpi_common::s_mpi +_sendrecv_variables +_buffers @@ -118,18 +119,18 @@ var sectionId = 'dynsection-3'; Node1->Node6 - - + + Node7 - - -m_data_input::s_read -_grid_data_direction + + +m_mpi_common::s_prohibit +_abort @@ -137,75 +138,75 @@ var sectionId = 'dynsection-3'; Node1->Node7 - - + + Node8 - - -m_data_input::s_read -_serial_data_files + + +m_data_input::s_read +_grid_data_direction - + Node1->Node8 - - - + + + - - -Node11 - - -m_data_input::s_read -_ib_data_files + + +Node9 + + +m_data_input::s_read +_serial_data_files - - -Node1->Node11 - - - + + +Node1->Node9 + + + Node12 - - -m_data_input::s_read -_parallel_conservative_data + + +m_data_input::s_read +_ib_data_files - + Node1->Node12 - - - + + + Node13 - - -m_data_input::s_read -_parallel_data_files + + +m_data_input::s_read +_parallel_conservative_data @@ -213,27 +214,46 @@ var sectionId = 'dynsection-3'; Node1->Node13 - - + + Node14 - - -m_start_up::s_read -_input_file + + +m_data_input::s_read +_parallel_data_files - + Node1->Node14 - - - + + + + + + + + +Node15 + + +m_start_up::s_read +_input_file + + + + + +Node1->Node15 + + + @@ -241,9 +261,9 @@ var sectionId = 'dynsection-3'; Node3 - -m_start_up::s_initialize -_mpi_domain + +m_start_up::s_initialize +_mpi_domain @@ -251,8 +271,8 @@ var sectionId = 'dynsection-3'; Node2->Node3 - - + + @@ -260,8 +280,8 @@ var sectionId = 'dynsection-3'; Node4 - -p_main + +p_main @@ -269,27 +289,8 @@ var sectionId = 'dynsection-3'; Node3->Node4 - - - - - - - -Node7->Node8 - - - - - - - - -Node9 - - -m_data_input::s_initialize -_data_input_module + + @@ -297,27 +298,18 @@ var sectionId = 'dynsection-3'; Node8->Node9 - - + + Node10 - - -m_start_up::s_initialize -_modules - - - - - -Node8->Node10 - - - + + +m_data_input::s_initialize +_data_input_module @@ -325,35 +317,54 @@ var sectionId = 'dynsection-3'; Node9->Node10 - - + + + + + + + +Node11 + + +m_start_up::s_initialize +_modules - - -Node10->Node4 - - - + + +Node9->Node11 + + + - - -Node11->Node8 - - - + + +Node10->Node11 + + + - - -Node11->Node12 - - - + + +Node11->Node4 + + + + + + + + +Node12->Node9 + + + @@ -361,35 +372,44 @@ var sectionId = 'dynsection-3'; Node12->Node13 - - + + + + + + + +Node13->Node14 + + + - - -Node13->Node9 - - - + + +Node14->Node10 + + + - - -Node13->Node10 - - - + + +Node14->Node11 + + + - - -Node14->Node3 - - - + + +Node15->Node3 + + + diff --git a/post_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph_org.svg b/post_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph_org.svg index bd49d745b..6a1f34f9d 100644 --- a/post_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph_org.svg +++ b/post_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph_org.svg @@ -4,17 +4,17 @@ - - + + m_mpi_common::s_mpi_abort Node1 - -m_mpi_common::s_mpi -_abort + +m_mpi_common::s_mpi +_abort @@ -22,9 +22,9 @@ Node2 - -m_start_up::s_check -_input_file + +m_start_up::s_check +_input_file @@ -32,8 +32,8 @@ Node1->Node2 - - + + @@ -41,10 +41,10 @@ Node5 - -m_mpi_common::s_mpi -_decompose_computational -_domain + +m_mpi_common::s_mpi +_decompose_computational +_domain @@ -52,18 +52,19 @@ Node1->Node5 - - + + Node6 - - -m_mpi_common::s_prohibit -_abort + + +m_mpi_common::s_mpi +_sendrecv_variables +_buffers @@ -71,18 +72,18 @@ Node1->Node6 - - + + Node7 - - -m_data_input::s_read -_grid_data_direction + + +m_mpi_common::s_prohibit +_abort @@ -90,75 +91,75 @@ Node1->Node7 - - + + Node8 - - -m_data_input::s_read -_serial_data_files + + +m_data_input::s_read +_grid_data_direction - + Node1->Node8 - - - + + + - - -Node11 - - -m_data_input::s_read -_ib_data_files + + +Node9 + + +m_data_input::s_read +_serial_data_files - - -Node1->Node11 - - - + + +Node1->Node9 + + + Node12 - - -m_data_input::s_read -_parallel_conservative_data + + +m_data_input::s_read +_ib_data_files - + Node1->Node12 - - - + + + Node13 - - -m_data_input::s_read -_parallel_data_files + + +m_data_input::s_read +_parallel_conservative_data @@ -166,27 +167,46 @@ Node1->Node13 - - + + Node14 - - -m_start_up::s_read -_input_file + + +m_data_input::s_read +_parallel_data_files - + Node1->Node14 - - - + + + + + + + + +Node15 + + +m_start_up::s_read +_input_file + + + + + +Node1->Node15 + + + @@ -194,9 +214,9 @@ Node3 - -m_start_up::s_initialize -_mpi_domain + +m_start_up::s_initialize +_mpi_domain @@ -204,8 +224,8 @@ Node2->Node3 - - + + @@ -213,8 +233,8 @@ Node4 - -p_main + +p_main @@ -222,27 +242,8 @@ Node3->Node4 - - - - - - - -Node7->Node8 - - - - - - - - -Node9 - - -m_data_input::s_initialize -_data_input_module + + @@ -250,27 +251,18 @@ Node8->Node9 - - + + Node10 - - -m_start_up::s_initialize -_modules - - - - - -Node8->Node10 - - - + + +m_data_input::s_initialize +_data_input_module @@ -278,35 +270,54 @@ Node9->Node10 - - + + + + + + + +Node11 + + +m_start_up::s_initialize +_modules - - -Node10->Node4 - - - + + +Node9->Node11 + + + - - -Node11->Node8 - - - + + +Node10->Node11 + + + - - -Node11->Node12 - - - + + +Node11->Node4 + + + + + + + + +Node12->Node9 + + + @@ -314,35 +325,44 @@ Node12->Node13 - - + + + + + + + +Node13->Node14 + + + - - -Node13->Node9 - - - + + +Node14->Node10 + + + - - -Node13->Node10 - - - + + +Node14->Node11 + + + - - -Node14->Node3 - - - + + +Node15->Node3 + + + diff --git a/post_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.map b/post_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.map new file mode 100644 index 000000000..cdcf1b3ab --- /dev/null +++ b/post_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/post_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.md5 b/post_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.md5 new file mode 100644 index 000000000..cbdcdb751 --- /dev/null +++ b/post_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.md5 @@ -0,0 +1 @@ +25af549a2b06a4e4df13ab03bd543174 \ No newline at end of file diff --git a/post_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.svg b/post_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.svg new file mode 100644 index 000000000..a92d8516a --- /dev/null +++ b/post_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + +m_mpi_common::s_mpi_sendrecv_variables_buffers + + +Node1 + + +m_mpi_common::s_mpi +_sendrecv_variables +_buffers + + + + + +Node2 + + +m_mpi_common::s_mpi +_abort + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/post_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph_org.svg b/post_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph_org.svg new file mode 100644 index 000000000..bbc5540cd --- /dev/null +++ b/post_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph_org.svg @@ -0,0 +1,42 @@ + + + + + + +m_mpi_common::s_mpi_sendrecv_variables_buffers + + +Node1 + + +m_mpi_common::s_mpi +_sendrecv_variables +_buffers + + + + + +Node2 + + +m_mpi_common::s_mpi +_abort + + + + + +Node1->Node2 + + + + + + + + diff --git a/post_process/namespacem__variables__conversion.html b/post_process/namespacem__variables__conversion.html index a0fb813b5..d388a0df8 100644 --- a/post_process/namespacem__variables__conversion.html +++ b/post_process/namespacem__variables__conversion.html @@ -265,7 +265,7 @@

    Definition at line 2753 of file m_variables_conversion.fpp.f90.

    +

    Definition at line 2752 of file m_variables_conversion.fpp.f90.

    @@ -419,7 +419,7 @@

    Definition at line 2450 of file m_variables_conversion.fpp.f90.

    +

    Definition at line 2449 of file m_variables_conversion.fpp.f90.

    Here is the caller graph for this function:
    @@ -489,7 +489,7 @@

    Definition at line 2661 of file m_variables_conversion.fpp.f90.

    +

    Definition at line 2660 of file m_variables_conversion.fpp.f90.

    Here is the caller graph for this function:
    @@ -726,7 +726,7 @@

    Definition at line 2140 of file m_variables_conversion.fpp.f90.

    +

    Definition at line 2139 of file m_variables_conversion.fpp.f90.

    Here is the call graph for this function:
    @@ -1006,7 +1006,7 @@

    Definition at line 2517 of file m_variables_conversion.fpp.f90.

    +

    Definition at line 2516 of file m_variables_conversion.fpp.f90.

    diff --git a/pre_process/m__data__output_8fpp_8f90_source.html b/pre_process/m__data__output_8fpp_8f90_source.html index 4488f6526..93aa9f069 100644 --- a/pre_process/m__data__output_8fpp_8f90_source.html +++ b/pre_process/m__data__output_8fpp_8f90_source.html @@ -626,330 +626,332 @@
    484 integer :: m_glb_ds, n_glb_ds, p_glb_ds
    485 integer :: m_glb_save, n_glb_save, p_glb_save ! Size of array being saved
    486
    -
    487 if (down_sample) then
    -
    488 if ((mod(m + 1, 3) > 0) .or. (mod(n + 1, 3) > 0) .or. (mod(p + 1, 3) > 0)) then
    -
    489 loc_violations = 1._wp
    -
    490 end if
    -
    491 call s_mpi_allreduce_sum(loc_violations, glb_violations)
    -
    492 if (proc_rank == 0 .and. nint(glb_violations) > 0) then
    -
    493 print *, "WARNING: Attempting to downsample data but there are"// &
    -
    494 "processors with local problem sizes that are not divisible by 3."
    -
    495 end if
    - - -
    498 m_ds, n_ds, p_ds, m_glb_ds, n_glb_ds, p_glb_ds)
    -
    499 end if
    -
    500
    -
    501 if (file_per_process) then
    -
    502 if (proc_rank == 0) then
    -
    503 file_loc = trim(case_dir)//'/restart_data/lustre_0'
    -
    504 call my_inquire(file_loc, dir_check)
    -
    505 if (dir_check .neqv. .true.) then
    -
    506 call s_create_directory(trim(file_loc))
    -
    507 end if
    -
    508 call s_create_directory(trim(file_loc))
    -
    509 end if
    -
    510 call s_mpi_barrier()
    - -
    512
    -
    513 ! Initialize MPI data I/O
    -
    514 if (down_sample) then
    -
    515 call s_initialize_mpi_data_ds(q_cons_temp)
    -
    516 else
    -
    517 call s_initialize_mpi_data(q_cons_vf)
    -
    518 end if
    -
    519
    -
    520 ! Open the file to write all flow variables
    -
    521 if (cfl_dt) then
    -
    522 write (file_loc, '(I0,A,i7.7,A)') n_start, '_', proc_rank, '.dat'
    -
    523 else
    -
    524 write (file_loc, '(I0,A,i7.7,A)') t_step_start, '_', proc_rank, '.dat'
    -
    525 end if
    -
    526 file_loc = trim(restart_dir)//'/lustre_0'//trim(mpiiofs)//trim(file_loc)
    -
    527 inquire (file=trim(file_loc), exist=file_exist)
    -
    528 if (file_exist .and. proc_rank == 0) then
    -
    529 call mpi_file_delete(file_loc, mpi_info_int, ierr)
    -
    530 end if
    -
    531 if (file_exist) call mpi_file_delete(file_loc, mpi_info_int, ierr)
    -
    532 call mpi_file_open(mpi_comm_self, file_loc, ior(mpi_mode_wronly, mpi_mode_create), &
    -
    533 mpi_info_int, ifile, ierr)
    -
    534
    -
    535 if (down_sample) then
    -
    536 ! Size of local arrays
    -
    537 data_size = (m_ds + 3)*(n_ds + 3)*(p_ds + 3)
    -
    538 m_glb_save = m_glb_ds + 3
    -
    539 n_glb_save = n_glb_ds + 3
    -
    540 p_glb_save = p_glb_ds + 3
    -
    541 else
    -
    542 ! Size of local arrays
    -
    543 data_size = (m + 1)*(n + 1)*(p + 1)
    -
    544 m_glb_save = m_glb + 1
    -
    545 n_glb_save = n_glb + 1
    -
    546 p_glb_save = p_glb + 1
    -
    547 end if
    -
    548
    -
    549 ! Resize some integers so MPI can write even the biggest files
    -
    550 m_mok = int(m_glb_save, mpi_offset_kind)
    -
    551 n_mok = int(n_glb_save, mpi_offset_kind)
    -
    552 p_mok = int(p_glb_save, mpi_offset_kind)
    -
    553 wp_mok = int(8._wp, mpi_offset_kind)
    -
    554 mok = int(1._wp, mpi_offset_kind)
    -
    555 str_mok = int(name_len, mpi_offset_kind)
    -
    556 nvars_mok = int(sys_size, mpi_offset_kind)
    -
    557
    -
    558 ! Write the data for each variable
    -
    559 if (bubbles_euler) then
    -
    560 do i = 1, sys_size! adv_idx%end
    -
    561 var_mok = int(i, mpi_offset_kind)
    -
    562
    -
    563 call mpi_file_write_all(ifile, mpi_io_data%var(i)%sf, data_size*mpi_io_type, &
    -
    564 mpi_io_p, status, ierr)
    -
    565 end do
    -
    566 !Additional variables pb and mv for non-polytropic qbmm
    -
    567 if (qbmm .and. .not. polytropic) then
    -
    568 do i = sys_size + 1, sys_size + 2*nb*nnode
    -
    569 var_mok = int(i, mpi_offset_kind)
    -
    570
    -
    571 call mpi_file_write_all(ifile, mpi_io_data%var(i)%sf, data_size*mpi_io_type, &
    -
    572 mpi_io_p, status, ierr)
    -
    573 end do
    -
    574 end if
    -
    575 else
    -
    576 if (down_sample) then
    -
    577 do i = 1, sys_size
    -
    578 var_mok = int(i, mpi_offset_kind)
    -
    579
    -
    580 call mpi_file_write_all(ifile, q_cons_temp(i)%sf, data_size*mpi_io_type, &
    -
    581 mpi_io_p, status, ierr)
    -
    582 end do
    -
    583 else
    -
    584 do i = 1, sys_size
    -
    585 var_mok = int(i, mpi_offset_kind)
    -
    586
    -
    587 call mpi_file_write_all(ifile, mpi_io_data%var(i)%sf, data_size*mpi_io_type, &
    -
    588 mpi_io_p, status, ierr)
    -
    589 end do
    -
    590 end if
    -
    591 end if
    -
    592
    -
    593 call mpi_file_close(ifile, ierr)
    +
    487 loc_violations = 0._wp
    +
    488
    +
    489 if (down_sample) then
    +
    490 if ((mod(m + 1, 3) > 0) .or. (mod(n + 1, 3) > 0) .or. (mod(p + 1, 3) > 0)) then
    +
    491 loc_violations = 1._wp
    +
    492 end if
    +
    493 call s_mpi_allreduce_sum(loc_violations, glb_violations)
    +
    494 if (proc_rank == 0 .and. nint(glb_violations) > 0) then
    +
    495 print *, "WARNING: Attempting to downsample data but there are"// &
    +
    496 "processors with local problem sizes that are not divisible by 3."
    +
    497 end if
    + + +
    500 m_ds, n_ds, p_ds, m_glb_ds, n_glb_ds, p_glb_ds)
    +
    501 end if
    +
    502
    +
    503 if (file_per_process) then
    +
    504 if (proc_rank == 0) then
    +
    505 file_loc = trim(case_dir)//'/restart_data/lustre_0'
    +
    506 call my_inquire(file_loc, dir_check)
    +
    507 if (dir_check .neqv. .true.) then
    +
    508 call s_create_directory(trim(file_loc))
    +
    509 end if
    +
    510 call s_create_directory(trim(file_loc))
    +
    511 end if
    +
    512 call s_mpi_barrier()
    + +
    514
    +
    515 ! Initialize MPI data I/O
    +
    516 if (down_sample) then
    +
    517 call s_initialize_mpi_data_ds(q_cons_temp)
    +
    518 else
    +
    519 call s_initialize_mpi_data(q_cons_vf)
    +
    520 end if
    +
    521
    +
    522 ! Open the file to write all flow variables
    +
    523 if (cfl_dt) then
    +
    524 write (file_loc, '(I0,A,i7.7,A)') n_start, '_', proc_rank, '.dat'
    +
    525 else
    +
    526 write (file_loc, '(I0,A,i7.7,A)') t_step_start, '_', proc_rank, '.dat'
    +
    527 end if
    +
    528 file_loc = trim(restart_dir)//'/lustre_0'//trim(mpiiofs)//trim(file_loc)
    +
    529 inquire (file=trim(file_loc), exist=file_exist)
    +
    530 if (file_exist .and. proc_rank == 0) then
    +
    531 call mpi_file_delete(file_loc, mpi_info_int, ierr)
    +
    532 end if
    +
    533 if (file_exist) call mpi_file_delete(file_loc, mpi_info_int, ierr)
    +
    534 call mpi_file_open(mpi_comm_self, file_loc, ior(mpi_mode_wronly, mpi_mode_create), &
    +
    535 mpi_info_int, ifile, ierr)
    +
    536
    +
    537 if (down_sample) then
    +
    538 ! Size of local arrays
    +
    539 data_size = (m_ds + 3)*(n_ds + 3)*(p_ds + 3)
    +
    540 m_glb_save = m_glb_ds + 3
    +
    541 n_glb_save = n_glb_ds + 3
    +
    542 p_glb_save = p_glb_ds + 3
    +
    543 else
    +
    544 ! Size of local arrays
    +
    545 data_size = (m + 1)*(n + 1)*(p + 1)
    +
    546 m_glb_save = m_glb + 1
    +
    547 n_glb_save = n_glb + 1
    +
    548 p_glb_save = p_glb + 1
    +
    549 end if
    +
    550
    +
    551 ! Resize some integers so MPI can write even the biggest files
    +
    552 m_mok = int(m_glb_save, mpi_offset_kind)
    +
    553 n_mok = int(n_glb_save, mpi_offset_kind)
    +
    554 p_mok = int(p_glb_save, mpi_offset_kind)
    +
    555 wp_mok = int(8._wp, mpi_offset_kind)
    +
    556 mok = int(1._wp, mpi_offset_kind)
    +
    557 str_mok = int(name_len, mpi_offset_kind)
    +
    558 nvars_mok = int(sys_size, mpi_offset_kind)
    +
    559
    +
    560 ! Write the data for each variable
    +
    561 if (bubbles_euler) then
    +
    562 do i = 1, sys_size! adv_idx%end
    +
    563 var_mok = int(i, mpi_offset_kind)
    +
    564
    +
    565 call mpi_file_write_all(ifile, mpi_io_data%var(i)%sf, data_size*mpi_io_type, &
    +
    566 mpi_io_p, status, ierr)
    +
    567 end do
    +
    568 !Additional variables pb and mv for non-polytropic qbmm
    +
    569 if (qbmm .and. .not. polytropic) then
    +
    570 do i = sys_size + 1, sys_size + 2*nb*nnode
    +
    571 var_mok = int(i, mpi_offset_kind)
    +
    572
    +
    573 call mpi_file_write_all(ifile, mpi_io_data%var(i)%sf, data_size*mpi_io_type, &
    +
    574 mpi_io_p, status, ierr)
    +
    575 end do
    +
    576 end if
    +
    577 else
    +
    578 if (down_sample) then
    +
    579 do i = 1, sys_size
    +
    580 var_mok = int(i, mpi_offset_kind)
    +
    581
    +
    582 call mpi_file_write_all(ifile, q_cons_temp(i)%sf, data_size*mpi_io_type, &
    +
    583 mpi_io_p, status, ierr)
    +
    584 end do
    +
    585 else
    +
    586 do i = 1, sys_size
    +
    587 var_mok = int(i, mpi_offset_kind)
    +
    588
    +
    589 call mpi_file_write_all(ifile, mpi_io_data%var(i)%sf, data_size*mpi_io_type, &
    +
    590 mpi_io_p, status, ierr)
    +
    591 end do
    +
    592 end if
    +
    593 end if
    594
    -
    595 else
    -
    596 call s_initialize_mpi_data(q_cons_vf)
    -
    597
    -
    598 ! Open the file to write all flow variables
    -
    599 if (cfl_dt) then
    -
    600 write (file_loc, '(I0,A)') n_start, '.dat'
    -
    601 else
    -
    602 write (file_loc, '(I0,A)') t_step_start, '.dat'
    -
    603 end if
    -
    604 file_loc = trim(restart_dir)//trim(mpiiofs)//trim(file_loc)
    -
    605 inquire (file=trim(file_loc), exist=file_exist)
    -
    606 if (file_exist .and. proc_rank == 0) then
    -
    607 call mpi_file_delete(file_loc, mpi_info_int, ierr)
    -
    608 end if
    -
    609 call mpi_file_open(mpi_comm_world, file_loc, ior(mpi_mode_wronly, mpi_mode_create), &
    -
    610 mpi_info_int, ifile, ierr)
    -
    611
    -
    612 ! Size of local arrays
    -
    613 data_size = (m + 1)*(n + 1)*(p + 1)
    -
    614
    -
    615 ! Resize some integers so MPI can write even the biggest files
    -
    616 m_mok = int(m_glb + 1, mpi_offset_kind)
    -
    617 n_mok = int(n_glb + 1, mpi_offset_kind)
    -
    618 p_mok = int(p_glb + 1, mpi_offset_kind)
    -
    619 wp_mok = int(8._wp, mpi_offset_kind)
    -
    620 mok = int(1._wp, mpi_offset_kind)
    -
    621 str_mok = int(name_len, mpi_offset_kind)
    -
    622 nvars_mok = int(sys_size, mpi_offset_kind)
    -
    623
    -
    624 ! Write the data for each variable
    -
    625 if (bubbles_euler) then
    -
    626 do i = 1, sys_size! adv_idx%end
    -
    627 var_mok = int(i, mpi_offset_kind)
    -
    628
    -
    629 ! Initial displacement to skip at beginning of file
    -
    630 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
    -
    631
    -
    632 call mpi_file_set_view(ifile, disp, mpi_io_p, mpi_io_data%view(i), &
    -
    633 'native', mpi_info_int, ierr)
    -
    634 call mpi_file_write_all(ifile, mpi_io_data%var(i)%sf, data_size*mpi_io_type, &
    -
    635 mpi_io_p, status, ierr)
    -
    636 end do
    -
    637 !Additional variables pb and mv for non-polytropic qbmm
    -
    638 if (qbmm .and. .not. polytropic) then
    -
    639 do i = sys_size + 1, sys_size + 2*nb*nnode
    -
    640 var_mok = int(i, mpi_offset_kind)
    -
    641
    -
    642 ! Initial displacement to skip at beginning of file
    -
    643 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
    -
    644
    -
    645 call mpi_file_set_view(ifile, disp, mpi_io_p, mpi_io_data%view(i), &
    -
    646 'native', mpi_info_int, ierr)
    -
    647 call mpi_file_write_all(ifile, mpi_io_data%var(i)%sf, data_size*mpi_io_type, &
    -
    648 mpi_io_p, status, ierr)
    -
    649 end do
    -
    650 end if
    -
    651 else
    -
    652 do i = 1, sys_size !TODO: check if this is right
    -
    653 ! do i = 1, adv_idx%end
    -
    654 var_mok = int(i, mpi_offset_kind)
    -
    655
    -
    656 ! Initial displacement to skip at beginning of file
    -
    657 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
    -
    658
    -
    659 call mpi_file_set_view(ifile, disp, mpi_io_p, mpi_io_data%view(i), &
    -
    660 'native', mpi_info_int, ierr)
    -
    661 call mpi_file_write_all(ifile, mpi_io_data%var(i)%sf, data_size*mpi_io_type, &
    -
    662 mpi_io_p, status, ierr)
    -
    663 end do
    -
    664
    -
    665 end if
    +
    595 call mpi_file_close(ifile, ierr)
    +
    596
    +
    597 else
    +
    598 call s_initialize_mpi_data(q_cons_vf)
    +
    599
    +
    600 ! Open the file to write all flow variables
    +
    601 if (cfl_dt) then
    +
    602 write (file_loc, '(I0,A)') n_start, '.dat'
    +
    603 else
    +
    604 write (file_loc, '(I0,A)') t_step_start, '.dat'
    +
    605 end if
    +
    606 file_loc = trim(restart_dir)//trim(mpiiofs)//trim(file_loc)
    +
    607 inquire (file=trim(file_loc), exist=file_exist)
    +
    608 if (file_exist .and. proc_rank == 0) then
    +
    609 call mpi_file_delete(file_loc, mpi_info_int, ierr)
    +
    610 end if
    +
    611 call mpi_file_open(mpi_comm_world, file_loc, ior(mpi_mode_wronly, mpi_mode_create), &
    +
    612 mpi_info_int, ifile, ierr)
    +
    613
    +
    614 ! Size of local arrays
    +
    615 data_size = (m + 1)*(n + 1)*(p + 1)
    +
    616
    +
    617 ! Resize some integers so MPI can write even the biggest files
    +
    618 m_mok = int(m_glb + 1, mpi_offset_kind)
    +
    619 n_mok = int(n_glb + 1, mpi_offset_kind)
    +
    620 p_mok = int(p_glb + 1, mpi_offset_kind)
    +
    621 wp_mok = int(8._wp, mpi_offset_kind)
    +
    622 mok = int(1._wp, mpi_offset_kind)
    +
    623 str_mok = int(name_len, mpi_offset_kind)
    +
    624 nvars_mok = int(sys_size, mpi_offset_kind)
    +
    625
    +
    626 ! Write the data for each variable
    +
    627 if (bubbles_euler) then
    +
    628 do i = 1, sys_size! adv_idx%end
    +
    629 var_mok = int(i, mpi_offset_kind)
    +
    630
    +
    631 ! Initial displacement to skip at beginning of file
    +
    632 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
    +
    633
    +
    634 call mpi_file_set_view(ifile, disp, mpi_io_p, mpi_io_data%view(i), &
    +
    635 'native', mpi_info_int, ierr)
    +
    636 call mpi_file_write_all(ifile, mpi_io_data%var(i)%sf, data_size*mpi_io_type, &
    +
    637 mpi_io_p, status, ierr)
    +
    638 end do
    +
    639 !Additional variables pb and mv for non-polytropic qbmm
    +
    640 if (qbmm .and. .not. polytropic) then
    +
    641 do i = sys_size + 1, sys_size + 2*nb*nnode
    +
    642 var_mok = int(i, mpi_offset_kind)
    +
    643
    +
    644 ! Initial displacement to skip at beginning of file
    +
    645 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
    +
    646
    +
    647 call mpi_file_set_view(ifile, disp, mpi_io_p, mpi_io_data%view(i), &
    +
    648 'native', mpi_info_int, ierr)
    +
    649 call mpi_file_write_all(ifile, mpi_io_data%var(i)%sf, data_size*mpi_io_type, &
    +
    650 mpi_io_p, status, ierr)
    +
    651 end do
    +
    652 end if
    +
    653 else
    +
    654 do i = 1, sys_size !TODO: check if this is right
    +
    655 ! do i = 1, adv_idx%end
    +
    656 var_mok = int(i, mpi_offset_kind)
    +
    657
    +
    658 ! Initial displacement to skip at beginning of file
    +
    659 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
    +
    660
    +
    661 call mpi_file_set_view(ifile, disp, mpi_io_p, mpi_io_data%view(i), &
    +
    662 'native', mpi_info_int, ierr)
    +
    663 call mpi_file_write_all(ifile, mpi_io_data%var(i)%sf, data_size*mpi_io_type, &
    +
    664 mpi_io_p, status, ierr)
    +
    665 end do
    666
    -
    667 call mpi_file_close(ifile, ierr)
    -
    668 end if
    -
    669#endif
    -
    670
    -
    671 if (bc_io) then
    -
    672 if (igr) then
    - -
    674 else
    -
    675 call s_write_parallel_boundary_condition_files(q_prim_vf, bc_type)
    -
    676 end if
    -
    677 end if
    -
    678
    +
    667 end if
    +
    668
    +
    669 call mpi_file_close(ifile, ierr)
    +
    670 end if
    +
    671#endif
    +
    672
    +
    673 if (bc_io) then
    +
    674 if (igr) then
    + +
    676 else
    +
    677 call s_write_parallel_boundary_condition_files(q_prim_vf, bc_type)
    +
    678 end if
    +
    679 end if
    +
    680

    -
    679 end subroutine s_write_parallel_data_files
    -
    680
    -
    681 !> Computation of parameters, allocation procedures, and/or
    -
    682 !! any other tasks needed to properly setup the module
    -
    - -
    684 ! Generic string used to store the address of a particular file
    -
    685 character(LEN=len_trim(case_dir) + 2*name_len) :: file_loc
    -
    686 character(len=15) :: temp
    -
    687 character(LEN=1), dimension(3), parameter :: coord = (/'x', 'y', 'z'/)
    -
    688
    -
    689 ! Generic logical used to check the existence of directories
    -
    690 logical :: dir_check
    -
    691 integer :: i
    -
    692
    -
    693 integer :: m_ds, n_ds, p_ds !< down sample dimensions
    +
    681 end subroutine s_write_parallel_data_files
    +
    682
    +
    683 !> Computation of parameters, allocation procedures, and/or
    +
    684 !! any other tasks needed to properly setup the module
    +
    + +
    686 ! Generic string used to store the address of a particular file
    +
    687 character(LEN=len_trim(case_dir) + 2*name_len) :: file_loc
    +
    688 character(len=15) :: temp
    +
    689 character(LEN=1), dimension(3), parameter :: coord = (/'x', 'y', 'z'/)
    +
    690
    +
    691 ! Generic logical used to check the existence of directories
    +
    692 logical :: dir_check
    +
    693 integer :: i
    694
    -
    695 if (parallel_io .neqv. .true.) then
    -
    696 ! Setting the address of the time-step directory
    -
    697 write (t_step_dir, '(A,I0,A)') '/p_all/p', proc_rank, '/0'
    -
    698 t_step_dir = trim(case_dir)//trim(t_step_dir)
    -
    699
    -
    700 ! Checking the existence of the time-step directory, removing it, if
    -
    701 ! it exists, and creating a new copy. Note that if preexisting grid
    -
    702 ! and/or initial condition data are to be read in from the very same
    -
    703 ! location, then the above described steps are not executed here but
    -
    704 ! rather in the module m_start_up.f90.
    -
    705 if (old_grid .neqv. .true.) then
    -
    706
    -
    707 file_loc = trim(t_step_dir)//'/'
    +
    695 integer :: m_ds, n_ds, p_ds !< down sample dimensions
    +
    696
    +
    697 if (parallel_io .neqv. .true.) then
    +
    698 ! Setting the address of the time-step directory
    +
    699 write (t_step_dir, '(A,I0,A)') '/p_all/p', proc_rank, '/0'
    +
    700 t_step_dir = trim(case_dir)//trim(t_step_dir)
    +
    701
    +
    702 ! Checking the existence of the time-step directory, removing it, if
    +
    703 ! it exists, and creating a new copy. Note that if preexisting grid
    +
    704 ! and/or initial condition data are to be read in from the very same
    +
    705 ! location, then the above described steps are not executed here but
    +
    706 ! rather in the module m_start_up.f90.
    +
    707 if (old_grid .neqv. .true.) then
    708
    -
    709 call my_inquire(file_loc, dir_check)
    +
    709 file_loc = trim(t_step_dir)//'/'
    710
    -
    711 if (dir_check) call s_delete_directory(trim(t_step_dir))
    +
    711 call my_inquire(file_loc, dir_check)
    712
    - +
    713 if (dir_check) call s_delete_directory(trim(t_step_dir))
    714
    -
    715 end if
    +
    716
    - -
    718 else
    -
    719 write (restart_dir, '(A)') '/restart_data'
    -
    720 restart_dir = trim(case_dir)//trim(restart_dir)
    -
    721
    -
    722 if ((old_grid .neqv. .true.) .and. (proc_rank == 0)) then
    +
    717 end if
    +
    718
    + +
    720 else
    +
    721 write (restart_dir, '(A)') '/restart_data'
    +
    722 restart_dir = trim(case_dir)//trim(restart_dir)
    723
    -
    724 file_loc = trim(restart_dir)//'/'
    -
    725 call my_inquire(file_loc, dir_check)
    -
    726
    -
    727 if (dir_check) call s_delete_directory(trim(restart_dir))
    - -
    729 end if
    -
    730
    -
    731 call s_mpi_barrier()
    +
    724 if ((old_grid .neqv. .true.) .and. (proc_rank == 0)) then
    +
    725
    +
    726 file_loc = trim(restart_dir)//'/'
    +
    727 call my_inquire(file_loc, dir_check)
    +
    728
    +
    729 if (dir_check) call s_delete_directory(trim(restart_dir))
    + +
    731 end if
    732
    - +
    733 call s_mpi_barrier()
    734
    -
    735 end if
    +
    736
    -
    737 open (1, file='indices.dat', status='unknown')
    +
    737 end if
    738
    -
    739 write (1, '(A)') "Warning: The creation of file is currently experimental."
    -
    740 write (1, '(A)') "This file may contain errors and not support all features."
    -
    741
    -
    742 write (1, '(A3,A20,A20)') "#", "Conservative", "Primitive"
    -
    743 write (1, '(A)') " "
    -
    744 do i = contxb, contxe
    -
    745 write (temp, '(I0)') i - contxb + 1
    -
    746 write (1, '(I3,A20,A20)') i, "\alpha_{"//trim(temp)//"} \rho_{"//trim(temp)//"}", "\alpha_{"//trim(temp)//"} \rho"
    -
    747 end do
    -
    748 do i = momxb, momxe
    -
    749 write (1, '(I3,A20,A20)') i, "\rho u_"//coord(i - momxb + 1), "u_"//coord(i - momxb + 1)
    -
    750 end do
    -
    751 do i = e_idx, e_idx
    -
    752 write (1, '(I3,A20,A20)') i, "\rho U", "p"
    -
    753 end do
    -
    754 do i = advxb, advxe
    -
    755 write (temp, '(I0)') i - contxb + 1
    -
    756 write (1, '(I3,A20,A20)') i, "\alpha_{"//trim(temp)//"}", "\alpha_{"//trim(temp)//"}"
    -
    757 end do
    -
    758 if (chemistry) then
    -
    759 do i = 1, num_species
    -
    760 write (1, '(I3,A20,A20)') chemxb + i - 1, "Y_{"//trim(species_names(i))//"} \rho", "Y_{"//trim(species_names(i))//"}"
    -
    761 end do
    -
    762 end if
    -
    763
    -
    764 write (1, '(A)') ""
    -
    765 if (momxb /= 0) write (1, '("[",I2,",",I2,"]",A)') momxb, momxe, " Momentum"
    -
    766 if (e_idx /= 0) write (1, '("[",I2,",",I2,"]",A)') e_idx, e_idx, " Energy/Pressure"
    -
    767 if (advxb /= 0) write (1, '("[",I2,",",I2,"]",A)') advxb, advxe, " Advection"
    -
    768 if (contxb /= 0) write (1, '("[",I2,",",I2,"]",A)') contxb, contxe, " Continuity"
    -
    769 if (bubxb /= 0) write (1, '("[",I2,",",I2,"]",A)') bubxb, bubxe, " Bubbles_euler"
    -
    770 if (strxb /= 0) write (1, '("[",I2,",",I2,"]",A)') strxb, strxe, " Stress"
    -
    771 if (intxb /= 0) write (1, '("[",I2,",",I2,"]",A)') intxb, intxe, " Internal Energies"
    -
    772 if (chemxb /= 0) write (1, '("[",I2,",",I2,"]",A)') chemxb, chemxe, " Chemistry"
    -
    773
    -
    774 close (1)
    +
    739 open (1, file='indices.dat', status='unknown')
    +
    740
    +
    741 write (1, '(A)') "Warning: The creation of file is currently experimental."
    +
    742 write (1, '(A)') "This file may contain errors and not support all features."
    +
    743
    +
    744 write (1, '(A3,A20,A20)') "#", "Conservative", "Primitive"
    +
    745 write (1, '(A)') " "
    +
    746 do i = contxb, contxe
    +
    747 write (temp, '(I0)') i - contxb + 1
    +
    748 write (1, '(I3,A20,A20)') i, "\alpha_{"//trim(temp)//"} \rho_{"//trim(temp)//"}", "\alpha_{"//trim(temp)//"} \rho"
    +
    749 end do
    +
    750 do i = momxb, momxe
    +
    751 write (1, '(I3,A20,A20)') i, "\rho u_"//coord(i - momxb + 1), "u_"//coord(i - momxb + 1)
    +
    752 end do
    +
    753 do i = e_idx, e_idx
    +
    754 write (1, '(I3,A20,A20)') i, "\rho U", "p"
    +
    755 end do
    +
    756 do i = advxb, advxe
    +
    757 write (temp, '(I0)') i - contxb + 1
    +
    758 write (1, '(I3,A20,A20)') i, "\alpha_{"//trim(temp)//"}", "\alpha_{"//trim(temp)//"}"
    +
    759 end do
    +
    760 if (chemistry) then
    +
    761 do i = 1, num_species
    +
    762 write (1, '(I3,A20,A20)') chemxb + i - 1, "Y_{"//trim(species_names(i))//"} \rho", "Y_{"//trim(species_names(i))//"}"
    +
    763 end do
    +
    764 end if
    +
    765
    +
    766 write (1, '(A)') ""
    +
    767 if (momxb /= 0) write (1, '("[",I2,",",I2,"]",A)') momxb, momxe, " Momentum"
    +
    768 if (e_idx /= 0) write (1, '("[",I2,",",I2,"]",A)') e_idx, e_idx, " Energy/Pressure"
    +
    769 if (advxb /= 0) write (1, '("[",I2,",",I2,"]",A)') advxb, advxe, " Advection"
    +
    770 if (contxb /= 0) write (1, '("[",I2,",",I2,"]",A)') contxb, contxe, " Continuity"
    +
    771 if (bubxb /= 0) write (1, '("[",I2,",",I2,"]",A)') bubxb, bubxe, " Bubbles_euler"
    +
    772 if (strxb /= 0) write (1, '("[",I2,",",I2,"]",A)') strxb, strxe, " Stress"
    +
    773 if (intxb /= 0) write (1, '("[",I2,",",I2,"]",A)') intxb, intxe, " Internal Energies"
    +
    774 if (chemxb /= 0) write (1, '("[",I2,",",I2,"]",A)') chemxb, chemxe, " Chemistry"
    775
    -
    776 if (down_sample) then
    -
    777 m_ds = int((m + 1)/3) - 1
    -
    778 n_ds = int((n + 1)/3) - 1
    -
    779 p_ds = int((p + 1)/3) - 1
    -
    780
    -
    781 allocate (q_cons_temp(1:sys_size))
    -
    782 do i = 1, sys_size
    -
    783 allocate (q_cons_temp(i)%sf(-1:m_ds + 1, -1:n_ds + 1, -1:p_ds + 1))
    -
    784 end do
    -
    785 end if
    -
    786
    +
    776 close (1)
    +
    777
    +
    778 if (down_sample) then
    +
    779 m_ds = int((m + 1)/3) - 1
    +
    780 n_ds = int((n + 1)/3) - 1
    +
    781 p_ds = int((p + 1)/3) - 1
    +
    782
    +
    783 allocate (q_cons_temp(1:sys_size))
    +
    784 do i = 1, sys_size
    +
    785 allocate (q_cons_temp(i)%sf(-1:m_ds + 1, -1:n_ds + 1, -1:p_ds + 1))
    +
    786 end do
    +
    787 end if
    +
    788
    - -
    788
    -
    789 !> Resets s_write_data_files pointer
    -
    - -
    791
    -
    792 integer :: i
    + +
    790
    +
    791 !> Resets s_write_data_files pointer
    +
    +
    793
    -
    794 s_write_data_files => null()
    +
    794 integer :: i
    795
    -
    796 if (down_sample) then
    -
    797 do i = 1, sys_size
    -
    798 deallocate (q_cons_temp(i)%sf)
    -
    799 end do
    -
    800 deallocate (q_cons_temp)
    -
    801 end if
    -
    802
    -
    -
    803 end subroutine s_finalize_data_output_module
    +
    796 s_write_data_files => null()
    +
    797
    +
    798 if (down_sample) then
    +
    799 do i = 1, sys_size
    +
    800 deallocate (q_cons_temp(i)%sf)
    +
    801 end do
    +
    802 deallocate (q_cons_temp)
    +
    803 end if
    804
    -
    805end module m_data_output
    +
    +
    805 end subroutine s_finalize_data_output_module
    +
    806
    +
    807end module m_data_output
    Interface for the conservative data.
    type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
    integer, intent(in) k
    @@ -968,8 +970,8 @@
    type(scalar_field), dimension(:), allocatable q_cons_temp
    procedure(s_write_abstract_data_files), pointer, public s_write_data_files
    character(len=path_len+2 *name_len), private t_step_dir
    Time-step folder into which grid and initial condition data will be placed.
    -
    impure subroutine, public s_initialize_data_output_module
    Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the...
    -
    impure subroutine, public s_finalize_data_output_module
    Resets s_write_data_files pointer.
    +
    impure subroutine, public s_initialize_data_output_module
    Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the...
    +
    impure subroutine, public s_finalize_data_output_module
    Resets s_write_data_files pointer.
    impure subroutine, public s_write_parallel_data_files(q_cons_vf, q_prim_vf, bc_type)
    Writes grid and initial condition data files in parallel to the "0" time-step directory in the local ...
    impure subroutine, public s_write_serial_data_files(q_cons_vf, q_prim_vf, bc_type)
    Writes grid and initial condition data files to the "0" time-step directory in the local processor ra...
    character(len=path_len+2 *name_len), public restart_dir
    Restart data folder.
    diff --git a/pre_process/m__finite__differences_8fpp_8f90_source.html b/pre_process/m__finite__differences_8fpp_8f90_source.html index aee599201..db2038425 100644 --- a/pre_process/m__finite__differences_8fpp_8f90_source.html +++ b/pre_process/m__finite__differences_8fpp_8f90_source.html @@ -492,7 +492,7 @@
    354 if (z == iz_s%beg) then
    355 divergence = divergence + (-3._wp*fields(3)%sf(x, y, z) + 4._wp*fields(3)%sf(x, y, z + 1) - fields(3)%sf(x, y, z + 2))/(z_cc(z + 2) - z_cc(z))
    356 else if (z == iz_s%end) then
    -
    357 divergence = divergence + (+3._wp*fields(3)%sf(x, y, z) - 4._wp*fields(3)%sf(x, y, z - 1) + fields(2)%sf(x, y, z - 2))/(z_cc(z) - z_cc(z - 2))
    +
    357 divergence = divergence + (+3._wp*fields(3)%sf(x, y, z) - 4._wp*fields(3)%sf(x, y, z - 1) + fields(3)%sf(x, y, z - 2))/(z_cc(z) - z_cc(z - 2))
    358 else
    359 divergence = divergence + (fields(3)%sf(x, y, z + 1) - fields(3)%sf(x, y, z - 1))/(z_cc(z + 1) - z_cc(z - 1))
    360 end if
    diff --git a/pre_process/m__mpi__common_8fpp_8f90_source.html b/pre_process/m__mpi__common_8fpp_8f90_source.html index 7a0a75070..2db6d6a6d 100644 --- a/pre_process/m__mpi__common_8fpp_8f90_source.html +++ b/pre_process/m__mpi__common_8fpp_8f90_source.html @@ -1975,9 +1975,9 @@
    1801 (j + buff_size*((k + 1) + (n + 1)*l))
    1802 q_comm(i)%sf(j + unpack_offset, k, l) = real(buff_recv(r), kind=stp)
    1803#if defined(__INTEL_COMPILER)
    -
    1804 if (ieee_is_nan(q_comm(i)%sf(j, k, l))) then
    +
    1804 if (ieee_is_nan(q_comm(i)%sf(j + unpack_offset, k, l))) then
    1805 print *, "Error", j, k, l, i
    -
    1806 error stop "NaN(s) in recv"
    +
    1806 call s_mpi_abort("NaN(s) in recv")
    1807 end if
    1808#endif
    1809 end do
    @@ -2148,9 +2148,9 @@
    1974 ((k + buff_size) + buff_size*l))
    1975 q_comm(i)%sf(j, k + unpack_offset, l) = real(buff_recv(r), kind=stp)
    1976#if defined(__INTEL_COMPILER)
    -
    1977 if (ieee_is_nan(q_comm(i)%sf(j, k, l))) then
    +
    1977 if (ieee_is_nan(q_comm(i)%sf(j, k + unpack_offset, l))) then
    1978 print *, "Error", j, k, l, i
    -
    1979 error stop "NaN(s) in recv"
    +
    1979 call s_mpi_abort("NaN(s) in recv")
    1980 end if
    1981#endif
    1982 end do
    @@ -2325,9 +2325,9 @@
    2151 (l + buff_size)))
    2152 q_comm(i)%sf(j, k, l + unpack_offset) = real(buff_recv(r), kind=stp)
    2153#if defined(__INTEL_COMPILER)
    -
    2154 if (ieee_is_nan(q_comm(i)%sf(j, k, l))) then
    +
    2154 if (ieee_is_nan(q_comm(i)%sf(j, k, l + unpack_offset))) then
    2155 print *, "Error", j, k, l, i
    -
    2156 error stop "NaN(s) in recv"
    +
    2156 call s_mpi_abort("NaN(s) in recv")
    2157 end if
    2158#endif
    2159 end do
    @@ -2524,699 +2524,697 @@
    2348
    2349 if (igr) then
    2350 recon_order = igr_order
    -
    2351 else
    -
    2352 recon_order = weno_order
    -
    2353 end if
    -
    2354
    -
    2355 ! 3D Cartesian Processor Topology
    -
    2356 if (n > 0) then
    -
    2357
    -
    2358 if (p > 0) then
    -
    2359 if (fft_wrt) then
    -
    2360
    -
    2361 ! Initial estimate of optimal processor topology
    -
    2362 num_procs_x = 1
    -
    2363 num_procs_y = 1
    -
    2364 num_procs_z = num_procs
    -
    2365 ierr = -1
    -
    2366
    -
    2367 ! Benchmarking the quality of this initial guess
    -
    2368 tmp_num_procs_y = num_procs_y
    -
    2369 tmp_num_procs_z = num_procs_z
    -
    2370 fct_min = 10._wp*abs((n + 1)/tmp_num_procs_y &
    -
    2371 - (p + 1)/tmp_num_procs_z)
    -
    2372
    -
    2373 ! Optimization of the initial processor topology
    -
    2374 do i = 1, num_procs
    -
    2375
    -
    2376 if (mod(num_procs, i) == 0 &
    -
    2377 .and. &
    -
    2378 (n + 1)/i >= num_stcls_min*recon_order) then
    -
    2379
    -
    2380 tmp_num_procs_y = i
    -
    2381 tmp_num_procs_z = num_procs/i
    -
    2382
    -
    2383 if (fct_min >= abs((n + 1)/tmp_num_procs_y &
    -
    2384 - (p + 1)/tmp_num_procs_z) &
    -
    2385 .and. &
    -
    2386 (p + 1)/tmp_num_procs_z &
    -
    2387 >= &
    -
    2388 num_stcls_min*recon_order) then
    -
    2389
    -
    2390 num_procs_y = i
    -
    2391 num_procs_z = num_procs/i
    -
    2392 fct_min = abs((n + 1)/tmp_num_procs_y &
    -
    2393 - (p + 1)/tmp_num_procs_z)
    -
    2394 ierr = 0
    +
    2351 end if
    +
    2352
    +
    2353 ! 3D Cartesian Processor Topology
    +
    2354 if (n > 0) then
    +
    2355
    +
    2356 if (p > 0) then
    +
    2357 if (fft_wrt) then
    +
    2358
    +
    2359 ! Initial estimate of optimal processor topology
    +
    2360 num_procs_x = 1
    +
    2361 num_procs_y = 1
    +
    2362 num_procs_z = num_procs
    +
    2363 ierr = -1
    +
    2364
    +
    2365 ! Benchmarking the quality of this initial guess
    +
    2366 tmp_num_procs_y = num_procs_y
    +
    2367 tmp_num_procs_z = num_procs_z
    +
    2368 fct_min = 10._wp*abs((n + 1)/tmp_num_procs_y &
    +
    2369 - (p + 1)/tmp_num_procs_z)
    +
    2370
    +
    2371 ! Optimization of the initial processor topology
    +
    2372 do i = 1, num_procs
    +
    2373
    +
    2374 if (mod(num_procs, i) == 0 &
    +
    2375 .and. &
    +
    2376 (n + 1)/i >= num_stcls_min*recon_order) then
    +
    2377
    +
    2378 tmp_num_procs_y = i
    +
    2379 tmp_num_procs_z = num_procs/i
    +
    2380
    +
    2381 if (fct_min >= abs((n + 1)/tmp_num_procs_y &
    +
    2382 - (p + 1)/tmp_num_procs_z) &
    +
    2383 .and. &
    +
    2384 (p + 1)/tmp_num_procs_z &
    +
    2385 >= &
    +
    2386 num_stcls_min*recon_order) then
    +
    2387
    +
    2388 num_procs_y = i
    +
    2389 num_procs_z = num_procs/i
    +
    2390 fct_min = abs((n + 1)/tmp_num_procs_y &
    +
    2391 - (p + 1)/tmp_num_procs_z)
    +
    2392 ierr = 0
    +
    2393
    +
    2394 end if
    2395
    -
    2396 end if
    +
    2396 end if
    2397
    -
    2398 end if
    -
    2399
    -
    2400 end do
    -
    2401 else
    -
    2402
    -
    2403 if (cyl_coord .and. p > 0) then
    -
    2404 ! Implement pencil processor blocking if using cylindrical coordinates so
    -
    2405 ! that all cells in azimuthal direction are stored on a single processor.
    -
    2406 ! This is necessary for efficient application of Fourier filter near axis.
    -
    2407
    -
    2408 ! Initial values of the processor factorization optimization
    -
    2409 num_procs_x = 1
    -
    2410 num_procs_y = num_procs
    -
    2411 num_procs_z = 1
    -
    2412 ierr = -1
    -
    2413
    -
    2414 ! Computing minimization variable for these initial values
    -
    2415 tmp_num_procs_x = num_procs_x
    -
    2416 tmp_num_procs_y = num_procs_y
    -
    2417 tmp_num_procs_z = num_procs_z
    -
    2418 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x &
    -
    2419 - (n + 1)/tmp_num_procs_y)
    -
    2420
    -
    2421 ! Searching for optimal computational domain distribution
    -
    2422 do i = 1, num_procs
    -
    2423
    -
    2424 if (mod(num_procs, i) == 0 &
    -
    2425 .and. &
    -
    2426 (m + 1)/i >= num_stcls_min*recon_order) then
    -
    2427
    -
    2428 tmp_num_procs_x = i
    -
    2429 tmp_num_procs_y = num_procs/i
    -
    2430
    -
    2431 if (fct_min >= abs((m + 1)/tmp_num_procs_x &
    -
    2432 - (n + 1)/tmp_num_procs_y) &
    -
    2433 .and. &
    -
    2434 (n + 1)/tmp_num_procs_y &
    -
    2435 >= &
    -
    2436 num_stcls_min*recon_order) then
    -
    2437
    -
    2438 num_procs_x = i
    -
    2439 num_procs_y = num_procs/i
    -
    2440 fct_min = abs((m + 1)/tmp_num_procs_x &
    -
    2441 - (n + 1)/tmp_num_procs_y)
    -
    2442 ierr = 0
    +
    2398 end do
    +
    2399 else
    +
    2400
    +
    2401 if (cyl_coord .and. p > 0) then
    +
    2402 ! Implement pencil processor blocking if using cylindrical coordinates so
    +
    2403 ! that all cells in azimuthal direction are stored on a single processor.
    +
    2404 ! This is necessary for efficient application of Fourier filter near axis.
    +
    2405
    +
    2406 ! Initial values of the processor factorization optimization
    +
    2407 num_procs_x = 1
    +
    2408 num_procs_y = num_procs
    +
    2409 num_procs_z = 1
    +
    2410 ierr = -1
    +
    2411
    +
    2412 ! Computing minimization variable for these initial values
    +
    2413 tmp_num_procs_x = num_procs_x
    +
    2414 tmp_num_procs_y = num_procs_y
    +
    2415 tmp_num_procs_z = num_procs_z
    +
    2416 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x &
    +
    2417 - (n + 1)/tmp_num_procs_y)
    +
    2418
    +
    2419 ! Searching for optimal computational domain distribution
    +
    2420 do i = 1, num_procs
    +
    2421
    +
    2422 if (mod(num_procs, i) == 0 &
    +
    2423 .and. &
    +
    2424 (m + 1)/i >= num_stcls_min*recon_order) then
    +
    2425
    +
    2426 tmp_num_procs_x = i
    +
    2427 tmp_num_procs_y = num_procs/i
    +
    2428
    +
    2429 if (fct_min >= abs((m + 1)/tmp_num_procs_x &
    +
    2430 - (n + 1)/tmp_num_procs_y) &
    +
    2431 .and. &
    +
    2432 (n + 1)/tmp_num_procs_y &
    +
    2433 >= &
    +
    2434 num_stcls_min*recon_order) then
    +
    2435
    +
    2436 num_procs_x = i
    +
    2437 num_procs_y = num_procs/i
    +
    2438 fct_min = abs((m + 1)/tmp_num_procs_x &
    +
    2439 - (n + 1)/tmp_num_procs_y)
    +
    2440 ierr = 0
    +
    2441
    +
    2442 end if
    2443
    -
    2444 end if
    +
    2444 end if
    2445
    -
    2446 end if
    +
    2446 end do
    2447
    -
    2448 end do
    +
    2448 else
    2449
    -
    2450 else
    -
    2451
    -
    2452 ! Initial estimate of optimal processor topology
    -
    2453 num_procs_x = 1
    -
    2454 num_procs_y = 1
    -
    2455 num_procs_z = num_procs
    -
    2456 ierr = -1
    -
    2457
    -
    2458 ! Benchmarking the quality of this initial guess
    -
    2459 tmp_num_procs_x = num_procs_x
    -
    2460 tmp_num_procs_y = num_procs_y
    -
    2461 tmp_num_procs_z = num_procs_z
    -
    2462 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x &
    -
    2463 - (n + 1)/tmp_num_procs_y) &
    -
    2464 + 10._wp*abs((n + 1)/tmp_num_procs_y &
    -
    2465 - (p + 1)/tmp_num_procs_z)
    -
    2466
    -
    2467 ! Optimization of the initial processor topology
    -
    2468 do i = 1, num_procs
    -
    2469
    -
    2470 if (mod(num_procs, i) == 0 &
    -
    2471 .and. &
    -
    2472 (m + 1)/i >= num_stcls_min*recon_order) then
    +
    2450 ! Initial estimate of optimal processor topology
    +
    2451 num_procs_x = 1
    +
    2452 num_procs_y = 1
    +
    2453 num_procs_z = num_procs
    +
    2454 ierr = -1
    +
    2455
    +
    2456 ! Benchmarking the quality of this initial guess
    +
    2457 tmp_num_procs_x = num_procs_x
    +
    2458 tmp_num_procs_y = num_procs_y
    +
    2459 tmp_num_procs_z = num_procs_z
    +
    2460 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x &
    +
    2461 - (n + 1)/tmp_num_procs_y) &
    +
    2462 + 10._wp*abs((n + 1)/tmp_num_procs_y &
    +
    2463 - (p + 1)/tmp_num_procs_z)
    +
    2464
    +
    2465 ! Optimization of the initial processor topology
    +
    2466 do i = 1, num_procs
    +
    2467
    +
    2468 if (mod(num_procs, i) == 0 &
    +
    2469 .and. &
    +
    2470 (m + 1)/i >= num_stcls_min*recon_order) then
    +
    2471
    +
    2472 do j = 1, num_procs/i
    2473
    -
    2474 do j = 1, num_procs/i
    -
    2475
    -
    2476 if (mod(num_procs/i, j) == 0 &
    -
    2477 .and. &
    -
    2478 (n + 1)/j >= num_stcls_min*recon_order) then
    -
    2479
    -
    2480 tmp_num_procs_x = i
    -
    2481 tmp_num_procs_y = j
    -
    2482 tmp_num_procs_z = num_procs/(i*j)
    -
    2483
    -
    2484 if (fct_min >= abs((m + 1)/tmp_num_procs_x &
    -
    2485 - (n + 1)/tmp_num_procs_y) &
    -
    2486 + abs((n + 1)/tmp_num_procs_y &
    -
    2487 - (p + 1)/tmp_num_procs_z) &
    -
    2488 .and. &
    -
    2489 (p + 1)/tmp_num_procs_z &
    -
    2490 >= &
    -
    2491 num_stcls_min*recon_order) &
    -
    2492 then
    -
    2493
    -
    2494 num_procs_x = i
    -
    2495 num_procs_y = j
    -
    2496 num_procs_z = num_procs/(i*j)
    -
    2497 fct_min = abs((m + 1)/tmp_num_procs_x &
    -
    2498 - (n + 1)/tmp_num_procs_y) &
    -
    2499 + abs((n + 1)/tmp_num_procs_y &
    -
    2500 - (p + 1)/tmp_num_procs_z)
    -
    2501 ierr = 0
    +
    2474 if (mod(num_procs/i, j) == 0 &
    +
    2475 .and. &
    +
    2476 (n + 1)/j >= num_stcls_min*recon_order) then
    +
    2477
    +
    2478 tmp_num_procs_x = i
    +
    2479 tmp_num_procs_y = j
    +
    2480 tmp_num_procs_z = num_procs/(i*j)
    +
    2481
    +
    2482 if (fct_min >= abs((m + 1)/tmp_num_procs_x &
    +
    2483 - (n + 1)/tmp_num_procs_y) &
    +
    2484 + abs((n + 1)/tmp_num_procs_y &
    +
    2485 - (p + 1)/tmp_num_procs_z) &
    +
    2486 .and. &
    +
    2487 (p + 1)/tmp_num_procs_z &
    +
    2488 >= &
    +
    2489 num_stcls_min*recon_order) &
    +
    2490 then
    +
    2491
    +
    2492 num_procs_x = i
    +
    2493 num_procs_y = j
    +
    2494 num_procs_z = num_procs/(i*j)
    +
    2495 fct_min = abs((m + 1)/tmp_num_procs_x &
    +
    2496 - (n + 1)/tmp_num_procs_y) &
    +
    2497 + abs((n + 1)/tmp_num_procs_y &
    +
    2498 - (p + 1)/tmp_num_procs_z)
    +
    2499 ierr = 0
    +
    2500
    +
    2501 end if
    2502
    -
    2503 end if
    +
    2503 end if
    2504
    -
    2505 end if
    +
    2505 end do
    2506
    -
    2507 end do
    +
    2507 end if
    2508
    -
    2509 end if
    +
    2509 end do
    2510
    -
    2511 end do
    -
    2512
    -
    2513 end if
    -
    2514 end if
    -
    2515
    -
    2516 ! Verifying that a valid decomposition of the computational
    -
    2517 ! domain has been established. If not, the simulation exits.
    -
    2518 if (proc_rank == 0 .and. ierr == -1) then
    -
    2519 call s_mpi_abort('Unsupported combination of values '// &
    -
    2520 'of num_procs, m, n, p and '// &
    -
    2521 'weno/muscl/igr_order. Exiting.')
    -
    2522 end if
    -
    2523
    -
    2524 ! Creating new communicator using the Cartesian topology
    -
    2525 call mpi_cart_create(mpi_comm_world, 3, (/num_procs_x, &
    -
    2526 num_procs_y, num_procs_z/), &
    -
    2527 (/.true., .true., .true./), &
    -
    2528 .false., mpi_comm_cart, ierr)
    -
    2529
    -
    2530 ! Finding the Cartesian coordinates of the local process
    -
    2531 call mpi_cart_coords(mpi_comm_cart, proc_rank, 3, &
    -
    2532 proc_coords, ierr)
    -
    2533 ! END: 3D Cartesian Processor Topology
    +
    2511 end if
    +
    2512 end if
    +
    2513
    +
    2514 ! Verifying that a valid decomposition of the computational
    +
    2515 ! domain has been established. If not, the simulation exits.
    +
    2516 if (proc_rank == 0 .and. ierr == -1) then
    +
    2517 call s_mpi_abort('Unsupported combination of values '// &
    +
    2518 'of num_procs, m, n, p and '// &
    +
    2519 'weno/muscl/igr_order. Exiting.')
    +
    2520 end if
    +
    2521
    +
    2522 ! Creating new communicator using the Cartesian topology
    +
    2523 call mpi_cart_create(mpi_comm_world, 3, (/num_procs_x, &
    +
    2524 num_procs_y, num_procs_z/), &
    +
    2525 (/.true., .true., .true./), &
    +
    2526 .false., mpi_comm_cart, ierr)
    +
    2527
    +
    2528 ! Finding the Cartesian coordinates of the local process
    +
    2529 call mpi_cart_coords(mpi_comm_cart, proc_rank, 3, &
    +
    2530 proc_coords, ierr)
    +
    2531 ! END: 3D Cartesian Processor Topology
    +
    2532
    +
    2533 ! Global Parameters for z-direction
    2534
    -
    2535 ! Global Parameters for z-direction
    -
    2536
    -
    2537 ! Number of remaining cells
    -
    2538 rem_cells = mod(p + 1, num_procs_z)
    -
    2539
    -
    2540 ! Optimal number of cells per processor
    -
    2541 p = (p + 1)/num_procs_z - 1
    -
    2542
    -
    2543 ! Distributing the remaining cells
    -
    2544 do i = 1, rem_cells
    -
    2545 if (proc_coords(3) == i - 1) then
    -
    2546 p = p + 1; exit
    -
    2547 end if
    -
    2548 end do
    -
    2549
    -
    2550 ! Boundary condition at the beginning
    -
    2551 if (proc_coords(3) > 0 .or. (bc_z%beg == bc_periodic .and. num_procs_z > 1)) then
    -
    2552 proc_coords(3) = proc_coords(3) - 1
    -
    2553 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
    -
    2554 bc_z%beg, ierr)
    -
    2555 proc_coords(3) = proc_coords(3) + 1
    -
    2556 end if
    -
    2557
    -
    2558 ! Boundary condition at the end
    -
    2559 if (proc_coords(3) < num_procs_z - 1 .or. (bc_z%end == bc_periodic .and. num_procs_z > 1)) then
    -
    2560 proc_coords(3) = proc_coords(3) + 1
    -
    2561 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
    -
    2562 bc_z%end, ierr)
    -
    2563 proc_coords(3) = proc_coords(3) - 1
    -
    2564 end if
    -
    2565
    -
    2566#ifdef MFC_POST_PROCESS
    -
    2567 ! Ghost zone at the beginning
    -
    2568 if (proc_coords(3) > 0 .and. format == 1) then
    -
    2569 offset_z%beg = 2
    -
    2570 else
    -
    2571 offset_z%beg = 0
    -
    2572 end if
    -
    2573
    -
    2574 ! Ghost zone at the end
    -
    2575 if (proc_coords(3) < num_procs_z - 1 .and. format == 1) then
    -
    2576 offset_z%end = 2
    -
    2577 else
    -
    2578 offset_z%end = 0
    -
    2579 end if
    -
    2580#endif
    -
    2581
    -
    2582 ! Beginning and end sub-domain boundary locations
    -
    2583 if (parallel_io) then
    -
    2584 if (proc_coords(3) < rem_cells) then
    -
    2585 start_idx(3) = (p + 1)*proc_coords(3)
    -
    2586 else
    -
    2587 start_idx(3) = (p + 1)*proc_coords(3) + rem_cells
    -
    2588 end if
    -
    2589 else
    -
    2590#ifdef MFC_PRE_PROCESS
    -
    2591 if (old_grid .neqv. .true.) then
    -
    2592 dz = (z_domain%end - z_domain%beg)/real(p_glb + 1, wp)
    -
    2593
    -
    2594 if (proc_coords(3) < rem_cells) then
    -
    2595 z_domain%beg = z_domain%beg + dz*real((p + 1)* &
    -
    2596 proc_coords(3))
    -
    2597 z_domain%end = z_domain%end - dz*real((p + 1)* &
    -
    2598 (num_procs_z - proc_coords(3) - 1) &
    -
    2599 - (num_procs_z - rem_cells))
    -
    2600 else
    -
    2601 z_domain%beg = z_domain%beg + dz*real((p + 1)* &
    -
    2602 proc_coords(3) + rem_cells)
    -
    2603 z_domain%end = z_domain%end - dz*real((p + 1)* &
    -
    2604 (num_procs_z - proc_coords(3) - 1))
    -
    2605 end if
    -
    2606 end if
    -
    2607#endif
    -
    2608 end if
    -
    2609
    -
    2610 ! 2D Cartesian Processor Topology
    -
    2611 else
    -
    2612
    -
    2613 ! Initial estimate of optimal processor topology
    -
    2614 num_procs_x = 1
    -
    2615 num_procs_y = num_procs
    -
    2616 ierr = -1
    -
    2617
    -
    2618 ! Benchmarking the quality of this initial guess
    -
    2619 tmp_num_procs_x = num_procs_x
    -
    2620 tmp_num_procs_y = num_procs_y
    -
    2621 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x &
    -
    2622 - (n + 1)/tmp_num_procs_y)
    -
    2623
    -
    2624 ! Optimization of the initial processor topology
    -
    2625 do i = 1, num_procs
    -
    2626
    -
    2627 if (mod(num_procs, i) == 0 &
    -
    2628 .and. &
    -
    2629 (m + 1)/i >= num_stcls_min*recon_order) then
    -
    2630
    -
    2631 tmp_num_procs_x = i
    -
    2632 tmp_num_procs_y = num_procs/i
    -
    2633
    -
    2634 if (fct_min >= abs((m + 1)/tmp_num_procs_x &
    -
    2635 - (n + 1)/tmp_num_procs_y) &
    -
    2636 .and. &
    -
    2637 (n + 1)/tmp_num_procs_y &
    -
    2638 >= &
    -
    2639 num_stcls_min*recon_order) then
    -
    2640
    -
    2641 num_procs_x = i
    -
    2642 num_procs_y = num_procs/i
    -
    2643 fct_min = abs((m + 1)/tmp_num_procs_x &
    -
    2644 - (n + 1)/tmp_num_procs_y)
    -
    2645 ierr = 0
    +
    2535 ! Number of remaining cells
    +
    2536 rem_cells = mod(p + 1, num_procs_z)
    +
    2537
    +
    2538 ! Optimal number of cells per processor
    +
    2539 p = (p + 1)/num_procs_z - 1
    +
    2540
    +
    2541 ! Distributing the remaining cells
    +
    2542 do i = 1, rem_cells
    +
    2543 if (proc_coords(3) == i - 1) then
    +
    2544 p = p + 1; exit
    +
    2545 end if
    +
    2546 end do
    +
    2547
    +
    2548 ! Boundary condition at the beginning
    +
    2549 if (proc_coords(3) > 0 .or. (bc_z%beg == bc_periodic .and. num_procs_z > 1)) then
    +
    2550 proc_coords(3) = proc_coords(3) - 1
    +
    2551 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
    +
    2552 bc_z%beg, ierr)
    +
    2553 proc_coords(3) = proc_coords(3) + 1
    +
    2554 end if
    +
    2555
    +
    2556 ! Boundary condition at the end
    +
    2557 if (proc_coords(3) < num_procs_z - 1 .or. (bc_z%end == bc_periodic .and. num_procs_z > 1)) then
    +
    2558 proc_coords(3) = proc_coords(3) + 1
    +
    2559 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
    +
    2560 bc_z%end, ierr)
    +
    2561 proc_coords(3) = proc_coords(3) - 1
    +
    2562 end if
    +
    2563
    +
    2564#ifdef MFC_POST_PROCESS
    +
    2565 ! Ghost zone at the beginning
    +
    2566 if (proc_coords(3) > 0 .and. format == 1) then
    +
    2567 offset_z%beg = 2
    +
    2568 else
    +
    2569 offset_z%beg = 0
    +
    2570 end if
    +
    2571
    +
    2572 ! Ghost zone at the end
    +
    2573 if (proc_coords(3) < num_procs_z - 1 .and. format == 1) then
    +
    2574 offset_z%end = 2
    +
    2575 else
    +
    2576 offset_z%end = 0
    +
    2577 end if
    +
    2578#endif
    +
    2579
    +
    2580 ! Beginning and end sub-domain boundary locations
    +
    2581 if (parallel_io) then
    +
    2582 if (proc_coords(3) < rem_cells) then
    +
    2583 start_idx(3) = (p + 1)*proc_coords(3)
    +
    2584 else
    +
    2585 start_idx(3) = (p + 1)*proc_coords(3) + rem_cells
    +
    2586 end if
    +
    2587 else
    +
    2588#ifdef MFC_PRE_PROCESS
    +
    2589 if (old_grid .neqv. .true.) then
    +
    2590 dz = (z_domain%end - z_domain%beg)/real(p_glb + 1, wp)
    +
    2591
    +
    2592 if (proc_coords(3) < rem_cells) then
    +
    2593 z_domain%beg = z_domain%beg + dz*real((p + 1)* &
    +
    2594 proc_coords(3))
    +
    2595 z_domain%end = z_domain%end - dz*real((p + 1)* &
    +
    2596 (num_procs_z - proc_coords(3) - 1) &
    +
    2597 - (num_procs_z - rem_cells))
    +
    2598 else
    +
    2599 z_domain%beg = z_domain%beg + dz*real((p + 1)* &
    +
    2600 proc_coords(3) + rem_cells)
    +
    2601 z_domain%end = z_domain%end - dz*real((p + 1)* &
    +
    2602 (num_procs_z - proc_coords(3) - 1))
    +
    2603 end if
    +
    2604 end if
    +
    2605#endif
    +
    2606 end if
    +
    2607
    +
    2608 ! 2D Cartesian Processor Topology
    +
    2609 else
    +
    2610
    +
    2611 ! Initial estimate of optimal processor topology
    +
    2612 num_procs_x = 1
    +
    2613 num_procs_y = num_procs
    +
    2614 ierr = -1
    +
    2615
    +
    2616 ! Benchmarking the quality of this initial guess
    +
    2617 tmp_num_procs_x = num_procs_x
    +
    2618 tmp_num_procs_y = num_procs_y
    +
    2619 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x &
    +
    2620 - (n + 1)/tmp_num_procs_y)
    +
    2621
    +
    2622 ! Optimization of the initial processor topology
    +
    2623 do i = 1, num_procs
    +
    2624
    +
    2625 if (mod(num_procs, i) == 0 &
    +
    2626 .and. &
    +
    2627 (m + 1)/i >= num_stcls_min*recon_order) then
    +
    2628
    +
    2629 tmp_num_procs_x = i
    +
    2630 tmp_num_procs_y = num_procs/i
    +
    2631
    +
    2632 if (fct_min >= abs((m + 1)/tmp_num_procs_x &
    +
    2633 - (n + 1)/tmp_num_procs_y) &
    +
    2634 .and. &
    +
    2635 (n + 1)/tmp_num_procs_y &
    +
    2636 >= &
    +
    2637 num_stcls_min*recon_order) then
    +
    2638
    +
    2639 num_procs_x = i
    +
    2640 num_procs_y = num_procs/i
    +
    2641 fct_min = abs((m + 1)/tmp_num_procs_x &
    +
    2642 - (n + 1)/tmp_num_procs_y)
    +
    2643 ierr = 0
    +
    2644
    +
    2645 end if
    2646
    -
    2647 end if
    +
    2647 end if
    2648
    -
    2649 end if
    +
    2649 end do
    2650
    -
    2651 end do
    -
    2652
    -
    2653 ! Verifying that a valid decomposition of the computational
    -
    2654 ! domain has been established. If not, the simulation exits.
    -
    2655 if (proc_rank == 0 .and. ierr == -1) then
    -
    2656 call s_mpi_abort('Unsupported combination of values '// &
    -
    2657 'of num_procs, m, n and '// &
    -
    2658 'weno/muscl/igr_order. Exiting.')
    -
    2659 end if
    -
    2660
    -
    2661 ! Creating new communicator using the Cartesian topology
    -
    2662 call mpi_cart_create(mpi_comm_world, 2, (/num_procs_x, &
    -
    2663 num_procs_y/), (/.true., &
    -
    2664 .true./), .false., mpi_comm_cart, &
    -
    2665 ierr)
    -
    2666
    -
    2667 ! Finding the Cartesian coordinates of the local process
    -
    2668 call mpi_cart_coords(mpi_comm_cart, proc_rank, 2, &
    -
    2669 proc_coords, ierr)
    -
    2670
    -
    2671 end if
    -
    2672 ! END: 2D Cartesian Processor Topology
    +
    2651 ! Verifying that a valid decomposition of the computational
    +
    2652 ! domain has been established. If not, the simulation exits.
    +
    2653 if (proc_rank == 0 .and. ierr == -1) then
    +
    2654 call s_mpi_abort('Unsupported combination of values '// &
    +
    2655 'of num_procs, m, n and '// &
    +
    2656 'weno/muscl/igr_order. Exiting.')
    +
    2657 end if
    +
    2658
    +
    2659 ! Creating new communicator using the Cartesian topology
    +
    2660 call mpi_cart_create(mpi_comm_world, 2, (/num_procs_x, &
    +
    2661 num_procs_y/), (/.true., &
    +
    2662 .true./), .false., mpi_comm_cart, &
    +
    2663 ierr)
    +
    2664
    +
    2665 ! Finding the Cartesian coordinates of the local process
    +
    2666 call mpi_cart_coords(mpi_comm_cart, proc_rank, 2, &
    +
    2667 proc_coords, ierr)
    +
    2668
    +
    2669 end if
    +
    2670 ! END: 2D Cartesian Processor Topology
    +
    2671
    +
    2672 ! Global Parameters for y-direction
    2673
    -
    2674 ! Global Parameters for y-direction
    -
    2675
    -
    2676 ! Number of remaining cells
    -
    2677 rem_cells = mod(n + 1, num_procs_y)
    -
    2678
    -
    2679 ! Optimal number of cells per processor
    -
    2680 n = (n + 1)/num_procs_y - 1
    -
    2681
    -
    2682 ! Distributing the remaining cells
    -
    2683 do i = 1, rem_cells
    -
    2684 if (proc_coords(2) == i - 1) then
    -
    2685 n = n + 1; exit
    -
    2686 end if
    -
    2687 end do
    -
    2688
    -
    2689 ! Boundary condition at the beginning
    -
    2690 if (proc_coords(2) > 0 .or. (bc_y%beg == bc_periodic .and. num_procs_y > 1)) then
    -
    2691 proc_coords(2) = proc_coords(2) - 1
    -
    2692 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
    -
    2693 bc_y%beg, ierr)
    -
    2694 proc_coords(2) = proc_coords(2) + 1
    -
    2695 end if
    -
    2696
    -
    2697 ! Boundary condition at the end
    -
    2698 if (proc_coords(2) < num_procs_y - 1 .or. (bc_y%end == bc_periodic .and. num_procs_y > 1)) then
    -
    2699 proc_coords(2) = proc_coords(2) + 1
    -
    2700 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
    -
    2701 bc_y%end, ierr)
    -
    2702 proc_coords(2) = proc_coords(2) - 1
    -
    2703 end if
    -
    2704
    -
    2705#ifdef MFC_POST_PROCESS
    -
    2706 ! Ghost zone at the beginning
    -
    2707 if (proc_coords(2) > 0 .and. format == 1) then
    -
    2708 offset_y%beg = 2
    -
    2709 else
    -
    2710 offset_y%beg = 0
    -
    2711 end if
    -
    2712
    -
    2713 ! Ghost zone at the end
    -
    2714 if (proc_coords(2) < num_procs_y - 1 .and. format == 1) then
    -
    2715 offset_y%end = 2
    -
    2716 else
    -
    2717 offset_y%end = 0
    -
    2718 end if
    -
    2719#endif
    -
    2720
    -
    2721 ! Beginning and end sub-domain boundary locations
    -
    2722 if (parallel_io) then
    -
    2723 if (proc_coords(2) < rem_cells) then
    -
    2724 start_idx(2) = (n + 1)*proc_coords(2)
    -
    2725 else
    -
    2726 start_idx(2) = (n + 1)*proc_coords(2) + rem_cells
    -
    2727 end if
    -
    2728 else
    -
    2729#ifdef MFC_PRE_PROCESS
    -
    2730 if (old_grid .neqv. .true.) then
    -
    2731 dy = (y_domain%end - y_domain%beg)/real(n_glb + 1, wp)
    -
    2732
    -
    2733 if (proc_coords(2) < rem_cells) then
    -
    2734 y_domain%beg = y_domain%beg + dy*real((n + 1)* &
    -
    2735 proc_coords(2))
    -
    2736 y_domain%end = y_domain%end - dy*real((n + 1)* &
    -
    2737 (num_procs_y - proc_coords(2) - 1) &
    -
    2738 - (num_procs_y - rem_cells))
    -
    2739 else
    -
    2740 y_domain%beg = y_domain%beg + dy*real((n + 1)* &
    -
    2741 proc_coords(2) + rem_cells)
    -
    2742 y_domain%end = y_domain%end - dy*real((n + 1)* &
    -
    2743 (num_procs_y - proc_coords(2) - 1))
    -
    2744 end if
    -
    2745 end if
    -
    2746#endif
    -
    2747 end if
    -
    2748
    -
    2749 ! 1D Cartesian Processor Topology
    -
    2750 else
    -
    2751
    -
    2752 ! Optimal processor topology
    -
    2753 num_procs_x = num_procs
    -
    2754
    -
    2755 ! Creating new communicator using the Cartesian topology
    -
    2756 call mpi_cart_create(mpi_comm_world, 1, (/num_procs_x/), &
    -
    2757 (/.true./), .false., mpi_comm_cart, &
    -
    2758 ierr)
    -
    2759
    -
    2760 ! Finding the Cartesian coordinates of the local process
    -
    2761 call mpi_cart_coords(mpi_comm_cart, proc_rank, 1, &
    -
    2762 proc_coords, ierr)
    +
    2674 ! Number of remaining cells
    +
    2675 rem_cells = mod(n + 1, num_procs_y)
    +
    2676
    +
    2677 ! Optimal number of cells per processor
    +
    2678 n = (n + 1)/num_procs_y - 1
    +
    2679
    +
    2680 ! Distributing the remaining cells
    +
    2681 do i = 1, rem_cells
    +
    2682 if (proc_coords(2) == i - 1) then
    +
    2683 n = n + 1; exit
    +
    2684 end if
    +
    2685 end do
    +
    2686
    +
    2687 ! Boundary condition at the beginning
    +
    2688 if (proc_coords(2) > 0 .or. (bc_y%beg == bc_periodic .and. num_procs_y > 1)) then
    +
    2689 proc_coords(2) = proc_coords(2) - 1
    +
    2690 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
    +
    2691 bc_y%beg, ierr)
    +
    2692 proc_coords(2) = proc_coords(2) + 1
    +
    2693 end if
    +
    2694
    +
    2695 ! Boundary condition at the end
    +
    2696 if (proc_coords(2) < num_procs_y - 1 .or. (bc_y%end == bc_periodic .and. num_procs_y > 1)) then
    +
    2697 proc_coords(2) = proc_coords(2) + 1
    +
    2698 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
    +
    2699 bc_y%end, ierr)
    +
    2700 proc_coords(2) = proc_coords(2) - 1
    +
    2701 end if
    +
    2702
    +
    2703#ifdef MFC_POST_PROCESS
    +
    2704 ! Ghost zone at the beginning
    +
    2705 if (proc_coords(2) > 0 .and. format == 1) then
    +
    2706 offset_y%beg = 2
    +
    2707 else
    +
    2708 offset_y%beg = 0
    +
    2709 end if
    +
    2710
    +
    2711 ! Ghost zone at the end
    +
    2712 if (proc_coords(2) < num_procs_y - 1 .and. format == 1) then
    +
    2713 offset_y%end = 2
    +
    2714 else
    +
    2715 offset_y%end = 0
    +
    2716 end if
    +
    2717#endif
    +
    2718
    +
    2719 ! Beginning and end sub-domain boundary locations
    +
    2720 if (parallel_io) then
    +
    2721 if (proc_coords(2) < rem_cells) then
    +
    2722 start_idx(2) = (n + 1)*proc_coords(2)
    +
    2723 else
    +
    2724 start_idx(2) = (n + 1)*proc_coords(2) + rem_cells
    +
    2725 end if
    +
    2726 else
    +
    2727#ifdef MFC_PRE_PROCESS
    +
    2728 if (old_grid .neqv. .true.) then
    +
    2729 dy = (y_domain%end - y_domain%beg)/real(n_glb + 1, wp)
    +
    2730
    +
    2731 if (proc_coords(2) < rem_cells) then
    +
    2732 y_domain%beg = y_domain%beg + dy*real((n + 1)* &
    +
    2733 proc_coords(2))
    +
    2734 y_domain%end = y_domain%end - dy*real((n + 1)* &
    +
    2735 (num_procs_y - proc_coords(2) - 1) &
    +
    2736 - (num_procs_y - rem_cells))
    +
    2737 else
    +
    2738 y_domain%beg = y_domain%beg + dy*real((n + 1)* &
    +
    2739 proc_coords(2) + rem_cells)
    +
    2740 y_domain%end = y_domain%end - dy*real((n + 1)* &
    +
    2741 (num_procs_y - proc_coords(2) - 1))
    +
    2742 end if
    +
    2743 end if
    +
    2744#endif
    +
    2745 end if
    +
    2746
    +
    2747 ! 1D Cartesian Processor Topology
    +
    2748 else
    +
    2749
    +
    2750 ! Optimal processor topology
    +
    2751 num_procs_x = num_procs
    +
    2752
    +
    2753 ! Creating new communicator using the Cartesian topology
    +
    2754 call mpi_cart_create(mpi_comm_world, 1, (/num_procs_x/), &
    +
    2755 (/.true./), .false., mpi_comm_cart, &
    +
    2756 ierr)
    +
    2757
    +
    2758 ! Finding the Cartesian coordinates of the local process
    +
    2759 call mpi_cart_coords(mpi_comm_cart, proc_rank, 1, &
    +
    2760 proc_coords, ierr)
    +
    2761
    +
    2762 end if
    2763
    -
    2764 end if
    +
    2764 ! Global Parameters for x-direction
    2765
    -
    2766 ! Global Parameters for x-direction
    -
    2767
    -
    2768 ! Number of remaining cells
    -
    2769 rem_cells = mod(m + 1, num_procs_x)
    -
    2770
    -
    2771 ! Optimal number of cells per processor
    -
    2772 m = (m + 1)/num_procs_x - 1
    -
    2773
    -
    2774 ! Distributing the remaining cells
    -
    2775 do i = 1, rem_cells
    -
    2776 if (proc_coords(1) == i - 1) then
    -
    2777 m = m + 1; exit
    -
    2778 end if
    -
    2779 end do
    +
    2766 ! Number of remaining cells
    +
    2767 rem_cells = mod(m + 1, num_procs_x)
    +
    2768
    +
    2769 ! Optimal number of cells per processor
    +
    2770 m = (m + 1)/num_procs_x - 1
    +
    2771
    +
    2772 ! Distributing the remaining cells
    +
    2773 do i = 1, rem_cells
    +
    2774 if (proc_coords(1) == i - 1) then
    +
    2775 m = m + 1; exit
    +
    2776 end if
    +
    2777 end do
    +
    2778
    +
    2779 call s_update_cell_bounds(cells_bounds, m, n, p)
    2780
    -
    2781 call s_update_cell_bounds(cells_bounds, m, n, p)
    -
    2782
    -
    2783 ! Boundary condition at the beginning
    -
    2784 if (proc_coords(1) > 0 .or. (bc_x%beg == bc_periodic .and. num_procs_x > 1)) then
    -
    2785 proc_coords(1) = proc_coords(1) - 1
    -
    2786 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%beg, ierr)
    -
    2787 proc_coords(1) = proc_coords(1) + 1
    -
    2788 end if
    -
    2789
    -
    2790 ! Boundary condition at the end
    -
    2791 if (proc_coords(1) < num_procs_x - 1 .or. (bc_x%end == bc_periodic .and. num_procs_x > 1)) then
    -
    2792 proc_coords(1) = proc_coords(1) + 1
    -
    2793 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%end, ierr)
    -
    2794 proc_coords(1) = proc_coords(1) - 1
    -
    2795 end if
    -
    2796
    -
    2797#ifdef MFC_POST_PROCESS
    -
    2798 ! Ghost zone at the beginning
    -
    2799 if (proc_coords(1) > 0 .and. format == 1) then
    -
    2800 offset_x%beg = 2
    -
    2801 else
    -
    2802 offset_x%beg = 0
    -
    2803 end if
    -
    2804
    -
    2805 ! Ghost zone at the end
    -
    2806 if (proc_coords(1) < num_procs_x - 1 .and. format == 1) then
    -
    2807 offset_x%end = 2
    -
    2808 else
    -
    2809 offset_x%end = 0
    -
    2810 end if
    -
    2811#endif
    -
    2812
    -
    2813 ! Beginning and end sub-domain boundary locations
    -
    2814 if (parallel_io) then
    -
    2815 if (proc_coords(1) < rem_cells) then
    -
    2816 start_idx(1) = (m + 1)*proc_coords(1)
    -
    2817 else
    -
    2818 start_idx(1) = (m + 1)*proc_coords(1) + rem_cells
    -
    2819 end if
    -
    2820 else
    -
    2821#ifdef MFC_PRE_PROCESS
    -
    2822 if (old_grid .neqv. .true.) then
    -
    2823 dx = (x_domain%end - x_domain%beg)/real(m_glb + 1, wp)
    -
    2824
    -
    2825 if (proc_coords(1) < rem_cells) then
    -
    2826 x_domain%beg = x_domain%beg + dx*real((m + 1)* &
    -
    2827 proc_coords(1))
    -
    2828 x_domain%end = x_domain%end - dx*real((m + 1)* &
    -
    2829 (num_procs_x - proc_coords(1) - 1) &
    -
    2830 - (num_procs_x - rem_cells))
    -
    2831 else
    -
    2832 x_domain%beg = x_domain%beg + dx*real((m + 1)* &
    -
    2833 proc_coords(1) + rem_cells)
    -
    2834 x_domain%end = x_domain%end - dx*real((m + 1)* &
    -
    2835 (num_procs_x - proc_coords(1) - 1))
    -
    2836 end if
    -
    2837 end if
    +
    2781 ! Boundary condition at the beginning
    +
    2782 if (proc_coords(1) > 0 .or. (bc_x%beg == bc_periodic .and. num_procs_x > 1)) then
    +
    2783 proc_coords(1) = proc_coords(1) - 1
    +
    2784 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%beg, ierr)
    +
    2785 proc_coords(1) = proc_coords(1) + 1
    +
    2786 end if
    +
    2787
    +
    2788 ! Boundary condition at the end
    +
    2789 if (proc_coords(1) < num_procs_x - 1 .or. (bc_x%end == bc_periodic .and. num_procs_x > 1)) then
    +
    2790 proc_coords(1) = proc_coords(1) + 1
    +
    2791 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%end, ierr)
    +
    2792 proc_coords(1) = proc_coords(1) - 1
    +
    2793 end if
    +
    2794
    +
    2795#ifdef MFC_POST_PROCESS
    +
    2796 ! Ghost zone at the beginning
    +
    2797 if (proc_coords(1) > 0 .and. format == 1) then
    +
    2798 offset_x%beg = 2
    +
    2799 else
    +
    2800 offset_x%beg = 0
    +
    2801 end if
    +
    2802
    +
    2803 ! Ghost zone at the end
    +
    2804 if (proc_coords(1) < num_procs_x - 1 .and. format == 1) then
    +
    2805 offset_x%end = 2
    +
    2806 else
    +
    2807 offset_x%end = 0
    +
    2808 end if
    +
    2809#endif
    +
    2810
    +
    2811 ! Beginning and end sub-domain boundary locations
    +
    2812 if (parallel_io) then
    +
    2813 if (proc_coords(1) < rem_cells) then
    +
    2814 start_idx(1) = (m + 1)*proc_coords(1)
    +
    2815 else
    +
    2816 start_idx(1) = (m + 1)*proc_coords(1) + rem_cells
    +
    2817 end if
    +
    2818 else
    +
    2819#ifdef MFC_PRE_PROCESS
    +
    2820 if (old_grid .neqv. .true.) then
    +
    2821 dx = (x_domain%end - x_domain%beg)/real(m_glb + 1, wp)
    +
    2822
    +
    2823 if (proc_coords(1) < rem_cells) then
    +
    2824 x_domain%beg = x_domain%beg + dx*real((m + 1)* &
    +
    2825 proc_coords(1))
    +
    2826 x_domain%end = x_domain%end - dx*real((m + 1)* &
    +
    2827 (num_procs_x - proc_coords(1) - 1) &
    +
    2828 - (num_procs_x - rem_cells))
    +
    2829 else
    +
    2830 x_domain%beg = x_domain%beg + dx*real((m + 1)* &
    +
    2831 proc_coords(1) + rem_cells)
    +
    2832 x_domain%end = x_domain%end - dx*real((m + 1)* &
    +
    2833 (num_procs_x - proc_coords(1) - 1))
    +
    2834 end if
    +
    2835 end if
    +
    2836#endif
    +
    2837 end if
    2838#endif
    -
    2839 end if
    -
    2840#endif
    -
    2841
    +
    2839
    - -
    2843
    -
    2844 !> The goal of this procedure is to populate the buffers of
    -
    2845 !! the grid variables by communicating with the neighboring
    -
    2846 !! processors. Note that only the buffers of the cell-width
    -
    2847 !! distributions are handled in such a way. This is because
    -
    2848 !! the buffers of cell-boundary locations may be calculated
    -
    2849 !! directly from those of the cell-width distributions.
    -
    2850 !! @param mpi_dir MPI communication coordinate direction
    -
    2851 !! @param pbc_loc Processor boundary condition (PBC) location
    -
    2852#ifndef MFC_PRE_PROCESS
    -
    -
    2853 subroutine s_mpi_sendrecv_grid_variables_buffers(mpi_dir, pbc_loc)
    -
    2854
    -
    2855 integer, intent(in) :: mpi_dir
    -
    2856 integer, intent(in) :: pbc_loc
    -
    2857
    -
    2858#ifdef MFC_MPI
    -
    2859 integer :: ierr !< Generic flag used to identify and report MPI errors
    -
    2860
    -
    2861 ! MPI Communication in x-direction
    -
    2862 if (mpi_dir == 1) then
    + +
    2841
    +
    2842 !> The goal of this procedure is to populate the buffers of
    +
    2843 !! the grid variables by communicating with the neighboring
    +
    2844 !! processors. Note that only the buffers of the cell-width
    +
    2845 !! distributions are handled in such a way. This is because
    +
    2846 !! the buffers of cell-boundary locations may be calculated
    +
    2847 !! directly from those of the cell-width distributions.
    +
    2848 !! @param mpi_dir MPI communication coordinate direction
    +
    2849 !! @param pbc_loc Processor boundary condition (PBC) location
    +
    2850#ifndef MFC_PRE_PROCESS
    +
    +
    2851 subroutine s_mpi_sendrecv_grid_variables_buffers(mpi_dir, pbc_loc)
    +
    2852
    +
    2853 integer, intent(in) :: mpi_dir
    +
    2854 integer, intent(in) :: pbc_loc
    +
    2855
    +
    2856#ifdef MFC_MPI
    +
    2857 integer :: ierr !< Generic flag used to identify and report MPI errors
    +
    2858
    +
    2859 ! MPI Communication in x-direction
    +
    2860 if (mpi_dir == 1) then
    +
    2861
    +
    2862 if (pbc_loc == -1) then ! PBC at the beginning
    2863
    -
    2864 if (pbc_loc == -1) then ! PBC at the beginning
    +
    2864 if (bc_x%end >= 0) then ! PBC at the beginning and end
    2865
    -
    2866 if (bc_x%end >= 0) then ! PBC at the beginning and end
    -
    2867
    -
    2868 ! Send/receive buffer to/from bc_x%end/bc_x%beg
    -
    2869 call mpi_sendrecv( &
    -
    2870 dx(m - buff_size + 1), buff_size, &
    -
    2871 mpi_p, bc_x%end, 0, &
    -
    2872 dx(-buff_size), buff_size, &
    -
    2873 mpi_p, bc_x%beg, 0, &
    -
    2874 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2866 ! Send/receive buffer to/from bc_x%end/bc_x%beg
    +
    2867 call mpi_sendrecv( &
    +
    2868 dx(m - buff_size + 1), buff_size, &
    +
    2869 mpi_p, bc_x%end, 0, &
    +
    2870 dx(-buff_size), buff_size, &
    +
    2871 mpi_p, bc_x%beg, 0, &
    +
    2872 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2873
    +
    2874 else ! PBC at the beginning only
    2875
    -
    2876 else ! PBC at the beginning only
    -
    2877
    -
    2878 ! Send/receive buffer to/from bc_x%beg/bc_x%beg
    -
    2879 call mpi_sendrecv( &
    -
    2880 dx(0), buff_size, &
    -
    2881 mpi_p, bc_x%beg, 1, &
    -
    2882 dx(-buff_size), buff_size, &
    -
    2883 mpi_p, bc_x%beg, 0, &
    -
    2884 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2876 ! Send/receive buffer to/from bc_x%beg/bc_x%beg
    +
    2877 call mpi_sendrecv( &
    +
    2878 dx(0), buff_size, &
    +
    2879 mpi_p, bc_x%beg, 1, &
    +
    2880 dx(-buff_size), buff_size, &
    +
    2881 mpi_p, bc_x%beg, 0, &
    +
    2882 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2883
    +
    2884 end if
    2885
    -
    2886 end if
    +
    2886 else ! PBC at the end
    2887
    -
    2888 else ! PBC at the end
    +
    2888 if (bc_x%beg >= 0) then ! PBC at the end and beginning
    2889
    -
    2890 if (bc_x%beg >= 0) then ! PBC at the end and beginning
    -
    2891
    -
    2892 ! Send/receive buffer to/from bc_x%beg/bc_x%end
    -
    2893 call mpi_sendrecv( &
    -
    2894 dx(0), buff_size, &
    -
    2895 mpi_p, bc_x%beg, 1, &
    -
    2896 dx(m + 1), buff_size, &
    -
    2897 mpi_p, bc_x%end, 1, &
    -
    2898 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2890 ! Send/receive buffer to/from bc_x%beg/bc_x%end
    +
    2891 call mpi_sendrecv( &
    +
    2892 dx(0), buff_size, &
    +
    2893 mpi_p, bc_x%beg, 1, &
    +
    2894 dx(m + 1), buff_size, &
    +
    2895 mpi_p, bc_x%end, 1, &
    +
    2896 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2897
    +
    2898 else ! PBC at the end only
    2899
    -
    2900 else ! PBC at the end only
    -
    2901
    -
    2902 ! Send/receive buffer to/from bc_x%end/bc_x%end
    -
    2903 call mpi_sendrecv( &
    -
    2904 dx(m - buff_size + 1), buff_size, &
    -
    2905 mpi_p, bc_x%end, 0, &
    -
    2906 dx(m + 1), buff_size, &
    -
    2907 mpi_p, bc_x%end, 1, &
    -
    2908 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2900 ! Send/receive buffer to/from bc_x%end/bc_x%end
    +
    2901 call mpi_sendrecv( &
    +
    2902 dx(m - buff_size + 1), buff_size, &
    +
    2903 mpi_p, bc_x%end, 0, &
    +
    2904 dx(m + 1), buff_size, &
    +
    2905 mpi_p, bc_x%end, 1, &
    +
    2906 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2907
    +
    2908 end if
    2909
    -
    2910 end if
    -
    2911
    -
    2912 end if
    -
    2913 ! END: MPI Communication in x-direction
    -
    2914
    -
    2915 ! MPI Communication in y-direction
    -
    2916 elseif (mpi_dir == 2) then
    +
    2910 end if
    +
    2911 ! END: MPI Communication in x-direction
    +
    2912
    +
    2913 ! MPI Communication in y-direction
    +
    2914 elseif (mpi_dir == 2) then
    +
    2915
    +
    2916 if (pbc_loc == -1) then ! PBC at the beginning
    2917
    -
    2918 if (pbc_loc == -1) then ! PBC at the beginning
    +
    2918 if (bc_y%end >= 0) then ! PBC at the beginning and end
    2919
    -
    2920 if (bc_y%end >= 0) then ! PBC at the beginning and end
    -
    2921
    -
    2922 ! Send/receive buffer to/from bc_y%end/bc_y%beg
    -
    2923 call mpi_sendrecv( &
    -
    2924 dy(n - buff_size + 1), buff_size, &
    -
    2925 mpi_p, bc_y%end, 0, &
    -
    2926 dy(-buff_size), buff_size, &
    -
    2927 mpi_p, bc_y%beg, 0, &
    -
    2928 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2920 ! Send/receive buffer to/from bc_y%end/bc_y%beg
    +
    2921 call mpi_sendrecv( &
    +
    2922 dy(n - buff_size + 1), buff_size, &
    +
    2923 mpi_p, bc_y%end, 0, &
    +
    2924 dy(-buff_size), buff_size, &
    +
    2925 mpi_p, bc_y%beg, 0, &
    +
    2926 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2927
    +
    2928 else ! PBC at the beginning only
    2929
    -
    2930 else ! PBC at the beginning only
    -
    2931
    -
    2932 ! Send/receive buffer to/from bc_y%beg/bc_y%beg
    -
    2933 call mpi_sendrecv( &
    -
    2934 dy(0), buff_size, &
    -
    2935 mpi_p, bc_y%beg, 1, &
    -
    2936 dy(-buff_size), buff_size, &
    -
    2937 mpi_p, bc_y%beg, 0, &
    -
    2938 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2930 ! Send/receive buffer to/from bc_y%beg/bc_y%beg
    +
    2931 call mpi_sendrecv( &
    +
    2932 dy(0), buff_size, &
    +
    2933 mpi_p, bc_y%beg, 1, &
    +
    2934 dy(-buff_size), buff_size, &
    +
    2935 mpi_p, bc_y%beg, 0, &
    +
    2936 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2937
    +
    2938 end if
    2939
    -
    2940 end if
    +
    2940 else ! PBC at the end
    2941
    -
    2942 else ! PBC at the end
    +
    2942 if (bc_y%beg >= 0) then ! PBC at the end and beginning
    2943
    -
    2944 if (bc_y%beg >= 0) then ! PBC at the end and beginning
    -
    2945
    -
    2946 ! Send/receive buffer to/from bc_y%beg/bc_y%end
    -
    2947 call mpi_sendrecv( &
    -
    2948 dy(0), buff_size, &
    -
    2949 mpi_p, bc_y%beg, 1, &
    -
    2950 dy(n + 1), buff_size, &
    -
    2951 mpi_p, bc_y%end, 1, &
    -
    2952 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2944 ! Send/receive buffer to/from bc_y%beg/bc_y%end
    +
    2945 call mpi_sendrecv( &
    +
    2946 dy(0), buff_size, &
    +
    2947 mpi_p, bc_y%beg, 1, &
    +
    2948 dy(n + 1), buff_size, &
    +
    2949 mpi_p, bc_y%end, 1, &
    +
    2950 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2951
    +
    2952 else ! PBC at the end only
    2953
    -
    2954 else ! PBC at the end only
    -
    2955
    -
    2956 ! Send/receive buffer to/from bc_y%end/bc_y%end
    -
    2957 call mpi_sendrecv( &
    -
    2958 dy(n - buff_size + 1), buff_size, &
    -
    2959 mpi_p, bc_y%end, 0, &
    -
    2960 dy(n + 1), buff_size, &
    -
    2961 mpi_p, bc_y%end, 1, &
    -
    2962 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2954 ! Send/receive buffer to/from bc_y%end/bc_y%end
    +
    2955 call mpi_sendrecv( &
    +
    2956 dy(n - buff_size + 1), buff_size, &
    +
    2957 mpi_p, bc_y%end, 0, &
    +
    2958 dy(n + 1), buff_size, &
    +
    2959 mpi_p, bc_y%end, 1, &
    +
    2960 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2961
    +
    2962 end if
    2963
    -
    2964 end if
    -
    2965
    -
    2966 end if
    -
    2967 ! END: MPI Communication in y-direction
    -
    2968
    -
    2969 ! MPI Communication in z-direction
    -
    2970 else
    +
    2964 end if
    +
    2965 ! END: MPI Communication in y-direction
    +
    2966
    +
    2967 ! MPI Communication in z-direction
    +
    2968 else
    +
    2969
    +
    2970 if (pbc_loc == -1) then ! PBC at the beginning
    2971
    -
    2972 if (pbc_loc == -1) then ! PBC at the beginning
    +
    2972 if (bc_z%end >= 0) then ! PBC at the beginning and end
    2973
    -
    2974 if (bc_z%end >= 0) then ! PBC at the beginning and end
    -
    2975
    -
    2976 ! Send/receive buffer to/from bc_z%end/bc_z%beg
    -
    2977 call mpi_sendrecv( &
    -
    2978 dz(p - buff_size + 1), buff_size, &
    -
    2979 mpi_p, bc_z%end, 0, &
    -
    2980 dz(-buff_size), buff_size, &
    -
    2981 mpi_p, bc_z%beg, 0, &
    -
    2982 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2974 ! Send/receive buffer to/from bc_z%end/bc_z%beg
    +
    2975 call mpi_sendrecv( &
    +
    2976 dz(p - buff_size + 1), buff_size, &
    +
    2977 mpi_p, bc_z%end, 0, &
    +
    2978 dz(-buff_size), buff_size, &
    +
    2979 mpi_p, bc_z%beg, 0, &
    +
    2980 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2981
    +
    2982 else ! PBC at the beginning only
    2983
    -
    2984 else ! PBC at the beginning only
    -
    2985
    -
    2986 ! Send/receive buffer to/from bc_z%beg/bc_z%beg
    -
    2987 call mpi_sendrecv( &
    -
    2988 dz(0), buff_size, &
    -
    2989 mpi_p, bc_z%beg, 1, &
    -
    2990 dz(-buff_size), buff_size, &
    -
    2991 mpi_p, bc_z%beg, 0, &
    -
    2992 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2984 ! Send/receive buffer to/from bc_z%beg/bc_z%beg
    +
    2985 call mpi_sendrecv( &
    +
    2986 dz(0), buff_size, &
    +
    2987 mpi_p, bc_z%beg, 1, &
    +
    2988 dz(-buff_size), buff_size, &
    +
    2989 mpi_p, bc_z%beg, 0, &
    +
    2990 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2991
    +
    2992 end if
    2993
    -
    2994 end if
    +
    2994 else ! PBC at the end
    2995
    -
    2996 else ! PBC at the end
    +
    2996 if (bc_z%beg >= 0) then ! PBC at the end and beginning
    2997
    -
    2998 if (bc_z%beg >= 0) then ! PBC at the end and beginning
    -
    2999
    -
    3000 ! Send/receive buffer to/from bc_z%beg/bc_z%end
    -
    3001 call mpi_sendrecv( &
    -
    3002 dz(0), buff_size, &
    -
    3003 mpi_p, bc_z%beg, 1, &
    -
    3004 dz(p + 1), buff_size, &
    -
    3005 mpi_p, bc_z%end, 1, &
    -
    3006 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2998 ! Send/receive buffer to/from bc_z%beg/bc_z%end
    +
    2999 call mpi_sendrecv( &
    +
    3000 dz(0), buff_size, &
    +
    3001 mpi_p, bc_z%beg, 1, &
    +
    3002 dz(p + 1), buff_size, &
    +
    3003 mpi_p, bc_z%end, 1, &
    +
    3004 mpi_comm_world, mpi_status_ignore, ierr)
    +
    3005
    +
    3006 else ! PBC at the end only
    3007
    -
    3008 else ! PBC at the end only
    -
    3009
    -
    3010 ! Send/receive buffer to/from bc_z%end/bc_z%end
    -
    3011 call mpi_sendrecv( &
    -
    3012 dz(p - buff_size + 1), buff_size, &
    -
    3013 mpi_p, bc_z%end, 0, &
    -
    3014 dz(p + 1), buff_size, &
    -
    3015 mpi_p, bc_z%end, 1, &
    -
    3016 mpi_comm_world, mpi_status_ignore, ierr)
    +
    3008 ! Send/receive buffer to/from bc_z%end/bc_z%end
    +
    3009 call mpi_sendrecv( &
    +
    3010 dz(p - buff_size + 1), buff_size, &
    +
    3011 mpi_p, bc_z%end, 0, &
    +
    3012 dz(p + 1), buff_size, &
    +
    3013 mpi_p, bc_z%end, 1, &
    +
    3014 mpi_comm_world, mpi_status_ignore, ierr)
    +
    3015
    +
    3016 end if
    3017
    -
    3018 end if
    +
    3018 end if
    3019
    -
    3020 end if
    -
    3021
    -
    3022 end if
    -
    3023 ! END: MPI Communication in z-direction
    -
    3024#endif
    -
    3025
    +
    3020 end if
    +
    3021 ! END: MPI Communication in z-direction
    +
    3022#endif
    +
    3023
    - -
    3027#endif
    -
    3028
    -
    3029 !> Module deallocation and/or disassociation procedures
    -
    - -
    3031
    -
    3032#ifdef MFC_MPI
    -
    3033 deallocate (buff_send, buff_recv)
    -
    3034#endif
    -
    3035
    + +
    3025#endif
    +
    3026
    +
    3027 !> Module deallocation and/or disassociation procedures
    +
    + +
    3029
    +
    3030#ifdef MFC_MPI
    +
    3031 deallocate (buff_send, buff_recv)
    +
    3032#endif
    +
    3033
    -
    3036 end subroutine s_finalize_mpi_common_module
    -
    3037
    -
    3038end module m_mpi_common
    +
    3034 end subroutine s_finalize_mpi_common_module
    +
    3035
    +
    3036end module m_mpi_common
    type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
    integer, intent(in) j
    Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
    @@ -3241,7 +3239,7 @@
    real(wp), dimension(:), allocatable, private buff_recv
    buff_recv is utilized to receive and unpack the buffer of the cell- average primitive variables,...
    impure subroutine s_initialize_mpi_data(q_cons_vf, ib_markers, beta)
    impure subroutine s_mpi_reduce_maxloc(var_loc)
    The following subroutine takes the first element of the 2-element inputted variable and determines it...
    -
    subroutine s_mpi_sendrecv_grid_variables_buffers(mpi_dir, pbc_loc)
    The goal of this procedure is to populate the buffers of the grid variables by communicating with the...
    +
    subroutine s_mpi_sendrecv_grid_variables_buffers(mpi_dir, pbc_loc)
    The goal of this procedure is to populate the buffers of the grid variables by communicating with the...
    impure subroutine s_mpi_reduce_stability_criteria_extrema(icfl_max_loc, vcfl_max_loc, rc_min_loc, icfl_max_glb, vcfl_max_glb, rc_min_glb)
    The goal of this subroutine is to determine the global extrema of the stability criteria in the compu...
    impure subroutine s_mpi_allreduce_sum(var_loc, var_glb)
    The following subroutine takes the input local variable from all processors and reduces to the sum of...
    real(wp), dimension(:), allocatable, private buff_send
    This variable is utilized to pack and send the buffer of the cell-average primitive variables,...
    @@ -3255,7 +3253,7 @@
    integer, private v_size
    impure subroutine mpi_bcast_time_step_values(proc_time, time_avg)
    Gathers per-rank time step wall-clock times onto rank 0 for performance reporting.
    impure subroutine s_mpi_reduce_min(var_loc)
    The following subroutine takes the inputted variable and determines its minimum value on the entire c...
    -
    impure subroutine s_finalize_mpi_common_module
    Module deallocation and/or disassociation procedures.
    +
    impure subroutine s_finalize_mpi_common_module
    Module deallocation and/or disassociation procedures.
    integer(kind=8) halo_size
    subroutine s_mpi_decompose_computational_domain
    The purpose of this procedure is to optimally decompose the computational domain among the available ...
    NVIDIA NVTX profiling API bindings for GPU performance instrumentation.
    Definition m_nvtx.f90:6
    diff --git a/pre_process/m__mpi__proxy_8fpp_8f90_source.html b/pre_process/m__mpi__proxy_8fpp_8f90_source.html index 2da49daa8..a97c197b3 100644 --- a/pre_process/m__mpi__proxy_8fpp_8f90_source.html +++ b/pre_process/m__mpi__proxy_8fpp_8f90_source.html @@ -317,7 +317,7 @@
    179# 59 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
    180 call mpi_bcast(hyper_cleaning, 1, mpi_logical, 0, mpi_comm_world, ierr)
    181# 61 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
    -
    182 call mpi_bcast(fluid_rho(1), num_fluids_max, mpi_logical, 0, mpi_comm_world, ierr)
    +
    182 call mpi_bcast(fluid_rho(1), num_fluids_max, mpi_p, 0, mpi_comm_world, ierr)
    183
    184# 71 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
    185 call mpi_bcast(x_domain%beg, 1, mpi_p, 0, mpi_comm_world, ierr)
    diff --git a/pre_process/m__start__up_8fpp_8f90_source.html b/pre_process/m__start__up_8fpp_8f90_source.html index 1a821e737..96fb3bf8f 100644 --- a/pre_process/m__start__up_8fpp_8f90_source.html +++ b/pre_process/m__start__up_8fpp_8f90_source.html @@ -1089,8 +1089,8 @@
    Writes grid and initial condition data to serial or parallel output files.
    procedure(s_write_abstract_data_files), pointer, public s_write_data_files
    character(len=path_len+2 *name_len), private t_step_dir
    Time-step folder into which grid and initial condition data will be placed.
    -
    impure subroutine, public s_initialize_data_output_module
    Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the...
    -
    impure subroutine, public s_finalize_data_output_module
    Resets s_write_data_files pointer.
    +
    impure subroutine, public s_initialize_data_output_module
    Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the...
    +
    impure subroutine, public s_finalize_data_output_module
    Resets s_write_data_files pointer.
    impure subroutine, public s_write_parallel_data_files(q_cons_vf, q_prim_vf, bc_type)
    Writes grid and initial condition data files in parallel to the "0" time-step directory in the local ...
    impure subroutine, public s_write_serial_data_files(q_cons_vf, q_prim_vf, bc_type)
    Writes grid and initial condition data files to the "0" time-step directory in the local processor ra...
    character(len=path_len+2 *name_len), public restart_dir
    Restart data folder.
    @@ -1259,7 +1259,7 @@
    impure subroutine s_mpi_finalize
    The subroutine finalizes the MPI execution environment.
    impure subroutine mpi_bcast_time_step_values(proc_time, time_avg)
    Gathers per-rank time step wall-clock times onto rank 0 for performance reporting.
    impure subroutine s_mpi_reduce_min(var_loc)
    The following subroutine takes the inputted variable and determines its minimum value on the entire c...
    -
    impure subroutine s_finalize_mpi_common_module
    Module deallocation and/or disassociation procedures.
    +
    impure subroutine s_finalize_mpi_common_module
    Module deallocation and/or disassociation procedures.
    subroutine s_mpi_decompose_computational_domain
    The purpose of this procedure is to optimally decompose the computational domain among the available ...
    Broadcasts user inputs and decomposes the domain across MPI ranks for pre-processing.
    impure subroutine s_mpi_bcast_user_inputs
    Since only processor with rank 0 is in charge of reading and checking the consistency of the user pro...
    @@ -1287,7 +1287,7 @@
    impure subroutine, public s_read_parallel_grid_data_files
    Cell-boundary data are checked for consistency by looking at the (non-)uniform cell-width distributio...
    Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
    impure subroutine, public s_initialize_variables_conversion_module
    The computation of parameters, the allocation of memory, the association of pointers and/or the execu...
    -
    impure subroutine s_finalize_variables_conversion_module()
    Deallocates fluid property arrays and post-processing fields allocated during module initialization.
    +
    impure subroutine s_finalize_variables_conversion_module()
    Deallocates fluid property arrays and post-processing fields allocated during module initialization.
    Derived type annexing an integer scalar field (SF).
    Derived type for bubble variables pb and mv at quadrature nodes (qbmm).
    Derived type annexing a scalar field (SF).
    diff --git a/pre_process/m__variables__conversion_8fpp_8f90_source.html b/pre_process/m__variables__conversion_8fpp_8f90_source.html index 591124711..f4f1ee3eb 100644 --- a/pre_process/m__variables__conversion_8fpp_8f90_source.html +++ b/pre_process/m__variables__conversion_8fpp_8f90_source.html @@ -1918,21 +1918,21 @@
    1764 end if
    1765
    1766 if (hypoelasticity) then
    -
    1767
    -
    1768# 855 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    1769#if defined(MFC_OpenACC)
    -
    1770# 855 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    1771!$acc loop seq
    -
    1772# 855 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    1773#elif defined(MFC_OpenMP)
    -
    1774# 855 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    1775
    -
    1776# 855 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    1777#endif
    -
    1778 do i = strxb, strxe
    -
    1779 ! subtracting elastic contribution for pressure calculation
    -
    1780 if (g_k > verysmall) then
    -
    1781 if (cont_damage) g_k = g_k*max((1._wp - qk_cons_vf(damage_idx)%sf(j, k, l)), 0._wp)
    +
    1767 if (cont_damage) g_k = g_k*max((1._wp - qk_cons_vf(damage_idx)%sf(j, k, l)), 0._wp)
    +
    1768
    +
    1769# 856 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    1770#if defined(MFC_OpenACC)
    +
    1771# 856 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    1772!$acc loop seq
    +
    1773# 856 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    1774#elif defined(MFC_OpenMP)
    +
    1775# 856 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    1776
    +
    1777# 856 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    1778#endif
    +
    1779 do i = strxb, strxe
    +
    1780 ! subtracting elastic contribution for pressure calculation
    +
    1781 if (g_k > verysmall) then
    1782 qk_prim_vf(e_idx)%sf(j, k, l) = qk_prim_vf(e_idx)%sf(j, k, l) - &
    1783 ((qk_prim_vf(i)%sf(j, k, l)**2._wp)/(4._wp*g_k))/gamma_k
    1784 ! Double for shear stresses
    @@ -2239,737 +2239,736 @@
    2083 end if
    2084
    2085 if (hypoelasticity) then
    -
    2086 do i = strxb, strxe
    -
    2087 ! adding elastic contribution
    -
    2088 if (g > verysmall) then
    -
    2089 if (cont_damage) g = g*max((1._wp - q_prim_vf(damage_idx)%sf(j, k, l)), 0._wp)
    -
    2090
    -
    2091 q_cons_vf(e_idx)%sf(j, k, l) = q_cons_vf(e_idx)%sf(j, k, l) + &
    -
    2092 (q_prim_vf(i)%sf(j, k, l)**2._wp)/(4._wp*g)
    -
    2093 ! Double for shear stresses
    -
    2094 if (any(i == shear_indices)) then
    -
    2095 q_cons_vf(e_idx)%sf(j, k, l) = q_cons_vf(e_idx)%sf(j, k, l) + &
    -
    2096 (q_prim_vf(i)%sf(j, k, l)**2._wp)/(4._wp*g)
    -
    2097 end if
    -
    2098 end if
    -
    2099 end do
    -
    2100 end if
    -
    2101
    -
    2102 ! using \rho xi as the conservative formulation stated in Kamrin et al. JFM 2022
    -
    2103 if (hyperelasticity) then
    -
    2104 ! Multiply \xi to \rho \xi
    -
    2105 do i = xibeg, xiend
    -
    2106 q_cons_vf(i)%sf(j, k, l) = rho*q_prim_vf(i)%sf(j, k, l)
    -
    2107 end do
    -
    2108 end if
    -
    2109
    -
    2110 if (surface_tension) then
    -
    2111 q_cons_vf(c_idx)%sf(j, k, l) = q_prim_vf(c_idx)%sf(j, k, l)
    -
    2112 end if
    -
    2113
    -
    2114 if (cont_damage) q_cons_vf(damage_idx)%sf(j, k, l) = q_prim_vf(damage_idx)%sf(j, k, l)
    -
    2115
    -
    2116 if (hyper_cleaning) q_cons_vf(psi_idx)%sf(j, k, l) = q_prim_vf(psi_idx)%sf(j, k, l)
    -
    2117
    -
    2118 end do
    -
    2119 end do
    -
    2120 end do
    -
    2121#else
    -
    2122 if (proc_rank == 0) then
    -
    2123 call s_mpi_abort('Conversion from primitive to '// &
    -
    2124 'conservative variables not '// &
    -
    2125 'implemented. Exiting.')
    -
    2126 end if
    -
    2127#endif
    +
    2086 if (cont_damage) g = g*max((1._wp - q_prim_vf(damage_idx)%sf(j, k, l)), 0._wp)
    +
    2087 do i = strxb, strxe
    +
    2088 ! adding elastic contribution
    +
    2089 if (g > verysmall) then
    +
    2090 q_cons_vf(e_idx)%sf(j, k, l) = q_cons_vf(e_idx)%sf(j, k, l) + &
    +
    2091 (q_prim_vf(i)%sf(j, k, l)**2._wp)/(4._wp*g)
    +
    2092 ! Double for shear stresses
    +
    2093 if (any(i == shear_indices)) then
    +
    2094 q_cons_vf(e_idx)%sf(j, k, l) = q_cons_vf(e_idx)%sf(j, k, l) + &
    +
    2095 (q_prim_vf(i)%sf(j, k, l)**2._wp)/(4._wp*g)
    +
    2096 end if
    +
    2097 end if
    +
    2098 end do
    +
    2099 end if
    +
    2100
    +
    2101 ! using \rho xi as the conservative formulation stated in Kamrin et al. JFM 2022
    +
    2102 if (hyperelasticity) then
    +
    2103 ! Multiply \xi to \rho \xi
    +
    2104 do i = xibeg, xiend
    +
    2105 q_cons_vf(i)%sf(j, k, l) = rho*q_prim_vf(i)%sf(j, k, l)
    +
    2106 end do
    +
    2107 end if
    +
    2108
    +
    2109 if (surface_tension) then
    +
    2110 q_cons_vf(c_idx)%sf(j, k, l) = q_prim_vf(c_idx)%sf(j, k, l)
    +
    2111 end if
    +
    2112
    +
    2113 if (cont_damage) q_cons_vf(damage_idx)%sf(j, k, l) = q_prim_vf(damage_idx)%sf(j, k, l)
    +
    2114
    +
    2115 if (hyper_cleaning) q_cons_vf(psi_idx)%sf(j, k, l) = q_prim_vf(psi_idx)%sf(j, k, l)
    +
    2116
    +
    2117 end do
    +
    2118 end do
    +
    2119 end do
    +
    2120#else
    +
    2121 if (proc_rank == 0) then
    +
    2122 call s_mpi_abort('Conversion from primitive to '// &
    +
    2123 'conservative variables not '// &
    +
    2124 'implemented. Exiting.')
    +
    2125 end if
    +
    2126#endif
    - -
    2129
    -
    2130 !> The following subroutine handles the conversion between
    -
    2131 !! the primitive variables and the Eulerian flux variables.
    -
    2132 !! @param qK_prim_vf Primitive variables
    -
    2133 !! @param FK_vf Flux variables
    -
    2134 !! @param FK_src_vf Flux source variables
    -
    2135 !! @param is1 Index bounds in the first coordinate direction
    -
    2136 !! @param is2 Index bounds in the second coordinate direction
    -
    2137 !! @param is3 Index bounds in the third coordinate direction
    -
    2138 !! @param s2b Starting boundary index in the second coordinate direction
    -
    2139 !! @param s3b Starting boundary index in the third coordinate direction
    -
    - -
    2141 FK_vf, &
    -
    2142 FK_src_vf, &
    -
    2143 is1, is2, is3, s2b, s3b)
    -
    2144
    -
    2145 integer, intent(in) :: s2b, s3b
    -
    2146 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(in) :: qk_prim_vf
    -
    2147 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) :: fk_vf
    -
    2148 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, advxb:), intent(inout) :: fk_src_vf
    -
    2149
    -
    2150 type(int_bounds_info), intent(in) :: is1, is2, is3
    -
    2151
    -
    2152 ! Partial densities, density, velocity, pressure, energy, advection
    -
    2153 ! variables, the specific heat ratio and liquid stiffness functions,
    -
    2154 ! the shear and volume Reynolds numbers and the Weber numbers
    -
    2155# 1201 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2156 real(wp), dimension(num_fluids) :: alpha_rho_k
    -
    2157 real(wp), dimension(num_fluids) :: alpha_k
    -
    2158 real(wp), dimension(num_vels) :: vel_k
    -
    2159 real(wp), dimension(num_species) :: y_k
    -
    2160# 1206 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2161 real(wp) :: rho_k
    -
    2162 real(wp) :: vel_k_sum
    -
    2163 real(wp) :: pres_k
    -
    2164 real(wp) :: e_k
    -
    2165 real(wp) :: gamma_k
    -
    2166 real(wp) :: pi_inf_k
    -
    2167 real(wp) :: qv_k
    -
    2168 real(wp), dimension(2) :: re_k
    -
    2169 real(wp) :: g_k
    -
    2170 real(wp) :: t_k, mix_mol_weight, r_gas
    -
    2171
    -
    2172 integer :: i, j, k, l !< Generic loop iterators
    -
    2173
    -
    2174 is1b = is1%beg; is1e = is1%end
    -
    2175 is2b = is2%beg; is2e = is2%end
    -
    2176 is3b = is3%beg; is3e = is3%end
    + +
    2128
    +
    2129 !> The following subroutine handles the conversion between
    +
    2130 !! the primitive variables and the Eulerian flux variables.
    +
    2131 !! @param qK_prim_vf Primitive variables
    +
    2132 !! @param FK_vf Flux variables
    +
    2133 !! @param FK_src_vf Flux source variables
    +
    2134 !! @param is1 Index bounds in the first coordinate direction
    +
    2135 !! @param is2 Index bounds in the second coordinate direction
    +
    2136 !! @param is3 Index bounds in the third coordinate direction
    +
    2137 !! @param s2b Starting boundary index in the second coordinate direction
    +
    2138 !! @param s3b Starting boundary index in the third coordinate direction
    +
    + +
    2140 FK_vf, &
    +
    2141 FK_src_vf, &
    +
    2142 is1, is2, is3, s2b, s3b)
    +
    2143
    +
    2144 integer, intent(in) :: s2b, s3b
    +
    2145 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(in) :: qk_prim_vf
    +
    2146 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) :: fk_vf
    +
    2147 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, advxb:), intent(inout) :: fk_src_vf
    +
    2148
    +
    2149 type(int_bounds_info), intent(in) :: is1, is2, is3
    +
    2150
    +
    2151 ! Partial densities, density, velocity, pressure, energy, advection
    +
    2152 ! variables, the specific heat ratio and liquid stiffness functions,
    +
    2153 ! the shear and volume Reynolds numbers and the Weber numbers
    +
    2154# 1200 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2155 real(wp), dimension(num_fluids) :: alpha_rho_k
    +
    2156 real(wp), dimension(num_fluids) :: alpha_k
    +
    2157 real(wp), dimension(num_vels) :: vel_k
    +
    2158 real(wp), dimension(num_species) :: y_k
    +
    2159# 1205 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2160 real(wp) :: rho_k
    +
    2161 real(wp) :: vel_k_sum
    +
    2162 real(wp) :: pres_k
    +
    2163 real(wp) :: e_k
    +
    2164 real(wp) :: gamma_k
    +
    2165 real(wp) :: pi_inf_k
    +
    2166 real(wp) :: qv_k
    +
    2167 real(wp), dimension(2) :: re_k
    +
    2168 real(wp) :: g_k
    +
    2169 real(wp) :: t_k, mix_mol_weight, r_gas
    +
    2170
    +
    2171 integer :: i, j, k, l !< Generic loop iterators
    +
    2172
    +
    2173 is1b = is1%beg; is1e = is1%end
    +
    2174 is2b = is2%beg; is2e = is2%end
    +
    2175 is3b = is3%beg; is3e = is3%end
    +
    2176
    2177
    -
    2178
    -
    2179# 1223 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2180#if defined(MFC_OpenACC)
    -
    2181# 1223 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2182!$acc update device(is1b, is2b, is3b, is1e, is2e, is3e)
    -
    2183# 1223 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2184#elif defined(MFC_OpenMP)
    -
    2185# 1223 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2186!$omp target update to(is1b, is2b, is3b, is1e, is2e, is3e)
    -
    2187# 1223 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2188#endif
    -
    2189
    -
    2190 ! Computing the flux variables from the primitive variables, without
    -
    2191 ! accounting for the contribution of either viscosity or capillarity
    -
    2192#ifdef MFC_SIMULATION
    -
    2193
    -
    2194# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2195
    -
    2196# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2197#if defined(MFC_OpenACC)
    -
    2198# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2199!$acc parallel loop collapse(3) gang vector default(present) private(alpha_rho_K, vel_K, alpha_K, Re_K, Y_K, rho_K, vel_K_sum, pres_K, E_K, gamma_K, pi_inf_K, qv_K, G_K, T_K, mix_mol_weight, R_gas)
    -
    2200# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2201#elif defined(MFC_OpenMP)
    -
    2202# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2203
    -
    2204# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2205
    -
    2206# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2207
    -
    2208# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2209!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(alpha_rho_K, vel_K, alpha_K, Re_K, Y_K, rho_K, vel_K_sum, pres_K, E_K, gamma_K, pi_inf_K, qv_K, G_K, T_K, mix_mol_weight, R_gas)
    -
    2210# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2211#endif
    -
    2212# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2213
    -
    2214 do l = is3b, is3e
    -
    2215 do k = is2b, is2e
    -
    2216 do j = is1b, is1e
    +
    2178# 1222 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2179#if defined(MFC_OpenACC)
    +
    2180# 1222 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2181!$acc update device(is1b, is2b, is3b, is1e, is2e, is3e)
    +
    2182# 1222 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2183#elif defined(MFC_OpenMP)
    +
    2184# 1222 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2185!$omp target update to(is1b, is2b, is3b, is1e, is2e, is3e)
    +
    2186# 1222 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2187#endif
    +
    2188
    +
    2189 ! Computing the flux variables from the primitive variables, without
    +
    2190 ! accounting for the contribution of either viscosity or capillarity
    +
    2191#ifdef MFC_SIMULATION
    +
    2192
    +
    2193# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2194
    +
    2195# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2196#if defined(MFC_OpenACC)
    +
    2197# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2198!$acc parallel loop collapse(3) gang vector default(present) private(alpha_rho_K, vel_K, alpha_K, Re_K, Y_K, rho_K, vel_K_sum, pres_K, E_K, gamma_K, pi_inf_K, qv_K, G_K, T_K, mix_mol_weight, R_gas)
    +
    2199# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2200#elif defined(MFC_OpenMP)
    +
    2201# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2202
    +
    2203# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2204
    +
    2205# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2206
    +
    2207# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2208!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(alpha_rho_K, vel_K, alpha_K, Re_K, Y_K, rho_K, vel_K_sum, pres_K, E_K, gamma_K, pi_inf_K, qv_K, G_K, T_K, mix_mol_weight, R_gas)
    +
    2209# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2210#endif
    +
    2211# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2212
    +
    2213 do l = is3b, is3e
    +
    2214 do k = is2b, is2e
    +
    2215 do j = is1b, is1e
    +
    2216
    2217
    -
    2218
    -
    2219# 1233 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2220#if defined(MFC_OpenACC)
    -
    2221# 1233 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2222!$acc loop seq
    -
    2223# 1233 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2224#elif defined(MFC_OpenMP)
    -
    2225# 1233 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2226
    -
    2227# 1233 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2228#endif
    -
    2229 do i = 1, contxe
    -
    2230 alpha_rho_k(i) = qk_prim_vf(j, k, l, i)
    -
    2231 end do
    +
    2218# 1232 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2219#if defined(MFC_OpenACC)
    +
    2220# 1232 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2221!$acc loop seq
    +
    2222# 1232 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2223#elif defined(MFC_OpenMP)
    +
    2224# 1232 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2225
    +
    2226# 1232 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2227#endif
    +
    2228 do i = 1, contxe
    +
    2229 alpha_rho_k(i) = qk_prim_vf(j, k, l, i)
    +
    2230 end do
    +
    2231
    2232
    -
    2233
    -
    2234# 1238 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2235#if defined(MFC_OpenACC)
    -
    2236# 1238 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2237!$acc loop seq
    -
    2238# 1238 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2239#elif defined(MFC_OpenMP)
    -
    2240# 1238 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2241
    -
    2242# 1238 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2243#endif
    -
    2244 do i = advxb, advxe
    -
    2245 alpha_k(i - e_idx) = qk_prim_vf(j, k, l, i)
    -
    2246 end do
    +
    2233# 1237 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2234#if defined(MFC_OpenACC)
    +
    2235# 1237 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2236!$acc loop seq
    +
    2237# 1237 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2238#elif defined(MFC_OpenMP)
    +
    2239# 1237 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2240
    +
    2241# 1237 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2242#endif
    +
    2243 do i = advxb, advxe
    +
    2244 alpha_k(i - e_idx) = qk_prim_vf(j, k, l, i)
    +
    2245 end do
    +
    2246
    2247
    -
    2248
    -
    2249# 1243 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2250#if defined(MFC_OpenACC)
    -
    2251# 1243 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2252!$acc loop seq
    -
    2253# 1243 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2254#elif defined(MFC_OpenMP)
    -
    2255# 1243 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2256
    -
    2257# 1243 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2258#endif
    -
    2259 do i = 1, num_vels
    -
    2260 vel_k(i) = qk_prim_vf(j, k, l, contxe + i)
    -
    2261 end do
    -
    2262
    -
    2263 vel_k_sum = 0._wp
    -
    2264
    -
    2265# 1249 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2266#if defined(MFC_OpenACC)
    -
    2267# 1249 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2268!$acc loop seq
    -
    2269# 1249 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2270#elif defined(MFC_OpenMP)
    -
    2271# 1249 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2272
    -
    2273# 1249 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2274#endif
    -
    2275 do i = 1, num_vels
    -
    2276 vel_k_sum = vel_k_sum + vel_k(i)**2._wp
    -
    2277 end do
    -
    2278
    -
    2279 pres_k = qk_prim_vf(j, k, l, e_idx)
    -
    2280 if (elasticity) then
    -
    2281 call s_convert_species_to_mixture_variables_acc(rho_k, gamma_k, pi_inf_k, qv_k, &
    -
    2282 alpha_k, alpha_rho_k, re_k, &
    -
    2283 g_k, gs_vc)
    -
    2284 else
    -
    2285 call s_convert_species_to_mixture_variables_acc(rho_k, gamma_k, pi_inf_k, qv_k, &
    -
    2286 alpha_k, alpha_rho_k, re_k)
    -
    2287 end if
    -
    2288
    -
    2289 ! Computing the energy from the pressure
    -
    2290
    -
    2291 if (chemistry) then
    -
    2292
    -
    2293# 1267 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2294#if defined(MFC_OpenACC)
    -
    2295# 1267 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2296!$acc loop seq
    -
    2297# 1267 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2298#elif defined(MFC_OpenMP)
    -
    2299# 1267 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2300
    -
    2301# 1267 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2302#endif
    -
    2303 do i = chemxb, chemxe
    -
    2304 y_k(i - chemxb + 1) = qk_prim_vf(j, k, l, i)
    -
    2305 end do
    -
    2306 !Computing the energy from the internal energy of the mixture
    -
    2307 call get_mixture_molecular_weight(y_k, mix_mol_weight)
    -
    2308 r_gas = gas_constant/mix_mol_weight
    -
    2309 t_k = pres_k/rho_k/r_gas
    -
    2310 call get_mixture_energy_mass(t_k, y_k, e_k)
    -
    2311 e_k = rho_k*e_k + 5.e-1_wp*rho_k*vel_k_sum
    -
    2312 else
    -
    2313 ! Computing the energy from the pressure
    -
    2314 e_k = gamma_k*pres_k + pi_inf_k &
    -
    2315 + 5.e-1_wp*rho_k*vel_k_sum + qv_k
    -
    2316 end if
    -
    2317
    -
    2318 ! mass flux, this should be \alpha_i \rho_i u_i
    -
    2319
    -
    2320# 1284 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2321#if defined(MFC_OpenACC)
    -
    2322# 1284 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2323!$acc loop seq
    -
    2324# 1284 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2325#elif defined(MFC_OpenMP)
    -
    2326# 1284 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2327
    -
    2328# 1284 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2329#endif
    -
    2330 do i = 1, contxe
    -
    2331 fk_vf(j, k, l, i) = alpha_rho_k(i)*vel_k(dir_idx(1))
    -
    2332 end do
    +
    2248# 1242 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2249#if defined(MFC_OpenACC)
    +
    2250# 1242 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2251!$acc loop seq
    +
    2252# 1242 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2253#elif defined(MFC_OpenMP)
    +
    2254# 1242 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2255
    +
    2256# 1242 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2257#endif
    +
    2258 do i = 1, num_vels
    +
    2259 vel_k(i) = qk_prim_vf(j, k, l, contxe + i)
    +
    2260 end do
    +
    2261
    +
    2262 vel_k_sum = 0._wp
    +
    2263
    +
    2264# 1248 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2265#if defined(MFC_OpenACC)
    +
    2266# 1248 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2267!$acc loop seq
    +
    2268# 1248 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2269#elif defined(MFC_OpenMP)
    +
    2270# 1248 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2271
    +
    2272# 1248 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2273#endif
    +
    2274 do i = 1, num_vels
    +
    2275 vel_k_sum = vel_k_sum + vel_k(i)**2._wp
    +
    2276 end do
    +
    2277
    +
    2278 pres_k = qk_prim_vf(j, k, l, e_idx)
    +
    2279 if (elasticity) then
    +
    2280 call s_convert_species_to_mixture_variables_acc(rho_k, gamma_k, pi_inf_k, qv_k, &
    +
    2281 alpha_k, alpha_rho_k, re_k, &
    +
    2282 g_k, gs_vc)
    +
    2283 else
    +
    2284 call s_convert_species_to_mixture_variables_acc(rho_k, gamma_k, pi_inf_k, qv_k, &
    +
    2285 alpha_k, alpha_rho_k, re_k)
    +
    2286 end if
    +
    2287
    +
    2288 ! Computing the energy from the pressure
    +
    2289
    +
    2290 if (chemistry) then
    +
    2291
    +
    2292# 1266 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2293#if defined(MFC_OpenACC)
    +
    2294# 1266 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2295!$acc loop seq
    +
    2296# 1266 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2297#elif defined(MFC_OpenMP)
    +
    2298# 1266 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2299
    +
    2300# 1266 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2301#endif
    +
    2302 do i = chemxb, chemxe
    +
    2303 y_k(i - chemxb + 1) = qk_prim_vf(j, k, l, i)
    +
    2304 end do
    +
    2305 !Computing the energy from the internal energy of the mixture
    +
    2306 call get_mixture_molecular_weight(y_k, mix_mol_weight)
    +
    2307 r_gas = gas_constant/mix_mol_weight
    +
    2308 t_k = pres_k/rho_k/r_gas
    +
    2309 call get_mixture_energy_mass(t_k, y_k, e_k)
    +
    2310 e_k = rho_k*e_k + 5.e-1_wp*rho_k*vel_k_sum
    +
    2311 else
    +
    2312 ! Computing the energy from the pressure
    +
    2313 e_k = gamma_k*pres_k + pi_inf_k &
    +
    2314 + 5.e-1_wp*rho_k*vel_k_sum + qv_k
    +
    2315 end if
    +
    2316
    +
    2317 ! mass flux, this should be \alpha_i \rho_i u_i
    +
    2318
    +
    2319# 1283 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2320#if defined(MFC_OpenACC)
    +
    2321# 1283 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2322!$acc loop seq
    +
    2323# 1283 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2324#elif defined(MFC_OpenMP)
    +
    2325# 1283 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2326
    +
    2327# 1283 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2328#endif
    +
    2329 do i = 1, contxe
    +
    2330 fk_vf(j, k, l, i) = alpha_rho_k(i)*vel_k(dir_idx(1))
    +
    2331 end do
    +
    2332
    2333
    -
    2334
    -
    2335# 1289 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2336#if defined(MFC_OpenACC)
    -
    2337# 1289 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2338!$acc loop seq
    -
    2339# 1289 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2340#elif defined(MFC_OpenMP)
    -
    2341# 1289 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2342
    -
    2343# 1289 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2344#endif
    -
    2345 do i = 1, num_vels
    -
    2346 fk_vf(j, k, l, contxe + dir_idx(i)) = &
    -
    2347 rho_k*vel_k(dir_idx(1)) &
    -
    2348 *vel_k(dir_idx(i)) &
    -
    2349 + pres_k*dir_flg(dir_idx(i))
    -
    2350 end do
    -
    2351
    -
    2352 ! energy flux, u(E+p)
    -
    2353 fk_vf(j, k, l, e_idx) = vel_k(dir_idx(1))*(e_k + pres_k)
    -
    2354
    -
    2355 ! Species advection Flux, \rho*u*Y
    -
    2356 if (chemistry) then
    -
    2357
    -
    2358# 1302 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2359#if defined(MFC_OpenACC)
    -
    2360# 1302 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2361!$acc loop seq
    -
    2362# 1302 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2363#elif defined(MFC_OpenMP)
    -
    2364# 1302 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2365
    -
    2366# 1302 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2367#endif
    -
    2368 do i = 1, num_species
    -
    2369 fk_vf(j, k, l, i - 1 + chemxb) = vel_k(dir_idx(1))*(rho_k*y_k(i))
    -
    2370 end do
    -
    2371 end if
    -
    2372
    -
    2373 if (riemann_solver == 1 .or. riemann_solver == 4) then
    -
    2374
    -
    2375# 1309 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2376#if defined(MFC_OpenACC)
    -
    2377# 1309 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2378!$acc loop seq
    -
    2379# 1309 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2380#elif defined(MFC_OpenMP)
    -
    2381# 1309 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2382
    -
    2383# 1309 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2384#endif
    -
    2385 do i = advxb, advxe
    -
    2386 fk_vf(j, k, l, i) = 0._wp
    -
    2387 fk_src_vf(j, k, l, i) = alpha_k(i - e_idx)
    -
    2388 end do
    -
    2389
    -
    2390 else
    -
    2391 ! Could be bubbles_euler!
    -
    2392
    -
    2393# 1317 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2394#if defined(MFC_OpenACC)
    -
    2395# 1317 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2396!$acc loop seq
    -
    2397# 1317 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2398#elif defined(MFC_OpenMP)
    -
    2399# 1317 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2400
    -
    2401# 1317 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2402#endif
    -
    2403 do i = advxb, advxe
    -
    2404 fk_vf(j, k, l, i) = vel_k(dir_idx(1))*alpha_k(i - e_idx)
    -
    2405 end do
    +
    2334# 1288 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2335#if defined(MFC_OpenACC)
    +
    2336# 1288 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2337!$acc loop seq
    +
    2338# 1288 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2339#elif defined(MFC_OpenMP)
    +
    2340# 1288 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2341
    +
    2342# 1288 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2343#endif
    +
    2344 do i = 1, num_vels
    +
    2345 fk_vf(j, k, l, contxe + dir_idx(i)) = &
    +
    2346 rho_k*vel_k(dir_idx(1)) &
    +
    2347 *vel_k(dir_idx(i)) &
    +
    2348 + pres_k*dir_flg(dir_idx(i))
    +
    2349 end do
    +
    2350
    +
    2351 ! energy flux, u(E+p)
    +
    2352 fk_vf(j, k, l, e_idx) = vel_k(dir_idx(1))*(e_k + pres_k)
    +
    2353
    +
    2354 ! Species advection Flux, \rho*u*Y
    +
    2355 if (chemistry) then
    +
    2356
    +
    2357# 1301 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2358#if defined(MFC_OpenACC)
    +
    2359# 1301 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2360!$acc loop seq
    +
    2361# 1301 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2362#elif defined(MFC_OpenMP)
    +
    2363# 1301 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2364
    +
    2365# 1301 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2366#endif
    +
    2367 do i = 1, num_species
    +
    2368 fk_vf(j, k, l, i - 1 + chemxb) = vel_k(dir_idx(1))*(rho_k*y_k(i))
    +
    2369 end do
    +
    2370 end if
    +
    2371
    +
    2372 if (riemann_solver == 1 .or. riemann_solver == 4) then
    +
    2373
    +
    2374# 1308 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2375#if defined(MFC_OpenACC)
    +
    2376# 1308 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2377!$acc loop seq
    +
    2378# 1308 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2379#elif defined(MFC_OpenMP)
    +
    2380# 1308 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2381
    +
    2382# 1308 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2383#endif
    +
    2384 do i = advxb, advxe
    +
    2385 fk_vf(j, k, l, i) = 0._wp
    +
    2386 fk_src_vf(j, k, l, i) = alpha_k(i - e_idx)
    +
    2387 end do
    +
    2388
    +
    2389 else
    +
    2390 ! Could be bubbles_euler!
    +
    2391
    +
    2392# 1316 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2393#if defined(MFC_OpenACC)
    +
    2394# 1316 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2395!$acc loop seq
    +
    2396# 1316 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2397#elif defined(MFC_OpenMP)
    +
    2398# 1316 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2399
    +
    2400# 1316 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2401#endif
    +
    2402 do i = advxb, advxe
    +
    2403 fk_vf(j, k, l, i) = vel_k(dir_idx(1))*alpha_k(i - e_idx)
    +
    2404 end do
    +
    2405
    2406
    -
    2407
    -
    2408# 1322 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2409#if defined(MFC_OpenACC)
    -
    2410# 1322 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2411!$acc loop seq
    -
    2412# 1322 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2413#elif defined(MFC_OpenMP)
    -
    2414# 1322 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2415
    -
    2416# 1322 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2417#endif
    -
    2418 do i = advxb, advxe
    -
    2419 fk_src_vf(j, k, l, i) = vel_k(dir_idx(1))
    -
    2420 end do
    -
    2421
    -
    2422 end if
    -
    2423
    -
    2424 end do
    -
    2425 end do
    -
    2426 end do
    -
    2427
    -
    2428# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2429
    -
    2430# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2431#if defined(MFC_OpenACC)
    -
    2432# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2433!$acc end parallel loop
    -
    2434# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2435#elif defined(MFC_OpenMP)
    -
    2436# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2437
    -
    2438# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2439
    -
    2440# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2441!$omp end target teams loop
    -
    2442# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2443#endif
    -
    2444# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2445
    -
    2446#endif
    +
    2407# 1321 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2408#if defined(MFC_OpenACC)
    +
    2409# 1321 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2410!$acc loop seq
    +
    2411# 1321 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2412#elif defined(MFC_OpenMP)
    +
    2413# 1321 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2414
    +
    2415# 1321 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2416#endif
    +
    2417 do i = advxb, advxe
    +
    2418 fk_src_vf(j, k, l, i) = vel_k(dir_idx(1))
    +
    2419 end do
    +
    2420
    +
    2421 end if
    +
    2422
    +
    2423 end do
    +
    2424 end do
    +
    2425 end do
    +
    2426
    +
    2427# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2428
    +
    2429# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2430#if defined(MFC_OpenACC)
    +
    2431# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2432!$acc end parallel loop
    +
    2433# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2434#elif defined(MFC_OpenMP)
    +
    2435# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2436
    +
    2437# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2438
    +
    2439# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2440!$omp end target teams loop
    +
    2441# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2442#endif
    +
    2443# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2444
    +
    2445#endif
    - -
    2448
    -
    2449 !> This subroutine computes partial densities and volume fractions
    -
    -
    2450 subroutine s_compute_species_fraction(q_vf, k, l, r, alpha_rho_K, alpha_K)
    -
    2451
    -
    2452# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2453#ifdef _CRAYFTN
    -
    2454# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2455!DIR$ INLINEALWAYS s_compute_species_fraction
    -
    2456# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2457#elif MFC_OpenACC
    -
    2458# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2459!$acc routine seq
    -
    2460# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2461#elif MFC_OpenMP
    -
    2462# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2463
    -
    2464# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2465
    -
    2466# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2467!$omp declare target device_type(any)
    -
    2468# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2469#endif
    -
    2470# 1340 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2471 type(scalar_field), dimension(sys_size), intent(in) :: q_vf
    -
    2472 integer, intent(in) :: k, l, r
    -
    2473# 1345 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2474 real(wp), dimension(num_fluids), intent(out) :: alpha_rho_k, alpha_k
    -
    2475# 1347 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2476 integer :: i
    -
    2477 real(wp) :: alpha_k_sum
    -
    2478
    -
    2479 if (num_fluids == 1) then
    -
    2480 alpha_rho_k(1) = q_vf(contxb)%sf(k, l, r)
    -
    2481 if (igr .or. bubbles_euler) then
    -
    2482 alpha_k(1) = 1._wp
    -
    2483 else
    -
    2484 alpha_k(1) = q_vf(advxb)%sf(k, l, r)
    -
    2485 end if
    -
    2486 else
    -
    2487 if (igr) then
    -
    2488 do i = 1, num_fluids - 1
    -
    2489 alpha_rho_k(i) = q_vf(i)%sf(k, l, r)
    -
    2490 alpha_k(i) = q_vf(advxb + i - 1)%sf(k, l, r)
    -
    2491 end do
    -
    2492 alpha_rho_k(num_fluids) = q_vf(num_fluids)%sf(k, l, r)
    -
    2493 alpha_k(num_fluids) = 1._wp - sum(alpha_k(1:num_fluids - 1))
    -
    2494 else
    -
    2495 do i = 1, num_fluids
    -
    2496 alpha_rho_k(i) = q_vf(i)%sf(k, l, r)
    -
    2497 alpha_k(i) = q_vf(advxb + i - 1)%sf(k, l, r)
    -
    2498 end do
    -
    2499 end if
    -
    2500 end if
    -
    2501
    -
    2502 if (mpp_lim) then
    -
    2503 alpha_k_sum = 0._wp
    -
    2504 do i = 1, num_fluids
    -
    2505 alpha_rho_k(i) = max(0._wp, alpha_rho_k(i))
    -
    2506 alpha_k(i) = min(max(0._wp, alpha_k(i)), 1._wp)
    -
    2507 alpha_k_sum = alpha_k_sum + alpha_k(i)
    -
    2508 end do
    -
    2509 alpha_k = alpha_k/max(alpha_k_sum, 1.e-16_wp)
    -
    2510 end if
    -
    2511
    -
    2512 if (num_fluids == 1 .and. bubbles_euler) alpha_k(1) = q_vf(advxb)%sf(k, l, r)
    -
    2513
    + +
    2447
    +
    2448 !> This subroutine computes partial densities and volume fractions
    +
    +
    2449 subroutine s_compute_species_fraction(q_vf, k, l, r, alpha_rho_K, alpha_K)
    +
    2450
    +
    2451# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2452#ifdef _CRAYFTN
    +
    2453# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2454!DIR$ INLINEALWAYS s_compute_species_fraction
    +
    2455# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2456#elif MFC_OpenACC
    +
    2457# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2458!$acc routine seq
    +
    2459# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2460#elif MFC_OpenMP
    +
    2461# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2462
    +
    2463# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2464
    +
    2465# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2466!$omp declare target device_type(any)
    +
    2467# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2468#endif
    +
    2469# 1339 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2470 type(scalar_field), dimension(sys_size), intent(in) :: q_vf
    +
    2471 integer, intent(in) :: k, l, r
    +
    2472# 1344 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2473 real(wp), dimension(num_fluids), intent(out) :: alpha_rho_k, alpha_k
    +
    2474# 1346 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2475 integer :: i
    +
    2476 real(wp) :: alpha_k_sum
    +
    2477
    +
    2478 if (num_fluids == 1) then
    +
    2479 alpha_rho_k(1) = q_vf(contxb)%sf(k, l, r)
    +
    2480 if (igr .or. bubbles_euler) then
    +
    2481 alpha_k(1) = 1._wp
    +
    2482 else
    +
    2483 alpha_k(1) = q_vf(advxb)%sf(k, l, r)
    +
    2484 end if
    +
    2485 else
    +
    2486 if (igr) then
    +
    2487 do i = 1, num_fluids - 1
    +
    2488 alpha_rho_k(i) = q_vf(i)%sf(k, l, r)
    +
    2489 alpha_k(i) = q_vf(advxb + i - 1)%sf(k, l, r)
    +
    2490 end do
    +
    2491 alpha_rho_k(num_fluids) = q_vf(num_fluids)%sf(k, l, r)
    +
    2492 alpha_k(num_fluids) = 1._wp - sum(alpha_k(1:num_fluids - 1))
    +
    2493 else
    +
    2494 do i = 1, num_fluids
    +
    2495 alpha_rho_k(i) = q_vf(i)%sf(k, l, r)
    +
    2496 alpha_k(i) = q_vf(advxb + i - 1)%sf(k, l, r)
    +
    2497 end do
    +
    2498 end if
    +
    2499 end if
    +
    2500
    +
    2501 if (mpp_lim) then
    +
    2502 alpha_k_sum = 0._wp
    +
    2503 do i = 1, num_fluids
    +
    2504 alpha_rho_k(i) = max(0._wp, alpha_rho_k(i))
    +
    2505 alpha_k(i) = min(max(0._wp, alpha_k(i)), 1._wp)
    +
    2506 alpha_k_sum = alpha_k_sum + alpha_k(i)
    +
    2507 end do
    +
    2508 alpha_k = alpha_k/max(alpha_k_sum, 1.e-16_wp)
    +
    2509 end if
    +
    2510
    +
    2511 if (num_fluids == 1 .and. bubbles_euler) alpha_k(1) = q_vf(advxb)%sf(k, l, r)
    +
    2512
    -
    2514 end subroutine s_compute_species_fraction
    -
    2515
    -
    2516 !> @brief Deallocates fluid property arrays and post-processing fields allocated during module initialization.
    -
    - -
    2518
    -
    2519 ! Deallocating the density, the specific heat ratio function and the
    -
    2520 ! liquid stiffness function
    -
    2521#ifdef MFC_POST_PROCESS
    -
    2522 deallocate (rho_sf, gamma_sf, pi_inf_sf, qv_sf)
    -
    2523#endif
    -
    2524
    -
    2525#ifdef MFC_SIMULATION
    -
    2526#ifdef MFC_DEBUG
    -
    2527# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2528 block
    -
    2529# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2530 use iso_fortran_env, only: output_unit
    -
    2531# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2532
    -
    2533# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2534 print *, 'm_variables_conversion.fpp:1397: ', '@:DEALLOCATE(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)'
    -
    2535# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2536
    -
    2537# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2538 call flush (output_unit)
    -
    2539# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2540 end block
    -
    2541# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2542#endif
    -
    2543# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2544
    -
    2545# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2546#if defined(MFC_OpenACC)
    -
    2547# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2548!$acc exit data delete(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    -
    2549# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2550#elif defined(MFC_OpenMP)
    -
    2551# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2552!$omp target exit data map(release:gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    -
    2553# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2554#endif
    -
    2555# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2556 deallocate (gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, gs_vc)
    -
    2557 if (bubbles_euler) then
    -
    2558#ifdef MFC_DEBUG
    -
    2559# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2560 block
    -
    2561# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2562 use iso_fortran_env, only: output_unit
    -
    2563# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2564
    -
    2565# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2566 print *, 'm_variables_conversion.fpp:1399: ', '@:DEALLOCATE(bubrs_vc)'
    -
    2567# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2568
    -
    2569# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2570 call flush (output_unit)
    -
    2571# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2572 end block
    -
    2573# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2574#endif
    -
    2575# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2576
    -
    2577# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2578#if defined(MFC_OpenACC)
    -
    2579# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2580!$acc exit data delete(bubrs_vc)
    -
    2581# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2582#elif defined(MFC_OpenMP)
    -
    2583# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2584!$omp target exit data map(release:bubrs_vc)
    -
    2585# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2586#endif
    -
    2587# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2588 deallocate (bubrs_vc)
    -
    2589 end if
    -
    2590#else
    -
    2591#ifdef MFC_DEBUG
    -
    2592# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2593 block
    -
    2594# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2595 use iso_fortran_env, only: output_unit
    -
    2596# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2597
    -
    2598# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2599 print *, 'm_variables_conversion.fpp:1402: ', '@:DEALLOCATE(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)'
    -
    2600# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2601
    -
    2602# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2603 call flush (output_unit)
    -
    2604# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2605 end block
    -
    2606# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2607#endif
    -
    2608# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2609
    -
    2610# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2611#if defined(MFC_OpenACC)
    -
    2612# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2613!$acc exit data delete(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    -
    2614# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2615#elif defined(MFC_OpenMP)
    -
    2616# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2617!$omp target exit data map(release:gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    -
    2618# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2619#endif
    -
    2620# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2621 deallocate (gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, gs_vc)
    -
    2622 if (bubbles_euler) then
    -
    2623#ifdef MFC_DEBUG
    -
    2624# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2625 block
    -
    2626# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2627 use iso_fortran_env, only: output_unit
    -
    2628# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2629
    -
    2630# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2631 print *, 'm_variables_conversion.fpp:1404: ', '@:DEALLOCATE(bubrs_vc)'
    -
    2632# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2633
    -
    2634# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2635 call flush (output_unit)
    -
    2636# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2637 end block
    -
    2638# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2639#endif
    -
    2640# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2641
    -
    2642# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2643#if defined(MFC_OpenACC)
    -
    2644# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2645!$acc exit data delete(bubrs_vc)
    -
    2646# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2647#elif defined(MFC_OpenMP)
    -
    2648# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2649!$omp target exit data map(release:bubrs_vc)
    -
    2650# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2651#endif
    -
    2652# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2653 deallocate (bubrs_vc)
    -
    2654 end if
    -
    2655#endif
    -
    2656
    +
    2513 end subroutine s_compute_species_fraction
    +
    2514
    +
    2515 !> @brief Deallocates fluid property arrays and post-processing fields allocated during module initialization.
    +
    + +
    2517
    +
    2518 ! Deallocating the density, the specific heat ratio function and the
    +
    2519 ! liquid stiffness function
    +
    2520#ifdef MFC_POST_PROCESS
    +
    2521 deallocate (rho_sf, gamma_sf, pi_inf_sf, qv_sf)
    +
    2522#endif
    +
    2523
    +
    2524#ifdef MFC_SIMULATION
    +
    2525#ifdef MFC_DEBUG
    +
    2526# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2527 block
    +
    2528# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2529 use iso_fortran_env, only: output_unit
    +
    2530# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2531
    +
    2532# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2533 print *, 'm_variables_conversion.fpp:1396: ', '@:DEALLOCATE(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)'
    +
    2534# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2535
    +
    2536# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2537 call flush (output_unit)
    +
    2538# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2539 end block
    +
    2540# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2541#endif
    +
    2542# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2543
    +
    2544# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2545#if defined(MFC_OpenACC)
    +
    2546# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2547!$acc exit data delete(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    +
    2548# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2549#elif defined(MFC_OpenMP)
    +
    2550# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2551!$omp target exit data map(release:gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    +
    2552# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2553#endif
    +
    2554# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2555 deallocate (gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, gs_vc)
    +
    2556 if (bubbles_euler) then
    +
    2557#ifdef MFC_DEBUG
    +
    2558# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2559 block
    +
    2560# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2561 use iso_fortran_env, only: output_unit
    +
    2562# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2563
    +
    2564# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2565 print *, 'm_variables_conversion.fpp:1398: ', '@:DEALLOCATE(bubrs_vc)'
    +
    2566# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2567
    +
    2568# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2569 call flush (output_unit)
    +
    2570# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2571 end block
    +
    2572# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2573#endif
    +
    2574# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2575
    +
    2576# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2577#if defined(MFC_OpenACC)
    +
    2578# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2579!$acc exit data delete(bubrs_vc)
    +
    2580# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2581#elif defined(MFC_OpenMP)
    +
    2582# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2583!$omp target exit data map(release:bubrs_vc)
    +
    2584# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2585#endif
    +
    2586# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2587 deallocate (bubrs_vc)
    +
    2588 end if
    +
    2589#else
    +
    2590#ifdef MFC_DEBUG
    +
    2591# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2592 block
    +
    2593# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2594 use iso_fortran_env, only: output_unit
    +
    2595# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2596
    +
    2597# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2598 print *, 'm_variables_conversion.fpp:1401: ', '@:DEALLOCATE(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)'
    +
    2599# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2600
    +
    2601# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2602 call flush (output_unit)
    +
    2603# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2604 end block
    +
    2605# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2606#endif
    +
    2607# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2608
    +
    2609# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2610#if defined(MFC_OpenACC)
    +
    2611# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2612!$acc exit data delete(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    +
    2613# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2614#elif defined(MFC_OpenMP)
    +
    2615# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2616!$omp target exit data map(release:gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    +
    2617# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2618#endif
    +
    2619# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2620 deallocate (gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, gs_vc)
    +
    2621 if (bubbles_euler) then
    +
    2622#ifdef MFC_DEBUG
    +
    2623# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2624 block
    +
    2625# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2626 use iso_fortran_env, only: output_unit
    +
    2627# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2628
    +
    2629# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2630 print *, 'm_variables_conversion.fpp:1403: ', '@:DEALLOCATE(bubrs_vc)'
    +
    2631# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2632
    +
    2633# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2634 call flush (output_unit)
    +
    2635# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2636 end block
    +
    2637# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2638#endif
    +
    2639# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2640
    +
    2641# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2642#if defined(MFC_OpenACC)
    +
    2643# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2644!$acc exit data delete(bubrs_vc)
    +
    2645# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2646#elif defined(MFC_OpenMP)
    +
    2647# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2648!$omp target exit data map(release:bubrs_vc)
    +
    2649# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2650#endif
    +
    2651# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2652 deallocate (bubrs_vc)
    +
    2653 end if
    +
    2654#endif
    +
    2655
    - -
    2658
    -
    2659#ifndef MFC_PRE_PROCESS
    -
    2660 !> @brief Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state models.
    -
    -
    2661 subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, H, adv, vel_sum, c_c, c, qv)
    -
    2662
    -
    2663# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2664#if MFC_OpenACC
    -
    2665# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2666!$acc routine seq
    -
    2667# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2668#elif MFC_OpenMP
    -
    2669# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2670
    -
    2671# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2672
    -
    2673# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2674!$omp declare target device_type(any)
    -
    2675# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2676#endif
    -
    2677
    -
    2678 real(wp), intent(in) :: pres
    -
    2679 real(wp), intent(in) :: rho, gamma, pi_inf, qv
    -
    2680 real(wp), intent(in) :: H
    -
    2681# 1421 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2682 real(wp), dimension(num_fluids), intent(in) :: adv
    -
    2683# 1423 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2684 real(wp), intent(in) :: vel_sum
    -
    2685 real(wp), intent(in) :: c_c
    -
    2686 real(wp), intent(out) :: c
    -
    2687
    -
    2688 real(wp) :: blkmod1, blkmod2
    -
    2689
    -
    2690 integer :: q
    -
    2691
    -
    2692 if (chemistry) then
    -
    2693 if (avg_state == 1 .and. abs(c_c) > verysmall) then
    -
    2694 c = sqrt(c_c - (gamma - 1.0_wp)*(vel_sum - h))
    -
    2695 else
    -
    2696 c = sqrt((1.0_wp + 1.0_wp/gamma)*pres/rho)
    -
    2697 end if
    -
    2698 elseif (relativity) then
    -
    2699 ! Only supports perfect gas for now
    -
    2700 c = sqrt((1._wp + 1._wp/gamma)*pres/rho/h)
    -
    2701 else
    -
    2702 if (alt_soundspeed) then
    -
    2703 blkmod1 = ((gammas(1) + 1._wp)*pres + &
    -
    2704 pi_infs(1))/gammas(1)
    -
    2705 blkmod2 = ((gammas(2) + 1._wp)*pres + &
    -
    2706 pi_infs(2))/gammas(2)
    -
    2707 c = (1._wp/(rho*(adv(1)/blkmod1 + adv(2)/blkmod2)))
    -
    2708 elseif (model_eqns == 3) then
    -
    2709 c = 0._wp
    -
    2710
    -
    2711# 1449 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2712#if defined(MFC_OpenACC)
    -
    2713# 1449 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2714!$acc loop seq
    -
    2715# 1449 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2716#elif defined(MFC_OpenMP)
    -
    2717# 1449 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2718
    -
    2719# 1449 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2720#endif
    -
    2721 do q = 1, num_fluids
    -
    2722 c = c + adv(q)*gs_min(q)* &
    -
    2723 (pres + pi_infs(q)/(gammas(q) + 1._wp))
    -
    2724 end do
    -
    2725 c = c/rho
    -
    2726 elseif (((model_eqns == 4) .or. (model_eqns == 2 .and. bubbles_euler))) then
    -
    2727 ! Sound speed for bubble mixture to order O(\alpha)
    -
    2728
    -
    2729 if (mpp_lim .and. (num_fluids > 1)) then
    -
    2730 c = (1._wp/gamma + 1._wp)* &
    -
    2731 (pres + pi_inf/(gamma + 1._wp))/rho
    -
    2732 else
    -
    2733 c = &
    -
    2734 (1._wp/gamma + 1._wp)* &
    -
    2735 (pres + pi_inf/(gamma + 1._wp))/ &
    -
    2736 (rho*(1._wp - adv(num_fluids)))
    -
    2737 end if
    -
    2738 else
    -
    2739 c = (h - 5.e-1*vel_sum - qv/rho)/gamma
    -
    2740 end if
    -
    2741
    -
    2742 if (mixture_err .and. c < 0._wp) then
    -
    2743 c = 100._wp*sgm_eps
    -
    2744 else
    -
    2745 c = sqrt(c)
    -
    2746 end if
    -
    2747 end if
    + +
    2657
    +
    2658#ifndef MFC_PRE_PROCESS
    +
    2659 !> @brief Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state models.
    +
    +
    2660 subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, H, adv, vel_sum, c_c, c, qv)
    +
    2661
    +
    2662# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2663#if MFC_OpenACC
    +
    2664# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2665!$acc routine seq
    +
    2666# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2667#elif MFC_OpenMP
    +
    2668# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2669
    +
    2670# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2671
    +
    2672# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2673!$omp declare target device_type(any)
    +
    2674# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2675#endif
    +
    2676
    +
    2677 real(wp), intent(in) :: pres
    +
    2678 real(wp), intent(in) :: rho, gamma, pi_inf, qv
    +
    2679 real(wp), intent(in) :: H
    +
    2680# 1420 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2681 real(wp), dimension(num_fluids), intent(in) :: adv
    +
    2682# 1422 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2683 real(wp), intent(in) :: vel_sum
    +
    2684 real(wp), intent(in) :: c_c
    +
    2685 real(wp), intent(out) :: c
    +
    2686
    +
    2687 real(wp) :: blkmod1, blkmod2
    +
    2688
    +
    2689 integer :: q
    +
    2690
    +
    2691 if (chemistry) then
    +
    2692 if (avg_state == 1 .and. abs(c_c) > verysmall) then
    +
    2693 c = sqrt(c_c - (gamma - 1.0_wp)*(vel_sum - h))
    +
    2694 else
    +
    2695 c = sqrt((1.0_wp + 1.0_wp/gamma)*pres/rho)
    +
    2696 end if
    +
    2697 elseif (relativity) then
    +
    2698 ! Only supports perfect gas for now
    +
    2699 c = sqrt((1._wp + 1._wp/gamma)*pres/rho/h)
    +
    2700 else
    +
    2701 if (alt_soundspeed) then
    +
    2702 blkmod1 = ((gammas(1) + 1._wp)*pres + &
    +
    2703 pi_infs(1))/gammas(1)
    +
    2704 blkmod2 = ((gammas(2) + 1._wp)*pres + &
    +
    2705 pi_infs(2))/gammas(2)
    +
    2706 c = (1._wp/(rho*(adv(1)/blkmod1 + adv(2)/blkmod2)))
    +
    2707 elseif (model_eqns == 3) then
    +
    2708 c = 0._wp
    +
    2709
    +
    2710# 1448 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2711#if defined(MFC_OpenACC)
    +
    2712# 1448 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2713!$acc loop seq
    +
    2714# 1448 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2715#elif defined(MFC_OpenMP)
    +
    2716# 1448 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2717
    +
    2718# 1448 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2719#endif
    +
    2720 do q = 1, num_fluids
    +
    2721 c = c + adv(q)*gs_min(q)* &
    +
    2722 (pres + pi_infs(q)/(gammas(q) + 1._wp))
    +
    2723 end do
    +
    2724 c = c/rho
    +
    2725 elseif (((model_eqns == 4) .or. (model_eqns == 2 .and. bubbles_euler))) then
    +
    2726 ! Sound speed for bubble mixture to order O(\alpha)
    +
    2727
    +
    2728 if (mpp_lim .and. (num_fluids > 1)) then
    +
    2729 c = (1._wp/gamma + 1._wp)* &
    +
    2730 (pres + pi_inf/(gamma + 1._wp))/rho
    +
    2731 else
    +
    2732 c = &
    +
    2733 (1._wp/gamma + 1._wp)* &
    +
    2734 (pres + pi_inf/(gamma + 1._wp))/ &
    +
    2735 (rho*(1._wp - adv(num_fluids)))
    +
    2736 end if
    +
    2737 else
    +
    2738 c = (h - 5.e-1*vel_sum - qv/rho)/gamma
    +
    2739 end if
    +
    2740
    +
    2741 if (mixture_err .and. c < 0._wp) then
    +
    2742 c = 100._wp*sgm_eps
    +
    2743 else
    +
    2744 c = sqrt(c)
    +
    2745 end if
    +
    2746 end if
    -
    2748 end subroutine s_compute_speed_of_sound
    -
    2749#endif
    -
    2750
    -
    2751#ifndef MFC_PRE_PROCESS
    -
    2752 !> @brief Computes the fast magnetosonic wave speed from the sound speed, density, and magnetic field components.
    -
    -
    2753 subroutine s_compute_fast_magnetosonic_speed(rho, c, B, norm, c_fast, h)
    -
    2754
    -
    2755# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2756#ifdef _CRAYFTN
    -
    2757# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2758!DIR$ INLINEALWAYS s_compute_fast_magnetosonic_speed
    -
    2759# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2760#elif MFC_OpenACC
    -
    2761# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2762!$acc routine seq
    -
    2763# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2764#elif MFC_OpenMP
    -
    2765# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2766
    -
    2767# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2768
    -
    2769# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2770!$omp declare target device_type(any)
    -
    2771# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2772#endif
    -
    2773# 1485 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2774
    -
    2775 real(wp), intent(in) :: B(3), rho, c
    -
    2776 real(wp), intent(in) :: h ! only used for relativity
    -
    2777 real(wp), intent(out) :: c_fast
    -
    2778 integer, intent(in) :: norm
    -
    2779
    -
    2780 real(wp) :: B2, term, disc
    -
    2781
    -
    2782 b2 = sum(b**2)
    -
    2783
    -
    2784 if (.not. relativity) then
    -
    2785 term = c**2 + b2/rho
    -
    2786 disc = term**2 - 4*c**2*(b(norm)**2/rho)
    -
    2787 else
    -
    2788 ! Note: this is approximation for the non-relatisitic limit; accurate solution requires solving a quartic equation
    -
    2789 term = (c**2*(b(norm)**2 + rho*h) + b2)/(rho*h + b2)
    -
    2790 disc = term**2 - 4*c**2*b(norm)**2/(rho*h + b2)
    -
    2791 end if
    -
    2792
    -
    2793#ifdef DEBUG
    -
    2794 if (disc < 0._wp) then
    -
    2795 print *, 'rho, c, Bx, By, Bz, h, term, disc:', rho, c, b(1), b(2), b(3), h, term, disc
    -
    2796 call s_mpi_abort('Error: negative discriminant in s_compute_fast_magnetosonic_speed')
    -
    2797 end if
    -
    2798#endif
    -
    2799
    -
    2800 c_fast = sqrt(0.5_wp*(term + sqrt(disc)))
    -
    2801
    +
    2747 end subroutine s_compute_speed_of_sound
    +
    2748#endif
    +
    2749
    +
    2750#ifndef MFC_PRE_PROCESS
    +
    2751 !> @brief Computes the fast magnetosonic wave speed from the sound speed, density, and magnetic field components.
    +
    +
    2752 subroutine s_compute_fast_magnetosonic_speed(rho, c, B, norm, c_fast, h)
    +
    2753
    +
    2754# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2755#ifdef _CRAYFTN
    +
    2756# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2757!DIR$ INLINEALWAYS s_compute_fast_magnetosonic_speed
    +
    2758# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2759#elif MFC_OpenACC
    +
    2760# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2761!$acc routine seq
    +
    2762# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2763#elif MFC_OpenMP
    +
    2764# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2765
    +
    2766# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2767
    +
    2768# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2769!$omp declare target device_type(any)
    +
    2770# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2771#endif
    +
    2772# 1484 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2773
    +
    2774 real(wp), intent(in) :: B(3), rho, c
    +
    2775 real(wp), intent(in) :: h ! only used for relativity
    +
    2776 real(wp), intent(out) :: c_fast
    +
    2777 integer, intent(in) :: norm
    +
    2778
    +
    2779 real(wp) :: B2, term, disc
    +
    2780
    +
    2781 b2 = sum(b**2)
    +
    2782
    +
    2783 if (.not. relativity) then
    +
    2784 term = c**2 + b2/rho
    +
    2785 disc = term**2 - 4*c**2*(b(norm)**2/rho)
    +
    2786 else
    +
    2787 ! Note: this is approximation for the non-relatisitic limit; accurate solution requires solving a quartic equation
    +
    2788 term = (c**2*(b(norm)**2 + rho*h) + b2)/(rho*h + b2)
    +
    2789 disc = term**2 - 4*c**2*b(norm)**2/(rho*h + b2)
    +
    2790 end if
    +
    2791
    +
    2792#ifdef DEBUG
    +
    2793 if (disc < 0._wp) then
    +
    2794 print *, 'rho, c, Bx, By, Bz, h, term, disc:', rho, c, b(1), b(2), b(3), h, term, disc
    +
    2795 call s_mpi_abort('Error: negative discriminant in s_compute_fast_magnetosonic_speed')
    +
    2796 end if
    +
    2797#endif
    +
    2798
    +
    2799 c_fast = sqrt(0.5_wp*(term + sqrt(disc)))
    +
    2800
    - -
    2803#endif
    -
    2804
    -
    2805end module m_variables_conversion
    + +
    2802#endif
    +
    2803
    +
    2804end module m_variables_conversion
    type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
    integer, intent(in) k
    integer, intent(in) j
    @@ -2994,13 +2993,13 @@
    Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
    Broadcasts user inputs and decomposes the domain across MPI ranks for pre-processing.
    Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
    -
    subroutine s_compute_fast_magnetosonic_speed(rho, c, b, norm, c_fast, h)
    Computes the fast magnetosonic wave speed from the sound speed, density, and magnetic field component...
    -
    subroutine, public s_convert_primitive_to_flux_variables(qk_prim_vf, fk_vf, fk_src_vf, is1, is2, is3, s2b, s3b)
    The following subroutine handles the conversion between the primitive variables and the Eulerian flux...
    +
    subroutine s_compute_fast_magnetosonic_speed(rho, c, b, norm, c_fast, h)
    Computes the fast magnetosonic wave speed from the sound speed, density, and magnetic field component...
    +
    subroutine, public s_convert_primitive_to_flux_variables(qk_prim_vf, fk_vf, fk_src_vf, is1, is2, is3, s2b, s3b)
    The following subroutine handles the conversion between the primitive variables and the Eulerian flux...
    real(wp), dimension(:), allocatable, public gammas
    real(wp), dimension(:, :, :), allocatable, public pi_inf_sf
    Scalar liquid stiffness function.
    real(wp), dimension(:), allocatable, public ps_inf
    -
    subroutine, public s_compute_species_fraction(q_vf, k, l, r, alpha_rho_k, alpha_k)
    This subroutine computes partial densities and volume fractions.
    -
    subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, h, adv, vel_sum, c_c, c, qv)
    Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state...
    +
    subroutine, public s_compute_species_fraction(q_vf, k, l, r, alpha_rho_k, alpha_k)
    This subroutine computes partial densities and volume fractions.
    +
    subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, h, adv, vel_sum, c_c, c, qv)
    Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state...
    real(wp), dimension(:), allocatable, public gs_min
    real(wp), dimension(:), allocatable, public qvs
    @@ -3025,7 +3024,7 @@
    integer, dimension(:), allocatable bubrs_vc
    real(wp), dimension(:), allocatable gs_vc
    -
    impure subroutine s_finalize_variables_conversion_module()
    Deallocates fluid property arrays and post-processing fields allocated during module initialization.
    +
    impure subroutine s_finalize_variables_conversion_module()
    Deallocates fluid property arrays and post-processing fields allocated during module initialization.
    subroutine, public s_convert_to_mixture_variables(q_vf, i, j, k, rho, gamma, pi_inf, qv, re_k, g_k, g)
    Dispatch to the s_convert_mixture_to_mixture_variables and s_convert_species_to_mixture_variables sub...
    subroutine, public s_convert_species_to_mixture_variables_acc(rho_k, gamma_k, pi_inf_k, qv_k, alpha_k, alpha_rho_k, re_k, g_k, g)
    GPU-accelerated conversion of species volume fractions and partial densities to mixture density,...
    diff --git a/pre_process/namespacem__data__output.html b/pre_process/namespacem__data__output.html index 2f0db175b..782def387 100644 --- a/pre_process/namespacem__data__output.html +++ b/pre_process/namespacem__data__output.html @@ -203,7 +203,7 @@

    Definition at line 790 of file m_data_output.fpp.f90.

    +

    Definition at line 792 of file m_data_output.fpp.f90.

    Here is the caller graph for this function:
    @@ -226,7 +226,7 @@

    Definition at line 683 of file m_data_output.fpp.f90.

    +

    Definition at line 685 of file m_data_output.fpp.f90.

    Here is the call graph for this function:
    diff --git a/pre_process/namespacem__mpi__common.html b/pre_process/namespacem__mpi__common.html index c1ff8192e..12cdb008f 100644 --- a/pre_process/namespacem__mpi__common.html +++ b/pre_process/namespacem__mpi__common.html @@ -262,7 +262,7 @@

    Definition at line 3030 of file m_mpi_common.fpp.f90.

    +

    Definition at line 3028 of file m_mpi_common.fpp.f90.

    Here is the caller graph for this function:
    @@ -821,7 +821,7 @@

    Definition at line 2853 of file m_mpi_common.fpp.f90.

    +

    Definition at line 2851 of file m_mpi_common.fpp.f90.

    @@ -878,6 +878,11 @@

    Definition at line 1035 of file m_mpi_common.fpp.f90.

    +
    +Here is the call graph for this function:
    +
    +
    +

    diff --git a/pre_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.map b/pre_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.map index 91362aab1..cec08e06f 100644 --- a/pre_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.map +++ b/pre_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.map @@ -1,46 +1,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pre_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.md5 b/pre_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.md5 index 55ed342d8..a5232ce4d 100644 --- a/pre_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.md5 +++ b/pre_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.md5 @@ -1 +1 @@ -3cf9df4f3852748a2b675882c12a7f8d \ No newline at end of file +b4d515535c71e17e3b65353fed2d0908 \ No newline at end of file diff --git a/pre_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.svg b/pre_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.svg index 5775e14c6..e033bb7b4 100644 --- a/pre_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.svg +++ b/pre_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.svg @@ -4,7 +4,7 @@ - + @@ -48,7 +48,7 @@ @@ -59,9 +59,9 @@ var sectionId = 'dynsection-4'; Node1 - -m_mpi_common::s_mpi -_abort + +m_mpi_common::s_mpi +_abort @@ -69,9 +69,9 @@ var sectionId = 'dynsection-4'; Node2 - -m_icpp_patches::s_apply -_icpp_patches + +m_icpp_patches::s_apply +_icpp_patches @@ -79,8 +79,8 @@ var sectionId = 'dynsection-4'; Node1->Node2 - - + + @@ -88,9 +88,9 @@ var sectionId = 'dynsection-4'; Node6 - -m_start_up::s_check -_grid_data_files + +m_start_up::s_check +_grid_data_files @@ -98,8 +98,8 @@ var sectionId = 'dynsection-4'; Node1->Node6 - - + + @@ -107,9 +107,9 @@ var sectionId = 'dynsection-4'; Node8 - -m_start_up::s_check -_input_file + +m_start_up::s_check +_input_file @@ -117,8 +117,8 @@ var sectionId = 'dynsection-4'; Node1->Node8 - - + + @@ -126,9 +126,9 @@ var sectionId = 'dynsection-4'; Node10 - -m_icpp_patches::s_icpp -_line_segment + +m_icpp_patches::s_icpp +_line_segment @@ -136,8 +136,8 @@ var sectionId = 'dynsection-4'; Node1->Node10 - - + + @@ -145,10 +145,10 @@ var sectionId = 'dynsection-4'; Node11 - -m_mpi_common::s_mpi -_decompose_computational -_domain + +m_mpi_common::s_mpi +_decompose_computational +_domain @@ -156,18 +156,19 @@ var sectionId = 'dynsection-4'; Node1->Node11 - - + + Node12 - - -m_mpi_common::s_prohibit -_abort + + +m_mpi_common::s_mpi +_sendrecv_variables +_buffers @@ -175,18 +176,18 @@ var sectionId = 'dynsection-4'; Node1->Node12 - - + + Node13 - - -m_start_up::s_read -_input_file + + +m_mpi_common::s_prohibit +_abort @@ -194,84 +195,103 @@ var sectionId = 'dynsection-4'; Node1->Node13 - - + + Node14 - - -m_start_up::s_read -_parallel_grid_data_files + + +m_start_up::s_read +_input_file - + Node1->Node14 - - - + + + - - -Node16 - - -m_start_up::s_read -_parallel_ic_data_files + + +Node15 + + +m_start_up::s_read +_parallel_grid_data_files - - -Node1->Node16 - - - + + +Node1->Node15 + + + Node17 - - -m_start_up::s_read -_serial_grid_data_files + + +m_start_up::s_read +_parallel_ic_data_files - + Node1->Node17 - - - + + + Node18 - + + +m_start_up::s_read +_serial_grid_data_files + + + + + +Node1->Node18 + + + + + + + + +Node19 + m_start_up::s_read _serial_ic_data_files - - -Node1->Node18 - - - + + +Node1->Node19 + + + @@ -279,10 +299,10 @@ var sectionId = 'dynsection-4'; Node3 - -m_initial_condition -::s_generate_initial -_condition + +m_initial_condition +::s_generate_initial +_condition @@ -290,8 +310,8 @@ var sectionId = 'dynsection-4'; Node2->Node3 - - + + @@ -299,9 +319,9 @@ var sectionId = 'dynsection-4'; Node4 - -m_start_up::s_apply -_initial_condition + +m_start_up::s_apply +_initial_condition @@ -309,8 +329,8 @@ var sectionId = 'dynsection-4'; Node3->Node4 - - + + @@ -318,8 +338,8 @@ var sectionId = 'dynsection-4'; Node5 - -p_main + +p_main @@ -327,8 +347,8 @@ var sectionId = 'dynsection-4'; Node4->Node5 - - + + @@ -336,8 +356,8 @@ var sectionId = 'dynsection-4'; Node7 - -m_start_up::s_read_grid + +m_start_up::s_read_grid @@ -345,8 +365,8 @@ var sectionId = 'dynsection-4'; Node6->Node7 - - + + @@ -354,8 +374,8 @@ var sectionId = 'dynsection-4'; Node7->Node5 - - + + @@ -363,9 +383,9 @@ var sectionId = 'dynsection-4'; Node9 - -m_start_up::s_initialize -_mpi_domain + +m_start_up::s_initialize +_mpi_domain @@ -373,8 +393,8 @@ var sectionId = 'dynsection-4'; Node8->Node9 - - + + @@ -382,8 +402,8 @@ var sectionId = 'dynsection-4'; Node9->Node5 - - + + @@ -391,8 +411,8 @@ var sectionId = 'dynsection-4'; Node10->Node2 - - + + @@ -400,70 +420,70 @@ var sectionId = 'dynsection-4'; Node11->Node9 - - + + - - -Node13->Node9 - - - + + +Node14->Node9 + + + - - -Node15 - + + +Node16 + m_start_up::s_initialize _modules - - -Node14->Node15 - + + +Node15->Node16 + - - -Node15->Node5 - - - + + +Node16->Node5 + + + - - -Node16->Node15 - + + +Node17->Node16 + - - -Node17->Node15 - + + +Node18->Node16 + - - -Node18->Node15 - + + +Node19->Node16 + diff --git a/pre_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph_org.svg b/pre_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph_org.svg index e85f4e750..aadeffebe 100644 --- a/pre_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph_org.svg +++ b/pre_process/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph_org.svg @@ -4,17 +4,17 @@ - - + + m_mpi_common::s_mpi_abort Node1 - -m_mpi_common::s_mpi -_abort + +m_mpi_common::s_mpi +_abort @@ -22,9 +22,9 @@ Node2 - -m_icpp_patches::s_apply -_icpp_patches + +m_icpp_patches::s_apply +_icpp_patches @@ -32,8 +32,8 @@ Node1->Node2 - - + + @@ -41,9 +41,9 @@ Node6 - -m_start_up::s_check -_grid_data_files + +m_start_up::s_check +_grid_data_files @@ -51,8 +51,8 @@ Node1->Node6 - - + + @@ -60,9 +60,9 @@ Node8 - -m_start_up::s_check -_input_file + +m_start_up::s_check +_input_file @@ -70,8 +70,8 @@ Node1->Node8 - - + + @@ -79,9 +79,9 @@ Node10 - -m_icpp_patches::s_icpp -_line_segment + +m_icpp_patches::s_icpp +_line_segment @@ -89,8 +89,8 @@ Node1->Node10 - - + + @@ -98,10 +98,10 @@ Node11 - -m_mpi_common::s_mpi -_decompose_computational -_domain + +m_mpi_common::s_mpi +_decompose_computational +_domain @@ -109,18 +109,19 @@ Node1->Node11 - - + + Node12 - - -m_mpi_common::s_prohibit -_abort + + +m_mpi_common::s_mpi +_sendrecv_variables +_buffers @@ -128,18 +129,18 @@ Node1->Node12 - - + + Node13 - - -m_start_up::s_read -_input_file + + +m_mpi_common::s_prohibit +_abort @@ -147,84 +148,103 @@ Node1->Node13 - - + + Node14 - - -m_start_up::s_read -_parallel_grid_data_files + + +m_start_up::s_read +_input_file - + Node1->Node14 - - - + + + - - -Node16 - - -m_start_up::s_read -_parallel_ic_data_files + + +Node15 + + +m_start_up::s_read +_parallel_grid_data_files - - -Node1->Node16 - - - + + +Node1->Node15 + + + Node17 - - -m_start_up::s_read -_serial_grid_data_files + + +m_start_up::s_read +_parallel_ic_data_files - + Node1->Node17 - - - + + + Node18 - + + +m_start_up::s_read +_serial_grid_data_files + + + + + +Node1->Node18 + + + + + + + + +Node19 + m_start_up::s_read _serial_ic_data_files - - -Node1->Node18 - - - + + +Node1->Node19 + + + @@ -232,10 +252,10 @@ Node3 - -m_initial_condition -::s_generate_initial -_condition + +m_initial_condition +::s_generate_initial +_condition @@ -243,8 +263,8 @@ Node2->Node3 - - + + @@ -252,9 +272,9 @@ Node4 - -m_start_up::s_apply -_initial_condition + +m_start_up::s_apply +_initial_condition @@ -262,8 +282,8 @@ Node3->Node4 - - + + @@ -271,8 +291,8 @@ Node5 - -p_main + +p_main @@ -280,8 +300,8 @@ Node4->Node5 - - + + @@ -289,8 +309,8 @@ Node7 - -m_start_up::s_read_grid + +m_start_up::s_read_grid @@ -298,8 +318,8 @@ Node6->Node7 - - + + @@ -307,8 +327,8 @@ Node7->Node5 - - + + @@ -316,9 +336,9 @@ Node9 - -m_start_up::s_initialize -_mpi_domain + +m_start_up::s_initialize +_mpi_domain @@ -326,8 +346,8 @@ Node8->Node9 - - + + @@ -335,8 +355,8 @@ Node9->Node5 - - + + @@ -344,8 +364,8 @@ Node10->Node2 - - + + @@ -353,70 +373,70 @@ Node11->Node9 - - + + - - -Node13->Node9 - - - + + +Node14->Node9 + + + - - -Node15 - + + +Node16 + m_start_up::s_initialize _modules - - -Node14->Node15 - + + +Node15->Node16 + - - -Node15->Node5 - - - + + +Node16->Node5 + + + - - -Node16->Node15 - + + +Node17->Node16 + - - -Node17->Node15 - + + +Node18->Node16 + - - -Node18->Node15 - + + +Node19->Node16 + diff --git a/pre_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.map b/pre_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.map new file mode 100644 index 000000000..cdcf1b3ab --- /dev/null +++ b/pre_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/pre_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.md5 b/pre_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.md5 new file mode 100644 index 000000000..cbdcdb751 --- /dev/null +++ b/pre_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.md5 @@ -0,0 +1 @@ +25af549a2b06a4e4df13ab03bd543174 \ No newline at end of file diff --git a/pre_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.svg b/pre_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.svg new file mode 100644 index 000000000..a92d8516a --- /dev/null +++ b/pre_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + +m_mpi_common::s_mpi_sendrecv_variables_buffers + + +Node1 + + +m_mpi_common::s_mpi +_sendrecv_variables +_buffers + + + + + +Node2 + + +m_mpi_common::s_mpi +_abort + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/pre_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph_org.svg b/pre_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph_org.svg new file mode 100644 index 000000000..bbc5540cd --- /dev/null +++ b/pre_process/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph_org.svg @@ -0,0 +1,42 @@ + + + + + + +m_mpi_common::s_mpi_sendrecv_variables_buffers + + +Node1 + + +m_mpi_common::s_mpi +_sendrecv_variables +_buffers + + + + + +Node2 + + +m_mpi_common::s_mpi +_abort + + + + + +Node1->Node2 + + + + + + + + diff --git a/pre_process/namespacem__variables__conversion.html b/pre_process/namespacem__variables__conversion.html index 5d8788d89..a8f79272e 100644 --- a/pre_process/namespacem__variables__conversion.html +++ b/pre_process/namespacem__variables__conversion.html @@ -265,7 +265,7 @@

    Definition at line 2753 of file m_variables_conversion.fpp.f90.

    +

    Definition at line 2752 of file m_variables_conversion.fpp.f90.

    @@ -419,7 +419,7 @@

    Definition at line 2450 of file m_variables_conversion.fpp.f90.

    +

    Definition at line 2449 of file m_variables_conversion.fpp.f90.

    Here is the caller graph for this function:
    @@ -489,7 +489,7 @@

    Definition at line 2661 of file m_variables_conversion.fpp.f90.

    +

    Definition at line 2660 of file m_variables_conversion.fpp.f90.

    @@ -726,7 +726,7 @@

    Definition at line 2140 of file m_variables_conversion.fpp.f90.

    +

    Definition at line 2139 of file m_variables_conversion.fpp.f90.

    Here is the call graph for this function:
    @@ -1006,7 +1006,7 @@

    Definition at line 2517 of file m_variables_conversion.fpp.f90.

    +

    Definition at line 2516 of file m_variables_conversion.fpp.f90.

    Here is the caller graph for this function:
    diff --git a/simulation/m__cbc_8fpp_8f90_source.html b/simulation/m__cbc_8fpp_8f90_source.html index 66723ca73..a62ab2f15 100644 --- a/simulation/m__cbc_8fpp_8f90_source.html +++ b/simulation/m__cbc_8fpp_8f90_source.html @@ -3249,7 +3249,7 @@
    3105# 931 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
    3106#endif
    3107 do i = 2, momxb
    -
    3108 l(2) = c**3._wp*ma*(alpha_rho(i - 1) - alpha_rho_in(i - 1, 1))/del_in(1) - c*ma*(pres - pres_in(1))/del_in(1)
    +
    3108 l(i) = c**3._wp*ma*(alpha_rho(i - 1) - alpha_rho_in(i - 1, 1))/del_in(1) - c*ma*(pres - pres_in(1))/del_in(1)
    3109 end do
    3110 if (n > 0) then
    3111 l(momxb + 1) = c*ma*(vel(dir_idx(2)) - vel_in(1, dir_idx(2)))/del_in(1)
    @@ -4183,7 +4183,7 @@
    4039# 931 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
    4040#endif
    4041 do i = 2, momxb
    -
    4042 l(2) = c**3._wp*ma*(alpha_rho(i - 1) - alpha_rho_in(i - 1, 2))/del_in(2) - c*ma*(pres - pres_in(2))/del_in(2)
    +
    4042 l(i) = c**3._wp*ma*(alpha_rho(i - 1) - alpha_rho_in(i - 1, 2))/del_in(2) - c*ma*(pres - pres_in(2))/del_in(2)
    4043 end do
    4044 if (n > 0) then
    4045 l(momxb + 1) = c*ma*(vel(dir_idx(2)) - vel_in(2, dir_idx(2)))/del_in(2)
    @@ -5117,7 +5117,7 @@
    4973# 931 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
    4974#endif
    4975 do i = 2, momxb
    -
    4976 l(2) = c**3._wp*ma*(alpha_rho(i - 1) - alpha_rho_in(i - 1, 3))/del_in(3) - c*ma*(pres - pres_in(3))/del_in(3)
    +
    4976 l(i) = c**3._wp*ma*(alpha_rho(i - 1) - alpha_rho_in(i - 1, 3))/del_in(3) - c*ma*(pres - pres_in(3))/del_in(3)
    4977 end do
    4978 if (n > 0) then
    4979 l(momxb + 1) = c*ma*(vel(dir_idx(2)) - vel_in(3, dir_idx(2)))/del_in(3)
    diff --git a/simulation/m__data__output_8fpp_8f90_source.html b/simulation/m__data__output_8fpp_8f90_source.html index 57ba9da0a..70af08fad 100644 --- a/simulation/m__data__output_8fpp_8f90_source.html +++ b/simulation/m__data__output_8fpp_8f90_source.html @@ -2989,7 +2989,7 @@
    subroutine, public s_compute_enthalpy(q_prim_vf, pres, rho, gamma, pi_inf, re, h, alpha, vel, vel_sum, qv, j, k, l)
    Computes enthalpy.
    subroutine, public s_compute_stability_from_dt(vel, c, rho, re_l, j, k, l, icfl_sf, vcfl_sf, rc_sf)
    Computes stability criterion for a specified dt.
    Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
    -
    subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, h, adv, vel_sum, c_c, c, qv)
    Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state...
    +
    subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, h, adv, vel_sum, c_c, c, qv)
    Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state...
    subroutine, public s_compute_pressure(energy, alf, dyn_p, pi_inf, gamma, rho, qv, rhoyks, pres, t, stress, mom, g, pres_mag)
    This procedure conditionally calculates the appropriate pressure.
    subroutine, public s_convert_conservative_to_primitive_variables(qk_cons_vf, q_t_sf, qk_prim_vf, ibounds)
    The following procedure handles the conversion between the conservative variables and the primitive v...
    subroutine, public s_convert_to_mixture_variables(q_vf, i, j, k, rho, gamma, pi_inf, qv, re_k, g_k, g)
    Dispatch to the s_convert_mixture_to_mixture_variables and s_convert_species_to_mixture_variables sub...
    diff --git a/simulation/m__finite__differences_8fpp_8f90_source.html b/simulation/m__finite__differences_8fpp_8f90_source.html index db626936c..87b823675 100644 --- a/simulation/m__finite__differences_8fpp_8f90_source.html +++ b/simulation/m__finite__differences_8fpp_8f90_source.html @@ -492,7 +492,7 @@
    354 if (z == iz_s%beg) then
    355 divergence = divergence + (-3._wp*fields(3)%sf(x, y, z) + 4._wp*fields(3)%sf(x, y, z + 1) - fields(3)%sf(x, y, z + 2))/(z_cc(z + 2) - z_cc(z))
    356 else if (z == iz_s%end) then
    -
    357 divergence = divergence + (+3._wp*fields(3)%sf(x, y, z) - 4._wp*fields(3)%sf(x, y, z - 1) + fields(2)%sf(x, y, z - 2))/(z_cc(z) - z_cc(z - 2))
    +
    357 divergence = divergence + (+3._wp*fields(3)%sf(x, y, z) - 4._wp*fields(3)%sf(x, y, z - 1) + fields(3)%sf(x, y, z - 2))/(z_cc(z) - z_cc(z - 2))
    358 else
    359 divergence = divergence + (fields(3)%sf(x, y, z + 1) - fields(3)%sf(x, y, z - 1))/(z_cc(z + 1) - z_cc(z - 1))
    360 end if
    diff --git a/simulation/m__global__parameters_8fpp_8f90.html b/simulation/m__global__parameters_8fpp_8f90.html index 4b00a775b..20bfc3f6e 100644 --- a/simulation/m__global__parameters_8fpp_8f90.html +++ b/simulation/m__global__parameters_8fpp_8f90.html @@ -309,18 +309,18 @@ logical m_global_parameters::bf_y logical m_global_parameters::bf_z  body force toggle in three directions amplitude, frequency, and phase shift sinusoid in each direction
    -real(wpm_global_parameters::k_x -real(wpm_global_parameters::g_x -real(wpm_global_parameters::w_x -real(wpm_global_parameters::p_x -real(wpm_global_parameters::k_z real(wpm_global_parameters::g_z -real(wpm_global_parameters::w_z +real(wpm_global_parameters::k_z real(wpm_global_parameters::p_z -real(wpm_global_parameters::k_y +real(wpm_global_parameters::w_z real(wpm_global_parameters::g_y -real(wpm_global_parameters::w_y +real(wpm_global_parameters::k_y real(wpm_global_parameters::p_y +real(wpm_global_parameters::w_y +real(wpm_global_parameters::g_x +real(wpm_global_parameters::k_x +real(wpm_global_parameters::p_x +real(wpm_global_parameters::w_x real(wp), dimension(3) m_global_parameters::accel_bf integer m_global_parameters::cpu_start integer m_global_parameters::cpu_end diff --git a/simulation/m__global__parameters_8fpp_8f90_source.html b/simulation/m__global__parameters_8fpp_8f90_source.html index 9df9920e6..cc29a1266 100644 --- a/simulation/m__global__parameters_8fpp_8f90_source.html +++ b/simulation/m__global__parameters_8fpp_8f90_source.html @@ -630,33 +630,33 @@
    493 !< amplitude, frequency, and phase shift sinusoid in each direction
    494# 195 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    495# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    496 real(wp) :: k_x
    +
    496 real(wp) :: g_z
    497# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    498 real(wp) :: g_x
    +
    498 real(wp) :: k_z
    499# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    500 real(wp) :: w_x
    +
    500 real(wp) :: p_z
    501# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    502 real(wp) :: p_x
    +
    502 real(wp) :: w_z
    503# 198 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    504# 195 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    505# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    506 real(wp) :: k_z
    +
    506 real(wp) :: g_y
    507# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    508 real(wp) :: g_z
    +
    508 real(wp) :: k_y
    509# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    510 real(wp) :: w_z
    +
    510 real(wp) :: p_y
    511# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    512 real(wp) :: p_z
    +
    512 real(wp) :: w_y
    513# 198 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    514# 195 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    515# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    516 real(wp) :: k_y
    +
    516 real(wp) :: g_x
    517# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    518 real(wp) :: g_y
    +
    518 real(wp) :: k_x
    519# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    520 real(wp) :: w_y
    +
    520 real(wp) :: p_x
    521# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    522 real(wp) :: p_y
    +
    522 real(wp) :: w_x
    523# 198 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    524# 199 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    525 real(wp), dimension(3) :: accel_bf
    @@ -1811,33 +1811,33 @@
    1673 !< amplitude, frequency, and phase shift sinusoid in each direction
    1674# 763 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    1675# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    1676 k_x = dflt_real
    +
    1676 g_z = dflt_real
    1677# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    1678 g_x = dflt_real
    +
    1678 k_z = dflt_real
    1679# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    1680 w_x = dflt_real
    +
    1680 p_z = dflt_real
    1681# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    1682 p_x = dflt_real
    +
    1682 w_z = dflt_real
    1683# 766 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    1684# 763 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    1685# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    1686 k_z = dflt_real
    +
    1686 g_y = dflt_real
    1687# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    1688 g_z = dflt_real
    +
    1688 k_y = dflt_real
    1689# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    1690 w_z = dflt_real
    +
    1690 p_y = dflt_real
    1691# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    1692 p_z = dflt_real
    +
    1692 w_y = dflt_real
    1693# 766 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    1694# 763 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    1695# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    1696 k_y = dflt_real
    +
    1696 g_x = dflt_real
    1697# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    1698 g_y = dflt_real
    +
    1698 k_x = dflt_real
    1699# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    1700 w_y = dflt_real
    +
    1700 p_x = dflt_real
    1701# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    1702 p_y = dflt_real
    +
    1702 w_x = dflt_real
    1703# 766 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    1704# 767 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    1705
    @@ -1896,17 +1896,17 @@
    1758
    1759 ! GRCBC flags
    1760# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    1761 bc_x%grcbc_in = .false.
    -
    1762 bc_x%grcbc_out = .false.
    -
    1763 bc_x%grcbc_vel_out = .false.
    +
    1761 bc_z%grcbc_in = .false.
    +
    1762 bc_z%grcbc_out = .false.
    +
    1763 bc_z%grcbc_vel_out = .false.
    1764# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    1765 bc_z%grcbc_in = .false.
    -
    1766 bc_z%grcbc_out = .false.
    -
    1767 bc_z%grcbc_vel_out = .false.
    +
    1765 bc_y%grcbc_in = .false.
    +
    1766 bc_y%grcbc_out = .false.
    +
    1767 bc_y%grcbc_vel_out = .false.
    1768# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    -
    1769 bc_y%grcbc_in = .false.
    -
    1770 bc_y%grcbc_out = .false.
    -
    1771 bc_y%grcbc_vel_out = .false.
    +
    1769 bc_x%grcbc_in = .false.
    +
    1770 bc_x%grcbc_out = .false.
    +
    1771 bc_x%grcbc_vel_out = .false.
    1772# 827 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
    1773
    1774 ! Lagrangian subgrid bubble model
    @@ -4174,7 +4174,7 @@
    integer weno_num_stencils
    Number of stencils for WENO reconstruction (only different from weno_polyn for TENO(>5)).
    real(wp) mytime
    Current simulation time.
    - +
    logical null_weights
    Null undesired WENO weights.
    logical bubbles_euler
    Bubbles euler on/off.
    @@ -4195,21 +4195,21 @@
    integer, dimension(3, 2) shear_bc_flip_indices
    Indices of shear stress components to reflect for boundary conditions. Size: (1:3,...
    logical hypoelasticity
    hypoelasticity modeling
    impure subroutine s_assign_default_values_to_user_inputs
    Assigns default values to the user inputs before reading them in. This enables for an easier consiste...
    - +
    impure subroutine s_finalize_global_parameters_module
    Module deallocation and/or disassociation procedures.
    integer thermal
    Thermal behavior. 1 = adiabatic, 2 = isotherm, 3 = transfer.
    integer, parameter nmom
    Number of carried moments per R0 location.
    integer avg_state
    Average state evaluation method.
    real(wp), dimension(:), allocatable im_trans_c
    - + - +
    type(int_bounds_info), dimension(1:3) idwint
    real(wp), dimension(:), allocatable, target z_cb
    integer recon_type
    Reconstruction Type.
    logical igr_pres_lim
    Limit to positive pressures for IGR.
    - +
    logical, parameter chemistry
    Chemistry modeling.
    @@ -4218,7 +4218,7 @@
    type(ib_patch_parameters), dimension(num_patches_max) patch_ib
    type(int_bounds_info) mom_idx
    Indexes of first & last momentum eqns.
    - + @@ -4245,7 +4245,7 @@
    integer t_step_print
    Number of time-steps between printouts.
    integer n_idx
    Index of number density.
    - +
    type(mpi_io_ib_var), public mpi_io_ib_data
    logical dummy
    AMDFlang workaround: keep a dummy logical to avoid a compiler case-optimization bug when a parameter+...
    @@ -4307,7 +4307,7 @@
    integer precision
    Precision of output files.
    logical hyperelasticity
    hyperelasticity modeling
    real(wp), dimension(:), allocatable ps_inf
    - +
    type(physical_parameters), dimension(num_fluids_max) fluid_pp
    Database of the physical parameters of each of the fluids that is present in the flow....
    integer, dimension(3) dir_idx_tau
    @@ -4328,12 +4328,12 @@
    real(wp), dimension(:), allocatable, target y_cc
    real(wp), dimension(:), allocatable k_g
    type(pres_field), dimension(:), allocatable pb_ts
    - +
    type(pres_field), dimension(:), allocatable mv_ts
    type(chemistry_parameters) chem_params
    - +
    real(wp), dimension(:), allocatable qvps
    integer fd_order
    The order of the finite-difference (fd) approximations of the first-order derivatives that need to be...
    logical bubbles_lagrange
    Lagrangian subgrid bubble model switch.
    @@ -4365,7 +4365,7 @@
    type(int_bounds_info) internalenergies_idx
    Indexes of first & last internal energy eqns.
    integer adap_dt_max_iters
    Maximum number of iterations.
    - +
    real(wp) ic_beta
    THINC Sharpness Parameter.
    @@ -4404,7 +4404,7 @@
    type(integral_parameters), dimension(num_probes_max) integral
    real(wp), dimension(:), allocatable, target y_cb
    - +
    real(wp) adap_dt_tol
    Tolerance to control adaptive step size.
    integer e_idx
    Index of energy equation.
    diff --git a/simulation/m__mpi__common_8fpp_8f90_source.html b/simulation/m__mpi__common_8fpp_8f90_source.html index 263df99f0..e18a77dd7 100644 --- a/simulation/m__mpi__common_8fpp_8f90_source.html +++ b/simulation/m__mpi__common_8fpp_8f90_source.html @@ -1975,9 +1975,9 @@
    1801 (j + buff_size*((k + 1) + (n + 1)*l))
    1802 q_comm(i)%sf(j + unpack_offset, k, l) = real(buff_recv(r), kind=stp)
    1803#if defined(__INTEL_COMPILER)
    -
    1804 if (ieee_is_nan(q_comm(i)%sf(j, k, l))) then
    +
    1804 if (ieee_is_nan(q_comm(i)%sf(j + unpack_offset, k, l))) then
    1805 print *, "Error", j, k, l, i
    -
    1806 error stop "NaN(s) in recv"
    +
    1806 call s_mpi_abort("NaN(s) in recv")
    1807 end if
    1808#endif
    1809 end do
    @@ -2148,9 +2148,9 @@
    1974 ((k + buff_size) + buff_size*l))
    1975 q_comm(i)%sf(j, k + unpack_offset, l) = real(buff_recv(r), kind=stp)
    1976#if defined(__INTEL_COMPILER)
    -
    1977 if (ieee_is_nan(q_comm(i)%sf(j, k, l))) then
    +
    1977 if (ieee_is_nan(q_comm(i)%sf(j, k + unpack_offset, l))) then
    1978 print *, "Error", j, k, l, i
    -
    1979 error stop "NaN(s) in recv"
    +
    1979 call s_mpi_abort("NaN(s) in recv")
    1980 end if
    1981#endif
    1982 end do
    @@ -2325,9 +2325,9 @@
    2151 (l + buff_size)))
    2152 q_comm(i)%sf(j, k, l + unpack_offset) = real(buff_recv(r), kind=stp)
    2153#if defined(__INTEL_COMPILER)
    -
    2154 if (ieee_is_nan(q_comm(i)%sf(j, k, l))) then
    +
    2154 if (ieee_is_nan(q_comm(i)%sf(j, k, l + unpack_offset))) then
    2155 print *, "Error", j, k, l, i
    -
    2156 error stop "NaN(s) in recv"
    +
    2156 call s_mpi_abort("NaN(s) in recv")
    2157 end if
    2158#endif
    2159 end do
    @@ -2524,699 +2524,697 @@
    2348
    2349 if (igr) then
    2350 recon_order = igr_order
    -
    2351 else
    -
    2352 recon_order = weno_order
    -
    2353 end if
    -
    2354
    -
    2355 ! 3D Cartesian Processor Topology
    -
    2356 if (n > 0) then
    -
    2357
    -
    2358 if (p > 0) then
    -
    2359 if (fft_wrt) then
    -
    2360
    -
    2361 ! Initial estimate of optimal processor topology
    -
    2362 num_procs_x = 1
    -
    2363 num_procs_y = 1
    -
    2364 num_procs_z = num_procs
    -
    2365 ierr = -1
    -
    2366
    -
    2367 ! Benchmarking the quality of this initial guess
    -
    2368 tmp_num_procs_y = num_procs_y
    -
    2369 tmp_num_procs_z = num_procs_z
    -
    2370 fct_min = 10._wp*abs((n + 1)/tmp_num_procs_y &
    -
    2371 - (p + 1)/tmp_num_procs_z)
    -
    2372
    -
    2373 ! Optimization of the initial processor topology
    -
    2374 do i = 1, num_procs
    -
    2375
    -
    2376 if (mod(num_procs, i) == 0 &
    -
    2377 .and. &
    -
    2378 (n + 1)/i >= num_stcls_min*recon_order) then
    -
    2379
    -
    2380 tmp_num_procs_y = i
    -
    2381 tmp_num_procs_z = num_procs/i
    -
    2382
    -
    2383 if (fct_min >= abs((n + 1)/tmp_num_procs_y &
    -
    2384 - (p + 1)/tmp_num_procs_z) &
    -
    2385 .and. &
    -
    2386 (p + 1)/tmp_num_procs_z &
    -
    2387 >= &
    -
    2388 num_stcls_min*recon_order) then
    -
    2389
    -
    2390 num_procs_y = i
    -
    2391 num_procs_z = num_procs/i
    -
    2392 fct_min = abs((n + 1)/tmp_num_procs_y &
    -
    2393 - (p + 1)/tmp_num_procs_z)
    -
    2394 ierr = 0
    +
    2351 end if
    +
    2352
    +
    2353 ! 3D Cartesian Processor Topology
    +
    2354 if (n > 0) then
    +
    2355
    +
    2356 if (p > 0) then
    +
    2357 if (fft_wrt) then
    +
    2358
    +
    2359 ! Initial estimate of optimal processor topology
    +
    2360 num_procs_x = 1
    +
    2361 num_procs_y = 1
    +
    2362 num_procs_z = num_procs
    +
    2363 ierr = -1
    +
    2364
    +
    2365 ! Benchmarking the quality of this initial guess
    +
    2366 tmp_num_procs_y = num_procs_y
    +
    2367 tmp_num_procs_z = num_procs_z
    +
    2368 fct_min = 10._wp*abs((n + 1)/tmp_num_procs_y &
    +
    2369 - (p + 1)/tmp_num_procs_z)
    +
    2370
    +
    2371 ! Optimization of the initial processor topology
    +
    2372 do i = 1, num_procs
    +
    2373
    +
    2374 if (mod(num_procs, i) == 0 &
    +
    2375 .and. &
    +
    2376 (n + 1)/i >= num_stcls_min*recon_order) then
    +
    2377
    +
    2378 tmp_num_procs_y = i
    +
    2379 tmp_num_procs_z = num_procs/i
    +
    2380
    +
    2381 if (fct_min >= abs((n + 1)/tmp_num_procs_y &
    +
    2382 - (p + 1)/tmp_num_procs_z) &
    +
    2383 .and. &
    +
    2384 (p + 1)/tmp_num_procs_z &
    +
    2385 >= &
    +
    2386 num_stcls_min*recon_order) then
    +
    2387
    +
    2388 num_procs_y = i
    +
    2389 num_procs_z = num_procs/i
    +
    2390 fct_min = abs((n + 1)/tmp_num_procs_y &
    +
    2391 - (p + 1)/tmp_num_procs_z)
    +
    2392 ierr = 0
    +
    2393
    +
    2394 end if
    2395
    -
    2396 end if
    +
    2396 end if
    2397
    -
    2398 end if
    -
    2399
    -
    2400 end do
    -
    2401 else
    -
    2402
    -
    2403 if (cyl_coord .and. p > 0) then
    -
    2404 ! Implement pencil processor blocking if using cylindrical coordinates so
    -
    2405 ! that all cells in azimuthal direction are stored on a single processor.
    -
    2406 ! This is necessary for efficient application of Fourier filter near axis.
    -
    2407
    -
    2408 ! Initial values of the processor factorization optimization
    -
    2409 num_procs_x = 1
    -
    2410 num_procs_y = num_procs
    -
    2411 num_procs_z = 1
    -
    2412 ierr = -1
    -
    2413
    -
    2414 ! Computing minimization variable for these initial values
    -
    2415 tmp_num_procs_x = num_procs_x
    -
    2416 tmp_num_procs_y = num_procs_y
    -
    2417 tmp_num_procs_z = num_procs_z
    -
    2418 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x &
    -
    2419 - (n + 1)/tmp_num_procs_y)
    -
    2420
    -
    2421 ! Searching for optimal computational domain distribution
    -
    2422 do i = 1, num_procs
    -
    2423
    -
    2424 if (mod(num_procs, i) == 0 &
    -
    2425 .and. &
    -
    2426 (m + 1)/i >= num_stcls_min*recon_order) then
    -
    2427
    -
    2428 tmp_num_procs_x = i
    -
    2429 tmp_num_procs_y = num_procs/i
    -
    2430
    -
    2431 if (fct_min >= abs((m + 1)/tmp_num_procs_x &
    -
    2432 - (n + 1)/tmp_num_procs_y) &
    -
    2433 .and. &
    -
    2434 (n + 1)/tmp_num_procs_y &
    -
    2435 >= &
    -
    2436 num_stcls_min*recon_order) then
    -
    2437
    -
    2438 num_procs_x = i
    -
    2439 num_procs_y = num_procs/i
    -
    2440 fct_min = abs((m + 1)/tmp_num_procs_x &
    -
    2441 - (n + 1)/tmp_num_procs_y)
    -
    2442 ierr = 0
    +
    2398 end do
    +
    2399 else
    +
    2400
    +
    2401 if (cyl_coord .and. p > 0) then
    +
    2402 ! Implement pencil processor blocking if using cylindrical coordinates so
    +
    2403 ! that all cells in azimuthal direction are stored on a single processor.
    +
    2404 ! This is necessary for efficient application of Fourier filter near axis.
    +
    2405
    +
    2406 ! Initial values of the processor factorization optimization
    +
    2407 num_procs_x = 1
    +
    2408 num_procs_y = num_procs
    +
    2409 num_procs_z = 1
    +
    2410 ierr = -1
    +
    2411
    +
    2412 ! Computing minimization variable for these initial values
    +
    2413 tmp_num_procs_x = num_procs_x
    +
    2414 tmp_num_procs_y = num_procs_y
    +
    2415 tmp_num_procs_z = num_procs_z
    +
    2416 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x &
    +
    2417 - (n + 1)/tmp_num_procs_y)
    +
    2418
    +
    2419 ! Searching for optimal computational domain distribution
    +
    2420 do i = 1, num_procs
    +
    2421
    +
    2422 if (mod(num_procs, i) == 0 &
    +
    2423 .and. &
    +
    2424 (m + 1)/i >= num_stcls_min*recon_order) then
    +
    2425
    +
    2426 tmp_num_procs_x = i
    +
    2427 tmp_num_procs_y = num_procs/i
    +
    2428
    +
    2429 if (fct_min >= abs((m + 1)/tmp_num_procs_x &
    +
    2430 - (n + 1)/tmp_num_procs_y) &
    +
    2431 .and. &
    +
    2432 (n + 1)/tmp_num_procs_y &
    +
    2433 >= &
    +
    2434 num_stcls_min*recon_order) then
    +
    2435
    +
    2436 num_procs_x = i
    +
    2437 num_procs_y = num_procs/i
    +
    2438 fct_min = abs((m + 1)/tmp_num_procs_x &
    +
    2439 - (n + 1)/tmp_num_procs_y)
    +
    2440 ierr = 0
    +
    2441
    +
    2442 end if
    2443
    -
    2444 end if
    +
    2444 end if
    2445
    -
    2446 end if
    +
    2446 end do
    2447
    -
    2448 end do
    +
    2448 else
    2449
    -
    2450 else
    -
    2451
    -
    2452 ! Initial estimate of optimal processor topology
    -
    2453 num_procs_x = 1
    -
    2454 num_procs_y = 1
    -
    2455 num_procs_z = num_procs
    -
    2456 ierr = -1
    -
    2457
    -
    2458 ! Benchmarking the quality of this initial guess
    -
    2459 tmp_num_procs_x = num_procs_x
    -
    2460 tmp_num_procs_y = num_procs_y
    -
    2461 tmp_num_procs_z = num_procs_z
    -
    2462 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x &
    -
    2463 - (n + 1)/tmp_num_procs_y) &
    -
    2464 + 10._wp*abs((n + 1)/tmp_num_procs_y &
    -
    2465 - (p + 1)/tmp_num_procs_z)
    -
    2466
    -
    2467 ! Optimization of the initial processor topology
    -
    2468 do i = 1, num_procs
    -
    2469
    -
    2470 if (mod(num_procs, i) == 0 &
    -
    2471 .and. &
    -
    2472 (m + 1)/i >= num_stcls_min*recon_order) then
    +
    2450 ! Initial estimate of optimal processor topology
    +
    2451 num_procs_x = 1
    +
    2452 num_procs_y = 1
    +
    2453 num_procs_z = num_procs
    +
    2454 ierr = -1
    +
    2455
    +
    2456 ! Benchmarking the quality of this initial guess
    +
    2457 tmp_num_procs_x = num_procs_x
    +
    2458 tmp_num_procs_y = num_procs_y
    +
    2459 tmp_num_procs_z = num_procs_z
    +
    2460 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x &
    +
    2461 - (n + 1)/tmp_num_procs_y) &
    +
    2462 + 10._wp*abs((n + 1)/tmp_num_procs_y &
    +
    2463 - (p + 1)/tmp_num_procs_z)
    +
    2464
    +
    2465 ! Optimization of the initial processor topology
    +
    2466 do i = 1, num_procs
    +
    2467
    +
    2468 if (mod(num_procs, i) == 0 &
    +
    2469 .and. &
    +
    2470 (m + 1)/i >= num_stcls_min*recon_order) then
    +
    2471
    +
    2472 do j = 1, num_procs/i
    2473
    -
    2474 do j = 1, num_procs/i
    -
    2475
    -
    2476 if (mod(num_procs/i, j) == 0 &
    -
    2477 .and. &
    -
    2478 (n + 1)/j >= num_stcls_min*recon_order) then
    -
    2479
    -
    2480 tmp_num_procs_x = i
    -
    2481 tmp_num_procs_y = j
    -
    2482 tmp_num_procs_z = num_procs/(i*j)
    -
    2483
    -
    2484 if (fct_min >= abs((m + 1)/tmp_num_procs_x &
    -
    2485 - (n + 1)/tmp_num_procs_y) &
    -
    2486 + abs((n + 1)/tmp_num_procs_y &
    -
    2487 - (p + 1)/tmp_num_procs_z) &
    -
    2488 .and. &
    -
    2489 (p + 1)/tmp_num_procs_z &
    -
    2490 >= &
    -
    2491 num_stcls_min*recon_order) &
    -
    2492 then
    -
    2493
    -
    2494 num_procs_x = i
    -
    2495 num_procs_y = j
    -
    2496 num_procs_z = num_procs/(i*j)
    -
    2497 fct_min = abs((m + 1)/tmp_num_procs_x &
    -
    2498 - (n + 1)/tmp_num_procs_y) &
    -
    2499 + abs((n + 1)/tmp_num_procs_y &
    -
    2500 - (p + 1)/tmp_num_procs_z)
    -
    2501 ierr = 0
    +
    2474 if (mod(num_procs/i, j) == 0 &
    +
    2475 .and. &
    +
    2476 (n + 1)/j >= num_stcls_min*recon_order) then
    +
    2477
    +
    2478 tmp_num_procs_x = i
    +
    2479 tmp_num_procs_y = j
    +
    2480 tmp_num_procs_z = num_procs/(i*j)
    +
    2481
    +
    2482 if (fct_min >= abs((m + 1)/tmp_num_procs_x &
    +
    2483 - (n + 1)/tmp_num_procs_y) &
    +
    2484 + abs((n + 1)/tmp_num_procs_y &
    +
    2485 - (p + 1)/tmp_num_procs_z) &
    +
    2486 .and. &
    +
    2487 (p + 1)/tmp_num_procs_z &
    +
    2488 >= &
    +
    2489 num_stcls_min*recon_order) &
    +
    2490 then
    +
    2491
    +
    2492 num_procs_x = i
    +
    2493 num_procs_y = j
    +
    2494 num_procs_z = num_procs/(i*j)
    +
    2495 fct_min = abs((m + 1)/tmp_num_procs_x &
    +
    2496 - (n + 1)/tmp_num_procs_y) &
    +
    2497 + abs((n + 1)/tmp_num_procs_y &
    +
    2498 - (p + 1)/tmp_num_procs_z)
    +
    2499 ierr = 0
    +
    2500
    +
    2501 end if
    2502
    -
    2503 end if
    +
    2503 end if
    2504
    -
    2505 end if
    +
    2505 end do
    2506
    -
    2507 end do
    +
    2507 end if
    2508
    -
    2509 end if
    +
    2509 end do
    2510
    -
    2511 end do
    -
    2512
    -
    2513 end if
    -
    2514 end if
    -
    2515
    -
    2516 ! Verifying that a valid decomposition of the computational
    -
    2517 ! domain has been established. If not, the simulation exits.
    -
    2518 if (proc_rank == 0 .and. ierr == -1) then
    -
    2519 call s_mpi_abort('Unsupported combination of values '// &
    -
    2520 'of num_procs, m, n, p and '// &
    -
    2521 'weno/muscl/igr_order. Exiting.')
    -
    2522 end if
    -
    2523
    -
    2524 ! Creating new communicator using the Cartesian topology
    -
    2525 call mpi_cart_create(mpi_comm_world, 3, (/num_procs_x, &
    -
    2526 num_procs_y, num_procs_z/), &
    -
    2527 (/.true., .true., .true./), &
    -
    2528 .false., mpi_comm_cart, ierr)
    -
    2529
    -
    2530 ! Finding the Cartesian coordinates of the local process
    -
    2531 call mpi_cart_coords(mpi_comm_cart, proc_rank, 3, &
    -
    2532 proc_coords, ierr)
    -
    2533 ! END: 3D Cartesian Processor Topology
    +
    2511 end if
    +
    2512 end if
    +
    2513
    +
    2514 ! Verifying that a valid decomposition of the computational
    +
    2515 ! domain has been established. If not, the simulation exits.
    +
    2516 if (proc_rank == 0 .and. ierr == -1) then
    +
    2517 call s_mpi_abort('Unsupported combination of values '// &
    +
    2518 'of num_procs, m, n, p and '// &
    +
    2519 'weno/muscl/igr_order. Exiting.')
    +
    2520 end if
    +
    2521
    +
    2522 ! Creating new communicator using the Cartesian topology
    +
    2523 call mpi_cart_create(mpi_comm_world, 3, (/num_procs_x, &
    +
    2524 num_procs_y, num_procs_z/), &
    +
    2525 (/.true., .true., .true./), &
    +
    2526 .false., mpi_comm_cart, ierr)
    +
    2527
    +
    2528 ! Finding the Cartesian coordinates of the local process
    +
    2529 call mpi_cart_coords(mpi_comm_cart, proc_rank, 3, &
    +
    2530 proc_coords, ierr)
    +
    2531 ! END: 3D Cartesian Processor Topology
    +
    2532
    +
    2533 ! Global Parameters for z-direction
    2534
    -
    2535 ! Global Parameters for z-direction
    -
    2536
    -
    2537 ! Number of remaining cells
    -
    2538 rem_cells = mod(p + 1, num_procs_z)
    -
    2539
    -
    2540 ! Optimal number of cells per processor
    -
    2541 p = (p + 1)/num_procs_z - 1
    -
    2542
    -
    2543 ! Distributing the remaining cells
    -
    2544 do i = 1, rem_cells
    -
    2545 if (proc_coords(3) == i - 1) then
    -
    2546 p = p + 1; exit
    -
    2547 end if
    -
    2548 end do
    -
    2549
    -
    2550 ! Boundary condition at the beginning
    -
    2551 if (proc_coords(3) > 0 .or. (bc_z%beg == bc_periodic .and. num_procs_z > 1)) then
    -
    2552 proc_coords(3) = proc_coords(3) - 1
    -
    2553 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
    -
    2554 bc_z%beg, ierr)
    -
    2555 proc_coords(3) = proc_coords(3) + 1
    -
    2556 end if
    -
    2557
    -
    2558 ! Boundary condition at the end
    -
    2559 if (proc_coords(3) < num_procs_z - 1 .or. (bc_z%end == bc_periodic .and. num_procs_z > 1)) then
    -
    2560 proc_coords(3) = proc_coords(3) + 1
    -
    2561 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
    -
    2562 bc_z%end, ierr)
    -
    2563 proc_coords(3) = proc_coords(3) - 1
    -
    2564 end if
    -
    2565
    -
    2566#ifdef MFC_POST_PROCESS
    -
    2567 ! Ghost zone at the beginning
    -
    2568 if (proc_coords(3) > 0 .and. format == 1) then
    -
    2569 offset_z%beg = 2
    -
    2570 else
    -
    2571 offset_z%beg = 0
    -
    2572 end if
    -
    2573
    -
    2574 ! Ghost zone at the end
    -
    2575 if (proc_coords(3) < num_procs_z - 1 .and. format == 1) then
    -
    2576 offset_z%end = 2
    -
    2577 else
    -
    2578 offset_z%end = 0
    -
    2579 end if
    -
    2580#endif
    -
    2581
    -
    2582 ! Beginning and end sub-domain boundary locations
    -
    2583 if (parallel_io) then
    -
    2584 if (proc_coords(3) < rem_cells) then
    -
    2585 start_idx(3) = (p + 1)*proc_coords(3)
    -
    2586 else
    -
    2587 start_idx(3) = (p + 1)*proc_coords(3) + rem_cells
    -
    2588 end if
    -
    2589 else
    -
    2590#ifdef MFC_PRE_PROCESS
    -
    2591 if (old_grid .neqv. .true.) then
    -
    2592 dz = (z_domain%end - z_domain%beg)/real(p_glb + 1, wp)
    -
    2593
    -
    2594 if (proc_coords(3) < rem_cells) then
    -
    2595 z_domain%beg = z_domain%beg + dz*real((p + 1)* &
    -
    2596 proc_coords(3))
    -
    2597 z_domain%end = z_domain%end - dz*real((p + 1)* &
    -
    2598 (num_procs_z - proc_coords(3) - 1) &
    -
    2599 - (num_procs_z - rem_cells))
    -
    2600 else
    -
    2601 z_domain%beg = z_domain%beg + dz*real((p + 1)* &
    -
    2602 proc_coords(3) + rem_cells)
    -
    2603 z_domain%end = z_domain%end - dz*real((p + 1)* &
    -
    2604 (num_procs_z - proc_coords(3) - 1))
    -
    2605 end if
    -
    2606 end if
    -
    2607#endif
    -
    2608 end if
    -
    2609
    -
    2610 ! 2D Cartesian Processor Topology
    -
    2611 else
    -
    2612
    -
    2613 ! Initial estimate of optimal processor topology
    -
    2614 num_procs_x = 1
    -
    2615 num_procs_y = num_procs
    -
    2616 ierr = -1
    -
    2617
    -
    2618 ! Benchmarking the quality of this initial guess
    -
    2619 tmp_num_procs_x = num_procs_x
    -
    2620 tmp_num_procs_y = num_procs_y
    -
    2621 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x &
    -
    2622 - (n + 1)/tmp_num_procs_y)
    -
    2623
    -
    2624 ! Optimization of the initial processor topology
    -
    2625 do i = 1, num_procs
    -
    2626
    -
    2627 if (mod(num_procs, i) == 0 &
    -
    2628 .and. &
    -
    2629 (m + 1)/i >= num_stcls_min*recon_order) then
    -
    2630
    -
    2631 tmp_num_procs_x = i
    -
    2632 tmp_num_procs_y = num_procs/i
    -
    2633
    -
    2634 if (fct_min >= abs((m + 1)/tmp_num_procs_x &
    -
    2635 - (n + 1)/tmp_num_procs_y) &
    -
    2636 .and. &
    -
    2637 (n + 1)/tmp_num_procs_y &
    -
    2638 >= &
    -
    2639 num_stcls_min*recon_order) then
    -
    2640
    -
    2641 num_procs_x = i
    -
    2642 num_procs_y = num_procs/i
    -
    2643 fct_min = abs((m + 1)/tmp_num_procs_x &
    -
    2644 - (n + 1)/tmp_num_procs_y)
    -
    2645 ierr = 0
    +
    2535 ! Number of remaining cells
    +
    2536 rem_cells = mod(p + 1, num_procs_z)
    +
    2537
    +
    2538 ! Optimal number of cells per processor
    +
    2539 p = (p + 1)/num_procs_z - 1
    +
    2540
    +
    2541 ! Distributing the remaining cells
    +
    2542 do i = 1, rem_cells
    +
    2543 if (proc_coords(3) == i - 1) then
    +
    2544 p = p + 1; exit
    +
    2545 end if
    +
    2546 end do
    +
    2547
    +
    2548 ! Boundary condition at the beginning
    +
    2549 if (proc_coords(3) > 0 .or. (bc_z%beg == bc_periodic .and. num_procs_z > 1)) then
    +
    2550 proc_coords(3) = proc_coords(3) - 1
    +
    2551 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
    +
    2552 bc_z%beg, ierr)
    +
    2553 proc_coords(3) = proc_coords(3) + 1
    +
    2554 end if
    +
    2555
    +
    2556 ! Boundary condition at the end
    +
    2557 if (proc_coords(3) < num_procs_z - 1 .or. (bc_z%end == bc_periodic .and. num_procs_z > 1)) then
    +
    2558 proc_coords(3) = proc_coords(3) + 1
    +
    2559 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
    +
    2560 bc_z%end, ierr)
    +
    2561 proc_coords(3) = proc_coords(3) - 1
    +
    2562 end if
    +
    2563
    +
    2564#ifdef MFC_POST_PROCESS
    +
    2565 ! Ghost zone at the beginning
    +
    2566 if (proc_coords(3) > 0 .and. format == 1) then
    +
    2567 offset_z%beg = 2
    +
    2568 else
    +
    2569 offset_z%beg = 0
    +
    2570 end if
    +
    2571
    +
    2572 ! Ghost zone at the end
    +
    2573 if (proc_coords(3) < num_procs_z - 1 .and. format == 1) then
    +
    2574 offset_z%end = 2
    +
    2575 else
    +
    2576 offset_z%end = 0
    +
    2577 end if
    +
    2578#endif
    +
    2579
    +
    2580 ! Beginning and end sub-domain boundary locations
    +
    2581 if (parallel_io) then
    +
    2582 if (proc_coords(3) < rem_cells) then
    +
    2583 start_idx(3) = (p + 1)*proc_coords(3)
    +
    2584 else
    +
    2585 start_idx(3) = (p + 1)*proc_coords(3) + rem_cells
    +
    2586 end if
    +
    2587 else
    +
    2588#ifdef MFC_PRE_PROCESS
    +
    2589 if (old_grid .neqv. .true.) then
    +
    2590 dz = (z_domain%end - z_domain%beg)/real(p_glb + 1, wp)
    +
    2591
    +
    2592 if (proc_coords(3) < rem_cells) then
    +
    2593 z_domain%beg = z_domain%beg + dz*real((p + 1)* &
    +
    2594 proc_coords(3))
    +
    2595 z_domain%end = z_domain%end - dz*real((p + 1)* &
    +
    2596 (num_procs_z - proc_coords(3) - 1) &
    +
    2597 - (num_procs_z - rem_cells))
    +
    2598 else
    +
    2599 z_domain%beg = z_domain%beg + dz*real((p + 1)* &
    +
    2600 proc_coords(3) + rem_cells)
    +
    2601 z_domain%end = z_domain%end - dz*real((p + 1)* &
    +
    2602 (num_procs_z - proc_coords(3) - 1))
    +
    2603 end if
    +
    2604 end if
    +
    2605#endif
    +
    2606 end if
    +
    2607
    +
    2608 ! 2D Cartesian Processor Topology
    +
    2609 else
    +
    2610
    +
    2611 ! Initial estimate of optimal processor topology
    +
    2612 num_procs_x = 1
    +
    2613 num_procs_y = num_procs
    +
    2614 ierr = -1
    +
    2615
    +
    2616 ! Benchmarking the quality of this initial guess
    +
    2617 tmp_num_procs_x = num_procs_x
    +
    2618 tmp_num_procs_y = num_procs_y
    +
    2619 fct_min = 10._wp*abs((m + 1)/tmp_num_procs_x &
    +
    2620 - (n + 1)/tmp_num_procs_y)
    +
    2621
    +
    2622 ! Optimization of the initial processor topology
    +
    2623 do i = 1, num_procs
    +
    2624
    +
    2625 if (mod(num_procs, i) == 0 &
    +
    2626 .and. &
    +
    2627 (m + 1)/i >= num_stcls_min*recon_order) then
    +
    2628
    +
    2629 tmp_num_procs_x = i
    +
    2630 tmp_num_procs_y = num_procs/i
    +
    2631
    +
    2632 if (fct_min >= abs((m + 1)/tmp_num_procs_x &
    +
    2633 - (n + 1)/tmp_num_procs_y) &
    +
    2634 .and. &
    +
    2635 (n + 1)/tmp_num_procs_y &
    +
    2636 >= &
    +
    2637 num_stcls_min*recon_order) then
    +
    2638
    +
    2639 num_procs_x = i
    +
    2640 num_procs_y = num_procs/i
    +
    2641 fct_min = abs((m + 1)/tmp_num_procs_x &
    +
    2642 - (n + 1)/tmp_num_procs_y)
    +
    2643 ierr = 0
    +
    2644
    +
    2645 end if
    2646
    -
    2647 end if
    +
    2647 end if
    2648
    -
    2649 end if
    +
    2649 end do
    2650
    -
    2651 end do
    -
    2652
    -
    2653 ! Verifying that a valid decomposition of the computational
    -
    2654 ! domain has been established. If not, the simulation exits.
    -
    2655 if (proc_rank == 0 .and. ierr == -1) then
    -
    2656 call s_mpi_abort('Unsupported combination of values '// &
    -
    2657 'of num_procs, m, n and '// &
    -
    2658 'weno/muscl/igr_order. Exiting.')
    -
    2659 end if
    -
    2660
    -
    2661 ! Creating new communicator using the Cartesian topology
    -
    2662 call mpi_cart_create(mpi_comm_world, 2, (/num_procs_x, &
    -
    2663 num_procs_y/), (/.true., &
    -
    2664 .true./), .false., mpi_comm_cart, &
    -
    2665 ierr)
    -
    2666
    -
    2667 ! Finding the Cartesian coordinates of the local process
    -
    2668 call mpi_cart_coords(mpi_comm_cart, proc_rank, 2, &
    -
    2669 proc_coords, ierr)
    -
    2670
    -
    2671 end if
    -
    2672 ! END: 2D Cartesian Processor Topology
    +
    2651 ! Verifying that a valid decomposition of the computational
    +
    2652 ! domain has been established. If not, the simulation exits.
    +
    2653 if (proc_rank == 0 .and. ierr == -1) then
    +
    2654 call s_mpi_abort('Unsupported combination of values '// &
    +
    2655 'of num_procs, m, n and '// &
    +
    2656 'weno/muscl/igr_order. Exiting.')
    +
    2657 end if
    +
    2658
    +
    2659 ! Creating new communicator using the Cartesian topology
    +
    2660 call mpi_cart_create(mpi_comm_world, 2, (/num_procs_x, &
    +
    2661 num_procs_y/), (/.true., &
    +
    2662 .true./), .false., mpi_comm_cart, &
    +
    2663 ierr)
    +
    2664
    +
    2665 ! Finding the Cartesian coordinates of the local process
    +
    2666 call mpi_cart_coords(mpi_comm_cart, proc_rank, 2, &
    +
    2667 proc_coords, ierr)
    +
    2668
    +
    2669 end if
    +
    2670 ! END: 2D Cartesian Processor Topology
    +
    2671
    +
    2672 ! Global Parameters for y-direction
    2673
    -
    2674 ! Global Parameters for y-direction
    -
    2675
    -
    2676 ! Number of remaining cells
    -
    2677 rem_cells = mod(n + 1, num_procs_y)
    -
    2678
    -
    2679 ! Optimal number of cells per processor
    -
    2680 n = (n + 1)/num_procs_y - 1
    -
    2681
    -
    2682 ! Distributing the remaining cells
    -
    2683 do i = 1, rem_cells
    -
    2684 if (proc_coords(2) == i - 1) then
    -
    2685 n = n + 1; exit
    -
    2686 end if
    -
    2687 end do
    -
    2688
    -
    2689 ! Boundary condition at the beginning
    -
    2690 if (proc_coords(2) > 0 .or. (bc_y%beg == bc_periodic .and. num_procs_y > 1)) then
    -
    2691 proc_coords(2) = proc_coords(2) - 1
    -
    2692 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
    -
    2693 bc_y%beg, ierr)
    -
    2694 proc_coords(2) = proc_coords(2) + 1
    -
    2695 end if
    -
    2696
    -
    2697 ! Boundary condition at the end
    -
    2698 if (proc_coords(2) < num_procs_y - 1 .or. (bc_y%end == bc_periodic .and. num_procs_y > 1)) then
    -
    2699 proc_coords(2) = proc_coords(2) + 1
    -
    2700 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
    -
    2701 bc_y%end, ierr)
    -
    2702 proc_coords(2) = proc_coords(2) - 1
    -
    2703 end if
    -
    2704
    -
    2705#ifdef MFC_POST_PROCESS
    -
    2706 ! Ghost zone at the beginning
    -
    2707 if (proc_coords(2) > 0 .and. format == 1) then
    -
    2708 offset_y%beg = 2
    -
    2709 else
    -
    2710 offset_y%beg = 0
    -
    2711 end if
    -
    2712
    -
    2713 ! Ghost zone at the end
    -
    2714 if (proc_coords(2) < num_procs_y - 1 .and. format == 1) then
    -
    2715 offset_y%end = 2
    -
    2716 else
    -
    2717 offset_y%end = 0
    -
    2718 end if
    -
    2719#endif
    -
    2720
    -
    2721 ! Beginning and end sub-domain boundary locations
    -
    2722 if (parallel_io) then
    -
    2723 if (proc_coords(2) < rem_cells) then
    -
    2724 start_idx(2) = (n + 1)*proc_coords(2)
    -
    2725 else
    -
    2726 start_idx(2) = (n + 1)*proc_coords(2) + rem_cells
    -
    2727 end if
    -
    2728 else
    -
    2729#ifdef MFC_PRE_PROCESS
    -
    2730 if (old_grid .neqv. .true.) then
    -
    2731 dy = (y_domain%end - y_domain%beg)/real(n_glb + 1, wp)
    -
    2732
    -
    2733 if (proc_coords(2) < rem_cells) then
    -
    2734 y_domain%beg = y_domain%beg + dy*real((n + 1)* &
    -
    2735 proc_coords(2))
    -
    2736 y_domain%end = y_domain%end - dy*real((n + 1)* &
    -
    2737 (num_procs_y - proc_coords(2) - 1) &
    -
    2738 - (num_procs_y - rem_cells))
    -
    2739 else
    -
    2740 y_domain%beg = y_domain%beg + dy*real((n + 1)* &
    -
    2741 proc_coords(2) + rem_cells)
    -
    2742 y_domain%end = y_domain%end - dy*real((n + 1)* &
    -
    2743 (num_procs_y - proc_coords(2) - 1))
    -
    2744 end if
    -
    2745 end if
    -
    2746#endif
    -
    2747 end if
    -
    2748
    -
    2749 ! 1D Cartesian Processor Topology
    -
    2750 else
    -
    2751
    -
    2752 ! Optimal processor topology
    -
    2753 num_procs_x = num_procs
    -
    2754
    -
    2755 ! Creating new communicator using the Cartesian topology
    -
    2756 call mpi_cart_create(mpi_comm_world, 1, (/num_procs_x/), &
    -
    2757 (/.true./), .false., mpi_comm_cart, &
    -
    2758 ierr)
    -
    2759
    -
    2760 ! Finding the Cartesian coordinates of the local process
    -
    2761 call mpi_cart_coords(mpi_comm_cart, proc_rank, 1, &
    -
    2762 proc_coords, ierr)
    +
    2674 ! Number of remaining cells
    +
    2675 rem_cells = mod(n + 1, num_procs_y)
    +
    2676
    +
    2677 ! Optimal number of cells per processor
    +
    2678 n = (n + 1)/num_procs_y - 1
    +
    2679
    +
    2680 ! Distributing the remaining cells
    +
    2681 do i = 1, rem_cells
    +
    2682 if (proc_coords(2) == i - 1) then
    +
    2683 n = n + 1; exit
    +
    2684 end if
    +
    2685 end do
    +
    2686
    +
    2687 ! Boundary condition at the beginning
    +
    2688 if (proc_coords(2) > 0 .or. (bc_y%beg == bc_periodic .and. num_procs_y > 1)) then
    +
    2689 proc_coords(2) = proc_coords(2) - 1
    +
    2690 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
    +
    2691 bc_y%beg, ierr)
    +
    2692 proc_coords(2) = proc_coords(2) + 1
    +
    2693 end if
    +
    2694
    +
    2695 ! Boundary condition at the end
    +
    2696 if (proc_coords(2) < num_procs_y - 1 .or. (bc_y%end == bc_periodic .and. num_procs_y > 1)) then
    +
    2697 proc_coords(2) = proc_coords(2) + 1
    +
    2698 call mpi_cart_rank(mpi_comm_cart, proc_coords, &
    +
    2699 bc_y%end, ierr)
    +
    2700 proc_coords(2) = proc_coords(2) - 1
    +
    2701 end if
    +
    2702
    +
    2703#ifdef MFC_POST_PROCESS
    +
    2704 ! Ghost zone at the beginning
    +
    2705 if (proc_coords(2) > 0 .and. format == 1) then
    +
    2706 offset_y%beg = 2
    +
    2707 else
    +
    2708 offset_y%beg = 0
    +
    2709 end if
    +
    2710
    +
    2711 ! Ghost zone at the end
    +
    2712 if (proc_coords(2) < num_procs_y - 1 .and. format == 1) then
    +
    2713 offset_y%end = 2
    +
    2714 else
    +
    2715 offset_y%end = 0
    +
    2716 end if
    +
    2717#endif
    +
    2718
    +
    2719 ! Beginning and end sub-domain boundary locations
    +
    2720 if (parallel_io) then
    +
    2721 if (proc_coords(2) < rem_cells) then
    +
    2722 start_idx(2) = (n + 1)*proc_coords(2)
    +
    2723 else
    +
    2724 start_idx(2) = (n + 1)*proc_coords(2) + rem_cells
    +
    2725 end if
    +
    2726 else
    +
    2727#ifdef MFC_PRE_PROCESS
    +
    2728 if (old_grid .neqv. .true.) then
    +
    2729 dy = (y_domain%end - y_domain%beg)/real(n_glb + 1, wp)
    +
    2730
    +
    2731 if (proc_coords(2) < rem_cells) then
    +
    2732 y_domain%beg = y_domain%beg + dy*real((n + 1)* &
    +
    2733 proc_coords(2))
    +
    2734 y_domain%end = y_domain%end - dy*real((n + 1)* &
    +
    2735 (num_procs_y - proc_coords(2) - 1) &
    +
    2736 - (num_procs_y - rem_cells))
    +
    2737 else
    +
    2738 y_domain%beg = y_domain%beg + dy*real((n + 1)* &
    +
    2739 proc_coords(2) + rem_cells)
    +
    2740 y_domain%end = y_domain%end - dy*real((n + 1)* &
    +
    2741 (num_procs_y - proc_coords(2) - 1))
    +
    2742 end if
    +
    2743 end if
    +
    2744#endif
    +
    2745 end if
    +
    2746
    +
    2747 ! 1D Cartesian Processor Topology
    +
    2748 else
    +
    2749
    +
    2750 ! Optimal processor topology
    +
    2751 num_procs_x = num_procs
    +
    2752
    +
    2753 ! Creating new communicator using the Cartesian topology
    +
    2754 call mpi_cart_create(mpi_comm_world, 1, (/num_procs_x/), &
    +
    2755 (/.true./), .false., mpi_comm_cart, &
    +
    2756 ierr)
    +
    2757
    +
    2758 ! Finding the Cartesian coordinates of the local process
    +
    2759 call mpi_cart_coords(mpi_comm_cart, proc_rank, 1, &
    +
    2760 proc_coords, ierr)
    +
    2761
    +
    2762 end if
    2763
    -
    2764 end if
    +
    2764 ! Global Parameters for x-direction
    2765
    -
    2766 ! Global Parameters for x-direction
    -
    2767
    -
    2768 ! Number of remaining cells
    -
    2769 rem_cells = mod(m + 1, num_procs_x)
    -
    2770
    -
    2771 ! Optimal number of cells per processor
    -
    2772 m = (m + 1)/num_procs_x - 1
    -
    2773
    -
    2774 ! Distributing the remaining cells
    -
    2775 do i = 1, rem_cells
    -
    2776 if (proc_coords(1) == i - 1) then
    -
    2777 m = m + 1; exit
    -
    2778 end if
    -
    2779 end do
    +
    2766 ! Number of remaining cells
    +
    2767 rem_cells = mod(m + 1, num_procs_x)
    +
    2768
    +
    2769 ! Optimal number of cells per processor
    +
    2770 m = (m + 1)/num_procs_x - 1
    +
    2771
    +
    2772 ! Distributing the remaining cells
    +
    2773 do i = 1, rem_cells
    +
    2774 if (proc_coords(1) == i - 1) then
    +
    2775 m = m + 1; exit
    +
    2776 end if
    +
    2777 end do
    +
    2778
    +
    2779 call s_update_cell_bounds(cells_bounds, m, n, p)
    2780
    -
    2781 call s_update_cell_bounds(cells_bounds, m, n, p)
    -
    2782
    -
    2783 ! Boundary condition at the beginning
    -
    2784 if (proc_coords(1) > 0 .or. (bc_x%beg == bc_periodic .and. num_procs_x > 1)) then
    -
    2785 proc_coords(1) = proc_coords(1) - 1
    -
    2786 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%beg, ierr)
    -
    2787 proc_coords(1) = proc_coords(1) + 1
    -
    2788 end if
    -
    2789
    -
    2790 ! Boundary condition at the end
    -
    2791 if (proc_coords(1) < num_procs_x - 1 .or. (bc_x%end == bc_periodic .and. num_procs_x > 1)) then
    -
    2792 proc_coords(1) = proc_coords(1) + 1
    -
    2793 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%end, ierr)
    -
    2794 proc_coords(1) = proc_coords(1) - 1
    -
    2795 end if
    -
    2796
    -
    2797#ifdef MFC_POST_PROCESS
    -
    2798 ! Ghost zone at the beginning
    -
    2799 if (proc_coords(1) > 0 .and. format == 1) then
    -
    2800 offset_x%beg = 2
    -
    2801 else
    -
    2802 offset_x%beg = 0
    -
    2803 end if
    -
    2804
    -
    2805 ! Ghost zone at the end
    -
    2806 if (proc_coords(1) < num_procs_x - 1 .and. format == 1) then
    -
    2807 offset_x%end = 2
    -
    2808 else
    -
    2809 offset_x%end = 0
    -
    2810 end if
    -
    2811#endif
    -
    2812
    -
    2813 ! Beginning and end sub-domain boundary locations
    -
    2814 if (parallel_io) then
    -
    2815 if (proc_coords(1) < rem_cells) then
    -
    2816 start_idx(1) = (m + 1)*proc_coords(1)
    -
    2817 else
    -
    2818 start_idx(1) = (m + 1)*proc_coords(1) + rem_cells
    -
    2819 end if
    -
    2820 else
    -
    2821#ifdef MFC_PRE_PROCESS
    -
    2822 if (old_grid .neqv. .true.) then
    -
    2823 dx = (x_domain%end - x_domain%beg)/real(m_glb + 1, wp)
    -
    2824
    -
    2825 if (proc_coords(1) < rem_cells) then
    -
    2826 x_domain%beg = x_domain%beg + dx*real((m + 1)* &
    -
    2827 proc_coords(1))
    -
    2828 x_domain%end = x_domain%end - dx*real((m + 1)* &
    -
    2829 (num_procs_x - proc_coords(1) - 1) &
    -
    2830 - (num_procs_x - rem_cells))
    -
    2831 else
    -
    2832 x_domain%beg = x_domain%beg + dx*real((m + 1)* &
    -
    2833 proc_coords(1) + rem_cells)
    -
    2834 x_domain%end = x_domain%end - dx*real((m + 1)* &
    -
    2835 (num_procs_x - proc_coords(1) - 1))
    -
    2836 end if
    -
    2837 end if
    +
    2781 ! Boundary condition at the beginning
    +
    2782 if (proc_coords(1) > 0 .or. (bc_x%beg == bc_periodic .and. num_procs_x > 1)) then
    +
    2783 proc_coords(1) = proc_coords(1) - 1
    +
    2784 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%beg, ierr)
    +
    2785 proc_coords(1) = proc_coords(1) + 1
    +
    2786 end if
    +
    2787
    +
    2788 ! Boundary condition at the end
    +
    2789 if (proc_coords(1) < num_procs_x - 1 .or. (bc_x%end == bc_periodic .and. num_procs_x > 1)) then
    +
    2790 proc_coords(1) = proc_coords(1) + 1
    +
    2791 call mpi_cart_rank(mpi_comm_cart, proc_coords, bc_x%end, ierr)
    +
    2792 proc_coords(1) = proc_coords(1) - 1
    +
    2793 end if
    +
    2794
    +
    2795#ifdef MFC_POST_PROCESS
    +
    2796 ! Ghost zone at the beginning
    +
    2797 if (proc_coords(1) > 0 .and. format == 1) then
    +
    2798 offset_x%beg = 2
    +
    2799 else
    +
    2800 offset_x%beg = 0
    +
    2801 end if
    +
    2802
    +
    2803 ! Ghost zone at the end
    +
    2804 if (proc_coords(1) < num_procs_x - 1 .and. format == 1) then
    +
    2805 offset_x%end = 2
    +
    2806 else
    +
    2807 offset_x%end = 0
    +
    2808 end if
    +
    2809#endif
    +
    2810
    +
    2811 ! Beginning and end sub-domain boundary locations
    +
    2812 if (parallel_io) then
    +
    2813 if (proc_coords(1) < rem_cells) then
    +
    2814 start_idx(1) = (m + 1)*proc_coords(1)
    +
    2815 else
    +
    2816 start_idx(1) = (m + 1)*proc_coords(1) + rem_cells
    +
    2817 end if
    +
    2818 else
    +
    2819#ifdef MFC_PRE_PROCESS
    +
    2820 if (old_grid .neqv. .true.) then
    +
    2821 dx = (x_domain%end - x_domain%beg)/real(m_glb + 1, wp)
    +
    2822
    +
    2823 if (proc_coords(1) < rem_cells) then
    +
    2824 x_domain%beg = x_domain%beg + dx*real((m + 1)* &
    +
    2825 proc_coords(1))
    +
    2826 x_domain%end = x_domain%end - dx*real((m + 1)* &
    +
    2827 (num_procs_x - proc_coords(1) - 1) &
    +
    2828 - (num_procs_x - rem_cells))
    +
    2829 else
    +
    2830 x_domain%beg = x_domain%beg + dx*real((m + 1)* &
    +
    2831 proc_coords(1) + rem_cells)
    +
    2832 x_domain%end = x_domain%end - dx*real((m + 1)* &
    +
    2833 (num_procs_x - proc_coords(1) - 1))
    +
    2834 end if
    +
    2835 end if
    +
    2836#endif
    +
    2837 end if
    2838#endif
    -
    2839 end if
    -
    2840#endif
    -
    2841
    +
    2839
    - -
    2843
    -
    2844 !> The goal of this procedure is to populate the buffers of
    -
    2845 !! the grid variables by communicating with the neighboring
    -
    2846 !! processors. Note that only the buffers of the cell-width
    -
    2847 !! distributions are handled in such a way. This is because
    -
    2848 !! the buffers of cell-boundary locations may be calculated
    -
    2849 !! directly from those of the cell-width distributions.
    -
    2850 !! @param mpi_dir MPI communication coordinate direction
    -
    2851 !! @param pbc_loc Processor boundary condition (PBC) location
    -
    2852#ifndef MFC_PRE_PROCESS
    -
    -
    2853 subroutine s_mpi_sendrecv_grid_variables_buffers(mpi_dir, pbc_loc)
    -
    2854
    -
    2855 integer, intent(in) :: mpi_dir
    -
    2856 integer, intent(in) :: pbc_loc
    -
    2857
    -
    2858#ifdef MFC_MPI
    -
    2859 integer :: ierr !< Generic flag used to identify and report MPI errors
    -
    2860
    -
    2861 ! MPI Communication in x-direction
    -
    2862 if (mpi_dir == 1) then
    + +
    2841
    +
    2842 !> The goal of this procedure is to populate the buffers of
    +
    2843 !! the grid variables by communicating with the neighboring
    +
    2844 !! processors. Note that only the buffers of the cell-width
    +
    2845 !! distributions are handled in such a way. This is because
    +
    2846 !! the buffers of cell-boundary locations may be calculated
    +
    2847 !! directly from those of the cell-width distributions.
    +
    2848 !! @param mpi_dir MPI communication coordinate direction
    +
    2849 !! @param pbc_loc Processor boundary condition (PBC) location
    +
    2850#ifndef MFC_PRE_PROCESS
    +
    +
    2851 subroutine s_mpi_sendrecv_grid_variables_buffers(mpi_dir, pbc_loc)
    +
    2852
    +
    2853 integer, intent(in) :: mpi_dir
    +
    2854 integer, intent(in) :: pbc_loc
    +
    2855
    +
    2856#ifdef MFC_MPI
    +
    2857 integer :: ierr !< Generic flag used to identify and report MPI errors
    +
    2858
    +
    2859 ! MPI Communication in x-direction
    +
    2860 if (mpi_dir == 1) then
    +
    2861
    +
    2862 if (pbc_loc == -1) then ! PBC at the beginning
    2863
    -
    2864 if (pbc_loc == -1) then ! PBC at the beginning
    +
    2864 if (bc_x%end >= 0) then ! PBC at the beginning and end
    2865
    -
    2866 if (bc_x%end >= 0) then ! PBC at the beginning and end
    -
    2867
    -
    2868 ! Send/receive buffer to/from bc_x%end/bc_x%beg
    -
    2869 call mpi_sendrecv( &
    -
    2870 dx(m - buff_size + 1), buff_size, &
    -
    2871 mpi_p, bc_x%end, 0, &
    -
    2872 dx(-buff_size), buff_size, &
    -
    2873 mpi_p, bc_x%beg, 0, &
    -
    2874 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2866 ! Send/receive buffer to/from bc_x%end/bc_x%beg
    +
    2867 call mpi_sendrecv( &
    +
    2868 dx(m - buff_size + 1), buff_size, &
    +
    2869 mpi_p, bc_x%end, 0, &
    +
    2870 dx(-buff_size), buff_size, &
    +
    2871 mpi_p, bc_x%beg, 0, &
    +
    2872 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2873
    +
    2874 else ! PBC at the beginning only
    2875
    -
    2876 else ! PBC at the beginning only
    -
    2877
    -
    2878 ! Send/receive buffer to/from bc_x%beg/bc_x%beg
    -
    2879 call mpi_sendrecv( &
    -
    2880 dx(0), buff_size, &
    -
    2881 mpi_p, bc_x%beg, 1, &
    -
    2882 dx(-buff_size), buff_size, &
    -
    2883 mpi_p, bc_x%beg, 0, &
    -
    2884 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2876 ! Send/receive buffer to/from bc_x%beg/bc_x%beg
    +
    2877 call mpi_sendrecv( &
    +
    2878 dx(0), buff_size, &
    +
    2879 mpi_p, bc_x%beg, 1, &
    +
    2880 dx(-buff_size), buff_size, &
    +
    2881 mpi_p, bc_x%beg, 0, &
    +
    2882 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2883
    +
    2884 end if
    2885
    -
    2886 end if
    +
    2886 else ! PBC at the end
    2887
    -
    2888 else ! PBC at the end
    +
    2888 if (bc_x%beg >= 0) then ! PBC at the end and beginning
    2889
    -
    2890 if (bc_x%beg >= 0) then ! PBC at the end and beginning
    -
    2891
    -
    2892 ! Send/receive buffer to/from bc_x%beg/bc_x%end
    -
    2893 call mpi_sendrecv( &
    -
    2894 dx(0), buff_size, &
    -
    2895 mpi_p, bc_x%beg, 1, &
    -
    2896 dx(m + 1), buff_size, &
    -
    2897 mpi_p, bc_x%end, 1, &
    -
    2898 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2890 ! Send/receive buffer to/from bc_x%beg/bc_x%end
    +
    2891 call mpi_sendrecv( &
    +
    2892 dx(0), buff_size, &
    +
    2893 mpi_p, bc_x%beg, 1, &
    +
    2894 dx(m + 1), buff_size, &
    +
    2895 mpi_p, bc_x%end, 1, &
    +
    2896 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2897
    +
    2898 else ! PBC at the end only
    2899
    -
    2900 else ! PBC at the end only
    -
    2901
    -
    2902 ! Send/receive buffer to/from bc_x%end/bc_x%end
    -
    2903 call mpi_sendrecv( &
    -
    2904 dx(m - buff_size + 1), buff_size, &
    -
    2905 mpi_p, bc_x%end, 0, &
    -
    2906 dx(m + 1), buff_size, &
    -
    2907 mpi_p, bc_x%end, 1, &
    -
    2908 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2900 ! Send/receive buffer to/from bc_x%end/bc_x%end
    +
    2901 call mpi_sendrecv( &
    +
    2902 dx(m - buff_size + 1), buff_size, &
    +
    2903 mpi_p, bc_x%end, 0, &
    +
    2904 dx(m + 1), buff_size, &
    +
    2905 mpi_p, bc_x%end, 1, &
    +
    2906 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2907
    +
    2908 end if
    2909
    -
    2910 end if
    -
    2911
    -
    2912 end if
    -
    2913 ! END: MPI Communication in x-direction
    -
    2914
    -
    2915 ! MPI Communication in y-direction
    -
    2916 elseif (mpi_dir == 2) then
    +
    2910 end if
    +
    2911 ! END: MPI Communication in x-direction
    +
    2912
    +
    2913 ! MPI Communication in y-direction
    +
    2914 elseif (mpi_dir == 2) then
    +
    2915
    +
    2916 if (pbc_loc == -1) then ! PBC at the beginning
    2917
    -
    2918 if (pbc_loc == -1) then ! PBC at the beginning
    +
    2918 if (bc_y%end >= 0) then ! PBC at the beginning and end
    2919
    -
    2920 if (bc_y%end >= 0) then ! PBC at the beginning and end
    -
    2921
    -
    2922 ! Send/receive buffer to/from bc_y%end/bc_y%beg
    -
    2923 call mpi_sendrecv( &
    -
    2924 dy(n - buff_size + 1), buff_size, &
    -
    2925 mpi_p, bc_y%end, 0, &
    -
    2926 dy(-buff_size), buff_size, &
    -
    2927 mpi_p, bc_y%beg, 0, &
    -
    2928 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2920 ! Send/receive buffer to/from bc_y%end/bc_y%beg
    +
    2921 call mpi_sendrecv( &
    +
    2922 dy(n - buff_size + 1), buff_size, &
    +
    2923 mpi_p, bc_y%end, 0, &
    +
    2924 dy(-buff_size), buff_size, &
    +
    2925 mpi_p, bc_y%beg, 0, &
    +
    2926 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2927
    +
    2928 else ! PBC at the beginning only
    2929
    -
    2930 else ! PBC at the beginning only
    -
    2931
    -
    2932 ! Send/receive buffer to/from bc_y%beg/bc_y%beg
    -
    2933 call mpi_sendrecv( &
    -
    2934 dy(0), buff_size, &
    -
    2935 mpi_p, bc_y%beg, 1, &
    -
    2936 dy(-buff_size), buff_size, &
    -
    2937 mpi_p, bc_y%beg, 0, &
    -
    2938 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2930 ! Send/receive buffer to/from bc_y%beg/bc_y%beg
    +
    2931 call mpi_sendrecv( &
    +
    2932 dy(0), buff_size, &
    +
    2933 mpi_p, bc_y%beg, 1, &
    +
    2934 dy(-buff_size), buff_size, &
    +
    2935 mpi_p, bc_y%beg, 0, &
    +
    2936 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2937
    +
    2938 end if
    2939
    -
    2940 end if
    +
    2940 else ! PBC at the end
    2941
    -
    2942 else ! PBC at the end
    +
    2942 if (bc_y%beg >= 0) then ! PBC at the end and beginning
    2943
    -
    2944 if (bc_y%beg >= 0) then ! PBC at the end and beginning
    -
    2945
    -
    2946 ! Send/receive buffer to/from bc_y%beg/bc_y%end
    -
    2947 call mpi_sendrecv( &
    -
    2948 dy(0), buff_size, &
    -
    2949 mpi_p, bc_y%beg, 1, &
    -
    2950 dy(n + 1), buff_size, &
    -
    2951 mpi_p, bc_y%end, 1, &
    -
    2952 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2944 ! Send/receive buffer to/from bc_y%beg/bc_y%end
    +
    2945 call mpi_sendrecv( &
    +
    2946 dy(0), buff_size, &
    +
    2947 mpi_p, bc_y%beg, 1, &
    +
    2948 dy(n + 1), buff_size, &
    +
    2949 mpi_p, bc_y%end, 1, &
    +
    2950 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2951
    +
    2952 else ! PBC at the end only
    2953
    -
    2954 else ! PBC at the end only
    -
    2955
    -
    2956 ! Send/receive buffer to/from bc_y%end/bc_y%end
    -
    2957 call mpi_sendrecv( &
    -
    2958 dy(n - buff_size + 1), buff_size, &
    -
    2959 mpi_p, bc_y%end, 0, &
    -
    2960 dy(n + 1), buff_size, &
    -
    2961 mpi_p, bc_y%end, 1, &
    -
    2962 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2954 ! Send/receive buffer to/from bc_y%end/bc_y%end
    +
    2955 call mpi_sendrecv( &
    +
    2956 dy(n - buff_size + 1), buff_size, &
    +
    2957 mpi_p, bc_y%end, 0, &
    +
    2958 dy(n + 1), buff_size, &
    +
    2959 mpi_p, bc_y%end, 1, &
    +
    2960 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2961
    +
    2962 end if
    2963
    -
    2964 end if
    -
    2965
    -
    2966 end if
    -
    2967 ! END: MPI Communication in y-direction
    -
    2968
    -
    2969 ! MPI Communication in z-direction
    -
    2970 else
    +
    2964 end if
    +
    2965 ! END: MPI Communication in y-direction
    +
    2966
    +
    2967 ! MPI Communication in z-direction
    +
    2968 else
    +
    2969
    +
    2970 if (pbc_loc == -1) then ! PBC at the beginning
    2971
    -
    2972 if (pbc_loc == -1) then ! PBC at the beginning
    +
    2972 if (bc_z%end >= 0) then ! PBC at the beginning and end
    2973
    -
    2974 if (bc_z%end >= 0) then ! PBC at the beginning and end
    -
    2975
    -
    2976 ! Send/receive buffer to/from bc_z%end/bc_z%beg
    -
    2977 call mpi_sendrecv( &
    -
    2978 dz(p - buff_size + 1), buff_size, &
    -
    2979 mpi_p, bc_z%end, 0, &
    -
    2980 dz(-buff_size), buff_size, &
    -
    2981 mpi_p, bc_z%beg, 0, &
    -
    2982 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2974 ! Send/receive buffer to/from bc_z%end/bc_z%beg
    +
    2975 call mpi_sendrecv( &
    +
    2976 dz(p - buff_size + 1), buff_size, &
    +
    2977 mpi_p, bc_z%end, 0, &
    +
    2978 dz(-buff_size), buff_size, &
    +
    2979 mpi_p, bc_z%beg, 0, &
    +
    2980 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2981
    +
    2982 else ! PBC at the beginning only
    2983
    -
    2984 else ! PBC at the beginning only
    -
    2985
    -
    2986 ! Send/receive buffer to/from bc_z%beg/bc_z%beg
    -
    2987 call mpi_sendrecv( &
    -
    2988 dz(0), buff_size, &
    -
    2989 mpi_p, bc_z%beg, 1, &
    -
    2990 dz(-buff_size), buff_size, &
    -
    2991 mpi_p, bc_z%beg, 0, &
    -
    2992 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2984 ! Send/receive buffer to/from bc_z%beg/bc_z%beg
    +
    2985 call mpi_sendrecv( &
    +
    2986 dz(0), buff_size, &
    +
    2987 mpi_p, bc_z%beg, 1, &
    +
    2988 dz(-buff_size), buff_size, &
    +
    2989 mpi_p, bc_z%beg, 0, &
    +
    2990 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2991
    +
    2992 end if
    2993
    -
    2994 end if
    +
    2994 else ! PBC at the end
    2995
    -
    2996 else ! PBC at the end
    +
    2996 if (bc_z%beg >= 0) then ! PBC at the end and beginning
    2997
    -
    2998 if (bc_z%beg >= 0) then ! PBC at the end and beginning
    -
    2999
    -
    3000 ! Send/receive buffer to/from bc_z%beg/bc_z%end
    -
    3001 call mpi_sendrecv( &
    -
    3002 dz(0), buff_size, &
    -
    3003 mpi_p, bc_z%beg, 1, &
    -
    3004 dz(p + 1), buff_size, &
    -
    3005 mpi_p, bc_z%end, 1, &
    -
    3006 mpi_comm_world, mpi_status_ignore, ierr)
    +
    2998 ! Send/receive buffer to/from bc_z%beg/bc_z%end
    +
    2999 call mpi_sendrecv( &
    +
    3000 dz(0), buff_size, &
    +
    3001 mpi_p, bc_z%beg, 1, &
    +
    3002 dz(p + 1), buff_size, &
    +
    3003 mpi_p, bc_z%end, 1, &
    +
    3004 mpi_comm_world, mpi_status_ignore, ierr)
    +
    3005
    +
    3006 else ! PBC at the end only
    3007
    -
    3008 else ! PBC at the end only
    -
    3009
    -
    3010 ! Send/receive buffer to/from bc_z%end/bc_z%end
    -
    3011 call mpi_sendrecv( &
    -
    3012 dz(p - buff_size + 1), buff_size, &
    -
    3013 mpi_p, bc_z%end, 0, &
    -
    3014 dz(p + 1), buff_size, &
    -
    3015 mpi_p, bc_z%end, 1, &
    -
    3016 mpi_comm_world, mpi_status_ignore, ierr)
    +
    3008 ! Send/receive buffer to/from bc_z%end/bc_z%end
    +
    3009 call mpi_sendrecv( &
    +
    3010 dz(p - buff_size + 1), buff_size, &
    +
    3011 mpi_p, bc_z%end, 0, &
    +
    3012 dz(p + 1), buff_size, &
    +
    3013 mpi_p, bc_z%end, 1, &
    +
    3014 mpi_comm_world, mpi_status_ignore, ierr)
    +
    3015
    +
    3016 end if
    3017
    -
    3018 end if
    +
    3018 end if
    3019
    -
    3020 end if
    -
    3021
    -
    3022 end if
    -
    3023 ! END: MPI Communication in z-direction
    -
    3024#endif
    -
    3025
    +
    3020 end if
    +
    3021 ! END: MPI Communication in z-direction
    +
    3022#endif
    +
    3023
    - -
    3027#endif
    -
    3028
    -
    3029 !> Module deallocation and/or disassociation procedures
    -
    - -
    3031
    -
    3032#ifdef MFC_MPI
    -
    3033 deallocate (buff_send, buff_recv)
    -
    3034#endif
    -
    3035
    + +
    3025#endif
    +
    3026
    +
    3027 !> Module deallocation and/or disassociation procedures
    +
    + +
    3029
    +
    3030#ifdef MFC_MPI
    +
    3031 deallocate (buff_send, buff_recv)
    +
    3032#endif
    +
    3033
    -
    3036 end subroutine s_finalize_mpi_common_module
    -
    3037
    -
    3038end module m_mpi_common
    +
    3034 end subroutine s_finalize_mpi_common_module
    +
    3035
    +
    3036end module m_mpi_common
    type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
    integer, intent(in) j
    Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
    @@ -3241,7 +3239,7 @@
    real(wp), dimension(:), allocatable, private buff_recv
    buff_recv is utilized to receive and unpack the buffer of the cell- average primitive variables,...
    impure subroutine s_initialize_mpi_data(q_cons_vf, ib_markers, beta)
    impure subroutine s_mpi_reduce_maxloc(var_loc)
    The following subroutine takes the first element of the 2-element inputted variable and determines it...
    -
    subroutine s_mpi_sendrecv_grid_variables_buffers(mpi_dir, pbc_loc)
    The goal of this procedure is to populate the buffers of the grid variables by communicating with the...
    +
    subroutine s_mpi_sendrecv_grid_variables_buffers(mpi_dir, pbc_loc)
    The goal of this procedure is to populate the buffers of the grid variables by communicating with the...
    impure subroutine s_mpi_reduce_stability_criteria_extrema(icfl_max_loc, vcfl_max_loc, rc_min_loc, icfl_max_glb, vcfl_max_glb, rc_min_glb)
    The goal of this subroutine is to determine the global extrema of the stability criteria in the compu...
    impure subroutine s_mpi_allreduce_sum(var_loc, var_glb)
    The following subroutine takes the input local variable from all processors and reduces to the sum of...
    real(wp), dimension(:), allocatable, private buff_send
    This variable is utilized to pack and send the buffer of the cell-average primitive variables,...
    @@ -3255,7 +3253,7 @@
    integer, private v_size
    impure subroutine mpi_bcast_time_step_values(proc_time, time_avg)
    Gathers per-rank time step wall-clock times onto rank 0 for performance reporting.
    impure subroutine s_mpi_reduce_min(var_loc)
    The following subroutine takes the inputted variable and determines its minimum value on the entire c...
    -
    impure subroutine s_finalize_mpi_common_module
    Module deallocation and/or disassociation procedures.
    +
    impure subroutine s_finalize_mpi_common_module
    Module deallocation and/or disassociation procedures.
    integer(kind=8) halo_size
    subroutine s_mpi_decompose_computational_domain
    The purpose of this procedure is to optimally decompose the computational domain among the available ...
    NVIDIA NVTX profiling API bindings for GPU performance instrumentation.
    Definition m_nvtx.f90:6
    diff --git a/simulation/m__mpi__proxy_8fpp_8f90_source.html b/simulation/m__mpi__proxy_8fpp_8f90_source.html index a05a3e6f2..b5827f026 100644 --- a/simulation/m__mpi__proxy_8fpp_8f90_source.html +++ b/simulation/m__mpi__proxy_8fpp_8f90_source.html @@ -865,7 +865,7 @@
    725# 158 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
    726 call mpi_bcast(bc_x%ve2, 1, mpi_p, 0, mpi_comm_world, ierr)
    727# 158 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
    -
    728 call mpi_bcast(bc_x%ve2, 1, mpi_p, 0, mpi_comm_world, ierr)
    +
    728 call mpi_bcast(bc_x%ve3, 1, mpi_p, 0, mpi_comm_world, ierr)
    729# 158 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
    730 call mpi_bcast(bc_y%vb1, 1, mpi_p, 0, mpi_comm_world, ierr)
    731# 158 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
    diff --git a/simulation/m__riemann__solvers_8fpp_8f90_source.html b/simulation/m__riemann__solvers_8fpp_8f90_source.html index e97f6679a..e4eb794e4 100644 --- a/simulation/m__riemann__solvers_8fpp_8f90_source.html +++ b/simulation/m__riemann__solvers_8fpp_8f90_source.html @@ -22188,8 +22188,8 @@
    Computes capillary source fluxes and color-function gradients for the diffuse-interface surface tensi...
    subroutine, public s_compute_capillary_source_flux(vsrc_rsx_vf, vsrc_rsy_vf, vsrc_rsz_vf, flux_src_vf, id, isx, isy, isz)
    Computes the capillary (surface-tension) source flux from reconstructed color-gradient fields.
    Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
    -
    subroutine s_compute_fast_magnetosonic_speed(rho, c, b, norm, c_fast, h)
    Computes the fast magnetosonic wave speed from the sound speed, density, and magnetic field component...
    -
    subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, h, adv, vel_sum, c_c, c, qv)
    Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state...
    +
    subroutine s_compute_fast_magnetosonic_speed(rho, c, b, norm, c_fast, h)
    Computes the fast magnetosonic wave speed from the sound speed, density, and magnetic field component...
    +
    subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, h, adv, vel_sum, c_c, c, qv)
    Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state...
    Integer bounds for variables.
    Left and right Riemann states for 3-component vectors.
    Left and right Riemann states.
    diff --git a/simulation/m__sim__helpers_8fpp_8f90_source.html b/simulation/m__sim__helpers_8fpp_8f90_source.html index ea53f1f6b..0e887169f 100644 --- a/simulation/m__sim__helpers_8fpp_8f90_source.html +++ b/simulation/m__sim__helpers_8fpp_8f90_source.html @@ -864,7 +864,7 @@
    subroutine, public s_compute_stability_from_dt(vel, c, rho, re_l, j, k, l, icfl_sf, vcfl_sf, rc_sf)
    Computes stability criterion for a specified dt.
    real(wp) function f_compute_multidim_cfl_terms(vel, c, j, k, l)
    Computes inviscid CFL terms for multi-dimensional cases (2D/3D only).
    Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
    -
    subroutine, public s_compute_species_fraction(q_vf, k, l, r, alpha_rho_k, alpha_k)
    This subroutine computes partial densities and volume fractions.
    +
    subroutine, public s_compute_species_fraction(q_vf, k, l, r, alpha_rho_k, alpha_k)
    This subroutine computes partial densities and volume fractions.
    subroutine, public s_convert_species_to_mixture_variables_acc(rho_k, gamma_k, pi_inf_k, qv_k, alpha_k, alpha_rho_k, re_k, g_k, g)
    GPU-accelerated conversion of species volume fractions and partial densities to mixture density,...
    Derived type annexing a scalar field (SF).
    diff --git a/simulation/m__start__up_8fpp_8f90_source.html b/simulation/m__start__up_8fpp_8f90_source.html index 1c3d4c1cf..cd7b7e80c 100644 --- a/simulation/m__start__up_8fpp_8f90_source.html +++ b/simulation/m__start__up_8fpp_8f90_source.html @@ -1503,7 +1503,7 @@
    1349 do j = 0, m
    1350 if (ieee_is_nan(real(q_cons_ts(stor)%vf(i)%sf(j, k, l), kind=wp))) then
    1351 print *, "NaN(s) in timestep output.", j, k, l, i, proc_rank, t_step, m, n, p
    -
    1352 error stop "NaN(s) in timestep output."
    +
    1352 call s_mpi_abort("NaN(s) in timestep output.")
    1353 end if
    1354 end do
    1355 end do
    @@ -2176,7 +2176,7 @@
    impure subroutine, public s_finalize_derived_variables_module
    Deallocation procedures for the module.
    Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
    real(wp) mytime
    Current simulation time.
    - +
    logical null_weights
    Null undesired WENO weights.
    logical bubbles_euler
    Bubbles euler on/off.
    @@ -2189,18 +2189,18 @@
    logical igr
    Use information geometric regularization.
    logical hypoelasticity
    hypoelasticity modeling
    impure subroutine s_assign_default_values_to_user_inputs
    Assigns default values to the user inputs before reading them in. This enables for an easier consiste...
    - +
    impure subroutine s_finalize_global_parameters_module
    Module deallocation and/or disassociation procedures.
    integer thermal
    Thermal behavior. 1 = adiabatic, 2 = isotherm, 3 = transfer.
    integer avg_state
    Average state evaluation method.
    - + - +
    type(int_bounds_info), dimension(1:3) idwint
    real(wp), dimension(:), allocatable, target z_cb
    integer recon_type
    Reconstruction Type.
    logical igr_pres_lim
    Limit to positive pressures for IGR.
    - +
    logical, parameter chemistry
    Chemistry modeling.
    @@ -2208,7 +2208,7 @@
    type(ib_patch_parameters), dimension(num_patches_max) patch_ib
    type(int_bounds_info) mom_idx
    Indexes of first & last momentum eqns.
    - + @@ -2223,7 +2223,7 @@
    real(wp) hyper_cleaning_speed
    Hyperbolic cleaning wave speed (c_h).
    integer t_step_print
    Number of time-steps between printouts.
    - +
    logical dummy
    AMDFlang workaround: keep a dummy logical to avoid a compiler case-optimization bug when a parameter+...
    real(wp) poly_sigma
    log normal sigma for polydisperse PDF
    @@ -2262,7 +2262,7 @@
    integer model_eqns
    Multicomponent flow model.
    integer precision
    Precision of output files.
    logical hyperelasticity
    hyperelasticity modeling
    - +
    type(physical_parameters), dimension(num_fluids_max) fluid_pp
    Database of the physical parameters of each of the fluids that is present in the flow....
    @@ -2271,11 +2271,11 @@
    impure subroutine s_initialize_global_parameters_module
    The computation of parameters, the allocation of memory, the association of pointers and/or the execu...
    real(wp), dimension(:), allocatable, target y_cc
    type(pres_field), dimension(:), allocatable pb_ts
    - +
    type(pres_field), dimension(:), allocatable mv_ts
    type(chemistry_parameters) chem_params
    - +
    integer fd_order
    The order of the finite-difference (fd) approximations of the first-order derivatives that need to be...
    logical bubbles_lagrange
    Lagrangian subgrid bubble model switch.
    real(wp) ca
    Cavitation number.
    @@ -2294,7 +2294,7 @@
    logical hyper_cleaning
    Hyperbolic cleaning for MHD for divB=0.
    integer adap_dt_max_iters
    Maximum number of iterations.
    - +
    real(wp) ic_beta
    THINC Sharpness Parameter.
    @@ -2319,7 +2319,7 @@
    type(integral_parameters), dimension(num_probes_max) integral
    real(wp), dimension(:), allocatable, target y_cb
    - +
    real(wp) adap_dt_tol
    Tolerance to control adaptive step size.
    integer e_idx
    Index of energy equation.
    @@ -2405,7 +2405,7 @@
    impure subroutine s_mpi_finalize
    The subroutine finalizes the MPI execution environment.
    subroutine s_initialize_mpi_data_ds(q_cons_vf)
    impure subroutine mpi_bcast_time_step_values(proc_time, time_avg)
    Gathers per-rank time step wall-clock times onto rank 0 for performance reporting.
    -
    impure subroutine s_finalize_mpi_common_module
    Module deallocation and/or disassociation procedures.
    +
    impure subroutine s_finalize_mpi_common_module
    Module deallocation and/or disassociation procedures.
    subroutine s_mpi_decompose_computational_domain
    The purpose of this procedure is to optimally decompose the computational domain among the available ...
    MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
    subroutine s_initialize_mpi_proxy_module()
    Allocates immersed boundary communication buffers for MPI halo exchanges.
    @@ -2463,7 +2463,7 @@
    Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
    subroutine, public s_compute_pressure(energy, alf, dyn_p, pi_inf, gamma, rho, qv, rhoyks, pres, t, stress, mom, g, pres_mag)
    This procedure conditionally calculates the appropriate pressure.
    impure subroutine, public s_initialize_variables_conversion_module
    The computation of parameters, the allocation of memory, the association of pointers and/or the execu...
    -
    impure subroutine s_finalize_variables_conversion_module()
    Deallocates fluid property arrays and post-processing fields allocated during module initialization.
    +
    impure subroutine s_finalize_variables_conversion_module()
    Deallocates fluid property arrays and post-processing fields allocated during module initialization.
    subroutine, public s_convert_to_mixture_variables(q_vf, i, j, k, rho, gamma, pi_inf, qv, re_k, g_k, g)
    Dispatch to the s_convert_mixture_to_mixture_variables and s_convert_species_to_mixture_variables sub...
    Computes viscous stress tensors and diffusive flux contributions for the Navier–Stokes equations.
    impure subroutine, public s_initialize_viscous_module
    Allocates and populates the viscous Reynolds number arrays and transfers data to the GPU.
    diff --git a/simulation/m__variables__conversion_8fpp_8f90_source.html b/simulation/m__variables__conversion_8fpp_8f90_source.html index 548d83a5b..d5470e44e 100644 --- a/simulation/m__variables__conversion_8fpp_8f90_source.html +++ b/simulation/m__variables__conversion_8fpp_8f90_source.html @@ -1918,21 +1918,21 @@
    1764 end if
    1765
    1766 if (hypoelasticity) then
    -
    1767
    -
    1768# 855 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    1769#if defined(MFC_OpenACC)
    -
    1770# 855 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    1771!$acc loop seq
    -
    1772# 855 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    1773#elif defined(MFC_OpenMP)
    -
    1774# 855 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    1775
    -
    1776# 855 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    1777#endif
    -
    1778 do i = strxb, strxe
    -
    1779 ! subtracting elastic contribution for pressure calculation
    -
    1780 if (g_k > verysmall) then
    -
    1781 if (cont_damage) g_k = g_k*max((1._wp - qk_cons_vf(damage_idx)%sf(j, k, l)), 0._wp)
    +
    1767 if (cont_damage) g_k = g_k*max((1._wp - qk_cons_vf(damage_idx)%sf(j, k, l)), 0._wp)
    +
    1768
    +
    1769# 856 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    1770#if defined(MFC_OpenACC)
    +
    1771# 856 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    1772!$acc loop seq
    +
    1773# 856 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    1774#elif defined(MFC_OpenMP)
    +
    1775# 856 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    1776
    +
    1777# 856 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    1778#endif
    +
    1779 do i = strxb, strxe
    +
    1780 ! subtracting elastic contribution for pressure calculation
    +
    1781 if (g_k > verysmall) then
    1782 qk_prim_vf(e_idx)%sf(j, k, l) = qk_prim_vf(e_idx)%sf(j, k, l) - &
    1783 ((qk_prim_vf(i)%sf(j, k, l)**2._wp)/(4._wp*g_k))/gamma_k
    1784 ! Double for shear stresses
    @@ -2239,737 +2239,736 @@
    2083 end if
    2084
    2085 if (hypoelasticity) then
    -
    2086 do i = strxb, strxe
    -
    2087 ! adding elastic contribution
    -
    2088 if (g > verysmall) then
    -
    2089 if (cont_damage) g = g*max((1._wp - q_prim_vf(damage_idx)%sf(j, k, l)), 0._wp)
    -
    2090
    -
    2091 q_cons_vf(e_idx)%sf(j, k, l) = q_cons_vf(e_idx)%sf(j, k, l) + &
    -
    2092 (q_prim_vf(i)%sf(j, k, l)**2._wp)/(4._wp*g)
    -
    2093 ! Double for shear stresses
    -
    2094 if (any(i == shear_indices)) then
    -
    2095 q_cons_vf(e_idx)%sf(j, k, l) = q_cons_vf(e_idx)%sf(j, k, l) + &
    -
    2096 (q_prim_vf(i)%sf(j, k, l)**2._wp)/(4._wp*g)
    -
    2097 end if
    -
    2098 end if
    -
    2099 end do
    -
    2100 end if
    -
    2101
    -
    2102 ! using \rho xi as the conservative formulation stated in Kamrin et al. JFM 2022
    -
    2103 if (hyperelasticity) then
    -
    2104 ! Multiply \xi to \rho \xi
    -
    2105 do i = xibeg, xiend
    -
    2106 q_cons_vf(i)%sf(j, k, l) = rho*q_prim_vf(i)%sf(j, k, l)
    -
    2107 end do
    -
    2108 end if
    -
    2109
    -
    2110 if (surface_tension) then
    -
    2111 q_cons_vf(c_idx)%sf(j, k, l) = q_prim_vf(c_idx)%sf(j, k, l)
    -
    2112 end if
    -
    2113
    -
    2114 if (cont_damage) q_cons_vf(damage_idx)%sf(j, k, l) = q_prim_vf(damage_idx)%sf(j, k, l)
    -
    2115
    -
    2116 if (hyper_cleaning) q_cons_vf(psi_idx)%sf(j, k, l) = q_prim_vf(psi_idx)%sf(j, k, l)
    -
    2117
    -
    2118 end do
    -
    2119 end do
    -
    2120 end do
    -
    2121#else
    -
    2122 if (proc_rank == 0) then
    -
    2123 call s_mpi_abort('Conversion from primitive to '// &
    -
    2124 'conservative variables not '// &
    -
    2125 'implemented. Exiting.')
    -
    2126 end if
    -
    2127#endif
    +
    2086 if (cont_damage) g = g*max((1._wp - q_prim_vf(damage_idx)%sf(j, k, l)), 0._wp)
    +
    2087 do i = strxb, strxe
    +
    2088 ! adding elastic contribution
    +
    2089 if (g > verysmall) then
    +
    2090 q_cons_vf(e_idx)%sf(j, k, l) = q_cons_vf(e_idx)%sf(j, k, l) + &
    +
    2091 (q_prim_vf(i)%sf(j, k, l)**2._wp)/(4._wp*g)
    +
    2092 ! Double for shear stresses
    +
    2093 if (any(i == shear_indices)) then
    +
    2094 q_cons_vf(e_idx)%sf(j, k, l) = q_cons_vf(e_idx)%sf(j, k, l) + &
    +
    2095 (q_prim_vf(i)%sf(j, k, l)**2._wp)/(4._wp*g)
    +
    2096 end if
    +
    2097 end if
    +
    2098 end do
    +
    2099 end if
    +
    2100
    +
    2101 ! using \rho xi as the conservative formulation stated in Kamrin et al. JFM 2022
    +
    2102 if (hyperelasticity) then
    +
    2103 ! Multiply \xi to \rho \xi
    +
    2104 do i = xibeg, xiend
    +
    2105 q_cons_vf(i)%sf(j, k, l) = rho*q_prim_vf(i)%sf(j, k, l)
    +
    2106 end do
    +
    2107 end if
    +
    2108
    +
    2109 if (surface_tension) then
    +
    2110 q_cons_vf(c_idx)%sf(j, k, l) = q_prim_vf(c_idx)%sf(j, k, l)
    +
    2111 end if
    +
    2112
    +
    2113 if (cont_damage) q_cons_vf(damage_idx)%sf(j, k, l) = q_prim_vf(damage_idx)%sf(j, k, l)
    +
    2114
    +
    2115 if (hyper_cleaning) q_cons_vf(psi_idx)%sf(j, k, l) = q_prim_vf(psi_idx)%sf(j, k, l)
    +
    2116
    +
    2117 end do
    +
    2118 end do
    +
    2119 end do
    +
    2120#else
    +
    2121 if (proc_rank == 0) then
    +
    2122 call s_mpi_abort('Conversion from primitive to '// &
    +
    2123 'conservative variables not '// &
    +
    2124 'implemented. Exiting.')
    +
    2125 end if
    +
    2126#endif

    - -
    2129
    -
    2130 !> The following subroutine handles the conversion between
    -
    2131 !! the primitive variables and the Eulerian flux variables.
    -
    2132 !! @param qK_prim_vf Primitive variables
    -
    2133 !! @param FK_vf Flux variables
    -
    2134 !! @param FK_src_vf Flux source variables
    -
    2135 !! @param is1 Index bounds in the first coordinate direction
    -
    2136 !! @param is2 Index bounds in the second coordinate direction
    -
    2137 !! @param is3 Index bounds in the third coordinate direction
    -
    2138 !! @param s2b Starting boundary index in the second coordinate direction
    -
    2139 !! @param s3b Starting boundary index in the third coordinate direction
    -
    - -
    2141 FK_vf, &
    -
    2142 FK_src_vf, &
    -
    2143 is1, is2, is3, s2b, s3b)
    -
    2144
    -
    2145 integer, intent(in) :: s2b, s3b
    -
    2146 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(in) :: qk_prim_vf
    -
    2147 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) :: fk_vf
    -
    2148 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, advxb:), intent(inout) :: fk_src_vf
    -
    2149
    -
    2150 type(int_bounds_info), intent(in) :: is1, is2, is3
    -
    2151
    -
    2152 ! Partial densities, density, velocity, pressure, energy, advection
    -
    2153 ! variables, the specific heat ratio and liquid stiffness functions,
    -
    2154 ! the shear and volume Reynolds numbers and the Weber numbers
    -
    2155# 1201 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2156 real(wp), dimension(num_fluids) :: alpha_rho_k
    -
    2157 real(wp), dimension(num_fluids) :: alpha_k
    -
    2158 real(wp), dimension(num_vels) :: vel_k
    -
    2159 real(wp), dimension(num_species) :: y_k
    -
    2160# 1206 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2161 real(wp) :: rho_k
    -
    2162 real(wp) :: vel_k_sum
    -
    2163 real(wp) :: pres_k
    -
    2164 real(wp) :: e_k
    -
    2165 real(wp) :: gamma_k
    -
    2166 real(wp) :: pi_inf_k
    -
    2167 real(wp) :: qv_k
    -
    2168 real(wp), dimension(2) :: re_k
    -
    2169 real(wp) :: g_k
    -
    2170 real(wp) :: t_k, mix_mol_weight, r_gas
    -
    2171
    -
    2172 integer :: i, j, k, l !< Generic loop iterators
    -
    2173
    -
    2174 is1b = is1%beg; is1e = is1%end
    -
    2175 is2b = is2%beg; is2e = is2%end
    -
    2176 is3b = is3%beg; is3e = is3%end
    + +
    2128
    +
    2129 !> The following subroutine handles the conversion between
    +
    2130 !! the primitive variables and the Eulerian flux variables.
    +
    2131 !! @param qK_prim_vf Primitive variables
    +
    2132 !! @param FK_vf Flux variables
    +
    2133 !! @param FK_src_vf Flux source variables
    +
    2134 !! @param is1 Index bounds in the first coordinate direction
    +
    2135 !! @param is2 Index bounds in the second coordinate direction
    +
    2136 !! @param is3 Index bounds in the third coordinate direction
    +
    2137 !! @param s2b Starting boundary index in the second coordinate direction
    +
    2138 !! @param s3b Starting boundary index in the third coordinate direction
    +
    + +
    2140 FK_vf, &
    +
    2141 FK_src_vf, &
    +
    2142 is1, is2, is3, s2b, s3b)
    +
    2143
    +
    2144 integer, intent(in) :: s2b, s3b
    +
    2145 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(in) :: qk_prim_vf
    +
    2146 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) :: fk_vf
    +
    2147 real(wp), dimension(0:, idwbuff(2)%beg:, idwbuff(3)%beg:, advxb:), intent(inout) :: fk_src_vf
    +
    2148
    +
    2149 type(int_bounds_info), intent(in) :: is1, is2, is3
    +
    2150
    +
    2151 ! Partial densities, density, velocity, pressure, energy, advection
    +
    2152 ! variables, the specific heat ratio and liquid stiffness functions,
    +
    2153 ! the shear and volume Reynolds numbers and the Weber numbers
    +
    2154# 1200 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2155 real(wp), dimension(num_fluids) :: alpha_rho_k
    +
    2156 real(wp), dimension(num_fluids) :: alpha_k
    +
    2157 real(wp), dimension(num_vels) :: vel_k
    +
    2158 real(wp), dimension(num_species) :: y_k
    +
    2159# 1205 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2160 real(wp) :: rho_k
    +
    2161 real(wp) :: vel_k_sum
    +
    2162 real(wp) :: pres_k
    +
    2163 real(wp) :: e_k
    +
    2164 real(wp) :: gamma_k
    +
    2165 real(wp) :: pi_inf_k
    +
    2166 real(wp) :: qv_k
    +
    2167 real(wp), dimension(2) :: re_k
    +
    2168 real(wp) :: g_k
    +
    2169 real(wp) :: t_k, mix_mol_weight, r_gas
    +
    2170
    +
    2171 integer :: i, j, k, l !< Generic loop iterators
    +
    2172
    +
    2173 is1b = is1%beg; is1e = is1%end
    +
    2174 is2b = is2%beg; is2e = is2%end
    +
    2175 is3b = is3%beg; is3e = is3%end
    +
    2176
    2177
    -
    2178
    -
    2179# 1223 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2180#if defined(MFC_OpenACC)
    -
    2181# 1223 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2182!$acc update device(is1b, is2b, is3b, is1e, is2e, is3e)
    -
    2183# 1223 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2184#elif defined(MFC_OpenMP)
    -
    2185# 1223 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2186!$omp target update to(is1b, is2b, is3b, is1e, is2e, is3e)
    -
    2187# 1223 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2188#endif
    -
    2189
    -
    2190 ! Computing the flux variables from the primitive variables, without
    -
    2191 ! accounting for the contribution of either viscosity or capillarity
    -
    2192#ifdef MFC_SIMULATION
    -
    2193
    -
    2194# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2195
    -
    2196# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2197#if defined(MFC_OpenACC)
    -
    2198# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2199!$acc parallel loop collapse(3) gang vector default(present) private(alpha_rho_K, vel_K, alpha_K, Re_K, Y_K, rho_K, vel_K_sum, pres_K, E_K, gamma_K, pi_inf_K, qv_K, G_K, T_K, mix_mol_weight, R_gas)
    -
    2200# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2201#elif defined(MFC_OpenMP)
    -
    2202# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2203
    -
    2204# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2205
    -
    2206# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2207
    -
    2208# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2209!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(alpha_rho_K, vel_K, alpha_K, Re_K, Y_K, rho_K, vel_K_sum, pres_K, E_K, gamma_K, pi_inf_K, qv_K, G_K, T_K, mix_mol_weight, R_gas)
    -
    2210# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2211#endif
    -
    2212# 1228 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2213
    -
    2214 do l = is3b, is3e
    -
    2215 do k = is2b, is2e
    -
    2216 do j = is1b, is1e
    +
    2178# 1222 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2179#if defined(MFC_OpenACC)
    +
    2180# 1222 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2181!$acc update device(is1b, is2b, is3b, is1e, is2e, is3e)
    +
    2182# 1222 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2183#elif defined(MFC_OpenMP)
    +
    2184# 1222 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2185!$omp target update to(is1b, is2b, is3b, is1e, is2e, is3e)
    +
    2186# 1222 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2187#endif
    +
    2188
    +
    2189 ! Computing the flux variables from the primitive variables, without
    +
    2190 ! accounting for the contribution of either viscosity or capillarity
    +
    2191#ifdef MFC_SIMULATION
    +
    2192
    +
    2193# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2194
    +
    2195# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2196#if defined(MFC_OpenACC)
    +
    2197# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2198!$acc parallel loop collapse(3) gang vector default(present) private(alpha_rho_K, vel_K, alpha_K, Re_K, Y_K, rho_K, vel_K_sum, pres_K, E_K, gamma_K, pi_inf_K, qv_K, G_K, T_K, mix_mol_weight, R_gas)
    +
    2199# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2200#elif defined(MFC_OpenMP)
    +
    2201# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2202
    +
    2203# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2204
    +
    2205# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2206
    +
    2207# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2208!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(alpha_rho_K, vel_K, alpha_K, Re_K, Y_K, rho_K, vel_K_sum, pres_K, E_K, gamma_K, pi_inf_K, qv_K, G_K, T_K, mix_mol_weight, R_gas)
    +
    2209# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2210#endif
    +
    2211# 1227 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2212
    +
    2213 do l = is3b, is3e
    +
    2214 do k = is2b, is2e
    +
    2215 do j = is1b, is1e
    +
    2216
    2217
    -
    2218
    -
    2219# 1233 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2220#if defined(MFC_OpenACC)
    -
    2221# 1233 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2222!$acc loop seq
    -
    2223# 1233 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2224#elif defined(MFC_OpenMP)
    -
    2225# 1233 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2226
    -
    2227# 1233 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2228#endif
    -
    2229 do i = 1, contxe
    -
    2230 alpha_rho_k(i) = qk_prim_vf(j, k, l, i)
    -
    2231 end do
    +
    2218# 1232 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2219#if defined(MFC_OpenACC)
    +
    2220# 1232 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2221!$acc loop seq
    +
    2222# 1232 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2223#elif defined(MFC_OpenMP)
    +
    2224# 1232 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2225
    +
    2226# 1232 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2227#endif
    +
    2228 do i = 1, contxe
    +
    2229 alpha_rho_k(i) = qk_prim_vf(j, k, l, i)
    +
    2230 end do
    +
    2231
    2232
    -
    2233
    -
    2234# 1238 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2235#if defined(MFC_OpenACC)
    -
    2236# 1238 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2237!$acc loop seq
    -
    2238# 1238 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2239#elif defined(MFC_OpenMP)
    -
    2240# 1238 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2241
    -
    2242# 1238 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2243#endif
    -
    2244 do i = advxb, advxe
    -
    2245 alpha_k(i - e_idx) = qk_prim_vf(j, k, l, i)
    -
    2246 end do
    +
    2233# 1237 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2234#if defined(MFC_OpenACC)
    +
    2235# 1237 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2236!$acc loop seq
    +
    2237# 1237 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2238#elif defined(MFC_OpenMP)
    +
    2239# 1237 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2240
    +
    2241# 1237 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2242#endif
    +
    2243 do i = advxb, advxe
    +
    2244 alpha_k(i - e_idx) = qk_prim_vf(j, k, l, i)
    +
    2245 end do
    +
    2246
    2247
    -
    2248
    -
    2249# 1243 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2250#if defined(MFC_OpenACC)
    -
    2251# 1243 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2252!$acc loop seq
    -
    2253# 1243 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2254#elif defined(MFC_OpenMP)
    -
    2255# 1243 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2256
    -
    2257# 1243 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2258#endif
    -
    2259 do i = 1, num_vels
    -
    2260 vel_k(i) = qk_prim_vf(j, k, l, contxe + i)
    -
    2261 end do
    -
    2262
    -
    2263 vel_k_sum = 0._wp
    -
    2264
    -
    2265# 1249 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2266#if defined(MFC_OpenACC)
    -
    2267# 1249 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2268!$acc loop seq
    -
    2269# 1249 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2270#elif defined(MFC_OpenMP)
    -
    2271# 1249 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2272
    -
    2273# 1249 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2274#endif
    -
    2275 do i = 1, num_vels
    -
    2276 vel_k_sum = vel_k_sum + vel_k(i)**2._wp
    -
    2277 end do
    -
    2278
    -
    2279 pres_k = qk_prim_vf(j, k, l, e_idx)
    -
    2280 if (elasticity) then
    -
    2281 call s_convert_species_to_mixture_variables_acc(rho_k, gamma_k, pi_inf_k, qv_k, &
    -
    2282 alpha_k, alpha_rho_k, re_k, &
    -
    2283 g_k, gs_vc)
    -
    2284 else
    -
    2285 call s_convert_species_to_mixture_variables_acc(rho_k, gamma_k, pi_inf_k, qv_k, &
    -
    2286 alpha_k, alpha_rho_k, re_k)
    -
    2287 end if
    -
    2288
    -
    2289 ! Computing the energy from the pressure
    -
    2290
    -
    2291 if (chemistry) then
    -
    2292
    -
    2293# 1267 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2294#if defined(MFC_OpenACC)
    -
    2295# 1267 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2296!$acc loop seq
    -
    2297# 1267 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2298#elif defined(MFC_OpenMP)
    -
    2299# 1267 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2300
    -
    2301# 1267 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2302#endif
    -
    2303 do i = chemxb, chemxe
    -
    2304 y_k(i - chemxb + 1) = qk_prim_vf(j, k, l, i)
    -
    2305 end do
    -
    2306 !Computing the energy from the internal energy of the mixture
    -
    2307 call get_mixture_molecular_weight(y_k, mix_mol_weight)
    -
    2308 r_gas = gas_constant/mix_mol_weight
    -
    2309 t_k = pres_k/rho_k/r_gas
    -
    2310 call get_mixture_energy_mass(t_k, y_k, e_k)
    -
    2311 e_k = rho_k*e_k + 5.e-1_wp*rho_k*vel_k_sum
    -
    2312 else
    -
    2313 ! Computing the energy from the pressure
    -
    2314 e_k = gamma_k*pres_k + pi_inf_k &
    -
    2315 + 5.e-1_wp*rho_k*vel_k_sum + qv_k
    -
    2316 end if
    -
    2317
    -
    2318 ! mass flux, this should be \alpha_i \rho_i u_i
    -
    2319
    -
    2320# 1284 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2321#if defined(MFC_OpenACC)
    -
    2322# 1284 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2323!$acc loop seq
    -
    2324# 1284 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2325#elif defined(MFC_OpenMP)
    -
    2326# 1284 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2327
    -
    2328# 1284 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2329#endif
    -
    2330 do i = 1, contxe
    -
    2331 fk_vf(j, k, l, i) = alpha_rho_k(i)*vel_k(dir_idx(1))
    -
    2332 end do
    +
    2248# 1242 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2249#if defined(MFC_OpenACC)
    +
    2250# 1242 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2251!$acc loop seq
    +
    2252# 1242 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2253#elif defined(MFC_OpenMP)
    +
    2254# 1242 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2255
    +
    2256# 1242 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2257#endif
    +
    2258 do i = 1, num_vels
    +
    2259 vel_k(i) = qk_prim_vf(j, k, l, contxe + i)
    +
    2260 end do
    +
    2261
    +
    2262 vel_k_sum = 0._wp
    +
    2263
    +
    2264# 1248 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2265#if defined(MFC_OpenACC)
    +
    2266# 1248 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2267!$acc loop seq
    +
    2268# 1248 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2269#elif defined(MFC_OpenMP)
    +
    2270# 1248 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2271
    +
    2272# 1248 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2273#endif
    +
    2274 do i = 1, num_vels
    +
    2275 vel_k_sum = vel_k_sum + vel_k(i)**2._wp
    +
    2276 end do
    +
    2277
    +
    2278 pres_k = qk_prim_vf(j, k, l, e_idx)
    +
    2279 if (elasticity) then
    +
    2280 call s_convert_species_to_mixture_variables_acc(rho_k, gamma_k, pi_inf_k, qv_k, &
    +
    2281 alpha_k, alpha_rho_k, re_k, &
    +
    2282 g_k, gs_vc)
    +
    2283 else
    +
    2284 call s_convert_species_to_mixture_variables_acc(rho_k, gamma_k, pi_inf_k, qv_k, &
    +
    2285 alpha_k, alpha_rho_k, re_k)
    +
    2286 end if
    +
    2287
    +
    2288 ! Computing the energy from the pressure
    +
    2289
    +
    2290 if (chemistry) then
    +
    2291
    +
    2292# 1266 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2293#if defined(MFC_OpenACC)
    +
    2294# 1266 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2295!$acc loop seq
    +
    2296# 1266 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2297#elif defined(MFC_OpenMP)
    +
    2298# 1266 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2299
    +
    2300# 1266 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2301#endif
    +
    2302 do i = chemxb, chemxe
    +
    2303 y_k(i - chemxb + 1) = qk_prim_vf(j, k, l, i)
    +
    2304 end do
    +
    2305 !Computing the energy from the internal energy of the mixture
    +
    2306 call get_mixture_molecular_weight(y_k, mix_mol_weight)
    +
    2307 r_gas = gas_constant/mix_mol_weight
    +
    2308 t_k = pres_k/rho_k/r_gas
    +
    2309 call get_mixture_energy_mass(t_k, y_k, e_k)
    +
    2310 e_k = rho_k*e_k + 5.e-1_wp*rho_k*vel_k_sum
    +
    2311 else
    +
    2312 ! Computing the energy from the pressure
    +
    2313 e_k = gamma_k*pres_k + pi_inf_k &
    +
    2314 + 5.e-1_wp*rho_k*vel_k_sum + qv_k
    +
    2315 end if
    +
    2316
    +
    2317 ! mass flux, this should be \alpha_i \rho_i u_i
    +
    2318
    +
    2319# 1283 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2320#if defined(MFC_OpenACC)
    +
    2321# 1283 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2322!$acc loop seq
    +
    2323# 1283 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2324#elif defined(MFC_OpenMP)
    +
    2325# 1283 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2326
    +
    2327# 1283 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2328#endif
    +
    2329 do i = 1, contxe
    +
    2330 fk_vf(j, k, l, i) = alpha_rho_k(i)*vel_k(dir_idx(1))
    +
    2331 end do
    +
    2332
    2333
    -
    2334
    -
    2335# 1289 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2336#if defined(MFC_OpenACC)
    -
    2337# 1289 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2338!$acc loop seq
    -
    2339# 1289 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2340#elif defined(MFC_OpenMP)
    -
    2341# 1289 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2342
    -
    2343# 1289 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2344#endif
    -
    2345 do i = 1, num_vels
    -
    2346 fk_vf(j, k, l, contxe + dir_idx(i)) = &
    -
    2347 rho_k*vel_k(dir_idx(1)) &
    -
    2348 *vel_k(dir_idx(i)) &
    -
    2349 + pres_k*dir_flg(dir_idx(i))
    -
    2350 end do
    -
    2351
    -
    2352 ! energy flux, u(E+p)
    -
    2353 fk_vf(j, k, l, e_idx) = vel_k(dir_idx(1))*(e_k + pres_k)
    -
    2354
    -
    2355 ! Species advection Flux, \rho*u*Y
    -
    2356 if (chemistry) then
    -
    2357
    -
    2358# 1302 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2359#if defined(MFC_OpenACC)
    -
    2360# 1302 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2361!$acc loop seq
    -
    2362# 1302 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2363#elif defined(MFC_OpenMP)
    -
    2364# 1302 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2365
    -
    2366# 1302 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2367#endif
    -
    2368 do i = 1, num_species
    -
    2369 fk_vf(j, k, l, i - 1 + chemxb) = vel_k(dir_idx(1))*(rho_k*y_k(i))
    -
    2370 end do
    -
    2371 end if
    -
    2372
    -
    2373 if (riemann_solver == 1 .or. riemann_solver == 4) then
    -
    2374
    -
    2375# 1309 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2376#if defined(MFC_OpenACC)
    -
    2377# 1309 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2378!$acc loop seq
    -
    2379# 1309 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2380#elif defined(MFC_OpenMP)
    -
    2381# 1309 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2382
    -
    2383# 1309 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2384#endif
    -
    2385 do i = advxb, advxe
    -
    2386 fk_vf(j, k, l, i) = 0._wp
    -
    2387 fk_src_vf(j, k, l, i) = alpha_k(i - e_idx)
    -
    2388 end do
    -
    2389
    -
    2390 else
    -
    2391 ! Could be bubbles_euler!
    -
    2392
    -
    2393# 1317 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2394#if defined(MFC_OpenACC)
    -
    2395# 1317 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2396!$acc loop seq
    -
    2397# 1317 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2398#elif defined(MFC_OpenMP)
    -
    2399# 1317 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2400
    -
    2401# 1317 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2402#endif
    -
    2403 do i = advxb, advxe
    -
    2404 fk_vf(j, k, l, i) = vel_k(dir_idx(1))*alpha_k(i - e_idx)
    -
    2405 end do
    +
    2334# 1288 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2335#if defined(MFC_OpenACC)
    +
    2336# 1288 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2337!$acc loop seq
    +
    2338# 1288 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2339#elif defined(MFC_OpenMP)
    +
    2340# 1288 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2341
    +
    2342# 1288 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2343#endif
    +
    2344 do i = 1, num_vels
    +
    2345 fk_vf(j, k, l, contxe + dir_idx(i)) = &
    +
    2346 rho_k*vel_k(dir_idx(1)) &
    +
    2347 *vel_k(dir_idx(i)) &
    +
    2348 + pres_k*dir_flg(dir_idx(i))
    +
    2349 end do
    +
    2350
    +
    2351 ! energy flux, u(E+p)
    +
    2352 fk_vf(j, k, l, e_idx) = vel_k(dir_idx(1))*(e_k + pres_k)
    +
    2353
    +
    2354 ! Species advection Flux, \rho*u*Y
    +
    2355 if (chemistry) then
    +
    2356
    +
    2357# 1301 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2358#if defined(MFC_OpenACC)
    +
    2359# 1301 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2360!$acc loop seq
    +
    2361# 1301 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2362#elif defined(MFC_OpenMP)
    +
    2363# 1301 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2364
    +
    2365# 1301 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2366#endif
    +
    2367 do i = 1, num_species
    +
    2368 fk_vf(j, k, l, i - 1 + chemxb) = vel_k(dir_idx(1))*(rho_k*y_k(i))
    +
    2369 end do
    +
    2370 end if
    +
    2371
    +
    2372 if (riemann_solver == 1 .or. riemann_solver == 4) then
    +
    2373
    +
    2374# 1308 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2375#if defined(MFC_OpenACC)
    +
    2376# 1308 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2377!$acc loop seq
    +
    2378# 1308 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2379#elif defined(MFC_OpenMP)
    +
    2380# 1308 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2381
    +
    2382# 1308 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2383#endif
    +
    2384 do i = advxb, advxe
    +
    2385 fk_vf(j, k, l, i) = 0._wp
    +
    2386 fk_src_vf(j, k, l, i) = alpha_k(i - e_idx)
    +
    2387 end do
    +
    2388
    +
    2389 else
    +
    2390 ! Could be bubbles_euler!
    +
    2391
    +
    2392# 1316 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2393#if defined(MFC_OpenACC)
    +
    2394# 1316 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2395!$acc loop seq
    +
    2396# 1316 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2397#elif defined(MFC_OpenMP)
    +
    2398# 1316 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2399
    +
    2400# 1316 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2401#endif
    +
    2402 do i = advxb, advxe
    +
    2403 fk_vf(j, k, l, i) = vel_k(dir_idx(1))*alpha_k(i - e_idx)
    +
    2404 end do
    +
    2405
    2406
    -
    2407
    -
    2408# 1322 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2409#if defined(MFC_OpenACC)
    -
    2410# 1322 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2411!$acc loop seq
    -
    2412# 1322 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2413#elif defined(MFC_OpenMP)
    -
    2414# 1322 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2415
    -
    2416# 1322 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2417#endif
    -
    2418 do i = advxb, advxe
    -
    2419 fk_src_vf(j, k, l, i) = vel_k(dir_idx(1))
    -
    2420 end do
    -
    2421
    -
    2422 end if
    -
    2423
    -
    2424 end do
    -
    2425 end do
    -
    2426 end do
    -
    2427
    -
    2428# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2429
    -
    2430# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2431#if defined(MFC_OpenACC)
    -
    2432# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2433!$acc end parallel loop
    -
    2434# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2435#elif defined(MFC_OpenMP)
    -
    2436# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2437
    -
    2438# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2439
    -
    2440# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2441!$omp end target teams loop
    -
    2442# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2443#endif
    -
    2444# 1332 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2445
    -
    2446#endif
    +
    2407# 1321 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2408#if defined(MFC_OpenACC)
    +
    2409# 1321 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2410!$acc loop seq
    +
    2411# 1321 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2412#elif defined(MFC_OpenMP)
    +
    2413# 1321 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2414
    +
    2415# 1321 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2416#endif
    +
    2417 do i = advxb, advxe
    +
    2418 fk_src_vf(j, k, l, i) = vel_k(dir_idx(1))
    +
    2419 end do
    +
    2420
    +
    2421 end if
    +
    2422
    +
    2423 end do
    +
    2424 end do
    +
    2425 end do
    +
    2426
    +
    2427# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2428
    +
    2429# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2430#if defined(MFC_OpenACC)
    +
    2431# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2432!$acc end parallel loop
    +
    2433# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2434#elif defined(MFC_OpenMP)
    +
    2435# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2436
    +
    2437# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2438
    +
    2439# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2440!$omp end target teams loop
    +
    2441# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2442#endif
    +
    2443# 1331 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2444
    +
    2445#endif
    - -
    2448
    -
    2449 !> This subroutine computes partial densities and volume fractions
    -
    -
    2450 subroutine s_compute_species_fraction(q_vf, k, l, r, alpha_rho_K, alpha_K)
    -
    2451
    -
    2452# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2453#ifdef _CRAYFTN
    -
    2454# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2455!DIR$ INLINEALWAYS s_compute_species_fraction
    -
    2456# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2457#elif MFC_OpenACC
    -
    2458# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2459!$acc routine seq
    -
    2460# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2461#elif MFC_OpenMP
    -
    2462# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2463
    -
    2464# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2465
    -
    2466# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2467!$omp declare target device_type(any)
    -
    2468# 1338 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2469#endif
    -
    2470# 1340 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2471 type(scalar_field), dimension(sys_size), intent(in) :: q_vf
    -
    2472 integer, intent(in) :: k, l, r
    -
    2473# 1345 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2474 real(wp), dimension(num_fluids), intent(out) :: alpha_rho_k, alpha_k
    -
    2475# 1347 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2476 integer :: i
    -
    2477 real(wp) :: alpha_k_sum
    -
    2478
    -
    2479 if (num_fluids == 1) then
    -
    2480 alpha_rho_k(1) = q_vf(contxb)%sf(k, l, r)
    -
    2481 if (igr .or. bubbles_euler) then
    -
    2482 alpha_k(1) = 1._wp
    -
    2483 else
    -
    2484 alpha_k(1) = q_vf(advxb)%sf(k, l, r)
    -
    2485 end if
    -
    2486 else
    -
    2487 if (igr) then
    -
    2488 do i = 1, num_fluids - 1
    -
    2489 alpha_rho_k(i) = q_vf(i)%sf(k, l, r)
    -
    2490 alpha_k(i) = q_vf(advxb + i - 1)%sf(k, l, r)
    -
    2491 end do
    -
    2492 alpha_rho_k(num_fluids) = q_vf(num_fluids)%sf(k, l, r)
    -
    2493 alpha_k(num_fluids) = 1._wp - sum(alpha_k(1:num_fluids - 1))
    -
    2494 else
    -
    2495 do i = 1, num_fluids
    -
    2496 alpha_rho_k(i) = q_vf(i)%sf(k, l, r)
    -
    2497 alpha_k(i) = q_vf(advxb + i - 1)%sf(k, l, r)
    -
    2498 end do
    -
    2499 end if
    -
    2500 end if
    -
    2501
    -
    2502 if (mpp_lim) then
    -
    2503 alpha_k_sum = 0._wp
    -
    2504 do i = 1, num_fluids
    -
    2505 alpha_rho_k(i) = max(0._wp, alpha_rho_k(i))
    -
    2506 alpha_k(i) = min(max(0._wp, alpha_k(i)), 1._wp)
    -
    2507 alpha_k_sum = alpha_k_sum + alpha_k(i)
    -
    2508 end do
    -
    2509 alpha_k = alpha_k/max(alpha_k_sum, 1.e-16_wp)
    -
    2510 end if
    -
    2511
    -
    2512 if (num_fluids == 1 .and. bubbles_euler) alpha_k(1) = q_vf(advxb)%sf(k, l, r)
    -
    2513
    + +
    2447
    +
    2448 !> This subroutine computes partial densities and volume fractions
    +
    +
    2449 subroutine s_compute_species_fraction(q_vf, k, l, r, alpha_rho_K, alpha_K)
    +
    2450
    +
    2451# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2452#ifdef _CRAYFTN
    +
    2453# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2454!DIR$ INLINEALWAYS s_compute_species_fraction
    +
    2455# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2456#elif MFC_OpenACC
    +
    2457# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2458!$acc routine seq
    +
    2459# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2460#elif MFC_OpenMP
    +
    2461# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2462
    +
    2463# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2464
    +
    2465# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2466!$omp declare target device_type(any)
    +
    2467# 1337 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2468#endif
    +
    2469# 1339 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2470 type(scalar_field), dimension(sys_size), intent(in) :: q_vf
    +
    2471 integer, intent(in) :: k, l, r
    +
    2472# 1344 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2473 real(wp), dimension(num_fluids), intent(out) :: alpha_rho_k, alpha_k
    +
    2474# 1346 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2475 integer :: i
    +
    2476 real(wp) :: alpha_k_sum
    +
    2477
    +
    2478 if (num_fluids == 1) then
    +
    2479 alpha_rho_k(1) = q_vf(contxb)%sf(k, l, r)
    +
    2480 if (igr .or. bubbles_euler) then
    +
    2481 alpha_k(1) = 1._wp
    +
    2482 else
    +
    2483 alpha_k(1) = q_vf(advxb)%sf(k, l, r)
    +
    2484 end if
    +
    2485 else
    +
    2486 if (igr) then
    +
    2487 do i = 1, num_fluids - 1
    +
    2488 alpha_rho_k(i) = q_vf(i)%sf(k, l, r)
    +
    2489 alpha_k(i) = q_vf(advxb + i - 1)%sf(k, l, r)
    +
    2490 end do
    +
    2491 alpha_rho_k(num_fluids) = q_vf(num_fluids)%sf(k, l, r)
    +
    2492 alpha_k(num_fluids) = 1._wp - sum(alpha_k(1:num_fluids - 1))
    +
    2493 else
    +
    2494 do i = 1, num_fluids
    +
    2495 alpha_rho_k(i) = q_vf(i)%sf(k, l, r)
    +
    2496 alpha_k(i) = q_vf(advxb + i - 1)%sf(k, l, r)
    +
    2497 end do
    +
    2498 end if
    +
    2499 end if
    +
    2500
    +
    2501 if (mpp_lim) then
    +
    2502 alpha_k_sum = 0._wp
    +
    2503 do i = 1, num_fluids
    +
    2504 alpha_rho_k(i) = max(0._wp, alpha_rho_k(i))
    +
    2505 alpha_k(i) = min(max(0._wp, alpha_k(i)), 1._wp)
    +
    2506 alpha_k_sum = alpha_k_sum + alpha_k(i)
    +
    2507 end do
    +
    2508 alpha_k = alpha_k/max(alpha_k_sum, 1.e-16_wp)
    +
    2509 end if
    +
    2510
    +
    2511 if (num_fluids == 1 .and. bubbles_euler) alpha_k(1) = q_vf(advxb)%sf(k, l, r)
    +
    2512
    -
    2514 end subroutine s_compute_species_fraction
    -
    2515
    -
    2516 !> @brief Deallocates fluid property arrays and post-processing fields allocated during module initialization.
    -
    - -
    2518
    -
    2519 ! Deallocating the density, the specific heat ratio function and the
    -
    2520 ! liquid stiffness function
    -
    2521#ifdef MFC_POST_PROCESS
    -
    2522 deallocate (rho_sf, gamma_sf, pi_inf_sf, qv_sf)
    -
    2523#endif
    -
    2524
    -
    2525#ifdef MFC_SIMULATION
    -
    2526#ifdef MFC_DEBUG
    -
    2527# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2528 block
    -
    2529# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2530 use iso_fortran_env, only: output_unit
    -
    2531# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2532
    -
    2533# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2534 print *, 'm_variables_conversion.fpp:1397: ', '@:DEALLOCATE(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)'
    -
    2535# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2536
    -
    2537# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2538 call flush (output_unit)
    -
    2539# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2540 end block
    -
    2541# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2542#endif
    -
    2543# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2544
    -
    2545# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2546#if defined(MFC_OpenACC)
    -
    2547# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2548!$acc exit data delete(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    -
    2549# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2550#elif defined(MFC_OpenMP)
    -
    2551# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2552!$omp target exit data map(release:gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    -
    2553# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2554#endif
    -
    2555# 1397 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2556 deallocate (gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, gs_vc)
    -
    2557 if (bubbles_euler) then
    -
    2558#ifdef MFC_DEBUG
    -
    2559# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2560 block
    -
    2561# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2562 use iso_fortran_env, only: output_unit
    -
    2563# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2564
    -
    2565# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2566 print *, 'm_variables_conversion.fpp:1399: ', '@:DEALLOCATE(bubrs_vc)'
    -
    2567# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2568
    -
    2569# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2570 call flush (output_unit)
    -
    2571# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2572 end block
    -
    2573# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2574#endif
    -
    2575# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2576
    -
    2577# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2578#if defined(MFC_OpenACC)
    -
    2579# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2580!$acc exit data delete(bubrs_vc)
    -
    2581# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2582#elif defined(MFC_OpenMP)
    -
    2583# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2584!$omp target exit data map(release:bubrs_vc)
    -
    2585# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2586#endif
    -
    2587# 1399 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2588 deallocate (bubrs_vc)
    -
    2589 end if
    -
    2590#else
    -
    2591#ifdef MFC_DEBUG
    -
    2592# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2593 block
    -
    2594# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2595 use iso_fortran_env, only: output_unit
    -
    2596# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2597
    -
    2598# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2599 print *, 'm_variables_conversion.fpp:1402: ', '@:DEALLOCATE(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)'
    -
    2600# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2601
    -
    2602# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2603 call flush (output_unit)
    -
    2604# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2605 end block
    -
    2606# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2607#endif
    -
    2608# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2609
    -
    2610# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2611#if defined(MFC_OpenACC)
    -
    2612# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2613!$acc exit data delete(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    -
    2614# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2615#elif defined(MFC_OpenMP)
    -
    2616# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2617!$omp target exit data map(release:gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    -
    2618# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2619#endif
    -
    2620# 1402 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2621 deallocate (gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, gs_vc)
    -
    2622 if (bubbles_euler) then
    -
    2623#ifdef MFC_DEBUG
    -
    2624# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2625 block
    -
    2626# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2627 use iso_fortran_env, only: output_unit
    -
    2628# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2629
    -
    2630# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2631 print *, 'm_variables_conversion.fpp:1404: ', '@:DEALLOCATE(bubrs_vc)'
    -
    2632# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2633
    -
    2634# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2635 call flush (output_unit)
    -
    2636# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2637 end block
    -
    2638# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2639#endif
    -
    2640# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2641
    -
    2642# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2643#if defined(MFC_OpenACC)
    -
    2644# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2645!$acc exit data delete(bubrs_vc)
    -
    2646# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2647#elif defined(MFC_OpenMP)
    -
    2648# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2649!$omp target exit data map(release:bubrs_vc)
    -
    2650# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2651#endif
    -
    2652# 1404 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2653 deallocate (bubrs_vc)
    -
    2654 end if
    -
    2655#endif
    -
    2656
    +
    2513 end subroutine s_compute_species_fraction
    +
    2514
    +
    2515 !> @brief Deallocates fluid property arrays and post-processing fields allocated during module initialization.
    +
    + +
    2517
    +
    2518 ! Deallocating the density, the specific heat ratio function and the
    +
    2519 ! liquid stiffness function
    +
    2520#ifdef MFC_POST_PROCESS
    +
    2521 deallocate (rho_sf, gamma_sf, pi_inf_sf, qv_sf)
    +
    2522#endif
    +
    2523
    +
    2524#ifdef MFC_SIMULATION
    +
    2525#ifdef MFC_DEBUG
    +
    2526# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2527 block
    +
    2528# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2529 use iso_fortran_env, only: output_unit
    +
    2530# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2531
    +
    2532# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2533 print *, 'm_variables_conversion.fpp:1396: ', '@:DEALLOCATE(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)'
    +
    2534# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2535
    +
    2536# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2537 call flush (output_unit)
    +
    2538# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2539 end block
    +
    2540# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2541#endif
    +
    2542# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2543
    +
    2544# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2545#if defined(MFC_OpenACC)
    +
    2546# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2547!$acc exit data delete(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    +
    2548# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2549#elif defined(MFC_OpenMP)
    +
    2550# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2551!$omp target exit data map(release:gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    +
    2552# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2553#endif
    +
    2554# 1396 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2555 deallocate (gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, gs_vc)
    +
    2556 if (bubbles_euler) then
    +
    2557#ifdef MFC_DEBUG
    +
    2558# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2559 block
    +
    2560# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2561 use iso_fortran_env, only: output_unit
    +
    2562# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2563
    +
    2564# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2565 print *, 'm_variables_conversion.fpp:1398: ', '@:DEALLOCATE(bubrs_vc)'
    +
    2566# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2567
    +
    2568# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2569 call flush (output_unit)
    +
    2570# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2571 end block
    +
    2572# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2573#endif
    +
    2574# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2575
    +
    2576# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2577#if defined(MFC_OpenACC)
    +
    2578# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2579!$acc exit data delete(bubrs_vc)
    +
    2580# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2581#elif defined(MFC_OpenMP)
    +
    2582# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2583!$omp target exit data map(release:bubrs_vc)
    +
    2584# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2585#endif
    +
    2586# 1398 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2587 deallocate (bubrs_vc)
    +
    2588 end if
    +
    2589#else
    +
    2590#ifdef MFC_DEBUG
    +
    2591# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2592 block
    +
    2593# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2594 use iso_fortran_env, only: output_unit
    +
    2595# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2596
    +
    2597# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2598 print *, 'm_variables_conversion.fpp:1401: ', '@:DEALLOCATE(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)'
    +
    2599# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2600
    +
    2601# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2602 call flush (output_unit)
    +
    2603# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2604 end block
    +
    2605# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2606#endif
    +
    2607# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2608
    +
    2609# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2610#if defined(MFC_OpenACC)
    +
    2611# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2612!$acc exit data delete(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    +
    2613# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2614#elif defined(MFC_OpenMP)
    +
    2615# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2616!$omp target exit data map(release:gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, Gs_vc)
    +
    2617# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2618#endif
    +
    2619# 1401 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2620 deallocate (gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps, gs_vc)
    +
    2621 if (bubbles_euler) then
    +
    2622#ifdef MFC_DEBUG
    +
    2623# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2624 block
    +
    2625# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2626 use iso_fortran_env, only: output_unit
    +
    2627# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2628
    +
    2629# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2630 print *, 'm_variables_conversion.fpp:1403: ', '@:DEALLOCATE(bubrs_vc)'
    +
    2631# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2632
    +
    2633# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2634 call flush (output_unit)
    +
    2635# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2636 end block
    +
    2637# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2638#endif
    +
    2639# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2640
    +
    2641# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2642#if defined(MFC_OpenACC)
    +
    2643# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2644!$acc exit data delete(bubrs_vc)
    +
    2645# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2646#elif defined(MFC_OpenMP)
    +
    2647# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2648!$omp target exit data map(release:bubrs_vc)
    +
    2649# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2650#endif
    +
    2651# 1403 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2652 deallocate (bubrs_vc)
    +
    2653 end if
    +
    2654#endif
    +
    2655
    - -
    2658
    -
    2659#ifndef MFC_PRE_PROCESS
    -
    2660 !> @brief Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state models.
    -
    -
    2661 subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, H, adv, vel_sum, c_c, c, qv)
    -
    2662
    -
    2663# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2664#if MFC_OpenACC
    -
    2665# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2666!$acc routine seq
    -
    2667# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2668#elif MFC_OpenMP
    -
    2669# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2670
    -
    2671# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2672
    -
    2673# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2674!$omp declare target device_type(any)
    -
    2675# 1413 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2676#endif
    -
    2677
    -
    2678 real(wp), intent(in) :: pres
    -
    2679 real(wp), intent(in) :: rho, gamma, pi_inf, qv
    -
    2680 real(wp), intent(in) :: H
    -
    2681# 1421 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2682 real(wp), dimension(num_fluids), intent(in) :: adv
    -
    2683# 1423 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2684 real(wp), intent(in) :: vel_sum
    -
    2685 real(wp), intent(in) :: c_c
    -
    2686 real(wp), intent(out) :: c
    -
    2687
    -
    2688 real(wp) :: blkmod1, blkmod2
    -
    2689
    -
    2690 integer :: q
    -
    2691
    -
    2692 if (chemistry) then
    -
    2693 if (avg_state == 1 .and. abs(c_c) > verysmall) then
    -
    2694 c = sqrt(c_c - (gamma - 1.0_wp)*(vel_sum - h))
    -
    2695 else
    -
    2696 c = sqrt((1.0_wp + 1.0_wp/gamma)*pres/rho)
    -
    2697 end if
    -
    2698 elseif (relativity) then
    -
    2699 ! Only supports perfect gas for now
    -
    2700 c = sqrt((1._wp + 1._wp/gamma)*pres/rho/h)
    -
    2701 else
    -
    2702 if (alt_soundspeed) then
    -
    2703 blkmod1 = ((gammas(1) + 1._wp)*pres + &
    -
    2704 pi_infs(1))/gammas(1)
    -
    2705 blkmod2 = ((gammas(2) + 1._wp)*pres + &
    -
    2706 pi_infs(2))/gammas(2)
    -
    2707 c = (1._wp/(rho*(adv(1)/blkmod1 + adv(2)/blkmod2)))
    -
    2708 elseif (model_eqns == 3) then
    -
    2709 c = 0._wp
    -
    2710
    -
    2711# 1449 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2712#if defined(MFC_OpenACC)
    -
    2713# 1449 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2714!$acc loop seq
    -
    2715# 1449 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2716#elif defined(MFC_OpenMP)
    -
    2717# 1449 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2718
    -
    2719# 1449 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2720#endif
    -
    2721 do q = 1, num_fluids
    -
    2722 c = c + adv(q)*gs_min(q)* &
    -
    2723 (pres + pi_infs(q)/(gammas(q) + 1._wp))
    -
    2724 end do
    -
    2725 c = c/rho
    -
    2726 elseif (((model_eqns == 4) .or. (model_eqns == 2 .and. bubbles_euler))) then
    -
    2727 ! Sound speed for bubble mixture to order O(\alpha)
    -
    2728
    -
    2729 if (mpp_lim .and. (num_fluids > 1)) then
    -
    2730 c = (1._wp/gamma + 1._wp)* &
    -
    2731 (pres + pi_inf/(gamma + 1._wp))/rho
    -
    2732 else
    -
    2733 c = &
    -
    2734 (1._wp/gamma + 1._wp)* &
    -
    2735 (pres + pi_inf/(gamma + 1._wp))/ &
    -
    2736 (rho*(1._wp - adv(num_fluids)))
    -
    2737 end if
    -
    2738 else
    -
    2739 c = (h - 5.e-1*vel_sum - qv/rho)/gamma
    -
    2740 end if
    -
    2741
    -
    2742 if (mixture_err .and. c < 0._wp) then
    -
    2743 c = 100._wp*sgm_eps
    -
    2744 else
    -
    2745 c = sqrt(c)
    -
    2746 end if
    -
    2747 end if
    + +
    2657
    +
    2658#ifndef MFC_PRE_PROCESS
    +
    2659 !> @brief Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state models.
    +
    +
    2660 subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, H, adv, vel_sum, c_c, c, qv)
    +
    2661
    +
    2662# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2663#if MFC_OpenACC
    +
    2664# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2665!$acc routine seq
    +
    2666# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2667#elif MFC_OpenMP
    +
    2668# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2669
    +
    2670# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2671
    +
    2672# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2673!$omp declare target device_type(any)
    +
    2674# 1412 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2675#endif
    +
    2676
    +
    2677 real(wp), intent(in) :: pres
    +
    2678 real(wp), intent(in) :: rho, gamma, pi_inf, qv
    +
    2679 real(wp), intent(in) :: H
    +
    2680# 1420 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2681 real(wp), dimension(num_fluids), intent(in) :: adv
    +
    2682# 1422 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2683 real(wp), intent(in) :: vel_sum
    +
    2684 real(wp), intent(in) :: c_c
    +
    2685 real(wp), intent(out) :: c
    +
    2686
    +
    2687 real(wp) :: blkmod1, blkmod2
    +
    2688
    +
    2689 integer :: q
    +
    2690
    +
    2691 if (chemistry) then
    +
    2692 if (avg_state == 1 .and. abs(c_c) > verysmall) then
    +
    2693 c = sqrt(c_c - (gamma - 1.0_wp)*(vel_sum - h))
    +
    2694 else
    +
    2695 c = sqrt((1.0_wp + 1.0_wp/gamma)*pres/rho)
    +
    2696 end if
    +
    2697 elseif (relativity) then
    +
    2698 ! Only supports perfect gas for now
    +
    2699 c = sqrt((1._wp + 1._wp/gamma)*pres/rho/h)
    +
    2700 else
    +
    2701 if (alt_soundspeed) then
    +
    2702 blkmod1 = ((gammas(1) + 1._wp)*pres + &
    +
    2703 pi_infs(1))/gammas(1)
    +
    2704 blkmod2 = ((gammas(2) + 1._wp)*pres + &
    +
    2705 pi_infs(2))/gammas(2)
    +
    2706 c = (1._wp/(rho*(adv(1)/blkmod1 + adv(2)/blkmod2)))
    +
    2707 elseif (model_eqns == 3) then
    +
    2708 c = 0._wp
    +
    2709
    +
    2710# 1448 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2711#if defined(MFC_OpenACC)
    +
    2712# 1448 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2713!$acc loop seq
    +
    2714# 1448 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2715#elif defined(MFC_OpenMP)
    +
    2716# 1448 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2717
    +
    2718# 1448 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2719#endif
    +
    2720 do q = 1, num_fluids
    +
    2721 c = c + adv(q)*gs_min(q)* &
    +
    2722 (pres + pi_infs(q)/(gammas(q) + 1._wp))
    +
    2723 end do
    +
    2724 c = c/rho
    +
    2725 elseif (((model_eqns == 4) .or. (model_eqns == 2 .and. bubbles_euler))) then
    +
    2726 ! Sound speed for bubble mixture to order O(\alpha)
    +
    2727
    +
    2728 if (mpp_lim .and. (num_fluids > 1)) then
    +
    2729 c = (1._wp/gamma + 1._wp)* &
    +
    2730 (pres + pi_inf/(gamma + 1._wp))/rho
    +
    2731 else
    +
    2732 c = &
    +
    2733 (1._wp/gamma + 1._wp)* &
    +
    2734 (pres + pi_inf/(gamma + 1._wp))/ &
    +
    2735 (rho*(1._wp - adv(num_fluids)))
    +
    2736 end if
    +
    2737 else
    +
    2738 c = (h - 5.e-1*vel_sum - qv/rho)/gamma
    +
    2739 end if
    +
    2740
    +
    2741 if (mixture_err .and. c < 0._wp) then
    +
    2742 c = 100._wp*sgm_eps
    +
    2743 else
    +
    2744 c = sqrt(c)
    +
    2745 end if
    +
    2746 end if
    -
    2748 end subroutine s_compute_speed_of_sound
    -
    2749#endif
    -
    2750
    -
    2751#ifndef MFC_PRE_PROCESS
    -
    2752 !> @brief Computes the fast magnetosonic wave speed from the sound speed, density, and magnetic field components.
    -
    -
    2753 subroutine s_compute_fast_magnetosonic_speed(rho, c, B, norm, c_fast, h)
    -
    2754
    -
    2755# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2756#ifdef _CRAYFTN
    -
    2757# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2758!DIR$ INLINEALWAYS s_compute_fast_magnetosonic_speed
    -
    2759# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2760#elif MFC_OpenACC
    -
    2761# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2762!$acc routine seq
    -
    2763# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2764#elif MFC_OpenMP
    -
    2765# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2766
    -
    2767# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2768
    -
    2769# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2770!$omp declare target device_type(any)
    -
    2771# 1483 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2772#endif
    -
    2773# 1485 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    -
    2774
    -
    2775 real(wp), intent(in) :: B(3), rho, c
    -
    2776 real(wp), intent(in) :: h ! only used for relativity
    -
    2777 real(wp), intent(out) :: c_fast
    -
    2778 integer, intent(in) :: norm
    -
    2779
    -
    2780 real(wp) :: B2, term, disc
    -
    2781
    -
    2782 b2 = sum(b**2)
    -
    2783
    -
    2784 if (.not. relativity) then
    -
    2785 term = c**2 + b2/rho
    -
    2786 disc = term**2 - 4*c**2*(b(norm)**2/rho)
    -
    2787 else
    -
    2788 ! Note: this is approximation for the non-relatisitic limit; accurate solution requires solving a quartic equation
    -
    2789 term = (c**2*(b(norm)**2 + rho*h) + b2)/(rho*h + b2)
    -
    2790 disc = term**2 - 4*c**2*b(norm)**2/(rho*h + b2)
    -
    2791 end if
    -
    2792
    -
    2793#ifdef DEBUG
    -
    2794 if (disc < 0._wp) then
    -
    2795 print *, 'rho, c, Bx, By, Bz, h, term, disc:', rho, c, b(1), b(2), b(3), h, term, disc
    -
    2796 call s_mpi_abort('Error: negative discriminant in s_compute_fast_magnetosonic_speed')
    -
    2797 end if
    -
    2798#endif
    -
    2799
    -
    2800 c_fast = sqrt(0.5_wp*(term + sqrt(disc)))
    -
    2801
    +
    2747 end subroutine s_compute_speed_of_sound
    +
    2748#endif
    +
    2749
    +
    2750#ifndef MFC_PRE_PROCESS
    +
    2751 !> @brief Computes the fast magnetosonic wave speed from the sound speed, density, and magnetic field components.
    +
    +
    2752 subroutine s_compute_fast_magnetosonic_speed(rho, c, B, norm, c_fast, h)
    +
    2753
    +
    2754# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2755#ifdef _CRAYFTN
    +
    2756# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2757!DIR$ INLINEALWAYS s_compute_fast_magnetosonic_speed
    +
    2758# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2759#elif MFC_OpenACC
    +
    2760# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2761!$acc routine seq
    +
    2762# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2763#elif MFC_OpenMP
    +
    2764# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2765
    +
    2766# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2767
    +
    2768# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2769!$omp declare target device_type(any)
    +
    2770# 1482 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2771#endif
    +
    2772# 1484 "/home/runner/work/MFC/MFC/src/common/m_variables_conversion.fpp"
    +
    2773
    +
    2774 real(wp), intent(in) :: B(3), rho, c
    +
    2775 real(wp), intent(in) :: h ! only used for relativity
    +
    2776 real(wp), intent(out) :: c_fast
    +
    2777 integer, intent(in) :: norm
    +
    2778
    +
    2779 real(wp) :: B2, term, disc
    +
    2780
    +
    2781 b2 = sum(b**2)
    +
    2782
    +
    2783 if (.not. relativity) then
    +
    2784 term = c**2 + b2/rho
    +
    2785 disc = term**2 - 4*c**2*(b(norm)**2/rho)
    +
    2786 else
    +
    2787 ! Note: this is approximation for the non-relatisitic limit; accurate solution requires solving a quartic equation
    +
    2788 term = (c**2*(b(norm)**2 + rho*h) + b2)/(rho*h + b2)
    +
    2789 disc = term**2 - 4*c**2*b(norm)**2/(rho*h + b2)
    +
    2790 end if
    +
    2791
    +
    2792#ifdef DEBUG
    +
    2793 if (disc < 0._wp) then
    +
    2794 print *, 'rho, c, Bx, By, Bz, h, term, disc:', rho, c, b(1), b(2), b(3), h, term, disc
    +
    2795 call s_mpi_abort('Error: negative discriminant in s_compute_fast_magnetosonic_speed')
    +
    2796 end if
    +
    2797#endif
    +
    2798
    +
    2799 c_fast = sqrt(0.5_wp*(term + sqrt(disc)))
    +
    2800
    - -
    2803#endif
    -
    2804
    -
    2805end module m_variables_conversion
    + +
    2802#endif
    +
    2803
    +
    2804end module m_variables_conversion
    type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
    integer, intent(in) k
    integer, intent(in) j
    @@ -3003,13 +3002,13 @@
    Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
    MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
    Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
    -
    subroutine s_compute_fast_magnetosonic_speed(rho, c, b, norm, c_fast, h)
    Computes the fast magnetosonic wave speed from the sound speed, density, and magnetic field component...
    -
    subroutine, public s_convert_primitive_to_flux_variables(qk_prim_vf, fk_vf, fk_src_vf, is1, is2, is3, s2b, s3b)
    The following subroutine handles the conversion between the primitive variables and the Eulerian flux...
    +
    subroutine s_compute_fast_magnetosonic_speed(rho, c, b, norm, c_fast, h)
    Computes the fast magnetosonic wave speed from the sound speed, density, and magnetic field component...
    +
    subroutine, public s_convert_primitive_to_flux_variables(qk_prim_vf, fk_vf, fk_src_vf, is1, is2, is3, s2b, s3b)
    The following subroutine handles the conversion between the primitive variables and the Eulerian flux...
    real(wp), dimension(:), allocatable, public gammas
    real(wp), dimension(:, :, :), allocatable, public pi_inf_sf
    Scalar liquid stiffness function.
    real(wp), dimension(:), allocatable, public ps_inf
    -
    subroutine, public s_compute_species_fraction(q_vf, k, l, r, alpha_rho_k, alpha_k)
    This subroutine computes partial densities and volume fractions.
    -
    subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, h, adv, vel_sum, c_c, c, qv)
    Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state...
    +
    subroutine, public s_compute_species_fraction(q_vf, k, l, r, alpha_rho_k, alpha_k)
    This subroutine computes partial densities and volume fractions.
    +
    subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, h, adv, vel_sum, c_c, c, qv)
    Computes the speed of sound from thermodynamic state variables, supporting multiple equation-of-state...
    real(wp), dimension(:), allocatable, public gs_min
    real(wp), dimension(:), allocatable, public qvs
    @@ -3034,7 +3033,7 @@
    integer, dimension(:), allocatable bubrs_vc
    real(wp), dimension(:), allocatable gs_vc
    -
    impure subroutine s_finalize_variables_conversion_module()
    Deallocates fluid property arrays and post-processing fields allocated during module initialization.
    +
    impure subroutine s_finalize_variables_conversion_module()
    Deallocates fluid property arrays and post-processing fields allocated during module initialization.
    subroutine, public s_convert_to_mixture_variables(q_vf, i, j, k, rho, gamma, pi_inf, qv, re_k, g_k, g)
    Dispatch to the s_convert_mixture_to_mixture_variables and s_convert_species_to_mixture_variables sub...
    subroutine, public s_convert_species_to_mixture_variables_acc(rho_k, gamma_k, pi_inf_k, qv_k, alpha_k, alpha_rho_k, re_k, g_k, g)
    GPU-accelerated conversion of species volume fractions and partial densities to mixture density,...
    diff --git a/simulation/namespacem__global__parameters.html b/simulation/namespacem__global__parameters.html index 5b19b27ef..4380dda19 100644 --- a/simulation/namespacem__global__parameters.html +++ b/simulation/namespacem__global__parameters.html @@ -302,18 +302,18 @@ logical bf_y logical bf_z  body force toggle in three directions amplitude, frequency, and phase shift sinusoid in each direction
    -real(wpk_x -real(wpg_x -real(wpw_x -real(wpp_x -real(wpk_z real(wpg_z -real(wpw_z +real(wpk_z real(wpp_z -real(wpk_y +real(wpw_z real(wpg_y -real(wpw_y +real(wpk_y real(wpp_y +real(wpw_y +real(wpg_x +real(wpk_x +real(wpp_x +real(wpw_x real(wp), dimension(3) accel_bf integer cpu_start integer cpu_end @@ -2127,7 +2127,7 @@

    -

    Definition at line 498 of file m_global_parameters.fpp.f90.

    +

    Definition at line 516 of file m_global_parameters.fpp.f90.

    @@ -2143,7 +2143,7 @@

    -

    Definition at line 518 of file m_global_parameters.fpp.f90.

    +

    Definition at line 506 of file m_global_parameters.fpp.f90.

    @@ -2159,7 +2159,7 @@

    -

    Definition at line 508 of file m_global_parameters.fpp.f90.

    +

    Definition at line 496 of file m_global_parameters.fpp.f90.

    @@ -2765,7 +2765,7 @@

    -

    Definition at line 496 of file m_global_parameters.fpp.f90.

    +

    Definition at line 518 of file m_global_parameters.fpp.f90.

    @@ -2781,7 +2781,7 @@

    -

    Definition at line 516 of file m_global_parameters.fpp.f90.

    +

    Definition at line 508 of file m_global_parameters.fpp.f90.

    @@ -2797,7 +2797,7 @@

    -

    Definition at line 506 of file m_global_parameters.fpp.f90.

    +

    Definition at line 498 of file m_global_parameters.fpp.f90.

    @@ -3873,7 +3873,7 @@

    -

    Definition at line 502 of file m_global_parameters.fpp.f90.

    +

    Definition at line 520 of file m_global_parameters.fpp.f90.

    @@ -3889,7 +3889,7 @@

    -

    Definition at line 522 of file m_global_parameters.fpp.f90.

    +

    Definition at line 510 of file m_global_parameters.fpp.f90.

    @@ -3905,7 +3905,7 @@

    -

    Definition at line 512 of file m_global_parameters.fpp.f90.

    +

    Definition at line 500 of file m_global_parameters.fpp.f90.

    @@ -5279,7 +5279,7 @@

    -

    Definition at line 500 of file m_global_parameters.fpp.f90.

    +

    Definition at line 522 of file m_global_parameters.fpp.f90.

    @@ -5295,7 +5295,7 @@

    -

    Definition at line 520 of file m_global_parameters.fpp.f90.

    +

    Definition at line 512 of file m_global_parameters.fpp.f90.

    @@ -5311,7 +5311,7 @@

    -

    Definition at line 510 of file m_global_parameters.fpp.f90.

    +

    Definition at line 502 of file m_global_parameters.fpp.f90.

    diff --git a/simulation/namespacem__mpi__common.html b/simulation/namespacem__mpi__common.html index 3a7469520..c863362e2 100644 --- a/simulation/namespacem__mpi__common.html +++ b/simulation/namespacem__mpi__common.html @@ -262,7 +262,7 @@

    Definition at line 3030 of file m_mpi_common.fpp.f90.

    +

    Definition at line 3028 of file m_mpi_common.fpp.f90.

    Here is the caller graph for this function:
    @@ -821,7 +821,7 @@

    Definition at line 2853 of file m_mpi_common.fpp.f90.

    +

    Definition at line 2851 of file m_mpi_common.fpp.f90.

    @@ -878,6 +878,11 @@

    Definition at line 1035 of file m_mpi_common.fpp.f90.

    +
    +Here is the call graph for this function:
    +
    +
    +
    diff --git a/simulation/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.map b/simulation/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.map index 214781b45..20534aa33 100644 --- a/simulation/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.map +++ b/simulation/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.map @@ -1,33 +1,35 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/simulation/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.md5 b/simulation/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.md5 index 5f5ea5f77..66e1ba3a4 100644 --- a/simulation/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.md5 +++ b/simulation/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.md5 @@ -1 +1 @@ -f01dee8269a0ae512a16c39aeb70dae9 \ No newline at end of file +d60c732c0842eae3d4cd4ad8a80cc136 \ No newline at end of file diff --git a/simulation/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.svg b/simulation/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.svg index 39a82a067..9a6a28d42 100644 --- a/simulation/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.svg +++ b/simulation/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph.svg @@ -4,7 +4,7 @@ - + @@ -48,7 +48,7 @@ @@ -59,9 +59,9 @@ var sectionId = 'dynsection-5'; Node1 - -m_mpi_common::s_mpi -_abort + +m_mpi_common::s_mpi +_abort @@ -69,9 +69,9 @@ var sectionId = 'dynsection-5'; Node2 - -m_start_up::s_check -_input_file + +m_start_up::s_check +_input_file @@ -79,8 +79,8 @@ var sectionId = 'dynsection-5'; Node1->Node2 - - + + @@ -88,10 +88,10 @@ var sectionId = 'dynsection-5'; Node5 - -m_mpi_common::s_mpi -_decompose_computational -_domain + +m_mpi_common::s_mpi +_decompose_computational +_domain @@ -99,18 +99,19 @@ var sectionId = 'dynsection-5'; Node1->Node5 - - + + Node6 - - -m_start_up::s_perform -_time_step + + +m_mpi_common::s_mpi +_sendrecv_variables +_buffers @@ -118,37 +119,37 @@ var sectionId = 'dynsection-5'; Node1->Node6 - - + + Node7 - - -m_mpi_common::s_prohibit -_abort + + +m_start_up::s_perform +_time_step - + Node1->Node7 - - - + + + Node8 - - -m_start_up::s_read -_input_file + + +m_mpi_common::s_prohibit +_abort @@ -156,64 +157,83 @@ var sectionId = 'dynsection-5'; Node1->Node8 - - + + Node9 - - -m_start_up::s_read -_parallel_data_files + + +m_start_up::s_read +_input_file - + Node1->Node9 - - - + + + - - -Node12 - - -m_start_up::s_read -_serial_data_files + + +Node10 + + +m_start_up::s_read +_parallel_data_files - - -Node1->Node12 - - - + + +Node1->Node10 + + + Node13 - - -m_start_up::s_save_data + + +m_start_up::s_read +_serial_data_files - + Node1->Node13 - - - + + + + + + + + +Node14 + + +m_start_up::s_save_data + + + + + +Node1->Node14 + + + @@ -221,9 +241,9 @@ var sectionId = 'dynsection-5'; Node3 - -m_start_up::s_initialize -_mpi_domain + +m_start_up::s_initialize +_mpi_domain @@ -231,8 +251,8 @@ var sectionId = 'dynsection-5'; Node2->Node3 - - + + @@ -240,8 +260,8 @@ var sectionId = 'dynsection-5'; Node4 - -p_main + +p_main @@ -249,8 +269,8 @@ var sectionId = 'dynsection-5'; Node3->Node4 - - + + @@ -258,55 +278,36 @@ var sectionId = 'dynsection-5'; Node5->Node3 - - - - - - - -Node6->Node4 - - - + + - - -Node8->Node3 - - - + + +Node7->Node4 + + + - - -Node10 - - -m_start_up::s_read -_data_files - - - - - -Node9->Node10 - - - + + +Node9->Node3 + + + Node11 - - -m_start_up::s_initialize -_modules + + +m_start_up::s_read +_data_files @@ -314,35 +315,54 @@ var sectionId = 'dynsection-5'; Node10->Node11 - - + + + + + + + +Node12 + + +m_start_up::s_initialize +_modules + + + + + +Node11->Node12 + + + - - -Node11->Node4 - - - + + +Node12->Node4 + + + - - -Node12->Node10 - - - + + +Node13->Node11 + + + - - -Node13->Node4 - - - + + +Node14->Node4 + + + diff --git a/simulation/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph_org.svg b/simulation/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph_org.svg index 5a83819b5..5ed4a4a57 100644 --- a/simulation/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph_org.svg +++ b/simulation/namespacem__mpi__common_a04cfc0bdb377a0ce2f9fd478e4bb3807_icgraph_org.svg @@ -4,17 +4,17 @@ - - + + m_mpi_common::s_mpi_abort Node1 - -m_mpi_common::s_mpi -_abort + +m_mpi_common::s_mpi +_abort @@ -22,9 +22,9 @@ Node2 - -m_start_up::s_check -_input_file + +m_start_up::s_check +_input_file @@ -32,8 +32,8 @@ Node1->Node2 - - + + @@ -41,10 +41,10 @@ Node5 - -m_mpi_common::s_mpi -_decompose_computational -_domain + +m_mpi_common::s_mpi +_decompose_computational +_domain @@ -52,18 +52,19 @@ Node1->Node5 - - + + Node6 - - -m_start_up::s_perform -_time_step + + +m_mpi_common::s_mpi +_sendrecv_variables +_buffers @@ -71,37 +72,37 @@ Node1->Node6 - - + + Node7 - - -m_mpi_common::s_prohibit -_abort + + +m_start_up::s_perform +_time_step - + Node1->Node7 - - - + + + Node8 - - -m_start_up::s_read -_input_file + + +m_mpi_common::s_prohibit +_abort @@ -109,64 +110,83 @@ Node1->Node8 - - + + Node9 - - -m_start_up::s_read -_parallel_data_files + + +m_start_up::s_read +_input_file - + Node1->Node9 - - - + + + - - -Node12 - - -m_start_up::s_read -_serial_data_files + + +Node10 + + +m_start_up::s_read +_parallel_data_files - - -Node1->Node12 - - - + + +Node1->Node10 + + + Node13 - - -m_start_up::s_save_data + + +m_start_up::s_read +_serial_data_files - + Node1->Node13 - - - + + + + + + + + +Node14 + + +m_start_up::s_save_data + + + + + +Node1->Node14 + + + @@ -174,9 +194,9 @@ Node3 - -m_start_up::s_initialize -_mpi_domain + +m_start_up::s_initialize +_mpi_domain @@ -184,8 +204,8 @@ Node2->Node3 - - + + @@ -193,8 +213,8 @@ Node4 - -p_main + +p_main @@ -202,8 +222,8 @@ Node3->Node4 - - + + @@ -211,55 +231,36 @@ Node5->Node3 - - - - - - - -Node6->Node4 - - - + + - - -Node8->Node3 - - - + + +Node7->Node4 + + + - - -Node10 - - -m_start_up::s_read -_data_files - - - - - -Node9->Node10 - - - + + +Node9->Node3 + + + Node11 - - -m_start_up::s_initialize -_modules + + +m_start_up::s_read +_data_files @@ -267,35 +268,54 @@ Node10->Node11 - - + + + + + + + +Node12 + + +m_start_up::s_initialize +_modules + + + + + +Node11->Node12 + + + - - -Node11->Node4 - - - + + +Node12->Node4 + + + - - -Node12->Node10 - - - + + +Node13->Node11 + + + - - -Node13->Node4 - - - + + +Node14->Node4 + + + diff --git a/simulation/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.map b/simulation/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.map new file mode 100644 index 000000000..cdcf1b3ab --- /dev/null +++ b/simulation/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/simulation/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.md5 b/simulation/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.md5 new file mode 100644 index 000000000..cbdcdb751 --- /dev/null +++ b/simulation/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.md5 @@ -0,0 +1 @@ +25af549a2b06a4e4df13ab03bd543174 \ No newline at end of file diff --git a/simulation/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.svg b/simulation/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.svg new file mode 100644 index 000000000..a92d8516a --- /dev/null +++ b/simulation/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + +m_mpi_common::s_mpi_sendrecv_variables_buffers + + +Node1 + + +m_mpi_common::s_mpi +_sendrecv_variables +_buffers + + + + + +Node2 + + +m_mpi_common::s_mpi +_abort + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/simulation/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph_org.svg b/simulation/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph_org.svg new file mode 100644 index 000000000..bbc5540cd --- /dev/null +++ b/simulation/namespacem__mpi__common_a489959387c97e03d8e09eba0ed6280ec_cgraph_org.svg @@ -0,0 +1,42 @@ + + + + + + +m_mpi_common::s_mpi_sendrecv_variables_buffers + + +Node1 + + +m_mpi_common::s_mpi +_sendrecv_variables +_buffers + + + + + +Node2 + + +m_mpi_common::s_mpi +_abort + + + + + +Node1->Node2 + + + + + + + + diff --git a/simulation/namespacem__variables__conversion.html b/simulation/namespacem__variables__conversion.html index 90a849f02..c9b22a167 100644 --- a/simulation/namespacem__variables__conversion.html +++ b/simulation/namespacem__variables__conversion.html @@ -265,7 +265,7 @@

    Definition at line 2753 of file m_variables_conversion.fpp.f90.

    +

    Definition at line 2752 of file m_variables_conversion.fpp.f90.

    Here is the caller graph for this function:
    @@ -424,7 +424,7 @@

    Definition at line 2450 of file m_variables_conversion.fpp.f90.

    +

    Definition at line 2449 of file m_variables_conversion.fpp.f90.

    Here is the caller graph for this function:
    @@ -494,7 +494,7 @@

    Definition at line 2661 of file m_variables_conversion.fpp.f90.

    +

    Definition at line 2660 of file m_variables_conversion.fpp.f90.

    Here is the caller graph for this function:
    @@ -731,7 +731,7 @@

    Definition at line 2140 of file m_variables_conversion.fpp.f90.

    +

    Definition at line 2139 of file m_variables_conversion.fpp.f90.

    Here is the call graph for this function:
    @@ -1011,7 +1011,7 @@

    Definition at line 2517 of file m_variables_conversion.fpp.f90.

    +

    Definition at line 2516 of file m_variables_conversion.fpp.f90.

    Here is the caller graph for this function:
    diff --git a/sitemap.xml b/sitemap.xml index c96f74f80..00d44017d 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,3790 +2,3790 @@ https://mflowcode.github.io/ -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/404.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/api/ -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/api/doxygen_crawl.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/api/graph_legend.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/ -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/architecture.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/authors.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/case.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/case_constraints.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/citelist.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/cli-reference.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/contributing.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/docker.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/doxygen_crawl.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/equations.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/examples.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/expectedPerformance.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/getting-started.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/gpuParallelization.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/graph_legend.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/pages.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/papers.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/parameters.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/physics_constraints.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/running.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/testing.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/troubleshooting.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/documentation/visualization.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/ -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/annotated.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/classes.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/doxygen_crawl.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/files.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_b.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_c.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_d.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_e.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_f.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_func.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_g.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_h.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_i.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_k.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_l.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_m.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_n.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_o.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_p.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_q.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_r.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_s.html -2026-02-26T00:28:10+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_t.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_v.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars_b.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars_c.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars_d.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars_e.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars_f.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars_g.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars_h.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars_i.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars_k.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars_l.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars_m.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars_n.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars_o.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars_p.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars_q.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:00+00:00 https://mflowcode.github.io/post_process/functions_vars_r.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/functions_vars_s.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/functions_vars_t.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/functions_vars_v.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/functions_vars_w.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/functions_vars_x.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/functions_vars_y.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/functions_vars_z.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/functions_w.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/functions_x.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/functions_y.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/functions_z.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/globals.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/globals_func.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/globals_vars.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/graph_legend.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/interfacem__data__input_1_1s__read__abstract__data__files-members.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/interfacem__data__input_1_1s__read__abstract__data__files.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/interfacem__nvtx_1_1nvtxrangepop-members.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/interfacem__nvtx_1_1nvtxrangepop.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/interfacem__nvtx_1_1nvtxrangepush-members.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/interfacem__nvtx_1_1nvtxrangepush.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__boundary__common_8fpp_8f90.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__boundary__common_8fpp_8f90_source.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__checker_8fpp_8f90.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__checker_8fpp_8f90_source.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__checker__common_8fpp_8f90.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__checker__common_8fpp_8f90_source.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__chemistry_8fpp_8f90.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__chemistry_8fpp_8f90_source.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__compile__specific_8f90.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__compile__specific_8f90_source.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__constants_8fpp_8f90.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__constants_8fpp_8f90_source.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__data__input_8f90.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__data__input_8f90_source.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__data__output_8fpp_8f90.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__data__output_8fpp_8f90_source.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__delay__file__access_8f90.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__delay__file__access_8f90_source.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__derived__types_8fpp_8f90.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__derived__types_8fpp_8f90_source.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__derived__variables_8fpp_8f90.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__derived__variables_8fpp_8f90_source.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__finite__differences_8fpp_8f90.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__finite__differences_8fpp_8f90_source.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__global__parameters_8fpp_8f90.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__global__parameters_8fpp_8f90_source.html -2026-02-26T00:28:11+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__helper_8fpp_8f90.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__helper_8fpp_8f90_source.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__helper__basic_8fpp_8f90.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__helper__basic_8fpp_8f90_source.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__model_8fpp_8f90.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__model_8fpp_8f90_source.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__mpi__common_8fpp_8f90.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__mpi__common_8fpp_8f90_source.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__mpi__proxy_8fpp_8f90.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__mpi__proxy_8fpp_8f90_source.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__nvtx_8f90.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__nvtx_8f90_source.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__phase__change_8fpp_8f90.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__phase__change_8fpp_8f90_source.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__precision__select_8f90.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__precision__select_8f90_source.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__start__up_8fpp_8f90.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__start__up_8fpp_8f90_source.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__variables__conversion_8fpp_8f90.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/m__variables__conversion_8fpp_8f90_source.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/namespacem__boundary__common.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/namespacem__checker.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/namespacem__checker__common.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/namespacem__chemistry.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/namespacem__compile__specific.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/namespacem__constants.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:01+00:00 https://mflowcode.github.io/post_process/namespacem__data__input.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacem__data__output.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacem__delay__file__access.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacem__derived__types.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacem__derived__variables.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacem__finite__differences.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacem__global__parameters.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacem__helper.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacem__helper__basic.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacem__model.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacem__mpi__common.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacem__mpi__proxy.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacem__nvtx.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacem__phase__change.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacem__precision__select.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacem__start__up.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacem__variables__conversion.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_b.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_c.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_d.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_e.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_f.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_func.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_func_c.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_func_d.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_func_f.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_func_m.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_func_n.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_func_s.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_func_u.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_g.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_h.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_i.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_k.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_l.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_m.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_n.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_o.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_p.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_q.html -2026-02-26T00:28:12+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_r.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_s.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_t.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_u.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_v.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_b.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_c.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_d.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_e.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_f.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_g.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_h.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_i.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_k.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_l.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_m.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_n.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_o.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_p.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_q.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_r.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_s.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_t.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_v.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_w.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_x.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_y.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_vars_z.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_w.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_x.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_y.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespacemembers_z.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:02+00:00 https://mflowcode.github.io/post_process/namespaces.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/p__main_8fpp_8f90.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/p__main_8fpp_8f90_source.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/readme_8md.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1acoustic__parameters-members.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1acoustic__parameters.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1bc__patch__parameters-members.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1bc__patch__parameters.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1bounds__info-members.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1bounds__info.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1bub__bounds__info-members.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1bub__bounds__info.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1bubbles__lagrange__parameters-members.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1bubbles__lagrange__parameters.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1cell__num__bounds-members.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1cell__num__bounds.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1chemistry__parameters-members.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1chemistry__parameters.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1field__position-members.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1field__position.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1ghost__point-members.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1ghost__point.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1ib__patch__parameters-members.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1ib__patch__parameters.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1ic__model__parameters-members.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1ic__model__parameters.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1ic__patch__parameters-members.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1ic__patch__parameters.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1int__bounds__info-members.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1int__bounds__info.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1integer__field-members.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1integer__field.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1integral__parameters-members.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1integral__parameters.html -2026-02-26T00:28:13+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1levelset__field-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1levelset__field.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1levelset__norm__field-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1levelset__norm__field.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1mpi__io__airfoil__ib__var-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1mpi__io__airfoil__ib__var.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1mpi__io__ib__var-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1mpi__io__ib__var.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1mpi__io__levelset__norm__var-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1mpi__io__levelset__norm__var.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1mpi__io__levelset__var-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1mpi__io__levelset__var.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1mpi__io__var-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1mpi__io__var.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1physical__parameters-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1physical__parameters.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1pres__field-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1pres__field.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1riemann__states-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1riemann__states.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1riemann__states__vec3-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1riemann__states__vec3.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1scalar__field-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1scalar__field.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1simplex__noise__params-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1simplex__noise__params.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1source__spatial__type-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1source__spatial__type.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1species__parameters-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1species__parameters.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1subgrid__bubble__physical__parameters-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1subgrid__bubble__physical__parameters.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1t__bbox-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1t__bbox.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1t__model-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1t__model.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1t__model__array-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1t__model__array.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1t__ray-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:03+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1t__ray.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1t__triangle-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1t__triangle.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1vec3__dt-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1vec3__dt.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1vector__field-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/post_process/structm__derived__types_1_1vector__field.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/post_process/structm__nvtx_1_1nvtxeventattributes-members.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/post_process/structm__nvtx_1_1nvtxeventattributes.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/ -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/annotated.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/classes.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/doxygen_crawl.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/files.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_b.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_c.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_d.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_e.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_f.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_func.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_g.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_h.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_i.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_k.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_l.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_m.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_n.html -2026-02-26T00:28:14+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_o.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_p.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_q.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_r.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_s.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_t.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_v.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_b.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_c.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_d.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_e.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_f.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_g.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_h.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_i.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_k.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_l.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_m.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_n.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_o.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_p.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_q.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_r.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_s.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_t.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_v.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_w.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_x.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_y.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_vars_z.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_w.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_x.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_y.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/functions_z.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/globals.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/globals_func.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/globals_vars.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/graph_legend.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/interfacem__assign__variables_1_1s__assign__patch__xxxxx__primitive__variables-members.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/interfacem__assign__variables_1_1s__assign__patch__xxxxx__primitive__variables.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/interfacem__data__output_1_1s__write__abstract__data__files-members.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/interfacem__data__output_1_1s__write__abstract__data__files.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/interfacem__grid_1_1s__generate__abstract__grid-members.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/interfacem__grid_1_1s__generate__abstract__grid.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/interfacem__nvtx_1_1nvtxrangepop-members.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:04+00:00 https://mflowcode.github.io/pre_process/interfacem__nvtx_1_1nvtxrangepop.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/interfacem__nvtx_1_1nvtxrangepush-members.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/interfacem__nvtx_1_1nvtxrangepush.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/interfacem__start__up_1_1s__read__abstract__grid__data__files-members.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/interfacem__start__up_1_1s__read__abstract__grid__data__files.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/interfacem__start__up_1_1s__read__abstract__ic__data__files-members.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/interfacem__start__up_1_1s__read__abstract__ic__data__files.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__assign__variables_8fpp_8f90.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__assign__variables_8fpp_8f90_source.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__boundary__common_8fpp_8f90.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__boundary__common_8fpp_8f90_source.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__boundary__conditions_8fpp_8f90.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__boundary__conditions_8fpp_8f90_source.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__check__ib__patches_8fpp_8f90.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__check__ib__patches_8fpp_8f90_source.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__check__patches_8fpp_8f90.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__check__patches_8fpp_8f90_source.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__checker_8fpp_8f90.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__checker_8fpp_8f90_source.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__checker__common_8fpp_8f90.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__checker__common_8fpp_8f90_source.html -2026-02-26T00:28:15+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__chemistry_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__chemistry_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__compile__specific_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__compile__specific_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__constants_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__constants_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__data__output_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__data__output_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__delay__file__access_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__delay__file__access_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__derived__types_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__derived__types_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__finite__differences_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__finite__differences_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__global__parameters_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__global__parameters_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__grid_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__grid_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__helper_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__helper_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__helper__basic_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__helper__basic_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__icpp__patches_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__icpp__patches_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__initial__condition_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__initial__condition_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__model_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__model_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__mpi__common_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__mpi__common_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__mpi__proxy_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__mpi__proxy_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__nvtx_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__nvtx_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__perturbation_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__perturbation_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__phase__change_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__phase__change_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__precision__select_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__precision__select_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__simplex__noise_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__simplex__noise_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__start__up_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__start__up_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__variables__conversion_8fpp_8f90.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/m__variables__conversion_8fpp_8f90_source.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/namespacem__assign__variables.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/namespacem__boundary__common.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/namespacem__boundary__conditions.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/namespacem__check__ib__patches.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/namespacem__check__patches.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/namespacem__checker.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:05+00:00 https://mflowcode.github.io/pre_process/namespacem__checker__common.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__chemistry.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__compile__specific.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__constants.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__data__output.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__delay__file__access.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__derived__types.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__finite__differences.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__global__parameters.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__grid.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__helper.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__helper__basic.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__icpp__patches.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__initial__condition.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__model.html -2026-02-26T00:28:16+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__mpi__common.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__mpi__proxy.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__nvtx.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__perturbation.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__phase__change.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__precision__select.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__simplex__noise.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__start__up.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacem__variables__conversion.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_b.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_c.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_d.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_e.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_f.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_func.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_func_c.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_func_d.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_func_f.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_func_m.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_func_n.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_func_s.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_func_u.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_g.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_h.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_i.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_k.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_l.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_m.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_n.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_o.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_p.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_q.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_r.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_s.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_t.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_u.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_v.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_b.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_c.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_d.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_e.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_f.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_g.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_h.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_i.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_k.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_l.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_m.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_n.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_o.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_p.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_q.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_r.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_s.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_t.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_v.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:06+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_w.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_x.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_y.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/namespacemembers_vars_z.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/namespacemembers_w.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/namespacemembers_x.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/namespacemembers_y.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/namespacemembers_z.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/namespaces.html -2026-02-26T00:28:17+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/p__main_8f90.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/p__main_8f90_source.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/readme_8md.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1acoustic__parameters-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1acoustic__parameters.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1bc__patch__parameters-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1bc__patch__parameters.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1bounds__info-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1bounds__info.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1bub__bounds__info-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1bub__bounds__info.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1bubbles__lagrange__parameters-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1bubbles__lagrange__parameters.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1cell__num__bounds-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1cell__num__bounds.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1chemistry__parameters-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1chemistry__parameters.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1field__position-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1field__position.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1ghost__point-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1ghost__point.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1ib__patch__parameters-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1ib__patch__parameters.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1ic__model__parameters-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1ic__model__parameters.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1ic__patch__parameters-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1ic__patch__parameters.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1int__bounds__info-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1int__bounds__info.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1integer__field-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1integer__field.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1integral__parameters-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1integral__parameters.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1levelset__field-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1levelset__field.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1levelset__norm__field-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1levelset__norm__field.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1mpi__io__airfoil__ib__var-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1mpi__io__airfoil__ib__var.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1mpi__io__ib__var-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1mpi__io__ib__var.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1mpi__io__levelset__norm__var-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1mpi__io__levelset__norm__var.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1mpi__io__levelset__var-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1mpi__io__levelset__var.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1mpi__io__var-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1mpi__io__var.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1physical__parameters-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1physical__parameters.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1pres__field-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1pres__field.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1riemann__states-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1riemann__states.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1riemann__states__vec3-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1riemann__states__vec3.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1scalar__field-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1scalar__field.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1simplex__noise__params-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1simplex__noise__params.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1source__spatial__type-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1source__spatial__type.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1species__parameters-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1species__parameters.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1subgrid__bubble__physical__parameters-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:07+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1subgrid__bubble__physical__parameters.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1t__bbox-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1t__bbox.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1t__model-members.html -2026-02-26T00:28:18+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1t__model.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1t__model__array-members.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1t__model__array.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1t__ray-members.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1t__ray.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1t__triangle-members.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1t__triangle.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1vec3__dt-members.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1vec3__dt.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1vector__field-members.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/pre_process/structm__derived__types_1_1vector__field.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/pre_process/structm__nvtx_1_1nvtxeventattributes-members.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/pre_process/structm__nvtx_1_1nvtxeventattributes.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/ -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/annotated.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/classes.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/doxygen_crawl.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/files.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_b.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_c.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_d.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_e.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_f.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_func.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_g.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_h.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_i.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_k.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_l.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_m.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_n.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_o.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_p.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_q.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_r.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_s.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_t.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_v.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_b.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_c.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_d.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_e.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_f.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_g.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_h.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_i.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_k.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_l.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_m.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_n.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_o.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_p.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_q.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_r.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_s.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_t.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_v.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_w.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_x.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_y.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_vars_z.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_w.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_x.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_y.html -2026-02-26T00:28:19+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/functions_z.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/globals.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/globals_func.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/globals_vars.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:08+00:00 https://mflowcode.github.io/simulation/graph_legend.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/interfacem__nvtx_1_1nvtxrangepop-members.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/interfacem__nvtx_1_1nvtxrangepop.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/interfacem__nvtx_1_1nvtxrangepush-members.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/interfacem__nvtx_1_1nvtxrangepush.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__acoustic__src_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__acoustic__src_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__body__forces_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__body__forces_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__boundary__common_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__boundary__common_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__bubbles_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__bubbles_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__bubbles__EE_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__bubbles__EE_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__bubbles__EL_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__bubbles__EL_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__bubbles__EL__kernels_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__bubbles__EL__kernels_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__cbc_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__cbc_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__checker_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__checker_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__checker__common_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__checker__common_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__chemistry_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__chemistry_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__compile__specific_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__compile__specific_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__compute__cbc_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__compute__cbc_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__compute__levelset_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__compute__levelset_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__constants_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__constants_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__data__output_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__data__output_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__delay__file__access_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__delay__file__access_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__derived__types_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__derived__types_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__derived__variables_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__derived__variables_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__fftw_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__fftw_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__finite__differences_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__finite__differences_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__global__parameters_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__global__parameters_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__helper_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__helper_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__helper__basic_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__helper__basic_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__hyperelastic_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__hyperelastic_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__hypoelastic_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__hypoelastic_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__ib__patches_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__ib__patches_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__ibm_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__ibm_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__igr_8fpp_8f90.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__igr_8fpp_8f90_source.html -2026-02-26T00:28:20+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__model_8fpp_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__model_8fpp_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__mpi__common_8fpp_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__mpi__common_8fpp_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__mpi__proxy_8fpp_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__mpi__proxy_8fpp_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__muscl_8fpp_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__muscl_8fpp_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__nvtx_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__nvtx_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__phase__change_8fpp_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:09+00:00 https://mflowcode.github.io/simulation/m__phase__change_8fpp_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__precision__select_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__precision__select_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__pressure__relaxation_8fpp_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__pressure__relaxation_8fpp_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__qbmm_8fpp_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__qbmm_8fpp_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__rhs_8fpp_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__rhs_8fpp_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__riemann__solvers_8fpp_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__riemann__solvers_8fpp_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__sim__helpers_8fpp_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__sim__helpers_8fpp_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__start__up_8fpp_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__start__up_8fpp_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__surface__tension_8fpp_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__surface__tension_8fpp_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__time__steppers_8fpp_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__time__steppers_8fpp_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__variables__conversion_8fpp_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__variables__conversion_8fpp_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__viscous_8fpp_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__viscous_8fpp_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__weno_8fpp_8f90.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/m__weno_8fpp_8f90_source.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__acoustic__src.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__body__forces.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__boundary__common.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__bubbles.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__bubbles__ee.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__bubbles__el.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__bubbles__el__kernels.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__cbc.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__checker.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__checker__common.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__chemistry.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__compile__specific.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__compute__cbc.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__compute__levelset.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__constants.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__data__output.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__delay__file__access.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__derived__types.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__derived__variables.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__fftw.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__finite__differences.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__global__parameters.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__helper.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__helper__basic.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__hyperelastic.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__hypoelastic.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__ib__patches.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__ibm.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__igr.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__model.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__mpi__common.html -2026-02-26T00:28:21+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__mpi__proxy.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__muscl.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__nvtx.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__phase__change.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__precision__select.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__pressure__relaxation.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__qbmm.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__rhs.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__riemann__solvers.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__sim__helpers.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__start__up.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__surface__tension.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__time__steppers.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__variables__conversion.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__viscous.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacem__weno.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacemembers.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacemembers_b.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:10+00:00 https://mflowcode.github.io/simulation/namespacemembers_c.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_d.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_e.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_f.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_func.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_func_c.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_func_d.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_func_f.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_func_m.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_func_n.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_func_p.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_func_s.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_func_u.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_g.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_h.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_i.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_j.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_k.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_l.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_m.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_n.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_o.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_p.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_q.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_r.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_s.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_t.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_u.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_v.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_b.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_c.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_d.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_e.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_f.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_g.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_h.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_i.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_j.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_k.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_l.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_m.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_n.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_o.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_p.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_q.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_r.html -2026-02-26T00:28:22+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_s.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_t.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_v.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_w.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_x.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_y.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_vars_z.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_w.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_x.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_y.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespacemembers_z.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/namespaces.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/p__main_8fpp_8f90.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/p__main_8fpp_8f90_source.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/readme_8md.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1acoustic__parameters-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1acoustic__parameters.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1bc__patch__parameters-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1bc__patch__parameters.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1bounds__info-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1bounds__info.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1bub__bounds__info-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1bub__bounds__info.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1bubbles__lagrange__parameters-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1bubbles__lagrange__parameters.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1cell__num__bounds-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1cell__num__bounds.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1chemistry__parameters-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:11+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1chemistry__parameters.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1field__position-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1field__position.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1ghost__point-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1ghost__point.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1ib__patch__parameters-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1ib__patch__parameters.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1ic__model__parameters-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1ic__model__parameters.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1ic__patch__parameters-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1ic__patch__parameters.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1int__bounds__info-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1int__bounds__info.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1integer__field-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1integer__field.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1integral__parameters-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1integral__parameters.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1levelset__field-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1levelset__field.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1levelset__norm__field-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1levelset__norm__field.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1mpi__io__airfoil__ib__var-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1mpi__io__airfoil__ib__var.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1mpi__io__ib__var-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1mpi__io__ib__var.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1mpi__io__levelset__norm__var-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1mpi__io__levelset__norm__var.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1mpi__io__levelset__var-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1mpi__io__levelset__var.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1mpi__io__var-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1mpi__io__var.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1physical__parameters-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1physical__parameters.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1pres__field-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1pres__field.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1riemann__states-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1riemann__states.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1riemann__states__vec3-members.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1riemann__states__vec3.html -2026-02-26T00:28:23+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1scalar__field-members.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1scalar__field.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1simplex__noise__params-members.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1simplex__noise__params.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1source__spatial__type-members.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1source__spatial__type.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1species__parameters-members.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1species__parameters.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1subgrid__bubble__physical__parameters-members.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1subgrid__bubble__physical__parameters.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1t__bbox-members.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1t__bbox.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1t__model-members.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1t__model.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1t__model__array-members.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1t__model__array.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1t__ray-members.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1t__ray.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1t__triangle-members.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1t__triangle.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1vec3__dt-members.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1vec3__dt.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1vector__field-members.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__derived__types_1_1vector__field.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__nvtx_1_1nvtxeventattributes-members.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00 https://mflowcode.github.io/simulation/structm__nvtx_1_1nvtxeventattributes.html -2026-02-26T00:28:24+00:00 +2026-02-27T00:31:12+00:00