1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
6# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
7# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
8# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
9# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
10# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
11# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
12# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
13# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
15# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
16# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
17# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
19# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
21# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
25# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33# 145 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
36# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
37# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
38# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
42# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
46# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62# 145 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
66# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
67# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
68# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
69# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
70# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
72# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
74# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
144# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
145# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
146# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
147# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
148# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
149# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
150# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
152# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
153# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
154# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170# 145 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
174# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
176# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
178# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
180# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
182# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
184# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
233# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
236# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
239# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
242# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
289# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
292# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
294# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
299# 57 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
302# 77 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
305# 85 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
308# 109 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
311# 125 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
314# 150 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
316# 156 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
318# 163 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
320# 6 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp" 2
338# 22 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
339#if defined(MFC_OpenACC)
340# 22 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
342# 22 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
343#elif defined(MFC_OpenMP)
344# 22 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
346# 22 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
349 logical,
allocatable,
dimension(:) ::
dipole
351# 25 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
352#if defined(MFC_OpenACC)
353# 25 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
355# 25 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
356#elif defined(MFC_OpenMP)
357# 25 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
359# 25 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
364# 28 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
365#if defined(MFC_OpenACC)
366# 28 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
368# 28 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
369#elif defined(MFC_OpenMP)
370# 28 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
372# 28 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
378# 32 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
379#if defined(MFC_OpenACC)
380# 32 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
382# 32 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
383#elif defined(MFC_OpenMP)
384# 32 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
386# 32 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
389# 33 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
390#if defined(MFC_OpenACC)
391# 33 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
393# 33 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
394#elif defined(MFC_OpenMP)
395# 33 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
397# 33 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
402# 36 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
403#if defined(MFC_OpenACC)
404# 36 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
406# 36 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
407#elif defined(MFC_OpenMP)
408# 36 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
410# 36 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
415# 39 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
416#if defined(MFC_OpenACC)
417# 39 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
419# 39 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
420#elif defined(MFC_OpenMP)
421# 39 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
423# 39 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
428# 42 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
429#if defined(MFC_OpenACC)
430# 42 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
432# 42 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
433#elif defined(MFC_OpenMP)
434# 42 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
436# 42 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
441# 45 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
442#if defined(MFC_OpenACC)
443# 45 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
445# 45 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
446#elif defined(MFC_OpenMP)
447# 45 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
449# 45 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
455 real(wp),
allocatable,
dimension(:,:,:,:) ::
mom_src
458# 52 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
459#if defined(MFC_OpenACC)
460# 52 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
462# 52 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
463#elif defined(MFC_OpenMP)
464# 52 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
466# 52 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
471# 55 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
472#if defined(MFC_OpenACC)
473# 55 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
475# 55 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
476#elif defined(MFC_OpenMP)
477# 55 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
479# 55 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
484# 58 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
485#if defined(MFC_OpenACC)
486# 58 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
488# 58 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
489#elif defined(MFC_OpenMP)
490# 58 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
492# 58 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
503# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
505# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
506 use iso_fortran_env,
only: output_unit
507# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
509# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
510 print *,
'm_acoustic_src.fpp:67: ',
'@:ALLOCATE(loc_acoustic(1:3, 1:num_source), mag(1:num_source), dipole(1:num_source), support(1:num_source), length(1:num_source), height(1:num_source), wavelength(1:num_source), frequency(1:num_source), gauss_sigma_dist(1:num_source), gauss_sigma_time(1:num_source), foc_length(1:num_source), aperture(1:num_source), npulse(1:num_source), pulse(1:num_source), dir(1:num_source), delay(1:num_source), element_polygon_ratio(1:num_source), rotate_angle(1:num_source), element_spacing_angle(1:num_source), num_elements(1:num_source), element_on(1:num_source), bb_num_freq(1:num_source), bb_bandwidth(1:num_source), bb_lowest_freq(1:num_source))'
511# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
513# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
514 call flush (output_unit)
515# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
517# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
519# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
520 allocate (
loc_acoustic(1:3, 1:num_source),
mag(1:num_source),
dipole(1:num_source),
support(1:num_source),
length(1:num_source),
height(1:num_source),
wavelength(1:num_source),
frequency(1:num_source),
gauss_sigma_dist(1:num_source),
gauss_sigma_time(1:num_source),
foc_length(1:num_source),
aperture(1:num_source),
npulse(1:num_source),
pulse(1:num_source),
dir(1:num_source),
delay(1:num_source),
element_polygon_ratio(1:num_source),
rotate_angle(1:num_source),
element_spacing_angle(1:num_source),
num_elements(1:num_source),
element_on(1:num_source),
bb_num_freq(1:num_source),
bb_bandwidth(1:num_source),
bb_lowest_freq(1:num_source))
521# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
523# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
525# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
527# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
529# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
531# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
533# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
535# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
537# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
539# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
541# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
543# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
545# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
547# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
549# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
551# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
553# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
555# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
557# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
559# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
561# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
563# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
565# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
567# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
569# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
571# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
572#if defined(MFC_OpenACC)
573# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
575# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
576#elif defined(MFC_OpenMP)
577# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
579# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
581# 73 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
587 mag(i) = acoustic(i)%mag
588 dipole(i) = acoustic(i)%dipole
589 support(i) = acoustic(i)%support
590 length(i) = acoustic(i)%length
591 height(i) = acoustic(i)%height
598 npulse(i) = acoustic(i)%npulse
599 pulse(i) = acoustic(i)%pulse
600 dir(i) = acoustic(i)%dir
608 if (acoustic(i)%element_on ==
dflt_int)
then
621 delay(i) = acoustic(i)%delay
625# 115 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
626#if defined(MFC_OpenACC)
627# 115 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
629# 115 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
630#elif defined(MFC_OpenMP)
631# 115 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
633# 115 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
635# 118 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
638# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
640# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
641 use iso_fortran_env,
only: output_unit
642# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
644# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
645 print *,
'm_acoustic_src.fpp:119: ',
'@:ALLOCATE(mass_src(0:m, 0:n, 0:p))'
646# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
648# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
649 call flush (output_unit)
650# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
652# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
654# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
656# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
658# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
660# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
661#if defined(MFC_OpenACC)
662# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
664# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
665#elif defined(MFC_OpenMP)
666# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
668# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
671# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
673# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
674 use iso_fortran_env,
only: output_unit
675# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
677# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
678 print *,
'm_acoustic_src.fpp:120: ',
'@:ALLOCATE(mom_src(1:num_vels, 0:m, 0:n, 0:p))'
679# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
681# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
682 call flush (output_unit)
683# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
685# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
687# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
688 allocate (
mom_src(1:num_vels, 0:m, 0:n, 0:p))
689# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
691# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
693# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
694#if defined(MFC_OpenACC)
695# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
697# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
698#elif defined(MFC_OpenMP)
699# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
701# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
704# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
706# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
707 use iso_fortran_env,
only: output_unit
708# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
710# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
711 print *,
'm_acoustic_src.fpp:121: ',
'@:ALLOCATE(E_src(0:m, 0:n, 0:p))'
712# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
714# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
715 call flush (output_unit)
716# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
718# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
720# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
721 allocate (
e_src(0:m, 0:n, 0:p))
722# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
724# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
726# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
727#if defined(MFC_OpenACC)
728# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
730# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
731#elif defined(MFC_OpenMP)
732# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
734# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
742 type(scalar_field),
dimension(sys_size),
intent(inout) ::
q_cons_vf
743 type(scalar_field),
dimension(sys_size),
intent(inout) :: q_prim_vf
744 type(scalar_field),
dimension(sys_size),
intent(inout) :: rhs_vf
746# 135 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
747 real(wp),
dimension(num_fluids) :: myalpha, myalpha_rho
748# 137 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
749 real(wp) :: myrho, b_tait
750 real(wp) :: sim_time, c, small_gamma
751 real(wp) :: frequency_local, gauss_sigma_time_local
752 real(wp) :: mass_src_diff, mom_src_diff
753 real(wp) :: source_temporal
754 real(wp) :: period_bb
758 real(wp),
allocatable,
dimension(:) :: phi_rn
759 integer :: i,
j,
k,
l, q
761 integer :: num_points
762 logical :: freq_conv_flag, gauss_conv_flag
763 integer,
parameter :: mass_label = 1, mom_label = 2
768# 155 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
770# 155 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
771#if defined(MFC_OpenACC)
772# 155 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
774# 155 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
775#elif defined(MFC_OpenMP)
776# 155 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
778# 155 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
780# 155 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
782# 155 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
784# 155 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
798# 167 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
799#if defined(MFC_OpenACC)
800# 167 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
802# 167 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
803#elif defined(MFC_OpenMP)
804# 167 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
806# 167 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
808# 167 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
812 do ai = 1, num_source
814 if (.not. (sim_time <
delay(ai) .and. (
pulse(ai) == 1 .or.
pulse(ai) == 3)))
then
816 freq_conv_flag = f_is_default(
frequency(ai))
831 if (
pulse(ai) == 4)
then
834 call s_mpi_send_random_number(phi_rn,
bb_num_freq(ai))
841 sl_bb = broadband_spectral_level_constant*
mag(ai) +
k*
mag(ai)/broadband_spectral_level_growth_rate
843 ffre_bb = sqrt((2._wp*sl_bb*
bb_bandwidth(ai)))*cos((sim_time)*2._wp*pi/period_bb + 2._wp*pi*phi_rn(
k))
845 sum_bb = sum_bb + ffre_bb
851# 208 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
853# 208 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
854#if defined(MFC_OpenACC)
855# 208 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
857# 208 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
859# 208 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
861# 208 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
862#elif defined(MFC_OpenMP)
863# 208 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
865# 208 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
867# 208 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
869# 208 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
871# 208 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
873# 208 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
875# 208 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
877# 211 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
889# 221 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
890#if defined(MFC_OpenACC)
891# 221 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
893# 221 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
894#elif defined(MFC_OpenMP)
895# 221 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
897# 221 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
901 myalpha(q) =
q_cons_vf(eqn_idx%adv%beg + q - 1)%sf(
j,
k,
l)
904 if (bubbles_euler)
then
905 if (num_fluids > 2)
then
907# 229 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
908#if defined(MFC_OpenACC)
909# 229 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
911# 229 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
912#elif defined(MFC_OpenMP)
913# 229 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
915# 229 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
917 do q = 1, num_fluids - 1
918 myrho = myrho + myalpha_rho(q)
919 b_tait = b_tait + myalpha(q)*pi_infs(q)
920 small_gamma = small_gamma + myalpha(q)*gammas(q)
923 myrho = myalpha_rho(1)
925 small_gamma = gammas(1)
929 if ((.not. bubbles_euler) .or. (mpp_lim .and. (num_fluids > 2)))
then
931# 243 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
932#if defined(MFC_OpenACC)
933# 243 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
935# 243 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
936#elif defined(MFC_OpenMP)
937# 243 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
939# 243 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
942 myrho = myrho + myalpha_rho(q)
943 b_tait = b_tait + myalpha(q)*pi_infs(q)
944 small_gamma = small_gamma + myalpha(q)*gammas(q)
948 small_gamma = 1._wp/small_gamma + 1._wp
949 c = sqrt(small_gamma*(q_prim_vf(eqn_idx%E)%sf(
j,
k,
l) + ((small_gamma - 1._wp)/small_gamma)*b_tait)/myrho)
956 call s_source_temporal(sim_time, c, ai, mom_label, frequency_local, gauss_sigma_time_local, source_temporal, &
963 &
l) + 2._wp*mom_src_diff*c/(small_gamma - 1._wp)
969 else if (p == 0)
then
990 mass_src_diff = mom_src_diff/c
994 call s_source_temporal(sim_time, c, ai, mass_label, frequency_local, gauss_sigma_time_local, &
995 & source_temporal, sum_bb)
1001 if (model_eqns /= model_eqns_4eq)
then
1002 e_src(
j,
k,
l) =
e_src(
j,
k,
l) + mass_src_diff*c**2._wp/(small_gamma - 1._wp)
1006# 308 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1007#if defined(MFC_OpenACC)
1008# 308 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1010# 308 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1011#elif defined(MFC_OpenMP)
1012# 308 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1014# 308 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1016# 308 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1023# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1025# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1026#if defined(MFC_OpenACC)
1027# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1029# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1030#elif defined(MFC_OpenMP)
1031# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1033# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1035# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1037# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1039# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1045# 317 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1046#if defined(MFC_OpenACC)
1047# 317 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1049# 317 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1050#elif defined(MFC_OpenMP)
1051# 317 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1053# 317 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1055 do q = eqn_idx%cont%beg, eqn_idx%cont%end
1059# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1060#if defined(MFC_OpenACC)
1061# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1063# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1064#elif defined(MFC_OpenMP)
1065# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1067# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1069 do q = eqn_idx%mom%beg, eqn_idx%mom%end
1070 rhs_vf(q)%sf(
j,
k,
l) = rhs_vf(q)%sf(
j,
k,
l) +
mom_src(q - eqn_idx%cont%end,
j,
k,
l)
1072 rhs_vf(eqn_idx%E)%sf(
j,
k,
l) = rhs_vf(eqn_idx%E)%sf(
j,
k,
l) +
e_src(
j,
k,
l)
1077# 329 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1078#if defined(MFC_OpenACC)
1079# 329 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1081# 329 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1082#elif defined(MFC_OpenMP)
1083# 329 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1085# 329 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1087# 329 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1093 elemental subroutine s_source_temporal(sim_time, c, ai, term_index, frequency_local, gauss_sigma_time_local, source, sum_BB)
1096# 336 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1098# 336 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1100# 336 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1102# 336 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1104# 336 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1106# 336 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1108# 336 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1110 integer,
intent(in) :: ai, term_index
1111 real(wp),
intent(in) :: sim_time, c, sum_bb
1112 real(wp),
intent(in) :: frequency_local, gauss_sigma_time_local
1113 real(wp),
intent(out) :: source
1115 real(wp) :: sine_wave
1116 real(wp) :: foc_length_factor
1118 integer,
parameter :: mass_label = 1
1121 foc_length_factor = 1._wp
1122 else if (p == 0 .and. (.not. cyl_coord))
then
1123 foc_length_factor =
foc_length(ai)**(-0.85_wp)
1131 if (
pulse(ai) == 1)
then
1132 if ((sim_time -
delay(ai))*frequency_local >
npulse(ai))
return
1134 omega = 2._wp*pi*frequency_local
1135 source =
mag(ai)*sin((sim_time -
delay(ai))*omega)
1137 if (term_index == mass_label)
then
1138 source = source/c + foc_length_factor*
mag(ai)*(cos((sim_time -
delay(ai))*omega) - 1._wp)/omega
1140 else if (
pulse(ai) == 2)
then
1141 source =
mag(ai)*exp(-0.5_wp*((sim_time -
delay(ai))**2._wp)/(gauss_sigma_time_local**2._wp))
1143 if (term_index == mass_label)
then
1144 source = source/c - foc_length_factor*
mag(ai)*sqrt(pi/2)*gauss_sigma_time_local*(erf((sim_time -
delay(ai)) &
1145 & /(sqrt(2._wp)*gauss_sigma_time_local)) + 1)
1147 else if (
pulse(ai) == 3)
then
1148 if ((sim_time -
delay(ai))*frequency_local >
npulse(ai))
return
1150 omega = 2._wp*pi*frequency_local
1151 sine_wave = sin((sim_time -
delay(ai))*omega)
1152 source =
mag(ai)*sign(1._wp, sine_wave)
1155 if (abs(sine_wave) < 1.e-2_wp)
then
1156 source =
mag(ai)*sine_wave*1.e2_wp
1158 else if (
pulse(ai) == 4)
then
1167 integer ::
j,
k,
l, ai
1170 real(wp) :: source_spatial, angle, xyz_to_r_ratios(3)
1171 real(wp),
parameter :: threshold = 1.e-10_wp
1175 else if (p == 0)
then
1182# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1184# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1185 use iso_fortran_env,
only: output_unit
1186# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1188# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1189 print *,
'm_acoustic_src.fpp:408: ',
'@:ALLOCATE(source_spatials_num_points(1:num_source))'
1190# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1192# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1193 call flush (output_unit)
1194# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1196# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1198# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1200# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1202# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1204# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1205#if defined(MFC_OpenACC)
1206# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1208# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1209#elif defined(MFC_OpenMP)
1210# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1212# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1215# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1217# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1218 use iso_fortran_env,
only: output_unit
1219# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1221# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1222 print *,
'm_acoustic_src.fpp:409: ',
'@:ALLOCATE(source_spatials(1:num_source))'
1223# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1225# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1226 call flush (output_unit)
1227# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1229# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1231# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1233# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1235# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1237# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1238#if defined(MFC_OpenACC)
1239# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1241# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1242#elif defined(MFC_OpenMP)
1243# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1245# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1248 do ai = 1, num_source
1255 if (abs(source_spatial) < threshold) cycle
1265# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1267# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1268 use iso_fortran_env,
only: output_unit
1269# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1271# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1272 print *,
'm_acoustic_src.fpp:427: ',
'@:ALLOCATE(source_spatials(ai)%coord(1:3, 1:count))'
1273# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1275# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1276 call flush (output_unit)
1277# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1279# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1281# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1283# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1285# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1287# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1288#if defined(MFC_OpenACC)
1289# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1291# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1292#elif defined(MFC_OpenMP)
1293# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1295# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1298# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1300# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1301 use iso_fortran_env,
only: output_unit
1302# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1304# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1305 print *,
'm_acoustic_src.fpp:428: ',
'@:ALLOCATE(source_spatials(ai)%val(1:count))'
1306# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1308# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1309 call flush (output_unit)
1310# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1312# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1314# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1316# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1318# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1320# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1321#if defined(MFC_OpenACC)
1322# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1324# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1325#elif defined(MFC_OpenMP)
1326# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1328# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1331# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1333# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1334 use iso_fortran_env,
only: output_unit
1335# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1337# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1338 print *,
'm_acoustic_src.fpp:429: ',
'@:ALLOCATE(source_spatials(ai)%angle(1:count))'
1339# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1341# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1342 call flush (output_unit)
1343# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1345# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1347# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1349# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1351# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1353# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1354#if defined(MFC_OpenACC)
1355# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1357# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1358#elif defined(MFC_OpenMP)
1359# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1361# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1364# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1366# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1367 use iso_fortran_env,
only: output_unit
1368# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1370# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1371 print *,
'm_acoustic_src.fpp:430: ',
'@:ALLOCATE(source_spatials(ai)%xyz_to_r_ratios(1:3, 1:count))'
1372# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1374# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1375 call flush (output_unit)
1376# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1378# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1380# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1382# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1384# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1386# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1387#if defined(MFC_OpenACC)
1388# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1390# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1391#elif defined(MFC_OpenMP)
1392# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1394# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1398# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1400# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1402# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1404# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1405 use iso_fortran_env,
only: output_unit
1406# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1408# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1409 print *,
'm_acoustic_src.fpp:432: ',
'@:ACC_SETUP_source_spatials(source_spatials(ai))'
1410# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1412# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1413 call flush (output_unit)
1414# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1416# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1418# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1420# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1422# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1423#if defined(MFC_OpenACC)
1424# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1426# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1427#elif defined(MFC_OpenMP)
1428# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1430# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1432# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1434# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1436# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1437#if defined(MFC_OpenACC)
1438# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1440# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1441#elif defined(MFC_OpenMP)
1442# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1444# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1446# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1448# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1450# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1452# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1453#if defined(MFC_OpenACC)
1454# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1456# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1457#elif defined(MFC_OpenMP)
1458# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1460# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1462# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1464# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1466# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1468# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1469#if defined(MFC_OpenACC)
1470# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1472# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1473#elif defined(MFC_OpenMP)
1474# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1476# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1478# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1480# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1482# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1484# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1485#if defined(MFC_OpenACC)
1486# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1488# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1489#elif defined(MFC_OpenMP)
1490# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1492# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1494# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1496# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1498# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1507 if (abs(source_spatial) < threshold) cycle
1515 if (dim == 3)
source_spatials(ai)%xyz_to_r_ratios(1:3,count) = xyz_to_r_ratios
1522 call s_mpi_abort(
'Fatal Error: Inconsistent allocation of source_spatials')
1527# 459 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1528#if defined(MFC_OpenACC)
1529# 459 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1531# 459 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1532#elif defined(MFC_OpenMP)
1533# 459 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1535# 459 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1538# 460 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1539#if defined(MFC_OpenACC)
1540# 460 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1542# 460 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1543#elif defined(MFC_OpenMP)
1544# 460 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1546# 460 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1551# 463 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1552#if defined(MFC_OpenACC)
1553# 463 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1555# 463 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1556#elif defined(MFC_OpenMP)
1557# 463 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1559# 463 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1564# 466 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1565#if defined(MFC_OpenACC)
1566# 466 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1568# 466 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1569#elif defined(MFC_OpenMP)
1570# 466 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1572# 466 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1580 do ai = 1, num_source
1582 &
' grid points with non-zero source term'
1591 integer,
intent(in) :: j, k, l, ai
1592 real(wp),
dimension(3),
intent(in) :: loc
1593 real(wp),
intent(out) :: source, angle, xyz_to_r_ratios(3)
1594 real(wp) :: sig, r(3)
1600 else if (p == 0)
then
1601 sig = maxval((/dx(j), dy(k)/))
1603 sig = maxval((/dx(j), dy(k), dz(l)/))
1605 sig = sig*acoustic_spatial_support_width
1608 r(1) = x_cc(j) - loc(1)
1609 if (n /= 0) r(2) = y_cc(k) - loc(2)
1610 if (p /= 0) r(3) = z_cc(l) - loc(3)
1612 if (any(
support(ai) == (/1, 2, 3, 4/)))
then
1614 else if (any(
support(ai) == (/5, 6, 7/)))
then
1616 else if (any(
support(ai) == (/9, 10, 11/)))
then
1625 integer,
intent(in) :: ai
1626 real(wp),
intent(in) :: sig, r(3)
1627 real(wp),
intent(out) :: source
1634 source = 1._wp/(sqrt(2._wp*pi)*sig/2._wp)*exp(-0.5_wp*(r(1)/(sig/2._wp))**2._wp)
1637 dist = r(1)*cos(
dir(ai)) + r(2)*sin(
dir(ai))
1639 if ((r(1) - dist*cos(
dir(ai)))**2._wp + (r(2) - dist*sin(
dir(ai)))**2._wp < 0.25_wp*
length(ai)**2._wp)
then
1640 if (
support(ai) /= 3 .or. abs(r(3)) < 0.25_wp*
height(ai))
then
1641 source = 1._wp/(sqrt(2._wp*pi)*sig/2._wp)*exp(-0.5_wp*(dist/(sig/2._wp))**2._wp)
1651 integer,
intent(in) :: ai
1652 real(wp),
intent(in) :: sig, r(3)
1653 real(wp),
intent(out) :: source, angle, xyz_to_r_ratios(3)
1654 real(wp) :: current_angle, angle_half_aperture, dist, norm
1658 xyz_to_r_ratios = 0._wp
1661 current_angle = -atan(r(2)/(
foc_length(ai) - r(1)))
1664 if (abs(current_angle) < angle_half_aperture .and. r(1) <
foc_length(ai))
then
1666 source = 1._wp/(sqrt(2._wp*pi)*sig/2._wp)*exp(-0.5_wp*(dist/(sig/2._wp))**2._wp)
1669 else if (
support(ai) == 7)
then
1670 current_angle = -atan(sqrt(r(2)**2 + r(3)**2)/(
foc_length(ai) - r(1)))
1673 if (abs(current_angle) < angle_half_aperture .and. r(1) <
foc_length(ai))
then
1675 source = 1._wp/(sqrt(2._wp*pi)*sig/2._wp)*exp(-0.5_wp*(dist/(sig/2._wp))**2._wp)
1677 norm = sqrt(r(2)**2._wp + r(3)**2._wp + (
foc_length(ai) - r(1))**2._wp)
1678 xyz_to_r_ratios(1) = -(r(1) -
foc_length(ai))/norm
1679 xyz_to_r_ratios(2) = -r(2)/norm
1680 xyz_to_r_ratios(3) = -r(3)/norm
1689 integer,
intent(in) :: ai
1690 real(wp),
intent(in) :: sig, r(3)
1691 real(wp),
intent(out) :: source, angle, xyz_to_r_ratios(3)
1692 integer :: elem, elem_min, elem_max
1693 real(wp) :: current_angle, angle_half_aperture, angle_per_elem, dist
1694 real(wp) :: angle_min, angle_max, norm
1695 real(wp) :: poly_side_length, aperture_element_3D, angle_elem
1696 real(wp) :: x2, y2, z2, x3, y3, z3, C, f, half_apert, dist_interp_to_elem_center
1708 xyz_to_r_ratios = 0._wp
1711 current_angle = -atan(r(2)/(
foc_length(ai) - r(1)))
1716 do elem = elem_min, elem_max
1718 angle_min = angle_max - angle_per_elem
1720 if (current_angle > angle_min .and. current_angle < angle_max .and. r(1) <
foc_length(ai))
then
1721 source = exp(-0.5_wp*(dist/(sig/2._wp))**2._wp)/(sqrt(2._wp*pi)*sig/2._wp)
1722 angle = current_angle
1726 else if (
support(ai) == 11)
then
1732 do elem = elem_min, elem_max
1736 x2 = f - sqrt(f**2 - half_apert**2)
1737 y2 = half_apert*cos(angle_elem)
1738 z2 = half_apert*sin(angle_elem)
1742 c = f**2._wp/((r(1) - f)*(x2 - f) + r(2)*y2 + r(3)*z2)
1743 x3 = c*(r(1) - f) + f
1747 dist_interp_to_elem_center = sqrt((x2 - x3)**2._wp + (y2 - y3)**2._wp + (z2 - z3)**2._wp)
1748 if ((dist_interp_to_elem_center < aperture_element_3d/2._wp) .and. (r(1) < f))
then
1749 dist = sqrt((x3 - r(1))**2._wp + (y3 - r(2))**2._wp + (z3 - r(3))**2._wp)
1750 source = exp(-0.5_wp*(dist/(sig/2._wp))**2._wp)/(sqrt(2._wp*pi)*sig/2._wp)
1752 norm = sqrt(r(2)**2._wp + r(3)**2._wp + (f - r(1))**2._wp)
1753 xyz_to_r_ratios(1) = -(r(1) - f)/norm
1754 xyz_to_r_ratios(2) = -r(2)/norm
1755 xyz_to_r_ratios(3) = -r(3)/norm
1766# 658 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1768# 658 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1770# 658 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1772# 658 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1774# 658 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1776# 658 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1778# 658 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1780 logical,
intent(in) :: freq_conv_flag
1781 integer,
intent(in) :: ai
1782 real(wp),
intent(in) :: c
1785 if (freq_conv_flag)
then
1797# 675 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1799# 675 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1801# 675 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1803# 675 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1805# 675 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1807# 675 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1809# 675 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1811 logical,
intent(in) :: gauss_conv_flag
1812 integer,
intent(in) :: ai
1813 real(wp),
intent(in) :: c
1816 if (gauss_conv_flag)
then
type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
One-way acoustic source injection, Maeda and Colonius JCP (2017).
real(wp), dimension(:), allocatable gauss_sigma_time
elemental real(wp) function f_frequency_local(freq_conv_flag, ai, c)
Convert wavelength to frequency.
type(source_spatial_type), dimension(:), allocatable source_spatials
Data of non-zero source grid points for each source.
subroutine s_source_spatial_transducer(ai, sig, r, source, angle, xyz_to_r_ratios)
Compute the spatial support for a single transducer in 2D, 2D axisymmetric, and 3D.
real(wp), dimension(:), allocatable height
integer, dimension(:), allocatable pulse
integer, dimension(:), allocatable bb_num_freq
real(wp), dimension(:), allocatable dir
impure subroutine, public s_precalculate_acoustic_spatial_sources
Pre-compute non-zero spatial source weights before time-stepping.
real(wp), dimension(:), allocatable length
real(wp), dimension(:), allocatable rotate_angle
integer, dimension(:), allocatable support
real(wp), dimension(:), allocatable wavelength
impure subroutine, public s_acoustic_src_calculations(q_cons_vf, q_prim_vf, rhs_vf)
Compute mass, momentum, and energy acoustic source terms and add to the RHS.
real(wp), dimension(:), allocatable npulse
integer, dimension(:), allocatable element_on
real(wp), dimension(:), allocatable aperture
real(wp), dimension(:), allocatable foc_length
subroutine s_source_spatial_planar(ai, sig, r, source)
Compute the spatial support for planar acoustic sources in 1D, 2D, and 3D.
subroutine s_source_spatial_transducer_array(ai, sig, r, source, angle, xyz_to_r_ratios)
Compute the spatial support for multiple transducers in 2D, 2D axisymmetric, and 3D.
real(wp), dimension(:), allocatable bb_lowest_freq
integer, dimension(:), allocatable num_elements
impure subroutine, public s_initialize_acoustic_src
Initialize the acoustic source module.
real(wp), dimension(:,:), allocatable, target loc_acoustic
logical, dimension(:), allocatable dipole
real(wp), dimension(:,:,:), allocatable mass_src
real(wp), dimension(:), allocatable mag
real(wp), dimension(:), allocatable frequency
elemental subroutine s_source_temporal(sim_time, c, ai, term_index, frequency_local, gauss_sigma_time_local, source, sum_bb)
Compute the temporally varying amplitude of the pulse.
real(wp) function f_gauss_sigma_time_local(gauss_conv_flag, ai, c)
Convert Gaussian sigma from distance to time.
real(wp), dimension(:,:,:), allocatable e_src
subroutine s_source_spatial(j, k, l, loc, ai, source, angle, xyz_to_r_ratios)
Compute the spatial support of the acoustic source.
real(wp), dimension(:), allocatable element_spacing_angle
integer, dimension(:), allocatable source_spatials_num_points
Number of non-zero source grid points for each source.
real(wp), dimension(:), allocatable element_polygon_ratio
real(wp), dimension(:), allocatable bb_bandwidth
real(wp), dimension(:), allocatable gauss_sigma_dist
real(wp), dimension(:), allocatable delay
real(wp), dimension(:,:,:,:), allocatable mom_src
Bubble-dynamics procedures for ensemble- and volume-averaged models.
Compile-time constant parameters: default values, tolerances, and physical constants.
integer, parameter dflt_int
Default integer value.
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...
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
logical elemental function, public f_is_default(var)
Checks if a real(wp) variable is of default value.
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
Acoustic source source_spatial pre-calculated values.