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# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
34# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
35# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
36# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
38# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
42# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
46# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
62# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
63# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
64# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
65# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
66# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
68# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
70# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
72# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
74# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
115# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
140# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
141# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
142# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
143# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
144# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
145# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
146# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
148# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
149# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
150# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
152# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
154# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
168# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
170# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
172# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
174# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
176# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
178# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
180# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
182# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
184# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
227# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
230# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
233# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
236# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
239# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
242# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
283# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
286# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
288# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
293# 57 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
296# 77 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
299# 85 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
302# 109 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
305# 125 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
308# 150 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
310# 156 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
312# 163 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
314# 6 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp" 2
332# 22 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
333#if defined(MFC_OpenACC)
334# 22 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
336# 22 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
337#elif defined(MFC_OpenMP)
338# 22 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
340# 22 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
343 logical,
allocatable,
dimension(:) ::
dipole
345# 25 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
346#if defined(MFC_OpenACC)
347# 25 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
349# 25 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
350#elif defined(MFC_OpenMP)
351# 25 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
353# 25 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
358# 28 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
359#if defined(MFC_OpenACC)
360# 28 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
362# 28 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
363#elif defined(MFC_OpenMP)
364# 28 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
366# 28 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
372# 32 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
373#if defined(MFC_OpenACC)
374# 32 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
376# 32 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
377#elif defined(MFC_OpenMP)
378# 32 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
380# 32 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
383# 33 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
384#if defined(MFC_OpenACC)
385# 33 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
387# 33 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
388#elif defined(MFC_OpenMP)
389# 33 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
391# 33 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
396# 36 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
397#if defined(MFC_OpenACC)
398# 36 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
400# 36 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
401#elif defined(MFC_OpenMP)
402# 36 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
404# 36 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
409# 39 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
410#if defined(MFC_OpenACC)
411# 39 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
413# 39 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
414#elif defined(MFC_OpenMP)
415# 39 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
417# 39 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
422# 42 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
423#if defined(MFC_OpenACC)
424# 42 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
426# 42 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
427#elif defined(MFC_OpenMP)
428# 42 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
430# 42 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
435# 45 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
436#if defined(MFC_OpenACC)
437# 45 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
439# 45 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
440#elif defined(MFC_OpenMP)
441# 45 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
443# 45 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
449 real(wp),
allocatable,
dimension(:,:,:,:) ::
mom_src
452# 52 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
453#if defined(MFC_OpenACC)
454# 52 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
456# 52 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
457#elif defined(MFC_OpenMP)
458# 52 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
460# 52 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
465# 55 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
466#if defined(MFC_OpenACC)
467# 55 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
469# 55 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
470#elif defined(MFC_OpenMP)
471# 55 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
473# 55 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
478# 58 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
479#if defined(MFC_OpenACC)
480# 58 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
482# 58 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
483#elif defined(MFC_OpenMP)
484# 58 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
486# 58 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
497# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
499# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
500 use iso_fortran_env,
only: output_unit
501# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
503# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
504 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))'
505# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
507# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
508 call flush (output_unit)
509# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
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 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))
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"
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"
566#if defined(MFC_OpenACC)
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"
570#elif defined(MFC_OpenMP)
571# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
573# 67 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
575# 74 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
619# 116 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
620#if defined(MFC_OpenACC)
621# 116 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
623# 116 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
624#elif defined(MFC_OpenMP)
625# 116 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
627# 116 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
629# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
632# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
634# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
635 use iso_fortran_env,
only: output_unit
636# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
638# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
639 print *,
'm_acoustic_src.fpp:120: ',
'@:ALLOCATE(mass_src(0:m, 0:n, 0:p))'
640# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
642# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
643 call flush (output_unit)
644# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
646# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
648# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
650# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
652# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
654# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
655#if defined(MFC_OpenACC)
656# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
658# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
659#elif defined(MFC_OpenMP)
660# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
662# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
665# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
667# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
668 use iso_fortran_env,
only: output_unit
669# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
671# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
672 print *,
'm_acoustic_src.fpp:121: ',
'@:ALLOCATE(mom_src(1:num_vels, 0:m, 0:n, 0:p))'
673# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
675# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
676 call flush (output_unit)
677# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
679# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
681# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
682 allocate (
mom_src(1:num_vels, 0:m, 0:n, 0:p))
683# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
685# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
687# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
688#if defined(MFC_OpenACC)
689# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
691# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
692#elif defined(MFC_OpenMP)
693# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
695# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
698# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
700# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
701 use iso_fortran_env,
only: output_unit
702# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
704# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
705 print *,
'm_acoustic_src.fpp:122: ',
'@:ALLOCATE(E_src(0:m, 0:n, 0:p))'
706# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
708# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
709 call flush (output_unit)
710# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
712# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
714# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
715 allocate (
e_src(0:m, 0:n, 0:p))
716# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
718# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
720# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
721#if defined(MFC_OpenACC)
722# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
724# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
725#elif defined(MFC_OpenMP)
726# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
728# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
736 type(scalar_field),
dimension(sys_size),
intent(inout) ::
q_cons_vf
737 type(scalar_field),
dimension(sys_size),
intent(inout) :: q_prim_vf
738 type(scalar_field),
dimension(sys_size),
intent(inout) :: rhs_vf
740# 136 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
741 real(wp),
dimension(num_fluids) :: myalpha, myalpha_rho
742# 138 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
743 real(wp) :: myrho, b_tait
744 real(wp) :: sim_time, c, small_gamma
745 real(wp) :: frequency_local, gauss_sigma_time_local
746 real(wp) :: mass_src_diff, mom_src_diff
747 real(wp) :: source_temporal
748 real(wp) :: period_bb
752 real(wp),
allocatable,
dimension(:) :: phi_rn
753 integer :: i,
j,
k,
l, q
755 integer :: num_points
756 logical :: freq_conv_flag, gauss_conv_flag
757 integer,
parameter :: mass_label = 1, mom_label = 2
762# 156 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
764# 156 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
765#if defined(MFC_OpenACC)
766# 156 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
768# 156 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
769#elif defined(MFC_OpenMP)
770# 156 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
772# 156 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
774# 156 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
776# 156 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
778# 156 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
792# 168 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
793#if defined(MFC_OpenACC)
794# 168 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
796# 168 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
797#elif defined(MFC_OpenMP)
798# 168 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
800# 168 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
802# 168 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
806 do ai = 1, num_source
808 if (.not. (sim_time <
delay(ai) .and. (
pulse(ai) == 1 .or.
pulse(ai) == 3)))
then
810 freq_conv_flag = f_is_default(
frequency(ai))
825 if (
pulse(ai) == 4)
then
828 call s_mpi_send_random_number(phi_rn,
bb_num_freq(ai))
835 sl_bb = broadband_spectral_level_constant*
mag(ai) +
k*
mag(ai)/broadband_spectral_level_growth_rate
837 ffre_bb = sqrt((2._wp*sl_bb*
bb_bandwidth(ai)))*cos((sim_time)*2._wp*pi/period_bb + 2._wp*pi*phi_rn(
k))
839 sum_bb = sum_bb + ffre_bb
845# 209 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
847# 209 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
848#if defined(MFC_OpenACC)
849# 209 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
851# 209 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
852#elif defined(MFC_OpenMP)
853# 209 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
855# 209 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
857# 209 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
859# 209 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
861# 209 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
863# 212 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
875# 222 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
876#if defined(MFC_OpenACC)
877# 222 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
879# 222 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
880#elif defined(MFC_OpenMP)
881# 222 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
883# 222 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
890 if (bubbles_euler)
then
891 if (num_fluids > 2)
then
893# 230 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
894#if defined(MFC_OpenACC)
895# 230 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
897# 230 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
898#elif defined(MFC_OpenMP)
899# 230 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
901# 230 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
903 do q = 1, num_fluids - 1
904 myrho = myrho + myalpha_rho(q)
905 b_tait = b_tait + myalpha(q)*pi_infs(q)
906 small_gamma = small_gamma + myalpha(q)*gammas(q)
909 myrho = myalpha_rho(1)
911 small_gamma = gammas(1)
915 if ((.not. bubbles_euler) .or. (mpp_lim .and. (num_fluids > 2)))
then
917# 244 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
918#if defined(MFC_OpenACC)
919# 244 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
921# 244 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
922#elif defined(MFC_OpenMP)
923# 244 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
925# 244 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
928 myrho = myrho + myalpha_rho(q)
929 b_tait = b_tait + myalpha(q)*pi_infs(q)
930 small_gamma = small_gamma + myalpha(q)*gammas(q)
934 small_gamma = 1._wp/small_gamma + 1._wp
935 c = sqrt(small_gamma*(q_prim_vf(e_idx)%sf(
j,
k,
l) + ((small_gamma - 1._wp)/small_gamma)*b_tait)/myrho)
942 call s_source_temporal(sim_time, c, ai, mom_label, frequency_local, gauss_sigma_time_local, source_temporal, &
948 if (model_eqns /= 4)
e_src(
j,
k,
l) =
e_src(
j,
k,
l) + 2._wp*mom_src_diff*c/(small_gamma - 1._wp)
954 else if (p == 0)
then
975 mass_src_diff = mom_src_diff/c
979 call s_source_temporal(sim_time, c, ai, mass_label, frequency_local, gauss_sigma_time_local, &
980 & source_temporal, sum_bb)
986 if (model_eqns /= 4)
then
987 e_src(
j,
k,
l) =
e_src(
j,
k,
l) + mass_src_diff*c**2._wp/(small_gamma - 1._wp)
991# 308 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
992#if defined(MFC_OpenACC)
993# 308 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
995# 308 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
996#elif defined(MFC_OpenMP)
997# 308 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
999# 308 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1001# 308 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1008# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1010# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1011#if defined(MFC_OpenACC)
1012# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1014# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1015#elif defined(MFC_OpenMP)
1016# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1018# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1020# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1022# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1024# 313 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1030# 317 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1031#if defined(MFC_OpenACC)
1032# 317 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1034# 317 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1035#elif defined(MFC_OpenMP)
1036# 317 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1038# 317 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1040 do q = contxb, contxe
1044# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1045#if defined(MFC_OpenACC)
1046# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1048# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1049#elif defined(MFC_OpenMP)
1050# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1052# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1055 rhs_vf(q)%sf(
j,
k,
l) = rhs_vf(q)%sf(
j,
k,
l) +
mom_src(q - contxe,
j,
k,
l)
1057 rhs_vf(e_idx)%sf(
j,
k,
l) = rhs_vf(e_idx)%sf(
j,
k,
l) +
e_src(
j,
k,
l)
1062# 329 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1063#if defined(MFC_OpenACC)
1064# 329 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1066# 329 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1067#elif defined(MFC_OpenMP)
1068# 329 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1070# 329 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1072# 329 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1078 elemental subroutine s_source_temporal(sim_time, c, ai, term_index, frequency_local, gauss_sigma_time_local, source, sum_BB)
1081# 336 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1083# 336 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1085# 336 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1087# 336 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1089# 336 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1091# 336 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1093# 336 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1095 integer,
intent(in) :: ai, term_index
1096 real(wp),
intent(in) :: sim_time, c, sum_bb
1097 real(wp),
intent(in) :: frequency_local, gauss_sigma_time_local
1098 real(wp),
intent(out) :: source
1100 real(wp) :: sine_wave
1101 real(wp) :: foc_length_factor
1103 integer,
parameter :: mass_label = 1
1106 foc_length_factor = 1._wp
1107 else if (p == 0 .and. (.not. cyl_coord))
then
1108 foc_length_factor =
foc_length(ai)**(-0.85_wp)
1116 if (
pulse(ai) == 1)
then
1117 if ((sim_time -
delay(ai))*frequency_local >
npulse(ai))
return
1119 omega = 2._wp*pi*frequency_local
1120 source =
mag(ai)*sin((sim_time -
delay(ai))*omega)
1122 if (term_index == mass_label)
then
1123 source = source/c + foc_length_factor*
mag(ai)*(cos((sim_time -
delay(ai))*omega) - 1._wp)/omega
1125 else if (
pulse(ai) == 2)
then
1126 source =
mag(ai)*exp(-0.5_wp*((sim_time -
delay(ai))**2._wp)/(gauss_sigma_time_local**2._wp))
1128 if (term_index == mass_label)
then
1129 source = source/c - foc_length_factor*
mag(ai)*sqrt(pi/2)*gauss_sigma_time_local*(erf((sim_time -
delay(ai)) &
1130 & /(sqrt(2._wp)*gauss_sigma_time_local)) + 1)
1132 else if (
pulse(ai) == 3)
then
1133 if ((sim_time -
delay(ai))*frequency_local >
npulse(ai))
return
1135 omega = 2._wp*pi*frequency_local
1136 sine_wave = sin((sim_time -
delay(ai))*omega)
1137 source =
mag(ai)*sign(1._wp, sine_wave)
1140 if (abs(sine_wave) < 1.e-2_wp)
then
1141 source =
mag(ai)*sine_wave*1.e2_wp
1143 else if (
pulse(ai) == 4)
then
1152 integer ::
j,
k,
l, ai
1155 real(wp) :: source_spatial, angle, xyz_to_r_ratios(3)
1156 real(wp),
parameter :: threshold = 1.e-10_wp
1160 else if (p == 0)
then
1167# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1169# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1170 use iso_fortran_env,
only: output_unit
1171# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1173# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1174 print *,
'm_acoustic_src.fpp:408: ',
'@:ALLOCATE(source_spatials_num_points(1:num_source))'
1175# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1177# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1178 call flush (output_unit)
1179# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1181# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1183# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1185# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1187# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1189# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1190#if defined(MFC_OpenACC)
1191# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1193# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1194#elif defined(MFC_OpenMP)
1195# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1197# 408 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1200# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1202# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1203 use iso_fortran_env,
only: output_unit
1204# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1206# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1207 print *,
'm_acoustic_src.fpp:409: ',
'@:ALLOCATE(source_spatials(1:num_source))'
1208# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1210# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1211 call flush (output_unit)
1212# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1214# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1216# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1218# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1220# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1222# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1223#if defined(MFC_OpenACC)
1224# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1226# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1227#elif defined(MFC_OpenMP)
1228# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1230# 409 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1233 do ai = 1, num_source
1240 if (abs(source_spatial) < threshold) cycle
1250# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1252# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1253 use iso_fortran_env,
only: output_unit
1254# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1256# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1257 print *,
'm_acoustic_src.fpp:427: ',
'@:ALLOCATE(source_spatials(ai)%coord(1:3, 1:count))'
1258# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1260# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1261 call flush (output_unit)
1262# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1264# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1266# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1268# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1270# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1272# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1273#if defined(MFC_OpenACC)
1274# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1276# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1277#elif defined(MFC_OpenMP)
1278# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1280# 427 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1283# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1285# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1286 use iso_fortran_env,
only: output_unit
1287# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1289# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1290 print *,
'm_acoustic_src.fpp:428: ',
'@:ALLOCATE(source_spatials(ai)%val(1:count))'
1291# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1293# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1294 call flush (output_unit)
1295# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1297# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1299# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1301# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1303# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1305# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1306#if defined(MFC_OpenACC)
1307# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1309# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1310#elif defined(MFC_OpenMP)
1311# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1313# 428 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1316# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1318# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1319 use iso_fortran_env,
only: output_unit
1320# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1322# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1323 print *,
'm_acoustic_src.fpp:429: ',
'@:ALLOCATE(source_spatials(ai)%angle(1:count))'
1324# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1326# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1327 call flush (output_unit)
1328# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1330# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1332# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1334# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1336# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1338# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1339#if defined(MFC_OpenACC)
1340# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1342# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1343#elif defined(MFC_OpenMP)
1344# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1346# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1349# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1351# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1352 use iso_fortran_env,
only: output_unit
1353# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1355# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1356 print *,
'm_acoustic_src.fpp:430: ',
'@:ALLOCATE(source_spatials(ai)%xyz_to_r_ratios(1:3, 1:count))'
1357# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1359# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1360 call flush (output_unit)
1361# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1363# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1365# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1367# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1369# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1371# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1372#if defined(MFC_OpenACC)
1373# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1375# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1376#elif defined(MFC_OpenMP)
1377# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1379# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1383# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1385# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1387# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1389# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1390 use iso_fortran_env,
only: output_unit
1391# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1393# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1394 print *,
'm_acoustic_src.fpp:432: ',
'@:ACC_SETUP_source_spatials(source_spatials(ai))'
1395# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1397# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1398 call flush (output_unit)
1399# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1401# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1403# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1405# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1407# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1408#if defined(MFC_OpenACC)
1409# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1411# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1412#elif defined(MFC_OpenMP)
1413# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1415# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1417# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1419# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1421# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1422#if defined(MFC_OpenACC)
1423# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1425# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1426#elif defined(MFC_OpenMP)
1427# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1429# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1431# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1433# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1435# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1437# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1438#if defined(MFC_OpenACC)
1439# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1441# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1442#elif defined(MFC_OpenMP)
1443# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1445# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1447# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1449# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1451# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1453# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1454#if defined(MFC_OpenACC)
1455# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1457# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1458#elif defined(MFC_OpenMP)
1459# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1461# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1463# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1465# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1467# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1469# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1470#if defined(MFC_OpenACC)
1471# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1473# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1474#elif defined(MFC_OpenMP)
1475# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1477# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1479# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1481# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1483# 432 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1492 if (abs(source_spatial) < threshold) cycle
1500 if (dim == 3)
source_spatials(ai)%xyz_to_r_ratios(1:3,count) = xyz_to_r_ratios
1507 call s_mpi_abort(
'Fatal Error: Inconsistent allocation of source_spatials')
1511# 458 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1512#if defined(MFC_OpenACC)
1513# 458 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1515# 458 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1516#elif defined(MFC_OpenMP)
1517# 458 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1519# 458 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1522# 459 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1523#if defined(MFC_OpenACC)
1524# 459 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1526# 459 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1527#elif defined(MFC_OpenMP)
1528# 459 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1530# 459 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1535# 462 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1536#if defined(MFC_OpenACC)
1537# 462 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1539# 462 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1540#elif defined(MFC_OpenMP)
1541# 462 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1543# 462 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1548# 465 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1549#if defined(MFC_OpenACC)
1550# 465 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1552# 465 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1553#elif defined(MFC_OpenMP)
1554# 465 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1556# 465 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1563 do ai = 1, num_source
1565 &
' grid points with non-zero source term'
1574 integer,
intent(in) :: j, k, l, ai
1575 real(wp),
dimension(3),
intent(in) :: loc
1576 real(wp),
intent(out) :: source, angle, xyz_to_r_ratios(3)
1577 real(wp) :: sig, r(3)
1583 else if (p == 0)
then
1584 sig = maxval((/dx(j), dy(k)/))
1586 sig = maxval((/dx(j), dy(k), dz(l)/))
1588 sig = sig*acoustic_spatial_support_width
1591 r(1) = x_cc(j) - loc(1)
1592 if (n /= 0) r(2) = y_cc(k) - loc(2)
1593 if (p /= 0) r(3) = z_cc(l) - loc(3)
1595 if (any(
support(ai) == (/1, 2, 3, 4/)))
then
1597 else if (any(
support(ai) == (/5, 6, 7/)))
then
1599 else if (any(
support(ai) == (/9, 10, 11/)))
then
1608 integer,
intent(in) :: ai
1609 real(wp),
intent(in) :: sig, r(3)
1610 real(wp),
intent(out) :: source
1617 source = 1._wp/(sqrt(2._wp*pi)*sig/2._wp)*exp(-0.5_wp*(r(1)/(sig/2._wp))**2._wp)
1620 dist = r(1)*cos(
dir(ai)) + r(2)*sin(
dir(ai))
1621 if ((r(1) - dist*cos(
dir(ai)))**2._wp + (r(2) - dist*sin(
dir(ai)))**2._wp < 0.25_wp*
length(ai)**2._wp) &
1623 if (
support(ai) /= 3 .or. abs(r(3)) < 0.25_wp*
height(ai))
then
1624 source = 1._wp/(sqrt(2._wp*pi)*sig/2._wp)*exp(-0.5_wp*(dist/(sig/2._wp))**2._wp)
1634 integer,
intent(in) :: ai
1635 real(wp),
intent(in) :: sig, r(3)
1636 real(wp),
intent(out) :: source, angle, xyz_to_r_ratios(3)
1637 real(wp) :: current_angle, angle_half_aperture, dist, norm
1641 xyz_to_r_ratios = 0._wp
1644 current_angle = -atan(r(2)/(
foc_length(ai) - r(1)))
1647 if (abs(current_angle) < angle_half_aperture .and. r(1) <
foc_length(ai))
then
1649 source = 1._wp/(sqrt(2._wp*pi)*sig/2._wp)*exp(-0.5_wp*(dist/(sig/2._wp))**2._wp)
1652 else if (
support(ai) == 7)
then
1653 current_angle = -atan(sqrt(r(2)**2 + r(3)**2)/(
foc_length(ai) - r(1)))
1656 if (abs(current_angle) < angle_half_aperture .and. r(1) <
foc_length(ai))
then
1658 source = 1._wp/(sqrt(2._wp*pi)*sig/2._wp)*exp(-0.5_wp*(dist/(sig/2._wp))**2._wp)
1660 norm = sqrt(r(2)**2._wp + r(3)**2._wp + (
foc_length(ai) - r(1))**2._wp)
1661 xyz_to_r_ratios(1) = -(r(1) -
foc_length(ai))/norm
1662 xyz_to_r_ratios(2) = -r(2)/norm
1663 xyz_to_r_ratios(3) = -r(3)/norm
1672 integer,
intent(in) :: ai
1673 real(wp),
intent(in) :: sig, r(3)
1674 real(wp),
intent(out) :: source, angle, xyz_to_r_ratios(3)
1675 integer :: elem, elem_min, elem_max
1676 real(wp) :: current_angle, angle_half_aperture, angle_per_elem, dist
1677 real(wp) :: angle_min, angle_max, norm
1678 real(wp) :: poly_side_length, aperture_element_3D, angle_elem
1679 real(wp) :: x2, y2, z2, x3, y3, z3, C, f, half_apert, dist_interp_to_elem_center
1691 xyz_to_r_ratios = 0._wp
1694 current_angle = -atan(r(2)/(
foc_length(ai) - r(1)))
1699 do elem = elem_min, elem_max
1701 angle_min = angle_max - angle_per_elem
1703 if (current_angle > angle_min .and. current_angle < angle_max .and. r(1) <
foc_length(ai))
then
1704 source = exp(-0.5_wp*(dist/(sig/2._wp))**2._wp)/(sqrt(2._wp*pi)*sig/2._wp)
1705 angle = current_angle
1709 else if (
support(ai) == 11)
then
1715 do elem = elem_min, elem_max
1719 x2 = f - sqrt(f**2 - half_apert**2)
1720 y2 = half_apert*cos(angle_elem)
1721 z2 = half_apert*sin(angle_elem)
1725 c = f**2._wp/((r(1) - f)*(x2 - f) + r(2)*y2 + r(3)*z2)
1726 x3 = c*(r(1) - f) + f
1730 dist_interp_to_elem_center = sqrt((x2 - x3)**2._wp + (y2 - y3)**2._wp + (z2 - z3)**2._wp)
1731 if ((dist_interp_to_elem_center < aperture_element_3d/2._wp) .and. (r(1) < f))
then
1732 dist = sqrt((x3 - r(1))**2._wp + (y3 - r(2))**2._wp + (z3 - r(3))**2._wp)
1733 source = exp(-0.5_wp*(dist/(sig/2._wp))**2._wp)/(sqrt(2._wp*pi)*sig/2._wp)
1735 norm = sqrt(r(2)**2._wp + r(3)**2._wp + (f - r(1))**2._wp)
1736 xyz_to_r_ratios(1) = -(r(1) - f)/norm
1737 xyz_to_r_ratios(2) = -r(2)/norm
1738 xyz_to_r_ratios(3) = -r(3)/norm
1749# 656 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1751# 656 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1753# 656 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1755# 656 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1757# 656 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1759# 656 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1761# 656 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1763 logical,
intent(in) :: freq_conv_flag
1764 integer,
intent(in) :: ai
1765 real(wp),
intent(in) :: c
1768 if (freq_conv_flag)
then
1780# 673 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1782# 673 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1784# 673 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1786# 673 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1788# 673 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1790# 673 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1792# 673 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1794 logical,
intent(in) :: gauss_conv_flag
1795 integer,
intent(in) :: ai
1796 real(wp),
intent(in) :: c
1799 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
Shared bubble-dynamics procedures (radial acceleration, wall pressure, sound speed) for ensemble- and...
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...
integer num_source
Number of acoustic sources.
type(acoustic_parameters), dimension(num_probes_max) acoustic
Acoustic source parameters.
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.