MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_mpi_proxy.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
2!>
3!! @file
4!! @brief Contains module m_mpi_proxy
5
6!> @brief Broadcasts user inputs and decomposes the domain across MPI ranks for pre-processing
8
9#ifdef MFC_MPI
10 use mpi
11#endif
12
13 use m_helper
16 use m_mpi_common
17
18 implicit none
19
20contains
21 !> Since only processor with rank 0 is in charge of reading and checking the consistency of the user provided inputs, these are
22 !! not available to the remaining processors. This subroutine is then in charge of broadcasting the required information.
23 impure subroutine s_mpi_bcast_user_inputs
24
25#ifdef MFC_MPI
26 integer :: i, j
27 integer :: ierr
28
29 ! Generated: case_dir, namelist scalars (INT/LOG/REAL), fluid_rho, fluid_pp loop, bub_pp
30# 1 "/home/runner/work/MFC/MFC/build/include/pre_process/generated_bcast.fpp" 1
31! AUTO-GENERATED - do not edit directly. Regenerate: cmake reconfigure
32!
33 call mpi_bcast(case_dir, len(case_dir), mpi_character, 0, mpi_comm_world, ierr)
34
35 ! Character scalars
36 call mpi_bcast(file_extension, len(file_extension), mpi_character, 0, mpi_comm_world, ierr)
37 call mpi_bcast(files_dir, len(files_dir), mpi_character, 0, mpi_comm_world, ierr)
38
39 ! Integer scalars
40 call mpi_bcast(dist_type, 1, mpi_integer, 0, mpi_comm_world, ierr)
41 call mpi_bcast(elliptic_smoothing_iters, 1, mpi_integer, 0, mpi_comm_world, ierr)
42 call mpi_bcast(igr_order, 1, mpi_integer, 0, mpi_comm_world, ierr)
43 call mpi_bcast(loops_x, 1, mpi_integer, 0, mpi_comm_world, ierr)
44 call mpi_bcast(loops_y, 1, mpi_integer, 0, mpi_comm_world, ierr)
45 call mpi_bcast(loops_z, 1, mpi_integer, 0, mpi_comm_world, ierr)
46 call mpi_bcast(m, 1, mpi_integer, 0, mpi_comm_world, ierr)
47 call mpi_bcast(mixlayer_perturb_nk, 1, mpi_integer, 0, mpi_comm_world, ierr)
48 call mpi_bcast(model_eqns, 1, mpi_integer, 0, mpi_comm_world, ierr)
49 call mpi_bcast(muscl_order, 1, mpi_integer, 0, mpi_comm_world, ierr)
50 call mpi_bcast(n, 1, mpi_integer, 0, mpi_comm_world, ierr)
51 call mpi_bcast(n_start, 1, mpi_integer, 0, mpi_comm_world, ierr)
52 call mpi_bcast(n_start_old, 1, mpi_integer, 0, mpi_comm_world, ierr)
53 call mpi_bcast(nb, 1, mpi_integer, 0, mpi_comm_world, ierr)
54 call mpi_bcast(num_bc_patches, 1, mpi_integer, 0, mpi_comm_world, ierr)
55 call mpi_bcast(num_fluids, 1, mpi_integer, 0, mpi_comm_world, ierr)
56 call mpi_bcast(num_ibs, 1, mpi_integer, 0, mpi_comm_world, ierr)
57 call mpi_bcast(num_patches, 1, mpi_integer, 0, mpi_comm_world, ierr)
58 call mpi_bcast(num_stl_models, 1, mpi_integer, 0, mpi_comm_world, ierr)
59 call mpi_bcast(p, 1, mpi_integer, 0, mpi_comm_world, ierr)
60 call mpi_bcast(perturb_flow_fluid, 1, mpi_integer, 0, mpi_comm_world, ierr)
61 call mpi_bcast(perturb_sph_fluid, 1, mpi_integer, 0, mpi_comm_world, ierr)
62 call mpi_bcast(precision, 1, mpi_integer, 0, mpi_comm_world, ierr)
63 call mpi_bcast(recon_type, 1, mpi_integer, 0, mpi_comm_world, ierr)
64 call mpi_bcast(relax_model, 1, mpi_integer, 0, mpi_comm_world, ierr)
65 call mpi_bcast(t_step_old, 1, mpi_integer, 0, mpi_comm_world, ierr)
66 call mpi_bcast(t_step_start, 1, mpi_integer, 0, mpi_comm_world, ierr)
67 call mpi_bcast(thermal, 1, mpi_integer, 0, mpi_comm_world, ierr)
68 call mpi_bcast(weno_order, 1, mpi_integer, 0, mpi_comm_world, ierr)
69
70 ! Logical scalars
71 call mpi_bcast(adv_n, 1, mpi_logical, 0, mpi_comm_world, ierr)
72 call mpi_bcast(bubbles_euler, 1, mpi_logical, 0, mpi_comm_world, ierr)
73 call mpi_bcast(bubbles_lagrange, 1, mpi_logical, 0, mpi_comm_world, ierr)
74 call mpi_bcast(cfl_adap_dt, 1, mpi_logical, 0, mpi_comm_world, ierr)
75 call mpi_bcast(cfl_const_dt, 1, mpi_logical, 0, mpi_comm_world, ierr)
76 call mpi_bcast(cont_damage, 1, mpi_logical, 0, mpi_comm_world, ierr)
77 call mpi_bcast(cyl_coord, 1, mpi_logical, 0, mpi_comm_world, ierr)
78 call mpi_bcast(down_sample, 1, mpi_logical, 0, mpi_comm_world, ierr)
79 call mpi_bcast(elliptic_smoothing, 1, mpi_logical, 0, mpi_comm_world, ierr)
80 call mpi_bcast(fft_wrt, 1, mpi_logical, 0, mpi_comm_world, ierr)
81 call mpi_bcast(file_per_process, 1, mpi_logical, 0, mpi_comm_world, ierr)
82 call mpi_bcast(hyper_cleaning, 1, mpi_logical, 0, mpi_comm_world, ierr)
83 call mpi_bcast(hyperelasticity, 1, mpi_logical, 0, mpi_comm_world, ierr)
84 call mpi_bcast(hypoelasticity, 1, mpi_logical, 0, mpi_comm_world, ierr)
85 call mpi_bcast(ib, 1, mpi_logical, 0, mpi_comm_world, ierr)
86 call mpi_bcast(igr, 1, mpi_logical, 0, mpi_comm_world, ierr)
87 call mpi_bcast(mhd, 1, mpi_logical, 0, mpi_comm_world, ierr)
88 call mpi_bcast(mixlayer_perturb, 1, mpi_logical, 0, mpi_comm_world, ierr)
89 call mpi_bcast(mixlayer_vel_profile, 1, mpi_logical, 0, mpi_comm_world, ierr)
90 call mpi_bcast(mpp_lim, 1, mpi_logical, 0, mpi_comm_world, ierr)
91 call mpi_bcast(old_grid, 1, mpi_logical, 0, mpi_comm_world, ierr)
92 call mpi_bcast(old_ic, 1, mpi_logical, 0, mpi_comm_world, ierr)
93 call mpi_bcast(parallel_io, 1, mpi_logical, 0, mpi_comm_world, ierr)
94 call mpi_bcast(perturb_flow, 1, mpi_logical, 0, mpi_comm_world, ierr)
95 call mpi_bcast(perturb_sph, 1, mpi_logical, 0, mpi_comm_world, ierr)
96 call mpi_bcast(polydisperse, 1, mpi_logical, 0, mpi_comm_world, ierr)
97 call mpi_bcast(polytropic, 1, mpi_logical, 0, mpi_comm_world, ierr)
98 call mpi_bcast(pre_stress, 1, mpi_logical, 0, mpi_comm_world, ierr)
99 call mpi_bcast(qbmm, 1, mpi_logical, 0, mpi_comm_world, ierr)
100 call mpi_bcast(relativity, 1, mpi_logical, 0, mpi_comm_world, ierr)
101 call mpi_bcast(relax, 1, mpi_logical, 0, mpi_comm_world, ierr)
102 call mpi_bcast(simplex_perturb, 1, mpi_logical, 0, mpi_comm_world, ierr)
103 call mpi_bcast(stretch_x, 1, mpi_logical, 0, mpi_comm_world, ierr)
104 call mpi_bcast(stretch_y, 1, mpi_logical, 0, mpi_comm_world, ierr)
105 call mpi_bcast(stretch_z, 1, mpi_logical, 0, mpi_comm_world, ierr)
106 call mpi_bcast(surface_tension, 1, mpi_logical, 0, mpi_comm_world, ierr)
107 call mpi_bcast(viscous, 1, mpi_logical, 0, mpi_comm_world, ierr)
108
109 ! Real scalars
110 call mpi_bcast(bx0, 1, mpi_p, 0, mpi_comm_world, ierr)
111 call mpi_bcast(ca, 1, mpi_p, 0, mpi_comm_world, ierr)
112 call mpi_bcast(r0ref, 1, mpi_p, 0, mpi_comm_world, ierr)
113 call mpi_bcast(re_inv, 1, mpi_p, 0, mpi_comm_world, ierr)
114 call mpi_bcast(web, 1, mpi_p, 0, mpi_comm_world, ierr)
115 call mpi_bcast(a_x, 1, mpi_p, 0, mpi_comm_world, ierr)
116 call mpi_bcast(a_y, 1, mpi_p, 0, mpi_comm_world, ierr)
117 call mpi_bcast(a_z, 1, mpi_p, 0, mpi_comm_world, ierr)
118 call mpi_bcast(mixlayer_perturb_k0, 1, mpi_p, 0, mpi_comm_world, ierr)
119 call mpi_bcast(mixlayer_vel_coef, 1, mpi_p, 0, mpi_comm_world, ierr)
120 call mpi_bcast(palpha_eps, 1, mpi_p, 0, mpi_comm_world, ierr)
121 call mpi_bcast(perturb_flow_mag, 1, mpi_p, 0, mpi_comm_world, ierr)
122 call mpi_bcast(pi_fac, 1, mpi_p, 0, mpi_comm_world, ierr)
123 call mpi_bcast(poly_sigma, 1, mpi_p, 0, mpi_comm_world, ierr)
124 call mpi_bcast(pref, 1, mpi_p, 0, mpi_comm_world, ierr)
125 call mpi_bcast(ptgalpha_eps, 1, mpi_p, 0, mpi_comm_world, ierr)
126 call mpi_bcast(rhorv, 1, mpi_p, 0, mpi_comm_world, ierr)
127 call mpi_bcast(rhoref, 1, mpi_p, 0, mpi_comm_world, ierr)
128 call mpi_bcast(sigr, 1, mpi_p, 0, mpi_comm_world, ierr)
129 call mpi_bcast(sigv, 1, mpi_p, 0, mpi_comm_world, ierr)
130 call mpi_bcast(sigma, 1, mpi_p, 0, mpi_comm_world, ierr)
131 call mpi_bcast(x_a, 1, mpi_p, 0, mpi_comm_world, ierr)
132 call mpi_bcast(x_b, 1, mpi_p, 0, mpi_comm_world, ierr)
133 call mpi_bcast(y_a, 1, mpi_p, 0, mpi_comm_world, ierr)
134 call mpi_bcast(y_b, 1, mpi_p, 0, mpi_comm_world, ierr)
135 call mpi_bcast(z_a, 1, mpi_p, 0, mpi_comm_world, ierr)
136 call mpi_bcast(z_b, 1, mpi_p, 0, mpi_comm_world, ierr)
137
138 ! Array broadcasts (dimension from FORTRAN_ARRAY_DIMS)
139 call mpi_bcast(fluid_rho(1), num_fluids_max, mpi_p, 0, mpi_comm_world, ierr)
140
141 ! fluid_pp member loop
142 do i = 1, num_fluids_max
143 call mpi_bcast(fluid_pp(i)%G, 1, mpi_p, 0, mpi_comm_world, ierr)
144 call mpi_bcast(fluid_pp(i)%K, 1, mpi_p, 0, mpi_comm_world, ierr)
145 call mpi_bcast(fluid_pp(i)%cv, 1, mpi_p, 0, mpi_comm_world, ierr)
146 call mpi_bcast(fluid_pp(i)%gamma, 1, mpi_p, 0, mpi_comm_world, ierr)
147 call mpi_bcast(fluid_pp(i)%hb_m, 1, mpi_p, 0, mpi_comm_world, ierr)
148 call mpi_bcast(fluid_pp(i)%mu_bulk, 1, mpi_p, 0, mpi_comm_world, ierr)
149 call mpi_bcast(fluid_pp(i)%mu_max, 1, mpi_p, 0, mpi_comm_world, ierr)
150 call mpi_bcast(fluid_pp(i)%mu_min, 1, mpi_p, 0, mpi_comm_world, ierr)
151 call mpi_bcast(fluid_pp(i)%nn, 1, mpi_p, 0, mpi_comm_world, ierr)
152 call mpi_bcast(fluid_pp(i)%non_newtonian, 1, mpi_logical, 0, mpi_comm_world, ierr)
153 call mpi_bcast(fluid_pp(i)%pi_inf, 1, mpi_p, 0, mpi_comm_world, ierr)
154 call mpi_bcast(fluid_pp(i)%qv, 1, mpi_p, 0, mpi_comm_world, ierr)
155 call mpi_bcast(fluid_pp(i)%qvp, 1, mpi_p, 0, mpi_comm_world, ierr)
156 call mpi_bcast(fluid_pp(i)%tau0, 1, mpi_p, 0, mpi_comm_world, ierr)
157 end do
158
159 ! bub_pp members (under bubbles guard)
160 if (bubbles_euler .or. bubbles_lagrange) then
161 call mpi_bcast(bub_pp%M_g, 1, mpi_p, 0, mpi_comm_world, ierr)
162 call mpi_bcast(bub_pp%M_v, 1, mpi_p, 0, mpi_comm_world, ierr)
163 call mpi_bcast(bub_pp%R0ref, 1, mpi_p, 0, mpi_comm_world, ierr)
164 call mpi_bcast(bub_pp%R_g, 1, mpi_p, 0, mpi_comm_world, ierr)
165 call mpi_bcast(bub_pp%R_v, 1, mpi_p, 0, mpi_comm_world, ierr)
166 call mpi_bcast(bub_pp%T0ref, 1, mpi_p, 0, mpi_comm_world, ierr)
167 call mpi_bcast(bub_pp%cp_g, 1, mpi_p, 0, mpi_comm_world, ierr)
168 call mpi_bcast(bub_pp%cp_v, 1, mpi_p, 0, mpi_comm_world, ierr)
169 call mpi_bcast(bub_pp%gam_g, 1, mpi_p, 0, mpi_comm_world, ierr)
170 call mpi_bcast(bub_pp%gam_v, 1, mpi_p, 0, mpi_comm_world, ierr)
171 call mpi_bcast(bub_pp%k_g, 1, mpi_p, 0, mpi_comm_world, ierr)
172 call mpi_bcast(bub_pp%k_v, 1, mpi_p, 0, mpi_comm_world, ierr)
173 call mpi_bcast(bub_pp%mu_g, 1, mpi_p, 0, mpi_comm_world, ierr)
174 call mpi_bcast(bub_pp%mu_l, 1, mpi_p, 0, mpi_comm_world, ierr)
175 call mpi_bcast(bub_pp%mu_v, 1, mpi_p, 0, mpi_comm_world, ierr)
176 call mpi_bcast(bub_pp%p0ref, 1, mpi_p, 0, mpi_comm_world, ierr)
177 call mpi_bcast(bub_pp%pv, 1, mpi_p, 0, mpi_comm_world, ierr)
178 call mpi_bcast(bub_pp%rho0ref, 1, mpi_p, 0, mpi_comm_world, ierr)
179 call mpi_bcast(bub_pp%ss, 1, mpi_p, 0, mpi_comm_world, ierr)
180 call mpi_bcast(bub_pp%vd, 1, mpi_p, 0, mpi_comm_world, ierr)
181 end if
182
183# 30 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp" 2
184
185 ! manual: m/n/p_glb (computed from m/n/p post-read, not namelist-bound)
186 call mpi_bcast(m_glb, 1, mpi_integer, 0, mpi_comm_world, ierr)
187 call mpi_bcast(n_glb, 1, mpi_integer, 0, mpi_comm_world, ierr)
188 call mpi_bcast(p_glb, 1, mpi_integer, 0, mpi_comm_world, ierr)
189
190 ! manual: bc_x/y/z member broadcasts (struct members not in NAMELIST_VARS)
191# 39 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
192 call mpi_bcast(bc_x%isothermal_in, 1, mpi_logical, 0, mpi_comm_world, ierr)
193# 39 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
194 call mpi_bcast(bc_y%isothermal_in, 1, mpi_logical, 0, mpi_comm_world, ierr)
195# 39 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
196 call mpi_bcast(bc_z%isothermal_in, 1, mpi_logical, 0, mpi_comm_world, ierr)
197# 39 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
198 call mpi_bcast(bc_x%isothermal_out, 1, mpi_logical, 0, mpi_comm_world, ierr)
199# 39 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
200 call mpi_bcast(bc_y%isothermal_out, 1, mpi_logical, 0, mpi_comm_world, ierr)
201# 39 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
202 call mpi_bcast(bc_z%isothermal_out, 1, mpi_logical, 0, mpi_comm_world, ierr)
203# 41 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
204
205 ! manual: domain bounds and wall temperatures (REAL struct members, not in NAMELIST_VARS)
206# 48 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
207 call mpi_bcast(x_domain%beg, 1, mpi_p, 0, mpi_comm_world, ierr)
208# 48 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
209 call mpi_bcast(x_domain%end, 1, mpi_p, 0, mpi_comm_world, ierr)
210# 48 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
211 call mpi_bcast(y_domain%beg, 1, mpi_p, 0, mpi_comm_world, ierr)
212# 48 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
213 call mpi_bcast(y_domain%end, 1, mpi_p, 0, mpi_comm_world, ierr)
214# 48 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
215 call mpi_bcast(z_domain%beg, 1, mpi_p, 0, mpi_comm_world, ierr)
216# 48 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
217 call mpi_bcast(z_domain%end, 1, mpi_p, 0, mpi_comm_world, ierr)
218# 48 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
219 call mpi_bcast(bc_x%Twall_in, 1, mpi_p, 0, mpi_comm_world, ierr)
220# 48 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
221 call mpi_bcast(bc_x%Twall_out, 1, mpi_p, 0, mpi_comm_world, ierr)
222# 48 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
223 call mpi_bcast(bc_y%Twall_in, 1, mpi_p, 0, mpi_comm_world, ierr)
224# 48 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
225 call mpi_bcast(bc_y%Twall_out, 1, mpi_p, 0, mpi_comm_world, ierr)
226# 48 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
227 call mpi_bcast(bc_z%Twall_in, 1, mpi_p, 0, mpi_comm_world, ierr)
228# 48 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
229 call mpi_bcast(bc_z%Twall_out, 1, mpi_p, 0, mpi_comm_world, ierr)
230# 50 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
231
232 ! manual: BC type codes (INTEGER struct members)
233# 53 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
234 call mpi_bcast(bc_x%beg, 1, mpi_integer, 0, mpi_comm_world, ierr)
235# 53 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
236 call mpi_bcast(bc_x%end, 1, mpi_integer, 0, mpi_comm_world, ierr)
237# 53 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
238 call mpi_bcast(bc_y%beg, 1, mpi_integer, 0, mpi_comm_world, ierr)
239# 53 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
240 call mpi_bcast(bc_y%end, 1, mpi_integer, 0, mpi_comm_world, ierr)
241# 53 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
242 call mpi_bcast(bc_z%beg, 1, mpi_integer, 0, mpi_comm_world, ierr)
243# 53 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
244 call mpi_bcast(bc_z%end, 1, mpi_integer, 0, mpi_comm_world, ierr)
245# 55 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
246
247 ! wall-velocity members consumed by s_slip_wall/s_no_slip_wall on all ranks
248# 58 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
249# 59 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
250 call mpi_bcast(bc_x%vb1, 1, mpi_p, 0, mpi_comm_world, ierr)
251 call mpi_bcast(bc_x%ve1, 1, mpi_p, 0, mpi_comm_world, ierr)
252# 59 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
253 call mpi_bcast(bc_x%vb2, 1, mpi_p, 0, mpi_comm_world, ierr)
254 call mpi_bcast(bc_x%ve2, 1, mpi_p, 0, mpi_comm_world, ierr)
255# 59 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
256 call mpi_bcast(bc_x%vb3, 1, mpi_p, 0, mpi_comm_world, ierr)
257 call mpi_bcast(bc_x%ve3, 1, mpi_p, 0, mpi_comm_world, ierr)
258# 62 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
259# 58 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
260# 59 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
261 call mpi_bcast(bc_y%vb1, 1, mpi_p, 0, mpi_comm_world, ierr)
262 call mpi_bcast(bc_y%ve1, 1, mpi_p, 0, mpi_comm_world, ierr)
263# 59 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
264 call mpi_bcast(bc_y%vb2, 1, mpi_p, 0, mpi_comm_world, ierr)
265 call mpi_bcast(bc_y%ve2, 1, mpi_p, 0, mpi_comm_world, ierr)
266# 59 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
267 call mpi_bcast(bc_y%vb3, 1, mpi_p, 0, mpi_comm_world, ierr)
268 call mpi_bcast(bc_y%ve3, 1, mpi_p, 0, mpi_comm_world, ierr)
269# 62 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
270# 58 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
271# 59 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
272 call mpi_bcast(bc_z%vb1, 1, mpi_p, 0, mpi_comm_world, ierr)
273 call mpi_bcast(bc_z%ve1, 1, mpi_p, 0, mpi_comm_world, ierr)
274# 59 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
275 call mpi_bcast(bc_z%vb2, 1, mpi_p, 0, mpi_comm_world, ierr)
276 call mpi_bcast(bc_z%ve2, 1, mpi_p, 0, mpi_comm_world, ierr)
277# 59 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
278 call mpi_bcast(bc_z%vb3, 1, mpi_p, 0, mpi_comm_world, ierr)
279 call mpi_bcast(bc_z%ve3, 1, mpi_p, 0, mpi_comm_world, ierr)
280# 62 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
281# 63 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
282
283 ! manual: cfl_dt (runtime-computed logical), bc_io (BC-file existence)
284 call mpi_bcast(cfl_dt, 1, mpi_logical, 0, mpi_comm_world, ierr)
285 call mpi_bcast(bc_io, 1, mpi_logical, 0, mpi_comm_world, ierr)
286
287 ! manual: patch_bc (complex array members broadcast with size())
288 do i = 1, num_bc_patches_max
289# 71 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
290 call mpi_bcast(patch_bc(i)%geometry, 1, mpi_integer, 0, mpi_comm_world, ierr)
291# 71 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
292 call mpi_bcast(patch_bc(i)%type, 1, mpi_integer, 0, mpi_comm_world, ierr)
293# 71 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
294 call mpi_bcast(patch_bc(i)%dir, 1, mpi_integer, 0, mpi_comm_world, ierr)
295# 71 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
296 call mpi_bcast(patch_bc(i)%loc, 1, mpi_integer, 0, mpi_comm_world, ierr)
297# 73 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
298
299 call mpi_bcast(patch_bc(i)%radius, 1, mpi_p, 0, mpi_comm_world, ierr)
300
301# 77 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
302 call mpi_bcast(patch_bc(i)%centroid, size(patch_bc(i)%centroid), mpi_p, 0, mpi_comm_world, ierr)
303# 77 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
304 call mpi_bcast(patch_bc(i)%length, size(patch_bc(i)%length), mpi_p, 0, mpi_comm_world, ierr)
305# 79 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
306 end do
307
308 ! manual: patch_icpp (complex members: alter_patch, sph_har_coeff, size() arrays)
309 do i = 1, num_patches_max
310# 84 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
311 call mpi_bcast(patch_icpp(i)%geometry, 1, mpi_integer, 0, mpi_comm_world, ierr)
312# 84 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
313 call mpi_bcast(patch_icpp(i)%smooth_patch_id, 1, mpi_integer, 0, mpi_comm_world, ierr)
314# 84 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
315 call mpi_bcast(patch_icpp(i)%hcid, 1, mpi_integer, 0, mpi_comm_world, ierr)
316# 86 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
317
318 call mpi_bcast(patch_icpp(i)%smoothen, 1, mpi_logical, 0, mpi_comm_world, ierr)
319 call mpi_bcast(patch_icpp(i)%non_axis_sym, 1, mpi_logical, 0, mpi_comm_world, ierr)
320 call mpi_bcast(patch_icpp(i)%alter_patch(0), num_patches_max, mpi_logical, 0, mpi_comm_world, ierr)
321
322# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
323 call mpi_bcast(patch_icpp(i)%x_centroid, 1, mpi_p, 0, mpi_comm_world, ierr)
324# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
325 call mpi_bcast(patch_icpp(i)%y_centroid, 1, mpi_p, 0, mpi_comm_world, ierr)
326# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
327 call mpi_bcast(patch_icpp(i)%z_centroid, 1, mpi_p, 0, mpi_comm_world, ierr)
328# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
329 call mpi_bcast(patch_icpp(i)%length_x, 1, mpi_p, 0, mpi_comm_world, ierr)
330# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
331 call mpi_bcast(patch_icpp(i)%length_y, 1, mpi_p, 0, mpi_comm_world, ierr)
332# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
333 call mpi_bcast(patch_icpp(i)%length_z, 1, mpi_p, 0, mpi_comm_world, ierr)
334# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
335 call mpi_bcast(patch_icpp(i)%radius, 1, mpi_p, 0, mpi_comm_world, ierr)
336# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
337 call mpi_bcast(patch_icpp(i)%epsilon, 1, mpi_p, 0, mpi_comm_world, ierr)
338# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
339 call mpi_bcast(patch_icpp(i)%beta, 1, mpi_p, 0, mpi_comm_world, ierr)
340# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
341 call mpi_bcast(patch_icpp(i)%smooth_coeff, 1, mpi_p, 0, mpi_comm_world, ierr)
342# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
343 call mpi_bcast(patch_icpp(i)%rho, 1, mpi_p, 0, mpi_comm_world, ierr)
344# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
345 call mpi_bcast(patch_icpp(i)%p0, 1, mpi_p, 0, mpi_comm_world, ierr)
346# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
347 call mpi_bcast(patch_icpp(i)%m0, 1, mpi_p, 0, mpi_comm_world, ierr)
348# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
349 call mpi_bcast(patch_icpp(i)%r0, 1, mpi_p, 0, mpi_comm_world, ierr)
350# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
351 call mpi_bcast(patch_icpp(i)%v0, 1, mpi_p, 0, mpi_comm_world, ierr)
352# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
353 call mpi_bcast(patch_icpp(i)%pres, 1, mpi_p, 0, mpi_comm_world, ierr)
354# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
355 call mpi_bcast(patch_icpp(i)%gamma, 1, mpi_p, 0, mpi_comm_world, ierr)
356# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
357 call mpi_bcast(patch_icpp(i)%pi_inf, 1, mpi_p, 0, mpi_comm_world, ierr)
358# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
359 call mpi_bcast(patch_icpp(i)%cv, 1, mpi_p, 0, mpi_comm_world, ierr)
360# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
361 call mpi_bcast(patch_icpp(i)%qv, 1, mpi_p, 0, mpi_comm_world, ierr)
362# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
363 call mpi_bcast(patch_icpp(i)%qvp, 1, mpi_p, 0, mpi_comm_world, ierr)
364# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
365 call mpi_bcast(patch_icpp(i)%cf_val, 1, mpi_p, 0, mpi_comm_world, ierr)
366# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
367 call mpi_bcast(patch_icpp(i)%Bx, 1, mpi_p, 0, mpi_comm_world, ierr)
368# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
369 call mpi_bcast(patch_icpp(i)%By, 1, mpi_p, 0, mpi_comm_world, ierr)
370# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
371 call mpi_bcast(patch_icpp(i)%Bz, 1, mpi_p, 0, mpi_comm_world, ierr)
372# 98 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
373
374# 100 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
375 call mpi_bcast(patch_icpp(i)%a(2), 1, mpi_p, 0, mpi_comm_world, ierr)
376# 100 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
377 call mpi_bcast(patch_icpp(i)%a(3), 1, mpi_p, 0, mpi_comm_world, ierr)
378# 100 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
379 call mpi_bcast(patch_icpp(i)%a(4), 1, mpi_p, 0, mpi_comm_world, ierr)
380# 100 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
381 call mpi_bcast(patch_icpp(i)%a(5), 1, mpi_p, 0, mpi_comm_world, ierr)
382# 100 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
383 call mpi_bcast(patch_icpp(i)%a(6), 1, mpi_p, 0, mpi_comm_world, ierr)
384# 100 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
385 call mpi_bcast(patch_icpp(i)%a(7), 1, mpi_p, 0, mpi_comm_world, ierr)
386# 100 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
387 call mpi_bcast(patch_icpp(i)%a(8), 1, mpi_p, 0, mpi_comm_world, ierr)
388# 100 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
389 call mpi_bcast(patch_icpp(i)%a(9), 1, mpi_p, 0, mpi_comm_world, ierr)
390# 102 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
391
392# 105 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
393 call mpi_bcast(patch_icpp(i)%normal, size(patch_icpp(i)%normal), mpi_p, 0, mpi_comm_world, ierr)
394# 105 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
395 call mpi_bcast(patch_icpp(i)%radii, size(patch_icpp(i)%radii), mpi_p, 0, mpi_comm_world, ierr)
396# 105 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
397 call mpi_bcast(patch_icpp(i)%vel, size(patch_icpp(i)%vel), mpi_p, 0, mpi_comm_world, ierr)
398# 105 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
399 call mpi_bcast(patch_icpp(i)%tau_e, size(patch_icpp(i)%tau_e), mpi_p, 0, mpi_comm_world, ierr)
400# 105 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
401 call mpi_bcast(patch_icpp(i)%alpha_rho, size(patch_icpp(i)%alpha_rho), mpi_p, 0, mpi_comm_world, ierr)
402# 105 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
403 call mpi_bcast(patch_icpp(i)%alpha, size(patch_icpp(i)%alpha), mpi_p, 0, mpi_comm_world, ierr)
404# 105 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
405 call mpi_bcast(patch_icpp(i)%fourier_cos, size(patch_icpp(i)%fourier_cos), mpi_p, 0, mpi_comm_world, ierr)
406# 105 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
407 call mpi_bcast(patch_icpp(i)%fourier_sin, size(patch_icpp(i)%fourier_sin), mpi_p, 0, mpi_comm_world, ierr)
408# 107 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
409
410 call mpi_bcast(patch_icpp(i)%sph_har_coeff, size(patch_icpp(i)%sph_har_coeff), mpi_p, 0, mpi_comm_world, ierr)
411 call mpi_bcast(patch_icpp(i)%modal_clip_r_to_min, 1, mpi_logical, 0, mpi_comm_world, ierr)
412 call mpi_bcast(patch_icpp(i)%modal_r_min, 1, mpi_p, 0, mpi_comm_world, ierr)
413 call mpi_bcast(patch_icpp(i)%modal_use_exp_form, 1, mpi_logical, 0, mpi_comm_world, ierr)
414
415 call mpi_bcast(patch_icpp(i)%model_id, 1, mpi_integer, 0, mpi_comm_world, ierr)
416
417 if (chemistry) then
418 call mpi_bcast(patch_icpp(i)%Y, size(patch_icpp(i)%Y), mpi_p, 0, mpi_comm_world, ierr)
419 end if
420 end do
421
422 ! manual: patch_ib (per-target member subset; pre uses size() for vel/angular_vel/angles)
423 do i = 1, num_ibs
424# 123 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
425 call mpi_bcast(patch_ib(i)%vel, size(patch_ib(i)%vel), mpi_p, 0, mpi_comm_world, ierr)
426# 123 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
427 call mpi_bcast(patch_ib(i)%angular_vel, size(patch_ib(i)%angular_vel), mpi_p, 0, mpi_comm_world, ierr)
428# 123 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
429 call mpi_bcast(patch_ib(i)%angles, size(patch_ib(i)%angles), mpi_p, 0, mpi_comm_world, ierr)
430# 125 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
431 call mpi_bcast(patch_ib(i)%geometry, 1, mpi_integer, 0, mpi_comm_world, ierr)
432
433# 129 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
434 call mpi_bcast(patch_ib(i)%x_centroid, 1, mpi_p, 0, mpi_comm_world, ierr)
435# 129 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
436 call mpi_bcast(patch_ib(i)%y_centroid, 1, mpi_p, 0, mpi_comm_world, ierr)
437# 129 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
438 call mpi_bcast(patch_ib(i)%z_centroid, 1, mpi_p, 0, mpi_comm_world, ierr)
439# 129 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
440 call mpi_bcast(patch_ib(i)%length_x, 1, mpi_p, 0, mpi_comm_world, ierr)
441# 129 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
442 call mpi_bcast(patch_ib(i)%length_y, 1, mpi_p, 0, mpi_comm_world, ierr)
443# 129 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
444 call mpi_bcast(patch_ib(i)%length_z, 1, mpi_p, 0, mpi_comm_world, ierr)
445# 129 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
446 call mpi_bcast(patch_ib(i)%radius, 1, mpi_p, 0, mpi_comm_world, ierr)
447# 131 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
448 call mpi_bcast(patch_ib(i)%airfoil_id, 1, mpi_integer, 0, mpi_comm_world, ierr)
449 call mpi_bcast(patch_ib(i)%model_id, 1, mpi_integer, 0, mpi_comm_world, ierr)
450 call mpi_bcast(patch_ib(i)%slip, 1, mpi_logical, 0, mpi_comm_world, ierr)
451 end do
452
453 ! manual: ib_airfoil (kept manual alongside patch_ib)
454 do i = 1, num_ib_airfoils_max
455# 139 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
456 call mpi_bcast(ib_airfoil(i)%c, 1, mpi_p, 0, mpi_comm_world, ierr)
457# 139 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
458 call mpi_bcast(ib_airfoil(i)%p, 1, mpi_p, 0, mpi_comm_world, ierr)
459# 139 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
460 call mpi_bcast(ib_airfoil(i)%t, 1, mpi_p, 0, mpi_comm_world, ierr)
461# 139 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
462 call mpi_bcast(ib_airfoil(i)%m, 1, mpi_p, 0, mpi_comm_world, ierr)
463# 141 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
464 end do
465
466 ! manual: stl_models loop (num_stl_models scalar is generated; grouped array members)
467 do i = 1, num_stl_models_max
468 call mpi_bcast(stl_models(i)%model_filepath, len(stl_models(i)%model_filepath), mpi_character, 0, mpi_comm_world, ierr)
469 call mpi_bcast(stl_models(i)%model_threshold, 1, mpi_p, 0, mpi_comm_world, ierr)
470# 148 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
471 call mpi_bcast(stl_models(i)%model_translate, 3, mpi_p, 0, mpi_comm_world, ierr)
472# 148 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
473 call mpi_bcast(stl_models(i)%model_scale, 3, mpi_p, 0, mpi_comm_world, ierr)
474# 150 "/home/runner/work/MFC/MFC/src/pre_process/m_mpi_proxy.fpp"
475 end do
476
477 ! Hardcoded-patch variables (#1290; not namelist-bound, set on rank 0)
478 call mpi_bcast(interface_file, len(interface_file), mpi_character, 0, mpi_comm_world, ierr)
479 call mpi_bcast(normfac, 1, mpi_p, 0, mpi_comm_world, ierr)
480 call mpi_bcast(normmag, 1, mpi_p, 0, mpi_comm_world, ierr)
481 call mpi_bcast(g0_ic, 1, mpi_p, 0, mpi_comm_world, ierr)
482 call mpi_bcast(p0_ic, 1, mpi_p, 0, mpi_comm_world, ierr)
483
484 ! manual: simplex_params density perturbation (nested i-j loops; irregular structure)
485 do i = 1, num_fluids_max
486 call mpi_bcast(simplex_params%perturb_dens(i), 1, mpi_logical, 0, mpi_comm_world, ierr)
487 call mpi_bcast(simplex_params%perturb_dens_freq(i), 1, mpi_p, 0, mpi_comm_world, ierr)
488 call mpi_bcast(simplex_params%perturb_dens_scale(i), 1, mpi_p, 0, mpi_comm_world, ierr)
489
490 do j = 1, 3
491 call mpi_bcast(simplex_params%perturb_dens_offset(i, j), 1, mpi_p, 0, mpi_comm_world, ierr)
492 end do
493 end do
494
495 ! manual: simplex_params velocity perturbation
496 do i = 1, 3
497 call mpi_bcast(simplex_params%perturb_vel(i), 1, mpi_logical, 0, mpi_comm_world, ierr)
498 call mpi_bcast(simplex_params%perturb_vel_freq(i), 1, mpi_p, 0, mpi_comm_world, ierr)
499 call mpi_bcast(simplex_params%perturb_vel_scale(i), 1, mpi_p, 0, mpi_comm_world, ierr)
500
501 do j = 1, 3
502 call mpi_bcast(simplex_params%perturb_vel_offset(i, j), 1, mpi_p, 0, mpi_comm_world, ierr)
503 end do
504 end do
505#endif
506
507 end subroutine s_mpi_bcast_user_inputs
508
509end module m_mpi_proxy
integer, intent(in) j
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Defines global parameters for the computational domain, simulation algorithm, and initial conditions.
integer p_glb
Global number of cells in each direction.
type(int_bounds_info) bc_z
Boundary conditions in the x-, y- and z-coordinate directions.
logical bc_io
whether or not to save BC data
type(bounds_info) z_domain
Locations of the domain bounds in the x-, y- and z-coordinate directions.
character(len=2 *path_len) interface_file
type(int_bounds_info) bc_y
type(int_bounds_info) bc_x
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
MPI communication layer: domain decomposition, halo exchange, reductions, and parallel I/O setup.
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...