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# 207 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 232 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110# 243 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112# 245 "/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# 283 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117# 293 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119# 303 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121# 312 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123# 329 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127# 346 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131# 358 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133# 364 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135# 370 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137# 376 "/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# 192 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208# 213 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210# 241 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212# 256 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214# 266 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216# 275 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218# 291 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220# 301 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222# 308 "/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
226# 21 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
228# 37 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
230# 50 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
232# 104 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
234# 119 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
236# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
238# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
240# 171 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
242# 182 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
244# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
246# 204 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
250# 225 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
252# 236 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254# 246 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
256# 252 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
258# 258 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260# 264 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
262# 270 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
264# 272 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
265# 273 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
267# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
269# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
275# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
277# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
279# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
281# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
283# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
285# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
287# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
289# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
291# 6 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp" 2
313# 26 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
314#if defined(MFC_OpenACC)
315# 26 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
317# 26 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
318#elif defined(MFC_OpenMP)
319# 26 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
321# 26 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
324 logical,
allocatable,
dimension(:) ::
dipole
326# 29 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
327#if defined(MFC_OpenACC)
328# 29 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
330# 29 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
331#elif defined(MFC_OpenMP)
332# 29 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
334# 29 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
339# 32 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
340#if defined(MFC_OpenACC)
341# 32 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
343# 32 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
344#elif defined(MFC_OpenMP)
345# 32 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
347# 32 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
353# 36 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
354#if defined(MFC_OpenACC)
355# 36 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
357# 36 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
358#elif defined(MFC_OpenMP)
359# 36 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
361# 36 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
364# 37 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
365#if defined(MFC_OpenACC)
366# 37 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
368# 37 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
369#elif defined(MFC_OpenMP)
370# 37 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
372# 37 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
377# 40 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
378#if defined(MFC_OpenACC)
379# 40 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
381# 40 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
382#elif defined(MFC_OpenMP)
383# 40 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
385# 40 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
390# 43 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
391#if defined(MFC_OpenACC)
392# 43 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
394# 43 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
395#elif defined(MFC_OpenMP)
396# 43 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
398# 43 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
403# 46 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
404#if defined(MFC_OpenACC)
405# 46 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
407# 46 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
408#elif defined(MFC_OpenMP)
409# 46 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
411# 46 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
416# 49 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
417#if defined(MFC_OpenACC)
418# 49 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
420# 49 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
421#elif defined(MFC_OpenMP)
422# 49 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
424# 49 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
430 real(wp),
allocatable,
dimension(:, :, :, :) ::
mom_src
433# 56 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
434#if defined(MFC_OpenACC)
435# 56 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
437# 56 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
438#elif defined(MFC_OpenMP)
439# 56 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
441# 56 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
446# 59 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
447#if defined(MFC_OpenACC)
448# 59 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
450# 59 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
451#elif defined(MFC_OpenMP)
452# 59 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
454# 59 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
459# 62 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
460#if defined(MFC_OpenACC)
461# 62 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
463# 62 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
464#elif defined(MFC_OpenMP)
465# 62 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
467# 62 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
477# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
479# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
480 use iso_fortran_env,
only: output_unit
481# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
483# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
484 print *,
'm_acoustic_src.fpp:70: ',
'@: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))'
485# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
487# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
488 call flush (output_unit)
489# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
491# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
493# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
494 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))
495# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
497# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
499# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
501# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
503# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
505# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
507# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
509# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
511# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
513# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
515# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
517# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
519# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
521# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
523# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
525# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
527# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
529# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
531# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
533# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
535# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
537# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
539# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
541# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
543# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
545# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
546#if defined(MFC_OpenACC)
547# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
549# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
550#elif defined(MFC_OpenMP)
551# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
553# 70 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
598# 113 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
599#if defined(MFC_OpenACC)
600# 113 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
602# 113 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
603#elif defined(MFC_OpenMP)
604# 113 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
606# 113 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
608# 119 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
611# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
613# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
614 use iso_fortran_env,
only: output_unit
615# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
617# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
618 print *,
'm_acoustic_src.fpp:120: ',
'@:ALLOCATE(mass_src(0:m, 0:n, 0:p))'
619# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
621# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
622 call flush (output_unit)
623# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
625# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
627# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
629# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
631# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
633# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
634#if defined(MFC_OpenACC)
635# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
637# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
638#elif defined(MFC_OpenMP)
639# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
641# 120 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
644# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
646# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
647 use iso_fortran_env,
only: output_unit
648# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
650# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
651 print *,
'm_acoustic_src.fpp:121: ',
'@:ALLOCATE(mom_src(1:num_vels, 0:m, 0:n, 0:p))'
652# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
654# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
655 call flush (output_unit)
656# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
658# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
660# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
661 allocate (
mom_src(1:num_vels, 0:m, 0:n, 0:p))
662# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
664# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
666# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
667#if defined(MFC_OpenACC)
668# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
670# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
671#elif defined(MFC_OpenMP)
672# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
674# 121 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
677# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
679# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
680 use iso_fortran_env,
only: output_unit
681# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
683# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
684 print *,
'm_acoustic_src.fpp:122: ',
'@:ALLOCATE(E_src(0:m, 0:n, 0:p))'
685# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
687# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
688 call flush (output_unit)
689# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
691# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
693# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
694 allocate (
e_src(0:m, 0:n, 0:p))
695# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
697# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
699# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
700#if defined(MFC_OpenACC)
701# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
703# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
704#elif defined(MFC_OpenMP)
705# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
707# 122 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
717 type(scalar_field),
dimension(sys_size),
intent(inout) ::
q_cons_vf
722 type(scalar_field),
dimension(sys_size),
intent(inout) :: q_prim_vf
727 type(scalar_field),
dimension(sys_size),
intent(inout) :: rhs_vf
729 integer,
intent(in) :: t_step
730# 147 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
731 real(wp),
dimension(num_fluids) :: myalpha, myalpha_rho
732# 149 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
733 real(wp) :: myrho, b_tait
734 real(wp) :: sim_time, c, small_gamma
735 real(wp) :: frequency_local, gauss_sigma_time_local
736 real(wp) :: mass_src_diff, mom_src_diff
737 real(wp) :: source_temporal
738 real(wp) :: period_bb
742 real(wp),
allocatable,
dimension(:) :: phi_rn
744 integer :: i,
j,
k,
l, q
746 integer :: num_points
748 logical :: freq_conv_flag, gauss_conv_flag
750 integer,
parameter :: mass_label = 1, mom_label = 2
755# 170 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
757# 170 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
758#if defined(MFC_OpenACC)
759# 170 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
761# 170 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
762#elif defined(MFC_OpenMP)
763# 170 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
765# 170 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
767# 170 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
769# 170 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
771# 170 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
773# 170 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
787# 182 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
789# 182 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
790#if defined(MFC_OpenACC)
791# 182 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
793# 182 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
794#elif defined(MFC_OpenMP)
795# 182 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
797# 182 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
799# 182 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
801# 182 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
803# 182 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
807 do ai = 1, num_source
809 if (.not. (sim_time <
delay(ai) .and. (
pulse(ai) == 1 .or.
pulse(ai) == 3)))
then
812 freq_conv_flag = f_is_default(
frequency(ai))
827 if (
pulse(ai) == 4)
then
830 call s_mpi_send_random_number(phi_rn,
bb_num_freq(ai))
837 sl_bb = broadband_spectral_level_constant*
mag(ai) +
k*
mag(ai)/broadband_spectral_level_growth_rate
839 ffre_bb = sqrt((2._wp*sl_bb*
bb_bandwidth(ai)))*cos((sim_time)*2._wp*pi/period_bb + 2._wp*pi*phi_rn(
k))
841 sum_bb = sum_bb + ffre_bb
847# 224 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
849# 224 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
850#if defined(MFC_OpenACC)
851# 224 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
853# 224 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
854#elif defined(MFC_OpenMP)
855# 224 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
857# 224 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
859# 224 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
861# 224 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
863# 224 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
865# 224 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
878# 235 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
879#if defined(MFC_OpenACC)
880# 235 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
882# 235 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
883#elif defined(MFC_OpenMP)
884# 235 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
886# 235 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
893 if (bubbles_euler)
then
894 if (num_fluids > 2)
then
896# 243 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
897#if defined(MFC_OpenACC)
898# 243 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
900# 243 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
901#elif defined(MFC_OpenMP)
902# 243 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
904# 243 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
906 do q = 1, num_fluids - 1
907 myrho = myrho + myalpha_rho(q)
908 b_tait = b_tait + myalpha(q)*pi_infs(q)
909 small_gamma = small_gamma + myalpha(q)*gammas(q)
912 myrho = myalpha_rho(1)
914 small_gamma = gammas(1)
918 if ((.not. bubbles_euler) .or. (mpp_lim .and. (num_fluids > 2)))
then
920# 257 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
921#if defined(MFC_OpenACC)
922# 257 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
924# 257 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
925#elif defined(MFC_OpenMP)
926# 257 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
928# 257 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
931 myrho = myrho + myalpha_rho(q)
932 b_tait = b_tait + myalpha(q)*pi_infs(q)
933 small_gamma = small_gamma + myalpha(q)*gammas(q)
937 small_gamma = 1._wp/small_gamma + 1._wp
938 c = sqrt(small_gamma*(q_prim_vf(e_idx)%sf(
j,
k,
l) + ((small_gamma - 1._wp)/small_gamma)*b_tait)/myrho)
945 call s_source_temporal(sim_time, c, ai, mom_label, frequency_local, gauss_sigma_time_local, source_temporal, sum_bb)
950 if (model_eqns /= 4)
e_src(
j,
k,
l) =
e_src(
j,
k,
l) + 2._wp*mom_src_diff*c/(small_gamma - 1._wp)
979 mass_src_diff = mom_src_diff/c
982 call s_source_temporal(sim_time, c, ai, mass_label, frequency_local, gauss_sigma_time_local, source_temporal, sum_bb)
988 if (model_eqns /= 4)
then
989 e_src(
j,
k,
l) =
e_src(
j,
k,
l) + mass_src_diff*c**2._wp/(small_gamma - 1._wp)
994# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
996# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
997#if defined(MFC_OpenACC)
998# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1000# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1001#elif defined(MFC_OpenMP)
1002# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1004# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1006# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1008# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1010# 321 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1017# 326 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1019# 326 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1020#if defined(MFC_OpenACC)
1021# 326 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1023# 326 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1024#elif defined(MFC_OpenMP)
1025# 326 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1027# 326 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1029# 326 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1031# 326 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1033# 326 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1035# 326 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1041# 330 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1042#if defined(MFC_OpenACC)
1043# 330 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1045# 330 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1046#elif defined(MFC_OpenMP)
1047# 330 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1049# 330 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1051 do q = contxb, contxe
1055# 334 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1056#if defined(MFC_OpenACC)
1057# 334 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1059# 334 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1060#elif defined(MFC_OpenMP)
1061# 334 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1063# 334 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1066 rhs_vf(q)%sf(
j,
k,
l) = rhs_vf(q)%sf(
j,
k,
l) +
mom_src(q - contxe,
j,
k,
l)
1068 rhs_vf(e_idx)%sf(
j,
k,
l) = rhs_vf(e_idx)%sf(
j,
k,
l) +
e_src(
j,
k,
l)
1073# 342 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1075# 342 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1076#if defined(MFC_OpenACC)
1077# 342 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1079# 342 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1080#elif defined(MFC_OpenMP)
1081# 342 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1083# 342 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1085# 342 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1087# 342 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1089# 342 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1102 elemental subroutine s_source_temporal(sim_time, c, ai, term_index, frequency_local, gauss_sigma_time_local, source, sum_BB)
1104# 355 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1106# 355 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1108# 355 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1110# 355 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1112# 355 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1114# 355 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1116# 355 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1118 integer,
intent(in) :: ai, term_index
1119 real(wp),
intent(in) :: sim_time, c, sum_bb
1120 real(wp),
intent(in) :: frequency_local, gauss_sigma_time_local
1121 real(wp),
intent(out) :: source
1124 real(wp) :: sine_wave
1125 real(wp) :: foc_length_factor
1127 integer,
parameter :: mass_label = 1
1130 foc_length_factor = 1._wp
1131 elseif (p == 0 .and. (.not. cyl_coord))
then
1132 foc_length_factor =
foc_length(ai)**(-0.85_wp);
1139 if (
pulse(ai) == 1)
then
1140 if ((sim_time -
delay(ai))*frequency_local >
npulse(ai))
return
1142 omega = 2._wp*pi*frequency_local
1143 source =
mag(ai)*sin((sim_time -
delay(ai))*omega)
1145 if (term_index == mass_label)
then
1146 source = source/c + foc_length_factor*
mag(ai)*(cos((sim_time -
delay(ai))*omega) - 1._wp)/omega
1149 elseif (
pulse(ai) == 2)
then
1150 source =
mag(ai)*exp(-0.5_wp*((sim_time -
delay(ai))**2._wp)/(gauss_sigma_time_local**2._wp))
1152 if (term_index == mass_label)
then
1153 source = source/c - &
1154 foc_length_factor*
mag(ai)*sqrt(pi/2)*gauss_sigma_time_local* &
1155 (erf((sim_time -
delay(ai))/(sqrt(2._wp)*gauss_sigma_time_local)) + 1)
1158 elseif (
pulse(ai) == 3)
then
1159 if ((sim_time -
delay(ai))*frequency_local >
npulse(ai))
return
1161 omega = 2._wp*pi*frequency_local
1162 sine_wave = sin((sim_time -
delay(ai))*omega)
1163 source =
mag(ai)*sign(1._wp, sine_wave)
1166 if (abs(sine_wave) < 1.e-2_wp)
then
1167 source =
mag(ai)*sine_wave*1.e2_wp
1170 elseif (
pulse(ai) == 4)
then
1177 integer ::
j,
k,
l, ai
1180 real(wp) :: source_spatial, angle, xyz_to_r_ratios(3)
1181 real(wp),
parameter :: threshold = 1.e-10_wp
1185 elseif (p == 0)
then
1192# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1194# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1195 use iso_fortran_env,
only: output_unit
1196# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1198# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1199 print *,
'm_acoustic_src.fpp:429: ',
'@:ALLOCATE(source_spatials_num_points(1:num_source))'
1200# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1202# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1203 call flush (output_unit)
1204# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1206# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1208# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1210# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1212# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1214# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1215#if defined(MFC_OpenACC)
1216# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1218# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1219#elif defined(MFC_OpenMP)
1220# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1222# 429 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1225# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1227# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1228 use iso_fortran_env,
only: output_unit
1229# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1231# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1232 print *,
'm_acoustic_src.fpp:430: ',
'@:ALLOCATE(source_spatials(1:num_source))'
1233# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1235# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1236 call flush (output_unit)
1237# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1239# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1241# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1243# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1245# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1247# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1248#if defined(MFC_OpenACC)
1249# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1251# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1252#elif defined(MFC_OpenMP)
1253# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1255# 430 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1258 do ai = 1, num_source
1265 if (abs(source_spatial) < threshold) cycle
1275# 448 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1277# 448 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1278 use iso_fortran_env,
only: output_unit
1279# 448 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1281# 448 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1282 print *,
'm_acoustic_src.fpp:448: ',
'@:ALLOCATE(source_spatials(ai)%coord(1:3, 1:count))'
1283# 448 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1285# 448 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1286 call flush (output_unit)
1287# 448 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1289# 448 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1291# 448 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1293# 448 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1295# 448 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1297# 448 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1298#if defined(MFC_OpenACC)
1299# 448 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1301# 448 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1302#elif defined(MFC_OpenMP)
1303# 448 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1305# 448 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1308# 449 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1310# 449 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1311 use iso_fortran_env,
only: output_unit
1312# 449 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1314# 449 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1315 print *,
'm_acoustic_src.fpp:449: ',
'@:ALLOCATE(source_spatials(ai)%val(1:count))'
1316# 449 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1318# 449 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1319 call flush (output_unit)
1320# 449 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1322# 449 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1324# 449 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1326# 449 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1328# 449 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1330# 449 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1331#if defined(MFC_OpenACC)
1332# 449 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1334# 449 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1335#elif defined(MFC_OpenMP)
1336# 449 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1338# 449 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1341# 450 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1343# 450 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1344 use iso_fortran_env,
only: output_unit
1345# 450 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1347# 450 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1348 print *,
'm_acoustic_src.fpp:450: ',
'@:ALLOCATE(source_spatials(ai)%angle(1:count))'
1349# 450 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1351# 450 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1352 call flush (output_unit)
1353# 450 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1355# 450 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1357# 450 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1359# 450 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1361# 450 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1363# 450 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1364#if defined(MFC_OpenACC)
1365# 450 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1367# 450 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1368#elif defined(MFC_OpenMP)
1369# 450 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1371# 450 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1374# 451 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1376# 451 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1377 use iso_fortran_env,
only: output_unit
1378# 451 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1380# 451 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1381 print *,
'm_acoustic_src.fpp:451: ',
'@:ALLOCATE(source_spatials(ai)%xyz_to_r_ratios(1:3, 1:count))'
1382# 451 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1384# 451 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1385 call flush (output_unit)
1386# 451 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1388# 451 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1390# 451 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1392# 451 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1394# 451 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1396# 451 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1397#if defined(MFC_OpenACC)
1398# 451 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1400# 451 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1401#elif defined(MFC_OpenMP)
1402# 451 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1404# 451 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1408# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1410# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1412# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1414# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1416# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1417 use iso_fortran_env,
only: output_unit
1418# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1420# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1421 print *,
'm_acoustic_src.fpp:453: ',
'@:ACC_SETUP_source_spatials(source_spatials(ai))'
1422# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1424# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1425 call flush (output_unit)
1426# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1428# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1430# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1432# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1434# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1435#if defined(MFC_OpenACC)
1436# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1438# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1439#elif defined(MFC_OpenMP)
1440# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1442# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1444# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1446# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1448# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1449#if defined(MFC_OpenACC)
1450# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1452# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1453#elif defined(MFC_OpenMP)
1454# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1456# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1458# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1460# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1462# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1464# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1465#if defined(MFC_OpenACC)
1466# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1468# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1469#elif defined(MFC_OpenMP)
1470# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1472# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1474# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1476# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1478# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1480# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1481#if defined(MFC_OpenACC)
1482# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1484# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1485#elif defined(MFC_OpenMP)
1486# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1488# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1490# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1492# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1494# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1496# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1497#if defined(MFC_OpenACC)
1498# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1500# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1501#elif defined(MFC_OpenMP)
1502# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1504# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1506# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1508# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1510# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1512# 453 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1521 if (abs(source_spatial) < threshold) cycle
1529 if (dim == 3)
source_spatials(ai)%xyz_to_r_ratios(1:3, count) = xyz_to_r_ratios
1536 call s_mpi_abort(
'Fatal Error: Inconsistent allocation of source_spatials')
1540# 479 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1541#if defined(MFC_OpenACC)
1542# 479 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1544# 479 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1545#elif defined(MFC_OpenMP)
1546# 479 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1548# 479 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1551# 480 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1552#if defined(MFC_OpenACC)
1553# 480 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1555# 480 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1556#elif defined(MFC_OpenMP)
1557# 480 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1559# 480 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1564# 483 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1565#if defined(MFC_OpenACC)
1566# 483 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1568# 483 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1569#elif defined(MFC_OpenMP)
1570# 483 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1572# 483 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1577# 486 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1578#if defined(MFC_OpenACC)
1579# 486 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1581# 486 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1582#elif defined(MFC_OpenMP)
1583# 486 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1585# 486 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1593 do ai = 1, num_source
1595 ' grid points with non-zero source term'
1611 integer,
intent(in) :: j, k, l, ai
1612 real(wp),
dimension(3),
intent(in) :: loc
1613 real(wp),
intent(out) :: source, angle, xyz_to_r_ratios(3)
1615 real(wp) :: sig, r(3)
1620 elseif (p == 0)
then
1621 sig = maxval((/dx(j), dy(k)/))
1623 sig = maxval((/dx(j), dy(k), dz(l)/))
1625 sig = sig*acoustic_spatial_support_width
1628 r(1) = x_cc(j) - loc(1)
1629 if (n /= 0) r(2) = y_cc(k) - loc(2)
1630 if (p /= 0) r(3) = z_cc(l) - loc(3)
1632 if (any(
support(ai) == (/1, 2, 3, 4/)))
then
1634 elseif (any(
support(ai) == (/5, 6, 7/)))
then
1636 elseif (any(
support(ai) == (/9, 10, 11/)))
then
1647 integer,
intent(in) :: ai
1648 real(wp),
intent(in) :: sig, r(3)
1649 real(wp),
intent(out) :: source
1656 source = 1._wp/(sqrt(2._wp*pi)*sig/2._wp)*exp(-0.5_wp*(r(1)/(sig/2._wp))**2._wp)
1660 dist = r(1)*cos(
dir(ai)) + r(2)*sin(
dir(ai))
1661 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
1662 if (
support(ai) /= 3 .or. abs(r(3)) < 0.25_wp*
height(ai))
then
1663 source = 1._wp/(sqrt(2._wp*pi)*sig/2._wp)*exp(-0.5_wp*(dist/(sig/2._wp))**2._wp)
1677 integer,
intent(in) :: ai
1678 real(wp),
intent(in) :: sig, r(3)
1679 real(wp),
intent(out) :: source, angle, xyz_to_r_ratios(3)
1681 real(wp) :: current_angle, angle_half_aperture, dist, norm
1685 xyz_to_r_ratios = 0._wp
1688 current_angle = -atan(r(2)/(
foc_length(ai) - r(1)))
1691 if (abs(current_angle) < angle_half_aperture .and. r(1) <
foc_length(ai))
then
1693 source = 1._wp/(sqrt(2._wp*pi)*sig/2._wp)*exp(-0.5_wp*(dist/(sig/2._wp))**2._wp)
1697 elseif (
support(ai) == 7)
then
1698 current_angle = -atan(sqrt(r(2)**2 + r(3)**2)/(
foc_length(ai) - r(1)))
1701 if (abs(current_angle) < angle_half_aperture .and. r(1) <
foc_length(ai))
then
1703 source = 1._wp/(sqrt(2._wp*pi)*sig/2._wp)*exp(-0.5_wp*(dist/(sig/2._wp))**2._wp)
1705 norm = sqrt(r(2)**2._wp + r(3)**2._wp + (
foc_length(ai) - r(1))**2._wp)
1706 xyz_to_r_ratios(1) = -(r(1) -
foc_length(ai))/norm
1707 xyz_to_r_ratios(2) = -r(2)/norm
1708 xyz_to_r_ratios(3) = -r(3)/norm
1722 integer,
intent(in) :: ai
1723 real(wp),
intent(in) :: sig, r(3)
1724 real(wp),
intent(out) :: source, angle, xyz_to_r_ratios(3)
1726 integer :: elem, elem_min, elem_max
1727 real(wp) :: current_angle, angle_half_aperture, angle_per_elem, dist
1728 real(wp) :: angle_min, angle_max, norm
1729 real(wp) :: poly_side_length, aperture_element_3D, angle_elem
1730 real(wp) :: x2, y2, z2, x3, y3, z3, C, f, half_apert, dist_interp_to_elem_center
1742 xyz_to_r_ratios = 0._wp
1745 current_angle = -atan(r(2)/(
foc_length(ai) - r(1)))
1750 do elem = elem_min, elem_max
1752 angle_min = angle_max - angle_per_elem
1754 if (current_angle > angle_min .and. current_angle < angle_max .and. r(1) <
foc_length(ai))
then
1755 source = exp(-0.5_wp*(dist/(sig/2._wp))**2._wp)/(sqrt(2._wp*pi)*sig/2._wp)
1756 angle = current_angle
1761 elseif (
support(ai) == 11)
then
1767 do elem = elem_min, elem_max
1771 x2 = f - sqrt(f**2 - half_apert**2)
1772 y2 = half_apert*cos(angle_elem)
1773 z2 = half_apert*sin(angle_elem)
1777 c = f**2._wp/((r(1) - f)*(x2 - f) + r(2)*y2 + r(3)*z2)
1778 x3 = c*(r(1) - f) + f
1782 dist_interp_to_elem_center = sqrt((x2 - x3)**2._wp + (y2 - y3)**2._wp + (z2 - z3)**2._wp)
1783 if ((dist_interp_to_elem_center < aperture_element_3d/2._wp) .and. (r(1) < f))
then
1784 dist = sqrt((x3 - r(1))**2._wp + (y3 - r(2))**2._wp + (z3 - r(3))**2._wp)
1785 source = exp(-0.5_wp*(dist/(sig/2._wp))**2._wp)/(sqrt(2._wp*pi)*sig/2._wp)
1787 norm = sqrt(r(2)**2._wp + r(3)**2._wp + (f - r(1))**2._wp)
1788 xyz_to_r_ratios(1) = -(r(1) - f)/norm
1789 xyz_to_r_ratios(2) = -r(2)/norm
1790 xyz_to_r_ratios(3) = -r(3)/norm
1805# 704 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1807# 704 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1809# 704 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1811# 704 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1813# 704 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1815# 704 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1817# 704 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1819 logical,
intent(in) :: freq_conv_flag
1820 integer,
intent(in) :: ai
1821 real(wp),
intent(in) :: c
1824 if (freq_conv_flag)
then
1838# 723 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1840# 723 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1842# 723 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1844# 723 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1846# 723 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1848# 723 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1850# 723 "/home/runner/work/MFC/MFC/src/simulation/m_acoustic_src.fpp"
1852 logical,
intent(in) :: gauss_conv_flag
1853 integer,
intent(in) :: ai
1854 real(wp),
intent(in) :: c
1857 if (gauss_conv_flag)
then
type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
Applies acoustic pressure source terms including focused, planar, and broadband transducers.
real(wp), dimension(:), allocatable gauss_sigma_time
real(wp), dimension(:, :), allocatable, target loc_acoustic
elemental real(wp) function f_frequency_local(freq_conv_flag, ai, c)
This function performs wavelength to frequency conversion.
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)
This subroutine calculates the spatial support for a single transducer in 2D, 2D axisymmetric,...
real(wp), dimension(:), allocatable height
real(wp), dimension(:, :, :), allocatable mass_src
integer, dimension(:), allocatable pulse
real(wp), dimension(:, :, :, :), allocatable mom_src
integer, dimension(:), allocatable bb_num_freq
real(wp), dimension(:), allocatable dir
impure subroutine, public s_precalculate_acoustic_spatial_sources
This subroutine identifies and precalculates the non-zero acoustic spatial sources before time-steppi...
real(wp), dimension(:), allocatable length
real(wp), dimension(:), allocatable rotate_angle
integer, dimension(:), allocatable support
real(wp), dimension(:), allocatable wavelength
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)
This subroutine calculates the spatial support for planar acoustic sources in 1D, 2D,...
subroutine s_source_spatial_transducer_array(ai, sig, r, source, angle, xyz_to_r_ratios)
This subroutine calculates the spatial support for multiple transducers in 2D, 2D axisymmetric,...
real(wp), dimension(:), allocatable bb_lowest_freq
integer, dimension(:), allocatable num_elements
impure subroutine, public s_initialize_acoustic_src
This subroutine initializes the acoustic source module.
impure subroutine, public s_acoustic_src_calculations(q_cons_vf, q_prim_vf, t_step, rhs_vf)
This subroutine updates the rhs by computing the mass, mom, energy sources.
real(wp), dimension(:, :, :), allocatable e_src
logical, dimension(:), allocatable dipole
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)
This subroutine gives the temporally varying amplitude of the pulse.
real(wp) function f_gauss_sigma_time_local(gauss_conv_flag, ai, c)
This function performs Gaussian sigma dist to time conversion.
subroutine s_source_spatial(j, k, l, loc, ai, source, angle, xyz_to_r_ratios)
This subroutine gives 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
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.