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/simulation/m_mpi_proxy.fpp"
2!>
3!! @file
4!! @brief Contains module m_mpi_proxy
5
6# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
7! This file exists so that Fypp can be run without generating case.fpp files for
8! each target. This is useful when generating documentation, for example. This
9! should also let MFC be built with CMake directly, without invoking mfc.sh.
10
11! For pre-process.
12# 8 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
13
14! For moving immersed boundaries in simulation
15# 12 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
16# 6 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp" 2
17# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
18# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
19# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
20# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
21# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
22# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
25
26# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29
30# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31
32# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33
34# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35
36# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37
38# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39
40# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43
44# 145 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45! New line at end of file is required for FYPP
46# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
47# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
48# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
49# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54
55# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58
59# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60
61# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62
63# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64
65# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66
67# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68
69# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70
71# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
72
73# 145 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
74! New line at end of file is required for FYPP
75# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
76
77# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
79# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
81# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82
83# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84
85# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86
87# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88
89# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90
91# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92
93# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94
95# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96
97# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98
99# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100
101# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102
103# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104
105# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106
107# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108
109# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110
111# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112
113# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124
125# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126
127# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129
130# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131
132# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133
134# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135
136# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149
150# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151
152# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
153! New line at end of file is required for FYPP
154# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
155# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
156# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
157# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
159# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162
163# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
165# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166
167# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168
169# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170
171# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172
173# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174
175# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176
177# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
178
179# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
180
181# 145 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
182! New line at end of file is required for FYPP
183# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
184
185# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186
187# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188
189# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190
191# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192
193# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194
195# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196
197# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198
199# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200
201# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202
203# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204
205# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206
207# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208
209# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210
211# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212
213# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214
215# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216
217# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234
235# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236
237# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
238
239# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
240! New line at end of file is required for FYPP
241# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
242
243! GPU parallel region (scalar reductions, maxval/minval)
244# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245
246! GPU parallel loop over threads (most common GPU macro)
247# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248
249! Required closing for GPU_PARALLEL_LOOP
250# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251
252! Mark routine for device compilation
253# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254
255! Declare device-resident data
256# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257
258! Inner loop within a GPU parallel region
259# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260
261! Scoped GPU data region
262# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263
264! Host code with device pointers (for MPI with GPU buffers)
265# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266
267! Allocate device memory (unscoped)
268# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269
270! Free device memory
271# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272
273! Atomic operation on device
274# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275
276! End atomic capture block
277# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278
279! Copy data between host and device
280# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281
282! Synchronization barrier
283# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284
285! Import GPU library module (openacc or omp_lib)
286# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287
288! Emit code only for AMD compiler
289# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290
291! Emit code for non-Cray compilers
292# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
293
294! Emit code only for Cray compiler
295# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
296
297! Emit code for non-NVIDIA compilers
298# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
299
300# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
301# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
302! New line at end of file is required for FYPP
303# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
304
305# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
306
307! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
308! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
309! example see misc/nvidia_uvm/bind.sh. NVIDIA unified memory page placement hint
310# 57 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
311
312! Allocate and create GPU device memory
313# 77 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
314
315! Free GPU device memory and deallocate
316# 85 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
317
318! Cray-specific GPU pointer setup for vector fields
319# 109 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
320
321! Cray-specific GPU pointer setup for scalar fields
322# 125 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
323
324! Cray-specific GPU pointer setup for acoustic source spatials
325# 150 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
326
327# 156 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
328
329# 163 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
330! New line at end of file is required for FYPP
331# 7 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp" 2
332
333!> @brief MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver
335
336#ifdef MFC_MPI
337 use mpi !< message passing interface (mpi) module
338#endif
339
341 use m_helper
344 use m_mpi_common
345 use m_nvtx
346 use ieee_arithmetic
347
348 implicit none
349
350 integer, private, allocatable, dimension(:) :: ib_buff_send !< IB marker send buffer for halo exchange
351 integer, private, allocatable, dimension(:) :: ib_buff_recv !< IB marker receive buffer for halo exchange
352 integer :: i_halo_size
353
354# 28 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
355#if defined(MFC_OpenACC)
356# 28 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
357!$acc declare create(i_halo_size)
358# 28 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
359#elif defined(MFC_OpenMP)
360# 28 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
361!$omp declare target (i_halo_size)
362# 28 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
363#endif
364
365contains
366
367 !> Initialize the MPI proxy module
369
370#ifdef MFC_MPI
371 if (ib) then
372 if (n > 0) then
373 if (p > 0) then
374 i_halo_size = -1 + buff_size*(m + 2*buff_size + 1)*(n + 2*buff_size + 1)*(p + 2*buff_size + 1) &
375 & /(cells_bounds%mnp_min + 2*buff_size + 1)
376 else
377 i_halo_size = -1 + buff_size*(cells_bounds%mn_max + 2*buff_size + 1)
378 end if
379 else
381 end if
382
383
384# 48 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
385#if defined(MFC_OpenACC)
386# 48 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
387!$acc update device(i_halo_size)
388# 48 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
389#elif defined(MFC_OpenMP)
390# 48 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
391!$omp target update to(i_halo_size)
392# 48 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
393#endif
394#ifdef MFC_DEBUG
395# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
396 block
397# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
398 use iso_fortran_env, only: output_unit
399# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
400
401# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
402 print *, 'm_mpi_proxy.fpp:49: ', '@:ALLOCATE(ib_buff_send(0:i_halo_size), ib_buff_recv(0:i_halo_size))'
403# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
404
405# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
406 call flush (output_unit)
407# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
408 end block
409# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
410#endif
411# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
413# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
414
415# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
416
417# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
418
419# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
420#if defined(MFC_OpenACC)
421# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
422!$acc enter data create(ib_buff_send, ib_buff_recv)
423# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
424#elif defined(MFC_OpenMP)
425# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
426!$omp target enter data map(always,alloc:ib_buff_send, ib_buff_recv)
427# 49 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
428#endif
429 end if
430#endif
431
432 end subroutine s_initialize_mpi_proxy_module
433
434 !> Since only the processor with rank 0 reads and verifies the consistency of user inputs, these are initially not available to
435 !! the other processors. Then, the purpose of this subroutine is to distribute the user inputs to the remaining processors in
436 !! the communicator.
437 impure subroutine s_mpi_bcast_user_inputs()
438
439#ifdef MFC_MPI
440 integer :: i, j !< Generic loop iterator
441 integer :: ierr !< Generic flag used to identify and report MPI errors
442
443 ! Generated: case_dir, namelist scalars (INT/LOG/REAL), CASE_OPT guard, fluid_pp loop,
444 ! bub_pp guard, lag_params guard, chem_params guard
445# 1 "/home/runner/work/MFC/MFC/build/include/simulation/generated_bcast.fpp" 1
446! AUTO-GENERATED - do not edit directly. Regenerate: cmake reconfigure
447!
448 call mpi_bcast(case_dir, len(case_dir), mpi_character, 0, mpi_comm_world, ierr)
449
450 ! Integer scalars
451 call mpi_bcast(adap_dt_max_iters, 1, mpi_integer, 0, mpi_comm_world, ierr)
452 call mpi_bcast(avg_state, 1, mpi_integer, 0, mpi_comm_world, ierr)
453 call mpi_bcast(bubble_model, 1, mpi_integer, 0, mpi_comm_world, ierr)
454 call mpi_bcast(collision_model, 1, mpi_integer, 0, mpi_comm_world, ierr)
455 call mpi_bcast(fd_order, 1, mpi_integer, 0, mpi_comm_world, ierr)
456 call mpi_bcast(ib_neighborhood_radius, 1, mpi_integer, 0, mpi_comm_world, ierr)
457 call mpi_bcast(int_comp, 1, mpi_integer, 0, mpi_comm_world, ierr)
458 call mpi_bcast(low_mach, 1, mpi_integer, 0, mpi_comm_world, ierr)
459 call mpi_bcast(m, 1, mpi_integer, 0, mpi_comm_world, ierr)
460 call mpi_bcast(model_eqns, 1, mpi_integer, 0, mpi_comm_world, ierr)
461 call mpi_bcast(n, 1, mpi_integer, 0, mpi_comm_world, ierr)
462 call mpi_bcast(n_start, 1, mpi_integer, 0, mpi_comm_world, ierr)
463 call mpi_bcast(num_bc_patches, 1, mpi_integer, 0, mpi_comm_world, ierr)
464 call mpi_bcast(num_ibs, 1, mpi_integer, 0, mpi_comm_world, ierr)
465 call mpi_bcast(num_igr_iters, 1, mpi_integer, 0, mpi_comm_world, ierr)
466 call mpi_bcast(num_igr_warm_start_iters, 1, mpi_integer, 0, mpi_comm_world, ierr)
467 call mpi_bcast(num_integrals, 1, mpi_integer, 0, mpi_comm_world, ierr)
468 call mpi_bcast(num_particle_clouds, 1, mpi_integer, 0, mpi_comm_world, ierr)
469 call mpi_bcast(num_probes, 1, mpi_integer, 0, mpi_comm_world, ierr)
470 call mpi_bcast(num_source, 1, mpi_integer, 0, mpi_comm_world, ierr)
471 call mpi_bcast(num_stl_models, 1, mpi_integer, 0, mpi_comm_world, ierr)
472 call mpi_bcast(nv_uvm_igr_temps_on_gpu, 1, mpi_integer, 0, mpi_comm_world, ierr)
473 call mpi_bcast(p, 1, mpi_integer, 0, mpi_comm_world, ierr)
474 call mpi_bcast(precision, 1, mpi_integer, 0, mpi_comm_world, ierr)
475 call mpi_bcast(relax_model, 1, mpi_integer, 0, mpi_comm_world, ierr)
476 call mpi_bcast(riemann_solver, 1, mpi_integer, 0, mpi_comm_world, ierr)
477 call mpi_bcast(t_step_old, 1, mpi_integer, 0, mpi_comm_world, ierr)
478 call mpi_bcast(t_step_print, 1, mpi_integer, 0, mpi_comm_world, ierr)
479 call mpi_bcast(t_step_save, 1, mpi_integer, 0, mpi_comm_world, ierr)
480 call mpi_bcast(t_step_start, 1, mpi_integer, 0, mpi_comm_world, ierr)
481 call mpi_bcast(t_step_stop, 1, mpi_integer, 0, mpi_comm_world, ierr)
482 call mpi_bcast(thermal, 1, mpi_integer, 0, mpi_comm_world, ierr)
483 call mpi_bcast(time_stepper, 1, mpi_integer, 0, mpi_comm_world, ierr)
484 call mpi_bcast(wave_speeds, 1, mpi_integer, 0, mpi_comm_world, ierr)
485
486 ! Logical scalars
487 call mpi_bcast(acoustic_source, 1, mpi_logical, 0, mpi_comm_world, ierr)
488 call mpi_bcast(adap_dt, 1, mpi_logical, 0, mpi_comm_world, ierr)
489 call mpi_bcast(adv_n, 1, mpi_logical, 0, mpi_comm_world, ierr)
490 call mpi_bcast(alt_soundspeed, 1, mpi_logical, 0, mpi_comm_world, ierr)
491 call mpi_bcast(bf_x, 1, mpi_logical, 0, mpi_comm_world, ierr)
492 call mpi_bcast(bf_y, 1, mpi_logical, 0, mpi_comm_world, ierr)
493 call mpi_bcast(bf_z, 1, mpi_logical, 0, mpi_comm_world, ierr)
494 call mpi_bcast(bubbles_euler, 1, mpi_logical, 0, mpi_comm_world, ierr)
495 call mpi_bcast(bubbles_lagrange, 1, mpi_logical, 0, mpi_comm_world, ierr)
496 call mpi_bcast(cfl_adap_dt, 1, mpi_logical, 0, mpi_comm_world, ierr)
497 call mpi_bcast(cfl_const_dt, 1, mpi_logical, 0, mpi_comm_world, ierr)
498 call mpi_bcast(cont_damage, 1, mpi_logical, 0, mpi_comm_world, ierr)
499 call mpi_bcast(cyl_coord, 1, mpi_logical, 0, mpi_comm_world, ierr)
500 call mpi_bcast(down_sample, 1, mpi_logical, 0, mpi_comm_world, ierr)
501 call mpi_bcast(fft_wrt, 1, mpi_logical, 0, mpi_comm_world, ierr)
502 call mpi_bcast(file_per_process, 1, mpi_logical, 0, mpi_comm_world, ierr)
503 call mpi_bcast(hyper_cleaning, 1, mpi_logical, 0, mpi_comm_world, ierr)
504 call mpi_bcast(hyperelasticity, 1, mpi_logical, 0, mpi_comm_world, ierr)
505 call mpi_bcast(hypoelasticity, 1, mpi_logical, 0, mpi_comm_world, ierr)
506 call mpi_bcast(ib, 1, mpi_logical, 0, mpi_comm_world, ierr)
507 call mpi_bcast(ib_state_wrt, 1, mpi_logical, 0, mpi_comm_world, ierr)
508 call mpi_bcast(integral_wrt, 1, mpi_logical, 0, mpi_comm_world, ierr)
509 call mpi_bcast(many_ib_patch_parallelism, 1, mpi_logical, 0, mpi_comm_world, ierr)
510 call mpi_bcast(mixture_err, 1, mpi_logical, 0, mpi_comm_world, ierr)
511 call mpi_bcast(mp_weno, 1, mpi_logical, 0, mpi_comm_world, ierr)
512 call mpi_bcast(mpp_lim, 1, mpi_logical, 0, mpi_comm_world, ierr)
513 call mpi_bcast(null_weights, 1, mpi_logical, 0, mpi_comm_world, ierr)
514 call mpi_bcast(nv_uvm_out_of_core, 1, mpi_logical, 0, mpi_comm_world, ierr)
515 call mpi_bcast(nv_uvm_pref_gpu, 1, mpi_logical, 0, mpi_comm_world, ierr)
516 call mpi_bcast(parallel_io, 1, mpi_logical, 0, mpi_comm_world, ierr)
517 call mpi_bcast(polydisperse, 1, mpi_logical, 0, mpi_comm_world, ierr)
518 call mpi_bcast(polytropic, 1, mpi_logical, 0, mpi_comm_world, ierr)
519 call mpi_bcast(prim_vars_wrt, 1, mpi_logical, 0, mpi_comm_world, ierr)
520 call mpi_bcast(probe_wrt, 1, mpi_logical, 0, mpi_comm_world, ierr)
521 call mpi_bcast(qbmm, 1, mpi_logical, 0, mpi_comm_world, ierr)
522 call mpi_bcast(rdma_mpi, 1, mpi_logical, 0, mpi_comm_world, ierr)
523 call mpi_bcast(relax, 1, mpi_logical, 0, mpi_comm_world, ierr)
524 call mpi_bcast(run_time_info, 1, mpi_logical, 0, mpi_comm_world, ierr)
525 call mpi_bcast(surface_tension, 1, mpi_logical, 0, mpi_comm_world, ierr)
526 call mpi_bcast(weno_re_flux, 1, mpi_logical, 0, mpi_comm_world, ierr)
527 call mpi_bcast(weno_avg, 1, mpi_logical, 0, mpi_comm_world, ierr)
528
529 ! Real scalars
530 call mpi_bcast(bx0, 1, mpi_p, 0, mpi_comm_world, ierr)
531 call mpi_bcast(ca, 1, mpi_p, 0, mpi_comm_world, ierr)
532 call mpi_bcast(r0ref, 1, mpi_p, 0, mpi_comm_world, ierr)
533 call mpi_bcast(re_inv, 1, mpi_p, 0, mpi_comm_world, ierr)
534 call mpi_bcast(web, 1, mpi_p, 0, mpi_comm_world, ierr)
535 call mpi_bcast(adap_dt_tol, 1, mpi_p, 0, mpi_comm_world, ierr)
536 call mpi_bcast(alf_factor, 1, mpi_p, 0, mpi_comm_world, ierr)
537 call mpi_bcast(alpha_bar, 1, mpi_p, 0, mpi_comm_world, ierr)
538 call mpi_bcast(cfl_target, 1, mpi_p, 0, mpi_comm_world, ierr)
539 call mpi_bcast(coefficient_of_restitution, 1, mpi_p, 0, mpi_comm_world, ierr)
540 call mpi_bcast(collision_time, 1, mpi_p, 0, mpi_comm_world, ierr)
541 call mpi_bcast(cont_damage_s, 1, mpi_p, 0, mpi_comm_world, ierr)
542 call mpi_bcast(dt, 1, mpi_p, 0, mpi_comm_world, ierr)
543 call mpi_bcast(g_x, 1, mpi_p, 0, mpi_comm_world, ierr)
544 call mpi_bcast(g_y, 1, mpi_p, 0, mpi_comm_world, ierr)
545 call mpi_bcast(g_z, 1, mpi_p, 0, mpi_comm_world, ierr)
546 call mpi_bcast(hyper_cleaning_speed, 1, mpi_p, 0, mpi_comm_world, ierr)
547 call mpi_bcast(hyper_cleaning_tau, 1, mpi_p, 0, mpi_comm_world, ierr)
548 call mpi_bcast(ib_coefficient_of_friction, 1, mpi_p, 0, mpi_comm_world, ierr)
549 call mpi_bcast(ic_beta, 1, mpi_p, 0, mpi_comm_world, ierr)
550 call mpi_bcast(ic_eps, 1, mpi_p, 0, mpi_comm_world, ierr)
551 call mpi_bcast(k_x, 1, mpi_p, 0, mpi_comm_world, ierr)
552 call mpi_bcast(k_y, 1, mpi_p, 0, mpi_comm_world, ierr)
553 call mpi_bcast(k_z, 1, mpi_p, 0, mpi_comm_world, ierr)
554 call mpi_bcast(muscl_eps, 1, mpi_p, 0, mpi_comm_world, ierr)
555 call mpi_bcast(p_x, 1, mpi_p, 0, mpi_comm_world, ierr)
556 call mpi_bcast(p_y, 1, mpi_p, 0, mpi_comm_world, ierr)
557 call mpi_bcast(p_z, 1, mpi_p, 0, mpi_comm_world, ierr)
558 call mpi_bcast(palpha_eps, 1, mpi_p, 0, mpi_comm_world, ierr)
559 call mpi_bcast(pi_fac, 1, mpi_p, 0, mpi_comm_world, ierr)
560 call mpi_bcast(poly_sigma, 1, mpi_p, 0, mpi_comm_world, ierr)
561 call mpi_bcast(pref, 1, mpi_p, 0, mpi_comm_world, ierr)
562 call mpi_bcast(ptgalpha_eps, 1, mpi_p, 0, mpi_comm_world, ierr)
563 call mpi_bcast(rhoref, 1, mpi_p, 0, mpi_comm_world, ierr)
564 call mpi_bcast(sigma, 1, mpi_p, 0, mpi_comm_world, ierr)
565 call mpi_bcast(t_save, 1, mpi_p, 0, mpi_comm_world, ierr)
566 call mpi_bcast(t_stop, 1, mpi_p, 0, mpi_comm_world, ierr)
567 call mpi_bcast(tau_star, 1, mpi_p, 0, mpi_comm_world, ierr)
568 call mpi_bcast(teno_ct, 1, mpi_p, 0, mpi_comm_world, ierr)
569 call mpi_bcast(w_x, 1, mpi_p, 0, mpi_comm_world, ierr)
570 call mpi_bcast(w_y, 1, mpi_p, 0, mpi_comm_world, ierr)
571 call mpi_bcast(w_z, 1, mpi_p, 0, mpi_comm_world, ierr)
572 call mpi_bcast(weno_eps, 1, mpi_p, 0, mpi_comm_world, ierr)
573 call mpi_bcast(x_a, 1, mpi_p, 0, mpi_comm_world, ierr)
574 call mpi_bcast(x_b, 1, mpi_p, 0, mpi_comm_world, ierr)
575 call mpi_bcast(y_a, 1, mpi_p, 0, mpi_comm_world, ierr)
576 call mpi_bcast(y_b, 1, mpi_p, 0, mpi_comm_world, ierr)
577 call mpi_bcast(z_a, 1, mpi_p, 0, mpi_comm_world, ierr)
578 call mpi_bcast(z_b, 1, mpi_p, 0, mpi_comm_world, ierr)
579
580 ! Case-optimization scalars (absent when constants are baked in)
581# 137 "/home/runner/work/MFC/MFC/build/include/simulation/generated_bcast.fpp"
582 call mpi_bcast(igr_iter_solver, 1, mpi_integer, 0, mpi_comm_world, ierr)
583 call mpi_bcast(igr_order, 1, mpi_integer, 0, mpi_comm_world, ierr)
584 call mpi_bcast(muscl_lim, 1, mpi_integer, 0, mpi_comm_world, ierr)
585 call mpi_bcast(muscl_order, 1, mpi_integer, 0, mpi_comm_world, ierr)
586 call mpi_bcast(nb, 1, mpi_integer, 0, mpi_comm_world, ierr)
587 call mpi_bcast(num_fluids, 1, mpi_integer, 0, mpi_comm_world, ierr)
588 call mpi_bcast(recon_type, 1, mpi_integer, 0, mpi_comm_world, ierr)
589 call mpi_bcast(weno_order, 1, mpi_integer, 0, mpi_comm_world, ierr)
590 call mpi_bcast(igr, 1, mpi_logical, 0, mpi_comm_world, ierr)
591 call mpi_bcast(igr_pres_lim, 1, mpi_logical, 0, mpi_comm_world, ierr)
592 call mpi_bcast(mapped_weno, 1, mpi_logical, 0, mpi_comm_world, ierr)
593 call mpi_bcast(mhd, 1, mpi_logical, 0, mpi_comm_world, ierr)
594 call mpi_bcast(relativity, 1, mpi_logical, 0, mpi_comm_world, ierr)
595 call mpi_bcast(teno, 1, mpi_logical, 0, mpi_comm_world, ierr)
596 call mpi_bcast(viscous, 1, mpi_logical, 0, mpi_comm_world, ierr)
597 call mpi_bcast(wenoz, 1, mpi_logical, 0, mpi_comm_world, ierr)
598 call mpi_bcast(wenoz_q, 1, mpi_p, 0, mpi_comm_world, ierr)
599# 155 "/home/runner/work/MFC/MFC/build/include/simulation/generated_bcast.fpp"
600
601 ! fluid_pp member loop
602 do i = 1, num_fluids_max
603 call mpi_bcast(fluid_pp(i)%G, 1, mpi_p, 0, mpi_comm_world, ierr)
604 call mpi_bcast(fluid_pp(i)%K, 1, mpi_p, 0, mpi_comm_world, ierr)
605 call mpi_bcast(fluid_pp(i)%cv, 1, mpi_p, 0, mpi_comm_world, ierr)
606 call mpi_bcast(fluid_pp(i)%gamma, 1, mpi_p, 0, mpi_comm_world, ierr)
607 call mpi_bcast(fluid_pp(i)%hb_m, 1, mpi_p, 0, mpi_comm_world, ierr)
608 call mpi_bcast(fluid_pp(i)%mu_bulk, 1, mpi_p, 0, mpi_comm_world, ierr)
609 call mpi_bcast(fluid_pp(i)%mu_max, 1, mpi_p, 0, mpi_comm_world, ierr)
610 call mpi_bcast(fluid_pp(i)%mu_min, 1, mpi_p, 0, mpi_comm_world, ierr)
611 call mpi_bcast(fluid_pp(i)%nn, 1, mpi_p, 0, mpi_comm_world, ierr)
612 call mpi_bcast(fluid_pp(i)%non_newtonian, 1, mpi_logical, 0, mpi_comm_world, ierr)
613 call mpi_bcast(fluid_pp(i)%pi_inf, 1, mpi_p, 0, mpi_comm_world, ierr)
614 call mpi_bcast(fluid_pp(i)%qv, 1, mpi_p, 0, mpi_comm_world, ierr)
615 call mpi_bcast(fluid_pp(i)%qvp, 1, mpi_p, 0, mpi_comm_world, ierr)
616 call mpi_bcast(fluid_pp(i)%tau0, 1, mpi_p, 0, mpi_comm_world, ierr)
617 call mpi_bcast(fluid_pp(i)%Re(1), 2, mpi_p, 0, mpi_comm_world, ierr)
618 end do
619
620 ! bub_pp members (under bubbles guard)
621 if (bubbles_euler .or. bubbles_lagrange) then
622 call mpi_bcast(bub_pp%M_g, 1, mpi_p, 0, mpi_comm_world, ierr)
623 call mpi_bcast(bub_pp%M_v, 1, mpi_p, 0, mpi_comm_world, ierr)
624 call mpi_bcast(bub_pp%R0ref, 1, mpi_p, 0, mpi_comm_world, ierr)
625 call mpi_bcast(bub_pp%R_g, 1, mpi_p, 0, mpi_comm_world, ierr)
626 call mpi_bcast(bub_pp%R_v, 1, mpi_p, 0, mpi_comm_world, ierr)
627 call mpi_bcast(bub_pp%T0ref, 1, mpi_p, 0, mpi_comm_world, ierr)
628 call mpi_bcast(bub_pp%cp_g, 1, mpi_p, 0, mpi_comm_world, ierr)
629 call mpi_bcast(bub_pp%cp_v, 1, mpi_p, 0, mpi_comm_world, ierr)
630 call mpi_bcast(bub_pp%gam_g, 1, mpi_p, 0, mpi_comm_world, ierr)
631 call mpi_bcast(bub_pp%gam_v, 1, mpi_p, 0, mpi_comm_world, ierr)
632 call mpi_bcast(bub_pp%k_g, 1, mpi_p, 0, mpi_comm_world, ierr)
633 call mpi_bcast(bub_pp%k_v, 1, mpi_p, 0, mpi_comm_world, ierr)
634 call mpi_bcast(bub_pp%mu_g, 1, mpi_p, 0, mpi_comm_world, ierr)
635 call mpi_bcast(bub_pp%mu_l, 1, mpi_p, 0, mpi_comm_world, ierr)
636 call mpi_bcast(bub_pp%mu_v, 1, mpi_p, 0, mpi_comm_world, ierr)
637 call mpi_bcast(bub_pp%p0ref, 1, mpi_p, 0, mpi_comm_world, ierr)
638 call mpi_bcast(bub_pp%pv, 1, mpi_p, 0, mpi_comm_world, ierr)
639 call mpi_bcast(bub_pp%rho0ref, 1, mpi_p, 0, mpi_comm_world, ierr)
640 call mpi_bcast(bub_pp%ss, 1, mpi_p, 0, mpi_comm_world, ierr)
641 call mpi_bcast(bub_pp%vd, 1, mpi_p, 0, mpi_comm_world, ierr)
642 end if
643
644 ! lag_params members (under bubbles_lagrange guard)
645 if (bubbles_lagrange) then
646 call mpi_bcast(lag_params%heatTransfer_model, 1, mpi_logical, 0, mpi_comm_world, ierr)
647 call mpi_bcast(lag_params%massTransfer_model, 1, mpi_logical, 0, mpi_comm_world, ierr)
648 call mpi_bcast(lag_params%pressure_corrector, 1, mpi_logical, 0, mpi_comm_world, ierr)
649 call mpi_bcast(lag_params%write_bubbles, 1, mpi_logical, 0, mpi_comm_world, ierr)
650 call mpi_bcast(lag_params%write_bubbles_stats, 1, mpi_logical, 0, mpi_comm_world, ierr)
651 call mpi_bcast(lag_params%cluster_type, 1, mpi_integer, 0, mpi_comm_world, ierr)
652 call mpi_bcast(lag_params%nBubs_glb, 1, mpi_integer, 0, mpi_comm_world, ierr)
653 call mpi_bcast(lag_params%smooth_type, 1, mpi_integer, 0, mpi_comm_world, ierr)
654 call mpi_bcast(lag_params%solver_approach, 1, mpi_integer, 0, mpi_comm_world, ierr)
655 call mpi_bcast(lag_params%charwidth, 1, mpi_p, 0, mpi_comm_world, ierr)
656 call mpi_bcast(lag_params%epsilonb, 1, mpi_p, 0, mpi_comm_world, ierr)
657 call mpi_bcast(lag_params%valmaxvoid, 1, mpi_p, 0, mpi_comm_world, ierr)
658 end if
659
660 ! chem_params members (under chemistry guard)
661 if (chemistry) then
662 call mpi_bcast(chem_params%diffusion, 1, mpi_logical, 0, mpi_comm_world, ierr)
663 call mpi_bcast(chem_params%reactions, 1, mpi_logical, 0, mpi_comm_world, ierr)
664 call mpi_bcast(chem_params%gamma_method, 1, mpi_integer, 0, mpi_comm_world, ierr)
665 call mpi_bcast(chem_params%transport_model, 1, mpi_integer, 0, mpi_comm_world, ierr)
666 end if
667
668# 67 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp" 2
669
670 ! manual: m_glb, n_glb, p_glb (computed in s_read_input_file, not namelist-bound)
671 call mpi_bcast(m_glb, 1, mpi_integer, 0, mpi_comm_world, ierr)
672 call mpi_bcast(n_glb, 1, mpi_integer, 0, mpi_comm_world, ierr)
673 call mpi_bcast(p_glb, 1, mpi_integer, 0, mpi_comm_world, ierr)
674
675 ! manual: bc_x/y/z member broadcasts (struct members not in NAMELIST_VARS)
676# 75 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
677 call mpi_bcast(bc_x%beg, 1, mpi_integer, 0, mpi_comm_world, ierr)
678# 75 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
679 call mpi_bcast(bc_x%end, 1, mpi_integer, 0, mpi_comm_world, ierr)
680# 75 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
681 call mpi_bcast(bc_y%beg, 1, mpi_integer, 0, mpi_comm_world, ierr)
682# 75 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
683 call mpi_bcast(bc_y%end, 1, mpi_integer, 0, mpi_comm_world, ierr)
684# 75 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
685 call mpi_bcast(bc_z%beg, 1, mpi_integer, 0, mpi_comm_world, ierr)
686# 75 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
687 call mpi_bcast(bc_z%end, 1, mpi_integer, 0, mpi_comm_world, ierr)
688# 77 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
689
690# 83 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
691 call mpi_bcast(bc_x%grcbc_in, 1, mpi_logical, 0, mpi_comm_world, ierr)
692# 83 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
693 call mpi_bcast(bc_x%grcbc_out, 1, mpi_logical, 0, mpi_comm_world, ierr)
694# 83 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
695 call mpi_bcast(bc_x%grcbc_vel_out, 1, mpi_logical, 0, mpi_comm_world, ierr)
696# 83 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
697 call mpi_bcast(bc_y%grcbc_in, 1, mpi_logical, 0, mpi_comm_world, ierr)
698# 83 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
699 call mpi_bcast(bc_y%grcbc_out, 1, mpi_logical, 0, mpi_comm_world, ierr)
700# 83 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
701 call mpi_bcast(bc_y%grcbc_vel_out, 1, mpi_logical, 0, mpi_comm_world, ierr)
702# 83 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
703 call mpi_bcast(bc_z%grcbc_in, 1, mpi_logical, 0, mpi_comm_world, ierr)
704# 83 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
705 call mpi_bcast(bc_z%grcbc_out, 1, mpi_logical, 0, mpi_comm_world, ierr)
706# 83 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
707 call mpi_bcast(bc_z%grcbc_vel_out, 1, mpi_logical, 0, mpi_comm_world, ierr)
708# 83 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
709 call mpi_bcast(bc_x%isothermal_in, 1, mpi_logical, 0, mpi_comm_world, ierr)
710# 83 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
711 call mpi_bcast(bc_y%isothermal_in, 1, mpi_logical, 0, mpi_comm_world, ierr)
712# 83 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
713 call mpi_bcast(bc_z%isothermal_in, 1, mpi_logical, 0, mpi_comm_world, ierr)
714# 83 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
715 call mpi_bcast(bc_x%isothermal_out, 1, mpi_logical, 0, mpi_comm_world, ierr)
716# 83 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
717 call mpi_bcast(bc_y%isothermal_out, 1, mpi_logical, 0, mpi_comm_world, ierr)
718# 83 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
719 call mpi_bcast(bc_z%isothermal_out, 1, mpi_logical, 0, mpi_comm_world, ierr)
720# 85 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
721
722# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
723 call mpi_bcast(bc_x%vb1, 1, mpi_p, 0, mpi_comm_world, ierr)
724# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
725 call mpi_bcast(bc_x%vb2, 1, mpi_p, 0, mpi_comm_world, ierr)
726# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
727 call mpi_bcast(bc_x%vb3, 1, mpi_p, 0, mpi_comm_world, ierr)
728# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
729 call mpi_bcast(bc_x%ve1, 1, mpi_p, 0, mpi_comm_world, ierr)
730# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
731 call mpi_bcast(bc_x%ve2, 1, mpi_p, 0, mpi_comm_world, ierr)
732# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
733 call mpi_bcast(bc_x%ve3, 1, mpi_p, 0, mpi_comm_world, ierr)
734# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
735 call mpi_bcast(bc_y%vb1, 1, mpi_p, 0, mpi_comm_world, ierr)
736# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
737 call mpi_bcast(bc_y%vb2, 1, mpi_p, 0, mpi_comm_world, ierr)
738# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
739 call mpi_bcast(bc_y%vb3, 1, mpi_p, 0, mpi_comm_world, ierr)
740# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
741 call mpi_bcast(bc_y%ve1, 1, mpi_p, 0, mpi_comm_world, ierr)
742# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
743 call mpi_bcast(bc_y%ve2, 1, mpi_p, 0, mpi_comm_world, ierr)
744# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
745 call mpi_bcast(bc_y%ve3, 1, mpi_p, 0, mpi_comm_world, ierr)
746# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
747 call mpi_bcast(bc_z%vb1, 1, mpi_p, 0, mpi_comm_world, ierr)
748# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
749 call mpi_bcast(bc_z%vb2, 1, mpi_p, 0, mpi_comm_world, ierr)
750# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
751 call mpi_bcast(bc_z%vb3, 1, mpi_p, 0, mpi_comm_world, ierr)
752# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
753 call mpi_bcast(bc_z%ve1, 1, mpi_p, 0, mpi_comm_world, ierr)
754# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
755 call mpi_bcast(bc_z%ve2, 1, mpi_p, 0, mpi_comm_world, ierr)
756# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
757 call mpi_bcast(bc_z%ve3, 1, mpi_p, 0, mpi_comm_world, ierr)
758# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
759 call mpi_bcast(bc_x%pres_in, 1, mpi_p, 0, mpi_comm_world, ierr)
760# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
761 call mpi_bcast(bc_x%pres_out, 1, mpi_p, 0, mpi_comm_world, ierr)
762# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
763 call mpi_bcast(bc_y%pres_in, 1, mpi_p, 0, mpi_comm_world, ierr)
764# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
765 call mpi_bcast(bc_y%pres_out, 1, mpi_p, 0, mpi_comm_world, ierr)
766# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
767 call mpi_bcast(bc_z%pres_in, 1, mpi_p, 0, mpi_comm_world, ierr)
768# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
769 call mpi_bcast(bc_z%pres_out, 1, mpi_p, 0, mpi_comm_world, ierr)
770# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
771 call mpi_bcast(x_domain%beg, 1, mpi_p, 0, mpi_comm_world, ierr)
772# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
773 call mpi_bcast(x_domain%end, 1, mpi_p, 0, mpi_comm_world, ierr)
774# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
775 call mpi_bcast(y_domain%beg, 1, mpi_p, 0, mpi_comm_world, ierr)
776# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
777 call mpi_bcast(y_domain%end, 1, mpi_p, 0, mpi_comm_world, ierr)
778# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
779 call mpi_bcast(z_domain%beg, 1, mpi_p, 0, mpi_comm_world, ierr)
780# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
781 call mpi_bcast(z_domain%end, 1, mpi_p, 0, mpi_comm_world, ierr)
782# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
783 call mpi_bcast(bc_x%Twall_in, 1, mpi_p, 0, mpi_comm_world, ierr)
784# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
785 call mpi_bcast(bc_x%Twall_out, 1, mpi_p, 0, mpi_comm_world, ierr)
786# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
787 call mpi_bcast(bc_y%Twall_in, 1, mpi_p, 0, mpi_comm_world, ierr)
788# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
789 call mpi_bcast(bc_y%Twall_out, 1, mpi_p, 0, mpi_comm_world, ierr)
790# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
791 call mpi_bcast(bc_z%Twall_in, 1, mpi_p, 0, mpi_comm_world, ierr)
792# 95 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
793 call mpi_bcast(bc_z%Twall_out, 1, mpi_p, 0, mpi_comm_world, ierr)
794# 97 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
795
796 do i = 1, 3
797# 101 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
798 call mpi_bcast(bc_x%vel_in (i), 1, mpi_p, 0, mpi_comm_world, ierr)
799# 101 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
800 call mpi_bcast(bc_x%vel_out (i), 1, mpi_p, 0, mpi_comm_world, ierr)
801# 101 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
802 call mpi_bcast(bc_y%vel_in (i), 1, mpi_p, 0, mpi_comm_world, ierr)
803# 101 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
804 call mpi_bcast(bc_y%vel_out (i), 1, mpi_p, 0, mpi_comm_world, ierr)
805# 101 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
806 call mpi_bcast(bc_z%vel_in (i), 1, mpi_p, 0, mpi_comm_world, ierr)
807# 101 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
808 call mpi_bcast(bc_z%vel_out (i), 1, mpi_p, 0, mpi_comm_world, ierr)
809# 103 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
810 end do
811
812 ! manual: cfl_dt (runtime-computed logical), bc_io (BC-file existence)
813 call mpi_bcast(cfl_dt, 1, mpi_logical, 0, mpi_comm_world, ierr)
814 call mpi_bcast(bc_io, 1, mpi_logical, 0, mpi_comm_world, ierr)
815
816 ! manual: shear_stress, bulk_stress (derived from Re_size post-init on all ranks),
817 ! bodyForces (derived from bf_x/y/z)
818 call mpi_bcast(shear_stress, 1, mpi_logical, 0, mpi_comm_world, ierr)
819 call mpi_bcast(bulk_stress, 1, mpi_logical, 0, mpi_comm_world, ierr)
820 call mpi_bcast(bodyforces, 1, mpi_logical, 0, mpi_comm_world, ierr)
821
822 ! manual: bc_x per-fluid inflow arrays (loop over num_fluids_max)
823 do i = 1, num_fluids_max
824# 119 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
825 call mpi_bcast(bc_x%alpha_rho_in (i), 1, mpi_p, 0, mpi_comm_world, ierr)
826# 119 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
827 call mpi_bcast(bc_x%alpha_in (i), 1, mpi_p, 0, mpi_comm_world, ierr)
828# 119 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
829 call mpi_bcast(bc_y%alpha_rho_in (i), 1, mpi_p, 0, mpi_comm_world, ierr)
830# 119 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
831 call mpi_bcast(bc_y%alpha_in (i), 1, mpi_p, 0, mpi_comm_world, ierr)
832# 119 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
833 call mpi_bcast(bc_z%alpha_rho_in (i), 1, mpi_p, 0, mpi_comm_world, ierr)
834# 119 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
835 call mpi_bcast(bc_z%alpha_in (i), 1, mpi_p, 0, mpi_comm_world, ierr)
836# 121 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
837 end do
838
839 ! manual: patch_ib (sim member subset differs from pre; uses count=3, adds mass/moving_ibm)
840 do i = 1, num_ibs
841# 127 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
842 call mpi_bcast(patch_ib(i)%radius, 1, mpi_p, 0, mpi_comm_world, ierr)
843# 127 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
844 call mpi_bcast(patch_ib(i)%length_x, 1, mpi_p, 0, mpi_comm_world, ierr)
845# 127 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
846 call mpi_bcast(patch_ib(i)%length_y, 1, mpi_p, 0, mpi_comm_world, ierr)
847# 127 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
848 call mpi_bcast(patch_ib(i)%length_z, 1, mpi_p, 0, mpi_comm_world, ierr)
849# 127 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
850 call mpi_bcast(patch_ib(i)%x_centroid, 1, mpi_p, 0, mpi_comm_world, ierr)
851# 127 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
852 call mpi_bcast(patch_ib(i)%y_centroid, 1, mpi_p, 0, mpi_comm_world, ierr)
853# 127 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
854 call mpi_bcast(patch_ib(i)%z_centroid, 1, mpi_p, 0, mpi_comm_world, ierr)
855# 127 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
856 call mpi_bcast(patch_ib(i)%slip, 1, mpi_p, 0, mpi_comm_world, ierr)
857# 127 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
858 call mpi_bcast(patch_ib(i)%mass, 1, mpi_p, 0, mpi_comm_world, ierr)
859# 129 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
860# 130 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
861 call mpi_bcast(patch_ib(i)%vel, 3, mpi_p, 0, mpi_comm_world, ierr)
862# 130 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
863 call mpi_bcast(patch_ib(i)%angular_vel, 3, mpi_p, 0, mpi_comm_world, ierr)
864# 130 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
865 call mpi_bcast(patch_ib(i)%angles, 3, mpi_p, 0, mpi_comm_world, ierr)
866# 132 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
867 call mpi_bcast(patch_ib(i)%geometry, 1, mpi_integer, 0, mpi_comm_world, ierr)
868 call mpi_bcast(patch_ib(i)%moving_ibm, 1, mpi_integer, 0, mpi_comm_world, ierr)
869 call mpi_bcast(patch_ib(i)%airfoil_id, 1, mpi_integer, 0, mpi_comm_world, ierr)
870 call mpi_bcast(patch_ib(i)%model_id, 1, mpi_integer, 0, mpi_comm_world, ierr)
871 end do
872
873 ! manual: ib_airfoil (kept manual alongside patch_ib)
874 do i = 1, num_ib_airfoils_max
875# 141 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
876 call mpi_bcast(ib_airfoil(i)%c, 1, mpi_p, 0, mpi_comm_world, ierr)
877# 141 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
878 call mpi_bcast(ib_airfoil(i)%p, 1, mpi_p, 0, mpi_comm_world, ierr)
879# 141 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
880 call mpi_bcast(ib_airfoil(i)%t, 1, mpi_p, 0, mpi_comm_world, ierr)
881# 141 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
882 call mpi_bcast(ib_airfoil(i)%m, 1, mpi_p, 0, mpi_comm_world, ierr)
883# 143 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
884 end do
885
886 ! manual: stl_models loop (num_stl_models scalar is generated; grouped array members)
887 do i = 1, num_stl_models_max
888 call mpi_bcast(stl_models(i)%model_filepath, len(stl_models(i)%model_filepath), mpi_character, 0, mpi_comm_world, ierr)
889 call mpi_bcast(stl_models(i)%model_threshold, 1, mpi_p, 0, mpi_comm_world, ierr)
890# 150 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
891 call mpi_bcast(stl_models(i)%model_translate, 3, mpi_p, 0, mpi_comm_world, ierr)
892# 150 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
893 call mpi_bcast(stl_models(i)%model_scale, 3, mpi_p, 0, mpi_comm_world, ierr)
894# 152 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
895 end do
896
897 ! manual: particle_cloud (runtime loop to num_particle_clouds; irregular member subset)
898 do i = 1, num_particle_clouds
899# 158 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
900 call mpi_bcast(particle_cloud(i)%x_centroid, 1, mpi_p, 0, mpi_comm_world, ierr)
901# 158 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
902 call mpi_bcast(particle_cloud(i)%y_centroid, 1, mpi_p, 0, mpi_comm_world, ierr)
903# 158 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
904 call mpi_bcast(particle_cloud(i)%z_centroid, 1, mpi_p, 0, mpi_comm_world, ierr)
905# 158 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
906 call mpi_bcast(particle_cloud(i)%length_x, 1, mpi_p, 0, mpi_comm_world, ierr)
907# 158 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
908 call mpi_bcast(particle_cloud(i)%length_y, 1, mpi_p, 0, mpi_comm_world, ierr)
909# 158 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
910 call mpi_bcast(particle_cloud(i)%length_z, 1, mpi_p, 0, mpi_comm_world, ierr)
911# 158 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
912 call mpi_bcast(particle_cloud(i)%radius, 1, mpi_p, 0, mpi_comm_world, ierr)
913# 158 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
914 call mpi_bcast(particle_cloud(i)%mass, 1, mpi_p, 0, mpi_comm_world, ierr)
915# 158 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
916 call mpi_bcast(particle_cloud(i)%min_spacing, 1, mpi_p, 0, mpi_comm_world, ierr)
917# 160 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
918 call mpi_bcast(particle_cloud(i)%num_particles, 1, mpi_integer, 0, mpi_comm_world, ierr)
919 call mpi_bcast(particle_cloud(i)%moving_ibm, 1, mpi_integer, 0, mpi_comm_world, ierr)
920 call mpi_bcast(particle_cloud(i)%seed, 1, mpi_integer, 0, mpi_comm_world, ierr)
921 call mpi_bcast(particle_cloud(i)%packing_method, 1, mpi_integer, 0, mpi_comm_world, ierr)
922 end do
923
924 ! manual: acoustic/probe/integral (combined loop; complex acoustic member set)
925 do j = 1, num_probes_max
926 do i = 1, 3
927 call mpi_bcast(acoustic(j)%loc(i), 1, mpi_p, 0, mpi_comm_world, ierr)
928 end do
929
930 call mpi_bcast(acoustic(j)%dipole, 1, mpi_logical, 0, mpi_comm_world, ierr)
931
932# 175 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
933 call mpi_bcast(acoustic(j)%pulse, 1, mpi_integer, 0, mpi_comm_world, ierr)
934# 175 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
935 call mpi_bcast(acoustic(j)%support, 1, mpi_integer, 0, mpi_comm_world, ierr)
936# 175 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
937 call mpi_bcast(acoustic(j)%num_elements, 1, mpi_integer, 0, mpi_comm_world, ierr)
938# 175 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
939 call mpi_bcast(acoustic(j)%element_on, 1, mpi_integer, 0, mpi_comm_world, ierr)
940# 175 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
941 call mpi_bcast(acoustic(j)%bb_num_freq, 1, mpi_integer, 0, mpi_comm_world, ierr)
942# 177 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
943
944# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
945 call mpi_bcast(acoustic(j)%mag, 1, mpi_p, 0, mpi_comm_world, ierr)
946# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
947 call mpi_bcast(acoustic(j)%length, 1, mpi_p, 0, mpi_comm_world, ierr)
948# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
949 call mpi_bcast(acoustic(j)%height, 1, mpi_p, 0, mpi_comm_world, ierr)
950# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
951 call mpi_bcast(acoustic(j)%wavelength, 1, mpi_p, 0, mpi_comm_world, ierr)
952# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
953 call mpi_bcast(acoustic(j)%frequency, 1, mpi_p, 0, mpi_comm_world, ierr)
954# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
955 call mpi_bcast(acoustic(j)%gauss_sigma_dist, 1, mpi_p, 0, mpi_comm_world, ierr)
956# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
957 call mpi_bcast(acoustic(j)%gauss_sigma_time, 1, mpi_p, 0, mpi_comm_world, ierr)
958# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
959 call mpi_bcast(acoustic(j)%npulse, 1, mpi_p, 0, mpi_comm_world, ierr)
960# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
961 call mpi_bcast(acoustic(j)%dir, 1, mpi_p, 0, mpi_comm_world, ierr)
962# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
963 call mpi_bcast(acoustic(j)%delay, 1, mpi_p, 0, mpi_comm_world, ierr)
964# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
965 call mpi_bcast(acoustic(j)%foc_length, 1, mpi_p, 0, mpi_comm_world, ierr)
966# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
967 call mpi_bcast(acoustic(j)%aperture, 1, mpi_p, 0, mpi_comm_world, ierr)
968# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
969 call mpi_bcast(acoustic(j)%element_spacing_angle, 1, mpi_p, 0, mpi_comm_world, ierr)
970# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
971 call mpi_bcast(acoustic(j)%element_polygon_ratio, 1, mpi_p, 0, mpi_comm_world, ierr)
972# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
973 call mpi_bcast(acoustic(j)%rotate_angle, 1, mpi_p, 0, mpi_comm_world, ierr)
974# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
975 call mpi_bcast(acoustic(j)%bb_bandwidth, 1, mpi_p, 0, mpi_comm_world, ierr)
976# 183 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
977 call mpi_bcast(acoustic(j)%bb_lowest_freq, 1, mpi_p, 0, mpi_comm_world, ierr)
978# 185 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
979
980# 187 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
981 call mpi_bcast(probe(j)%x, 1, mpi_p, 0, mpi_comm_world, ierr)
982# 187 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
983 call mpi_bcast(probe(j)%y, 1, mpi_p, 0, mpi_comm_world, ierr)
984# 187 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
985 call mpi_bcast(probe(j)%z, 1, mpi_p, 0, mpi_comm_world, ierr)
986# 189 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
987
988# 191 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
989 call mpi_bcast(integral(j)%xmin, 1, mpi_p, 0, mpi_comm_world, ierr)
990# 191 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
991 call mpi_bcast(integral(j)%xmax, 1, mpi_p, 0, mpi_comm_world, ierr)
992# 191 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
993 call mpi_bcast(integral(j)%ymin, 1, mpi_p, 0, mpi_comm_world, ierr)
994# 191 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
995 call mpi_bcast(integral(j)%ymax, 1, mpi_p, 0, mpi_comm_world, ierr)
996# 191 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
997 call mpi_bcast(integral(j)%zmin, 1, mpi_p, 0, mpi_comm_world, ierr)
998# 191 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
999 call mpi_bcast(integral(j)%zmax, 1, mpi_p, 0, mpi_comm_world, ierr)
1000# 193 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
1001 end do
1002#endif
1003
1004 end subroutine s_mpi_bcast_user_inputs
1005
1006 !> Broadcast random phase numbers from rank 0 to all MPI processes
1007 impure subroutine s_mpi_send_random_number(phi_rn, num_freq)
1008
1009 integer, intent(in) :: num_freq
1010 real(wp), intent(inout), dimension(1:num_freq) :: phi_rn
1011
1012#ifdef MFC_MPI
1013 integer :: ierr !< Generic flag used to identify and report MPI errors
1014 call mpi_bcast(phi_rn, num_freq, mpi_p, 0, mpi_comm_world, ierr)
1015#endif
1016
1017 end subroutine s_mpi_send_random_number
1018
1019 !> Finalize the MPI proxy module
1021
1022#ifdef MFC_MPI
1023 if (ib) then
1024#ifdef MFC_DEBUG
1025# 216 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
1026 block
1027# 216 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
1028 use iso_fortran_env, only: output_unit
1029# 216 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
1030
1031# 216 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
1032 print *, 'm_mpi_proxy.fpp:216: ', '@:DEALLOCATE(ib_buff_send, ib_buff_recv)'
1033# 216 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
1034
1035# 216 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
1036 call flush (output_unit)
1037# 216 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
1038 end block
1039# 216 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
1040#endif
1041# 216 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
1042
1043# 216 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
1044#if defined(MFC_OpenACC)
1045# 216 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
1046!$acc exit data delete(ib_buff_send, ib_buff_recv)
1047# 216 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
1048#elif defined(MFC_OpenMP)
1049# 216 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
1050!$omp target exit data map(release:ib_buff_send, ib_buff_recv)
1051# 216 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
1052#endif
1053# 216 "/home/runner/work/MFC/MFC/src/simulation/m_mpi_proxy.fpp"
1054 deallocate (ib_buff_send, ib_buff_recv)
1055 end if
1056#endif
1057
1058 end subroutine s_finalize_mpi_proxy_module
1059
1060end module m_mpi_proxy
integer, intent(in) j
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
integer buff_size
Number of ghost cells for boundary condition storage.
type(cell_num_bounds) cells_bounds
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
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.
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
subroutine s_initialize_mpi_proxy_module()
Initialize the MPI proxy module.
integer, dimension(:), allocatable, private ib_buff_send
IB marker send buffer for halo exchange.
integer, dimension(:), allocatable, private ib_buff_recv
IB marker receive buffer for halo exchange.
impure subroutine s_mpi_send_random_number(phi_rn, num_freq)
Broadcast random phase numbers from rank 0 to all MPI processes.
subroutine s_finalize_mpi_proxy_module()
Finalize the MPI proxy module.
impure subroutine s_mpi_bcast_user_inputs()
Since only the processor with rank 0 reads and verifies the consistency of user inputs,...
NVIDIA NVTX profiling API bindings for GPU performance instrumentation.
Definition m_nvtx.f90:6