1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.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# 167 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
36# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
37# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
38# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
42# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
46# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62# 167 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
66# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
67# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
68# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
69# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
70# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
72# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
74# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 126 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106# 156 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 197 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110# 211 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112# 236 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114# 247 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116# 249 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117# 260 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119# 310 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121# 320 "/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# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127# 356 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129# 366 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131# 373 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133# 379 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135# 385 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137# 391 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139# 397 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141# 403 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
144# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
145# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
146# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
147# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
148# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
149# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
150# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
152# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
153# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
154# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170# 167 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
174# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
176# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
178# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
180# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
182# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
184# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
233# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
236# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
239# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
242# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
289# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
292# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
294# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
299# 52 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
302# 72 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
305# 80 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
308# 104 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
311# 120 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
314# 145 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
316# 151 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
318# 158 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
320# 6 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp" 2
321# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
327# 8 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
330# 12 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
331# 7 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp" 2
357 real(wp),
public,
allocatable,
dimension(:,:) ::
c_mass
359# 33 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
360#if defined(MFC_OpenACC)
361# 33 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
363# 33 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
364#elif defined(MFC_OpenMP)
365# 33 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
367# 33 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
387 type(
scalar_field),
dimension(sys_size),
intent(inout) :: q_prim_vf
388 integer,
intent(in) :: t_step
390 type(
integer_field),
dimension(1:num_dims,-1:1),
intent(in) :: bc_type
392 if (.not. parallel_io)
then
403 character(LEN=name_len),
parameter :: file_name =
'run_time.inf'
404 character(LEN=path_len + name_len) :: file_path
405 character(LEN=8) :: file_date
407 file_path = trim(case_dir) //
'/' // trim(file_name)
409 open (3, file=trim(file_path), form=
'formatted', status=
'replace')
411 write (3,
'(A)')
'Description: Stability information at ' //
'each time-step of the simulation. This'
412 write (3,
'(13X,A)')
'data is composed of the inviscid ' //
'Courant-Friedrichs-Lewy (ICFL)'
413 write (3,
'(13X,A)')
'number, the viscous CFL (VCFL) number, ' //
'the capillary CFL (CCFL)'
414 write (3,
'(13X,A)')
'number and the cell Reynolds (Rc) ' //
'number. Please note that only'
415 write (3,
'(13X,A)')
'those stability conditions pertinent ' //
'to the physics included in'
416 write (3,
'(13X,A)')
'the current computation are displayed.'
417 if (hypoelasticity)
then
418 write (3,
'(13X,A)')
'NOTE: the reported ICFL uses the acoustic ' //
'sound speed only; it may'
419 write (3,
'(13X,A)')
'underestimate the elastic characteristic ' //
'speeds.'
422 call date_and_time(date=file_date)
424 write (3,
'(A)')
'Date: ' // file_date(5:6) //
'/' // file_date(7:8) //
'/' // file_date(3:4)
426 write (3,
'(A)')
'';
write (3,
'(A)')
''
428 write (3,
'(13X,A9,13X,A10,13X,A10,13X,A10)', advance=
"no") trim(
'Time-step'), trim(
'dt'), trim(
'Time'), trim(
'ICFL Max')
430 if (surface_tension)
then
431 write (3,
'(13X,A10)', advance=
"no") trim(
'CCFL Max')
435 write (3,
'(13X,A10,13X,A16)', advance=
"no") trim(
'VCFL Max'), trim(
'Rc Min')
438 if (bubbles_lagrange)
then
439 write (3,
'(13X,A10)', advance=
"no") trim(
'N Bubbles')
449 character(len=path_len + 3*name_len) :: file_path
453 write (file_path,
'(A,I0,A)')
'/fluid', i,
'_com.dat'
454 file_path = trim(case_dir) // trim(file_path)
455 open (i + 120, file=trim(file_path), form=
'formatted', position=
'append', status=
'unknown')
457 write (i + 120,
'(A)')
' Non-Dimensional Time ' //
' Total Mass ' //
' x-loc ' //
' Total Volume '
458 else if (p == 0)
then
460 &
'(A)')
' Non-Dimensional Time ' //
' Total Mass ' //
' x-loc ' //
' y-loc ' &
461 & //
' Total Volume '
464 &
'(A)')
' Non-Dimensional Time ' //
' Total Mass ' //
' x-loc ' //
' y-loc ' //
' z-loc ' &
465 & //
' Total Volume '
474 character(LEN=path_len + 3*name_len) :: file_path
476 logical :: file_exist
479 write (file_path,
'(A,I0,A)')
'/D/probe', i,
'_prim.dat'
480 file_path = trim(case_dir) // trim(file_path)
482 inquire (file=trim(file_path), exist=file_exist)
485 open (i + 30, file=trim(file_path), form=
'formatted', status=
'old', position=
'append')
487 open (i + 30, file=trim(file_path), form=
'formatted', status=
'unknown')
496 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
497 integer,
intent(in) :: t_step
500# 169 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
501 real(wp),
dimension(num_fluids) :: alpha
502 real(wp),
dimension(num_vels) :: vel
503# 172 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
510 real(wp),
dimension(2) :: re
512 real(wp) :: icfl_max_loc, icfl_max_glb
513 real(wp) :: vcfl_max_loc, vcfl_max_glb
514 real(wp) :: ccfl_max_loc, ccfl_max_glb
515 real(wp) :: rc_min_loc, rc_min_glb
516 real(wp) :: icfl, vcfl, ccfl, rc
522 rc_min_loc = huge(1.0_wp)
525# 192 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
527# 192 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
528#if defined(MFC_OpenACC)
529# 192 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
531# 192 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
533# 192 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
534#elif defined(MFC_OpenMP)
535# 192 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
537# 192 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
539# 192 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
541# 192 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
543# 192 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
545# 192 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
547# 195 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
551 call s_compute_cell_state(q_prim_vf, pres, rho, gamma, pi_inf, re, alpha, vel, vel_sum, qv,
j,
k,
l)
557 do fl = 1, num_fluids
564 re(1) = 1._wp/max(re(1),
sgm_eps)
567 call s_compute_stability_from_dt(vel, c, rho, re,
j,
k,
l, icfl, vcfl, rc, ccfl)
569 icfl_max_loc = max(icfl_max_loc, icfl)
570 vcfl_max_loc = max(vcfl_max_loc, merge(vcfl, 0.0_wp, viscous))
571 ccfl_max_loc = max(ccfl_max_loc, merge(ccfl, 0.0_wp, surface_tension))
572 rc_min_loc = min(rc_min_loc, merge(rc, huge(1.0_wp), viscous))
577# 223 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
578#if defined(MFC_OpenACC)
579# 223 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
581# 223 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
582#elif defined(MFC_OpenMP)
583# 223 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
585# 223 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
587# 223 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
592 call s_mpi_reduce_stability_criteria_extrema(icfl_max_loc, vcfl_max_loc, rc_min_loc,
n_el_bubs_loc, icfl_max_glb, &
593 & vcfl_max_glb, rc_min_glb,
n_el_bubs_glb, ccfl_max_loc, ccfl_max_glb)
595 icfl_max_glb = icfl_max_loc
596 if (viscous) vcfl_max_glb = vcfl_max_loc
597 if (viscous) rc_min_glb = rc_min_loc
598 if (surface_tension) ccfl_max_glb = ccfl_max_loc
604 if (surface_tension)
then
614 write (3,
'(13X,I9,13X,F10.6,13X,F10.6,13X,F10.6)', advance=
"no") t_step, dt,
mytime, icfl_max_glb
616 if (surface_tension)
then
617 write (3,
'(13X,F10.6)', advance=
"no") ccfl_max_glb
621 write (3,
'(13X,F10.6,13X,ES16.6)', advance=
"no") vcfl_max_glb, rc_min_glb
624 if (bubbles_lagrange)
then
631 call s_mpi_abort(
'ICFL is NaN. Exiting.')
632 else if (icfl_max_glb > 1._wp)
then
633 print *,
'icfl', icfl_max_glb
634 call s_mpi_abort(
'ICFL is greater than 1.0. Exiting.')
639 call s_mpi_abort(
'VCFL is NaN. Exiting.')
640 else if (vcfl_max_glb > 1._wp)
then
641 print *,
'vcfl', vcfl_max_glb
642 call s_mpi_abort(
'VCFL is greater than 1.0. Exiting.')
646 if (bubbles_lagrange)
then
648 call s_mpi_abort(
'No Lagrangian bubbles remain in the domain. Exiting.')
662 type(
scalar_field),
dimension(sys_size),
intent(inout) :: q_prim_vf
663 integer,
intent(in) :: t_step
665 type(
integer_field),
dimension(1:num_dims,-1:1),
intent(in) :: bc_type
666 character(LEN=path_len + 2*name_len) :: t_step_dir
667 character(LEN=path_len + 3*name_len) :: file_path
668 logical :: file_exist
669 character(LEN=15) :: fmt
670 integer :: i,
j,
k,
l, r
671 real(wp) :: gamma, lit_gamma, pi_inf, qv
673 write (t_step_dir,
'(A,I0,A,I0)') trim(case_dir) //
'/p_all'
674 write (t_step_dir,
'(a,i0,a,i0)') trim(case_dir) //
'/p_all/p',
proc_rank,
'/', t_step
676 file_path = trim(t_step_dir) //
'/.'
681 file_path = trim(t_step_dir) //
'/x_cb.dat'
683 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
684 write (2)
x_cb(-1:m);
close (2)
687 file_path = trim(t_step_dir) //
'/y_cb.dat'
689 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
690 write (2)
y_cb(-1:n);
close (2)
693 file_path = trim(t_step_dir) //
'/z_cb.dat'
695 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
696 write (2)
z_cb(-1:p);
close (2)
701 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/q_cons_vf', i,
'.dat'
703 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
705 write (2)
q_cons_vf(i)%sf(0:m,0:n,0:p);
close (2)
710 if (bubbles_lagrange)
then
711 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/q_cons_vf', sys_size + 1,
'.dat'
713 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
715 write (2) beta%sf(0:m,0:n,0:p);
close (2)
718 if (qbmm .and. .not. polytropic)
then
721 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/pb', sys_size + (i - 1)*
nnode + r,
'.dat'
723 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
725 write (2)
pb_ts(1)%sf(0:m,0:n,0:p,r, i);
close (2)
731 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/mv', sys_size + (i - 1)*
nnode + r,
'.dat'
733 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
735 write (2)
mv_ts(1)%sf(0:m,0:n,0:p,r, i);
close (2)
746 lit_gamma = isentrope_n(1)
756 write (t_step_dir,
'(A,I0,A,I0)') trim(case_dir) //
'/D'
757 file_path = trim(t_step_dir) //
'/.'
759 inquire (file=trim(file_path), exist=file_exist)
763 if ((prim_vars_wrt .or. (n == 0 .and. p == 0)) .and. (.not. igr))
then
767# 401 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
768#if defined(MFC_OpenACC)
769# 401 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
771# 401 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
772#elif defined(MFC_OpenMP)
773# 401 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
775# 401 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
781 q_prim_vf(eqn_idx%bub%beg)%sf = 1._wp
785 if (n == 0 .and. p == 0)
then
788 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/prim.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
790 open (2, file=trim(file_path))
793 if (((i >= eqn_idx%adv%beg) .and. (i <= eqn_idx%adv%end)))
then
796 write (2, fmt)
x_cb(
j), q_prim_vf(i)%sf(
j, 0, 0)
804 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/cons.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
806 open (2, file=trim(file_path))
813 if (qbmm .and. .not. polytropic)
then
816 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/pres.', i,
'.', r,
'.',
proc_rank, &
817 &
'.', t_step,
'.dat'
819 open (2, file=trim(file_path))
828 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/mv.', i,
'.', r,
'.',
proc_rank, &
829 &
'.', t_step,
'.dat'
831 open (2, file=trim(file_path))
847 if ((n > 0) .and. (p == 0))
then
849 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/cons.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
850 open (2, file=trim(file_path))
860 if (
present(beta))
then
861 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/beta.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
862 open (2, file=trim(file_path))
872 if (qbmm .and. .not. polytropic)
then
875 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/pres.', i,
'.', r,
'.',
proc_rank, &
876 &
'.', t_step,
'.dat'
878 open (2, file=trim(file_path))
889 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/mv.', i,
'.', r,
'.',
proc_rank, &
890 &
'.', t_step,
'.dat'
892 open (2, file=trim(file_path))
903 if (prim_vars_wrt .and. (.not. igr))
then
905 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/prim.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
907 open (2, file=trim(file_path))
911 if (((i >= eqn_idx%cont%beg) .and. (i <= eqn_idx%cont%end)) .or. ((i >= eqn_idx%adv%beg) &
912 & .and. (i <= eqn_idx%adv%end)))
then
915 write (2, fmt)
x_cb(
j),
y_cb(
k), q_prim_vf(i)%sf(
j,
k, 0)
933 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/cons.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
934 open (2, file=trim(file_path))
947 if (
present(beta))
then
948 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/beta.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
949 open (2, file=trim(file_path))
962 if (qbmm .and. .not. polytropic)
then
965 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/pres.', i,
'.', r,
'.',
proc_rank, &
966 &
'.', t_step,
'.dat'
968 open (2, file=trim(file_path))
981 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/mv.', i,
'.', r,
'.',
proc_rank, &
982 &
'.', t_step,
'.dat'
984 open (2, file=trim(file_path))
997 if (prim_vars_wrt .and. (.not. igr))
then
999 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/prim.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
1001 open (2, file=trim(file_path))
1006 if (((i >= eqn_idx%cont%beg) .and. (i <= eqn_idx%cont%end)) .or. ((i >= eqn_idx%adv%beg) &
1007 & .and. (i <= eqn_idx%adv%end)) .or. ((i >= eqn_idx%species%beg) &
1008 & .and. (i <= eqn_idx%species%end)))
then
1029 integer,
intent(in) :: t_step
1031 type(
integer_field),
dimension(1:num_dims,-1:1),
intent(in) :: bc_type
1035 integer :: ifile, ierr, data_size
1036 integer,
dimension(MPI_STATUS_SIZE) :: status
1037 integer(kind=MPI_OFFSET_kind) :: disp
1038 integer(kind=MPI_OFFSET_kind) :: m_mok, n_mok, p_mok
1039 integer(kind=MPI_OFFSET_kind) :: wp_mok, var_mok, str_mok
1040 integer(kind=MPI_OFFSET_kind) :: nvars_mok
1041 integer(kind=MPI_OFFSET_kind) :: mok
1042 character(LEN=path_len + 2*name_len) :: file_loc
1043 logical :: file_exist, dir_check
1044 character(len=10) :: t_step_string
1048 integer :: m_ds, n_ds, p_ds
1049 integer :: m_glb_ds, n_glb_ds, p_glb_ds
1050 integer :: m_glb_save, n_glb_save, p_glb_save
1052 if (down_sample)
then
1056 if (
present(beta))
then
1057 alt_sys = sys_size + 1
1062 if (file_per_process)
then
1065 if (down_sample)
then
1066 call s_initialize_mpi_data_ds(m_ds, n_ds, p_ds)
1077 file_loc = trim(case_dir) //
'/restart_data/lustre_' // trim(t_step_string)
1079 if (dir_check .neqv. .true.)
then
1084 call s_mpi_barrier()
1089 write (file_loc,
'(I0,A,i7.7,A)') t_step,
'_',
proc_rank,
'.dat'
1090 file_loc = trim(case_dir) //
'/restart_data/lustre_' // trim(t_step_string) // trim(mpiiofs) // trim(file_loc)
1091 inquire (file=trim(file_loc), exist=file_exist)
1092 if (file_exist .and.
proc_rank == 0)
then
1093 call mpi_file_delete(file_loc, mpi_info_int, ierr)
1095 call mpi_file_open(mpi_comm_self, file_loc, ior(mpi_mode_wronly, mpi_mode_create), mpi_info_int, ifile, ierr)
1097 if (down_sample)
then
1098 data_size = (m_ds + 3)*(n_ds + 3)*(p_ds + 3)
1099 m_glb_save = m_glb_ds + 1
1100 n_glb_save = n_glb_ds + 1
1101 p_glb_save = p_glb_ds + 1
1103 data_size = (m + 1)*(n + 1)*(p + 1)
1104 m_glb_save =
m_glb + 1
1105 n_glb_save =
n_glb + 1
1106 p_glb_save =
p_glb + 1
1109 m_mok = int(m_glb_save + 1, mpi_offset_kind)
1110 n_mok = int(n_glb_save + 1, mpi_offset_kind)
1111 p_mok = int(p_glb_save + 1, mpi_offset_kind)
1112 wp_mok = int(storage_size(0._stp)/8, mpi_offset_kind)
1113 mok = int(1._wp, mpi_offset_kind)
1114 str_mok = int(
name_len, mpi_offset_kind)
1115 nvars_mok = int(sys_size, mpi_offset_kind)
1117 if (bubbles_euler)
then
1119 var_mok = int(i, mpi_offset_kind)
1121 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1123 if (qbmm .and. .not. polytropic)
then
1124 do i = sys_size + 1, sys_size + 2*
nb*
nnode
1125 var_mok = int(i, mpi_offset_kind)
1127 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1131 if (down_sample)
then
1133 var_mok = int(i, mpi_offset_kind)
1135 call mpi_file_write_all(ifile,
q_cons_temp_ds(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1139 var_mok = int(i, mpi_offset_kind)
1141 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1146 call mpi_file_close(ifile, ierr)
1155 else if (
present(beta))
then
1161 write (file_loc,
'(I0,A)') t_step,
'.dat'
1162 file_loc = trim(case_dir) //
'/restart_data' // trim(mpiiofs) // trim(file_loc)
1163 inquire (file=trim(file_loc), exist=file_exist)
1164 if (file_exist .and.
proc_rank == 0)
then
1165 call mpi_file_delete(file_loc, mpi_info_int, ierr)
1167 call mpi_file_open(mpi_comm_world, file_loc, ior(mpi_mode_wronly, mpi_mode_create), mpi_info_int, ifile, ierr)
1169 data_size = (m + 1)*(n + 1)*(p + 1)
1171 m_mok = int(
m_glb + 1, mpi_offset_kind)
1172 n_mok = int(
n_glb + 1, mpi_offset_kind)
1173 p_mok = int(
p_glb + 1, mpi_offset_kind)
1174 wp_mok = int(storage_size(0._stp)/8, mpi_offset_kind)
1175 mok = int(1._wp, mpi_offset_kind)
1176 str_mok = int(
name_len, mpi_offset_kind)
1177 nvars_mok = int(alt_sys, mpi_offset_kind)
1179 if (bubbles_euler)
then
1181 var_mok = int(i, mpi_offset_kind)
1183 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
1185 call mpi_file_set_view(ifile, disp, mpi_p,
mpi_io_data%view(i),
'native', mpi_info_int, ierr)
1186 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1188 if (qbmm .and. .not. polytropic)
then
1189 do i = sys_size + 1, sys_size + 2*
nb*
nnode
1190 var_mok = int(i, mpi_offset_kind)
1192 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
1194 call mpi_file_set_view(ifile, disp, mpi_p,
mpi_io_data%view(i),
'native', mpi_info_int, ierr)
1195 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1200 var_mok = int(i, mpi_offset_kind)
1202 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
1204 call mpi_file_set_view(ifile, disp, mpi_p,
mpi_io_data%view(i),
'native', mpi_info_int, ierr)
1205 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1209 if (
present(beta))
then
1210 var_mok = int(sys_size + 1, mpi_offset_kind)
1212 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
1214 call mpi_file_set_view(ifile, disp, mpi_p,
mpi_io_data%view(sys_size + 1),
'native', mpi_info_int, ierr)
1215 call mpi_file_write_all(ifile,
mpi_io_data%var(sys_size + 1)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1218 call mpi_file_close(ifile, ierr)
1231 integer,
intent(in) :: time_step
1232 character(LEN=path_len + 2*name_len) :: file_path
1233 character(LEN=path_len + 2*name_len) :: t_step_dir
1235 write (t_step_dir,
'(A,I0,A,I0)') trim(case_dir) //
'/p_all'
1236 write (t_step_dir,
'(a,i0,a,i0)') trim(case_dir) //
'/p_all/p',
proc_rank,
'/', time_step
1237 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/ib_data.dat'
1239 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
1242# 866 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1243#if defined(MFC_OpenACC)
1244# 866 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1246# 866 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1247#elif defined(MFC_OpenMP)
1248# 866 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1250# 866 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1252 write (2)
ib_markers%sf(0:m,0:n,0:p);
close (2)
1259 integer,
intent(in) :: time_step
1262 character(LEN=path_len + 2*name_len) :: file_loc
1263 integer(kind=MPI_OFFSET_kind) :: disp
1264 integer(kind=MPI_OFFSET_kind) :: m_MOK, n_MOK, p_MOK
1265 integer(kind=MPI_OFFSET_kind) :: WP_MOK, var_MOK, MOK
1266 integer :: ifile, ierr, data_size
1267 integer,
dimension(MPI_STATUS_SIZE) :: status
1270# 884 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1271#if defined(MFC_OpenACC)
1272# 884 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1274# 884 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1275#elif defined(MFC_OpenMP)
1276# 884 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1278# 884 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1281 data_size = (m + 1)*(n + 1)*(p + 1)
1282 m_mok = int(
m_glb + 1, mpi_offset_kind)
1283 n_mok = int(
n_glb + 1, mpi_offset_kind)
1284 p_mok = int(
p_glb + 1, mpi_offset_kind)
1285 wp_mok = int(storage_size(0._stp)/8, mpi_offset_kind)
1286 mok = int(1._wp, mpi_offset_kind)
1288 write (file_loc,
'(A)')
'ib.dat'
1289 file_loc = trim(case_dir) //
'/restart_data' // trim(mpiiofs) // trim(file_loc)
1291 call s_mpi_barrier()
1294 call mpi_file_open(mpi_comm_world, file_loc, ior(mpi_mode_wronly, mpi_mode_create), mpi_info_int, ifile, ierr)
1296 var_mok = int(sys_size + 1, mpi_offset_kind)
1297 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1 + int(time_step/t_step_save))
1298 if (time_step == 0) disp = 0
1300 call mpi_file_set_view(ifile, disp, mpi_integer,
mpi_io_ib_data%view,
'native', mpi_info_int, ierr)
1301 call mpi_file_write_all(ifile,
mpi_io_ib_data%var%sf, data_size, mpi_integer, status, ierr)
1302 call mpi_file_close(ifile, ierr)
1310 integer,
intent(in) :: time_step
1313# 917 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1314#if defined(MFC_OpenACC)
1315# 917 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1317# 917 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1318#elif defined(MFC_OpenMP)
1319# 917 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1321# 917 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1324 if (parallel_io)
then
1335 integer,
intent(in) :: t_step
1338 character(LEN=path_len + 2*name_len) :: file_loc
1339 integer(kind=MPI_OFFSET_KIND) :: disp
1340 integer(kind=MPI_OFFSET_KIND) :: WP_MOK
1341 integer :: ifile, ierr
1342 integer,
dimension(MPI_STATUS_SIZE) :: status
1343 logical :: file_exist, dir_check
1344 integer :: i, ib_idx
1345 integer,
parameter :: NFIELDS_PER_IB = 20
1346 real(wp) :: ib_buf(NFIELDS_PER_IB)
1347 integer :: file_unit
1348 character(len=10) :: t_step_string
1351 integer :: ib_start, ib_end, nibs_per_rank, remainder
1353 wp_mok = int(storage_size(0._wp)/8, mpi_offset_kind)
1355 if (file_per_process)
then
1359 file_loc = trim(case_dir) //
'/restart_data/lustre_' // trim(t_step_string)
1362 call s_mpi_barrier()
1365 write (file_loc,
'(A,I0,A,i7.7,A)')
'ib_state_', t_step,
'_',
proc_rank,
'.dat'
1366 file_loc = trim(case_dir) //
'/restart_data/lustre_' // trim(t_step_string) //
'/' // trim(file_loc)
1368 inquire (file=trim(file_loc), exist=file_exist)
1369 if (file_exist)
then
1370 open (newunit=file_unit, file=trim(file_loc), form=
'unformatted', access=
'stream', status=
'replace')
1372 open (newunit=file_unit, file=trim(file_loc), form=
'unformatted', access=
'stream', status=
'new')
1379 ib_buf(2:4) = patch_ib(ib_idx)%force(1:3)
1380 ib_buf(5:7) = patch_ib(ib_idx)%torque(1:3)
1381 ib_buf(8:10) = patch_ib(ib_idx)%vel(1:3)
1382 ib_buf(11:13) = patch_ib(ib_idx)%angular_vel(1:3)
1383 ib_buf(14:16) = patch_ib(ib_idx)%angles(1:3)
1384 ib_buf(17) = patch_ib(ib_idx)%x_centroid
1385 ib_buf(18) = patch_ib(ib_idx)%y_centroid
1386 ib_buf(19) = patch_ib(ib_idx)%z_centroid
1387 ib_buf(20) = patch_ib(ib_idx)%radius
1389 write (file_unit) patch_ib(ib_idx)%gbl_patch_id
1390 write (file_unit) ib_buf
1398 call s_mpi_barrier()
1400 write (file_loc,
'(A,I0,A)')
'/restart_data/ib_state_', t_step,
'.dat'
1401 file_loc = trim(case_dir) // trim(file_loc)
1403 inquire (file=trim(file_loc), exist=file_exist)
1404 if (file_exist .and.
proc_rank == 0)
then
1405 call mpi_file_delete(file_loc, mpi_info_int, ierr)
1407 call s_mpi_barrier()
1409 call mpi_file_open(mpi_comm_world, file_loc, ior(mpi_mode_wronly, mpi_mode_create), mpi_info_int, ifile, ierr)
1414 ib_buf(2:4) = patch_ib(ib_idx)%force(1:3)
1415 ib_buf(5:7) = patch_ib(ib_idx)%torque(1:3)
1416 ib_buf(8:10) = patch_ib(ib_idx)%vel(1:3)
1417 ib_buf(11:13) = patch_ib(ib_idx)%angular_vel(1:3)
1418 ib_buf(14:16) = patch_ib(ib_idx)%angles(1:3)
1419 ib_buf(17) = patch_ib(ib_idx)%x_centroid
1420 ib_buf(18) = patch_ib(ib_idx)%y_centroid
1421 ib_buf(19) = patch_ib(ib_idx)%z_centroid
1422 ib_buf(20) = patch_ib(ib_idx)%radius
1425 disp = int(patch_ib(ib_idx)%gbl_patch_id - 1, mpi_offset_kind)*int(nfields_per_ib, mpi_offset_kind)*wp_mok
1427 call mpi_file_write_at(ifile, disp, ib_buf, nfields_per_ib, mpi_p, status, ierr)
1430 call mpi_file_close(ifile, ierr)
1439 integer,
intent(in) :: t_step
1440 character(LEN=path_len + 2*name_len) :: file_loc
1441 integer :: i, ios, file_unit
1442 integer,
parameter :: NFIELDS_PER_IB = 20
1443 real(wp) :: ib_buf(NFIELDS_PER_IB)
1447 write (file_loc,
'(A,I0,A)')
'/restart_data/ib_state_', t_step,
'.dat'
1448 file_loc = trim(case_dir) // trim(file_loc)
1450 open (newunit=file_unit, file=trim(file_loc), form=
'unformatted', access=
'stream', status=
'replace', iostat=ios)
1451 if (ios /= 0)
call s_mpi_abort(
'Cannot open IB state output file: ' // trim(file_loc))
1455 ib_buf(2:4) = patch_ib(i)%force(1:3)
1456 ib_buf(5:7) = patch_ib(i)%torque(1:3)
1457 ib_buf(8:10) = patch_ib(i)%vel(1:3)
1458 ib_buf(11:13) = patch_ib(i)%angular_vel(1:3)
1459 ib_buf(14:16) = patch_ib(i)%angles(1:3)
1460 ib_buf(17) = patch_ib(i)%x_centroid
1461 ib_buf(18) = patch_ib(i)%y_centroid
1462 ib_buf(19) = patch_ib(i)%z_centroid
1463 ib_buf(20) = patch_ib(i)%radius
1465 write (file_unit) ib_buf
1475 integer,
intent(in) :: time_step
1478# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1479#if defined(MFC_OpenACC)
1480# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1482# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1483#elif defined(MFC_OpenMP)
1484# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1486# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1489 if (parallel_io)
then
1500 integer,
intent(in) :: t_step
1501 real(wp),
dimension(num_fluids, 5),
intent(in) :: c_mass_in
1503 real(wp) :: nondim_time
1506 nondim_time = real(t_step + t_step_old, wp)*dt
1508 nondim_time = real(t_step, wp)*dt
1513 do i = 1, num_fluids
1514 write (i + 120,
'(6X,4F24.12)') nondim_time, c_mass_in(i, 1), c_mass_in(i, 2), c_mass_in(i, 5)
1516 else if (p == 0)
then
1517 do i = 1, num_fluids
1518 write (i + 120,
'(6X,5F24.12)') nondim_time, c_mass_in(i, 1), c_mass_in(i, 2), c_mass_in(i, 3), c_mass_in(i, 5)
1521 do i = 1, num_fluids
1522 write (i + 120,
'(6X,6F24.12)') nondim_time, c_mass_in(i, 1), c_mass_in(i, 2), c_mass_in(i, 3), c_mass_in(i, &
1523 & 4), c_mass_in(i, 5)
1533 integer,
intent(in) :: t_step
1535 real(wp),
dimension(0:m,0:n,0:p),
intent(in) :: accel_mag
1536 real(wp),
dimension(-1:m) :: distx
1537 real(wp),
dimension(-1:n) :: disty
1538 real(wp),
dimension(-1:p) :: distz
1542 real(wp) :: lit_gamma, nbub
1544 real(wp),
dimension(num_vels) :: vel
1550 real(wp),
dimension(num_fluids) :: alpha
1555 real(wp) :: m00, m10, m01, m20, m02
1556 real(wp) :: varr, varv
1557 real(wp),
dimension(Nb) :: nr, r, nrdot, rdot
1560 real(wp) :: int_pres
1561 real(wp) :: max_pres
1562 real(wp),
dimension(2) :: re
1563 real(wp),
dimension(6) :: tau_e
1565 real(wp) :: dyn_p, t
1566 real(wp) :: damage_state
1567 integer :: i,
j,
k,
l, s, d
1568 real(wp) :: nondim_time
1570 real(wp) :: rhoyks(1:num_species)
1574 if (time_stepper == 23)
then
1578 nondim_time = real(t_step + t_step_old, wp)*dt
1580 nondim_time = real(t_step, wp)*dt
1584 do i = 1, num_probes
1595 nr = 0._wp; r = 0._wp
1596 nrdot = 0._wp; rdot = 0._wp
1603 varr = 0._wp; varv = 0._wp
1605 do s = 1, (num_dims*(num_dims + 1))/2
1608 damage_state = 0._wp
1611 if ((probe(i)%x >=
x_cb(-1)) .and. (probe(i)%x <=
x_cb(m)))
then
1613 distx(s) =
x_cb(s) - probe(i)%x
1614 if (distx(s) < 0._wp) distx(s) = 1000._wp
1616 j = minloc(distx, 1)
1622 do d = 1, num_species
1623 rhoyks(d) =
q_cons_vf(eqn_idx%species%beg + d - 1)%sf(
j - 2,
k,
l)
1628 if (hypoelasticity)
then
1629 call s_convert_to_mixture_variables(
q_cons_vf,
j - 2,
k,
l, rho, gamma, pi_inf, qv, re, g_local, &
1635 vel(s) =
q_cons_vf(eqn_idx%cont%end + s)%sf(
j - 2,
k,
l)/rho
1637 do s = 1, num_fluids
1638 alpha(s) =
q_cons_vf(eqn_idx%adv%beg + s - 1)%sf(
j - 2,
k,
l)
1641 dyn_p = 0.5_wp*rho*dot_product(vel, vel)
1643 if (hypoelasticity)
then
1644 if (cont_damage)
then
1645 damage_state =
q_cons_vf(eqn_idx%damage)%sf(
j - 2,
k,
l)
1646 g_local = g_local*max((1._wp - damage_state), 0._wp)
1650 & dyn_p, pi_inf, gamma, rho, qv, rhoyks(:), pres, t, &
1654 & dyn_p, pi_inf, gamma, rho, qv, rhoyks, pres, t)
1657 if (hypoelasticity)
then
1658 tau_e(1) =
q_cons_vf(eqn_idx%stress%end)%sf(
j - 2,
k,
l)/rho
1661 if (bubbles_euler)
then
1663 if (num_fluids == 3)
then
1676 nr3 = nr3 +
weight(s)*(nr(s)**3._wp)
1679 nbub = sqrt((4._wp*
pi/3._wp)*nr3/alf)
1682 print *,
'In probe, nbub: ', nbub
1696 varr = m20 - m10**2._wp
1697 varv = m02 - m01**2._wp
1700 rdot(:) = nrdot(:)/nbub
1703 ptot = pres - ptilde
1708 if (hypoelasticity) c = sqrt(c*c + (4._wp/3._wp)*g_local/rho)
1710 accel = accel_mag(
j - 2,
k,
l)
1712 else if (p == 0)
then
1714 do d = 1, num_species
1715 rhoyks(d) =
q_cons_vf(eqn_idx%species%beg + d - 1)%sf(
j - 2,
k - 2,
l)
1719 if ((probe(i)%x >=
x_cb(-1)) .and. (probe(i)%x <=
x_cb(m)))
then
1720 if ((probe(i)%y >=
y_cb(-1)) .and. (probe(i)%y <=
y_cb(n)))
then
1722 distx(s) =
x_cb(s) - probe(i)%x
1723 if (distx(s) < 0._wp) distx(s) = 1000._wp
1726 disty(s) =
y_cb(s) - probe(i)%y
1727 if (disty(s) < 0._wp) disty(s) = 1000._wp
1729 j = minloc(distx, 1)
1730 k = minloc(disty, 1)
1736 call s_convert_to_mixture_variables(
q_cons_vf,
j - 2,
k - 2,
l, rho, gamma, pi_inf, qv, re, g_local, &
1739 vel(s) =
q_cons_vf(eqn_idx%cont%end + s)%sf(
j - 2,
k - 2,
l)/rho
1741 do s = 1, num_fluids
1742 alpha(s) =
q_cons_vf(eqn_idx%adv%beg + s - 1)%sf(
j - 2,
k - 2,
l)
1745 dyn_p = 0.5_wp*rho*dot_product(vel, vel)
1747 if (hypoelasticity)
then
1748 if (cont_damage)
then
1749 damage_state =
q_cons_vf(eqn_idx%damage)%sf(
j - 2,
k - 2,
l)
1750 g_local = g_local*max((1._wp - damage_state), 0._wp)
1754 &
k - 2,
l), dyn_p, pi_inf, gamma, rho, qv, rhoyks, pres, t, &
1758 &
k - 2,
l), dyn_p, pi_inf, gamma, rho, qv, rhoyks, pres, t)
1761 if (hypoelasticity)
then
1763 tau_e(s) =
q_cons_vf(eqn_idx%stress%beg + s - 1)%sf(
j - 2,
k - 2,
l)/rho
1767 if (bubbles_euler)
then
1779 nr3 = nr3 +
weight(s)*(nr(s)**3._wp)
1782 nbub = sqrt((4._wp*
pi/3._wp)*nr3/alf)
1786 rdot(:) = nrdot(:)/nbub
1790 if (hypoelasticity) c = sqrt(c*c + (4._wp/3._wp)*g_local/rho)
1794 if ((probe(i)%x >=
x_cb(-1)) .and. (probe(i)%x <=
x_cb(m)))
then
1795 if ((probe(i)%y >=
y_cb(-1)) .and. (probe(i)%y <=
y_cb(n)))
then
1796 if ((probe(i)%z >=
z_cb(-1)) .and. (probe(i)%z <=
z_cb(p)))
then
1798 distx(s) =
x_cb(s) - probe(i)%x
1799 if (distx(s) < 0._wp) distx(s) = 1000._wp
1802 disty(s) =
y_cb(s) - probe(i)%y
1803 if (disty(s) < 0._wp) disty(s) = 1000._wp
1806 distz(s) =
z_cb(s) - probe(i)%z
1807 if (distz(s) < 0._wp) distz(s) = 1000._wp
1809 j = minloc(distx, 1)
1810 k = minloc(disty, 1)
1811 l = minloc(distz, 1)
1818 & g_local, fluid_pp(:)%G)
1820 vel(s) =
q_cons_vf(eqn_idx%cont%end + s)%sf(
j - 2,
k - 2,
l - 2)/rho
1822 do s = 1, num_fluids
1823 alpha(s) =
q_cons_vf(eqn_idx%adv%beg + s - 1)%sf(
j - 2,
k - 2,
l - 2)
1826 dyn_p = 0.5_wp*rho*dot_product(vel, vel)
1829 do d = 1, num_species
1830 rhoyks(d) =
q_cons_vf(eqn_idx%species%beg + d - 1)%sf(
j - 2,
k - 2,
l - 2)
1834 if (hypoelasticity)
then
1835 if (cont_damage)
then
1836 damage_state =
q_cons_vf(eqn_idx%damage)%sf(
j - 2,
k - 2,
l - 2)
1837 g_local = g_local*max((1._wp - damage_state), 0._wp)
1841 &
q_cons_vf(eqn_idx%alf)%sf(
j - 2,
k - 2,
l - 2), dyn_p, pi_inf, gamma, &
1843 &
l - 2, rho, g_local))
1846 &
q_cons_vf(eqn_idx%alf)%sf(
j - 2,
k - 2,
l - 2), dyn_p, pi_inf, gamma, &
1847 & rho, qv, rhoyks, pres, t)
1850 if (hypoelasticity)
then
1852 tau_e(s) =
q_cons_vf(eqn_idx%stress%beg + s - 1)%sf(
j - 2,
k - 2,
l - 2)/rho
1858 if (hypoelasticity) c = sqrt(c*c + (4._wp/3._wp)*g_local/rho)
1860 accel = accel_mag(
j - 2,
k - 2,
l - 2)
1866# 1452 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1868 call s_mpi_allreduce_sum(tmp, rho)
1869# 1452 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1871 call s_mpi_allreduce_sum(tmp, pres)
1872# 1452 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1874 call s_mpi_allreduce_sum(tmp, gamma)
1875# 1452 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1877 call s_mpi_allreduce_sum(tmp, pi_inf)
1878# 1452 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1880 call s_mpi_allreduce_sum(tmp, qv)
1881# 1452 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1883 call s_mpi_allreduce_sum(tmp, c)
1884# 1452 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1886 call s_mpi_allreduce_sum(tmp, accel)
1887# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1891 call s_mpi_allreduce_sum(tmp, vel(s))
1894 if (bubbles_euler)
then
1895# 1463 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1897 call s_mpi_allreduce_sum(tmp, alf)
1898# 1463 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1900 call s_mpi_allreduce_sum(tmp, alfgr)
1901# 1463 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1903 call s_mpi_allreduce_sum(tmp, nbub)
1904# 1463 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1906 call s_mpi_allreduce_sum(tmp, nr(1))
1907# 1463 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1909 call s_mpi_allreduce_sum(tmp, nrdot(1))
1910# 1463 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1912 call s_mpi_allreduce_sum(tmp, m00)
1913# 1463 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1915 call s_mpi_allreduce_sum(tmp, r(1))
1916# 1463 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1918 call s_mpi_allreduce_sum(tmp, rdot(1))
1919# 1463 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1921 call s_mpi_allreduce_sum(tmp, ptilde)
1922# 1463 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1924 call s_mpi_allreduce_sum(tmp, ptot)
1925# 1466 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1928# 1469 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1930 call s_mpi_allreduce_sum(tmp, varr)
1931# 1469 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1933 call s_mpi_allreduce_sum(tmp, varv)
1934# 1469 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1936 call s_mpi_allreduce_sum(tmp, m10)
1937# 1469 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1939 call s_mpi_allreduce_sum(tmp, m01)
1940# 1469 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1942 call s_mpi_allreduce_sum(tmp, m20)
1943# 1469 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1945 call s_mpi_allreduce_sum(tmp, m02)
1946# 1472 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1950 if (hypoelasticity)
then
1951 do s = 1, (num_dims*(num_dims + 1))/2
1953 call s_mpi_allreduce_sum(tmp, tau_e(s))
1957 if (cont_damage)
then
1959 call s_mpi_allreduce_sum(tmp, damage_state)
1964 if (bubbles_euler .and. (num_fluids <= 2))
then
1966 write (i + 30,
'(6x,f12.6,14f28.16)') nondim_time, rho, vel(1), pres, alf, r(1), rdot(1), nr(1), &
1967 & nrdot(1), varr, varv, m10, m01, m20, m02
1969 write (i + 30,
'(6x,f12.6,8f24.8)') nondim_time, rho, vel(1), pres, alf, r(1), rdot(1), nr(1), nrdot(1)
1972 else if (bubbles_euler .and. (num_fluids == 3))
then
1974 &
'(6x,f12.6,f24.8,f24.8,f24.8,f24.8,f24.8,' //
'f24.8,f24.8,f24.8,f24.8,f24.8, f24.8)') &
1975 & nondim_time, rho, vel(1), pres, alf, alfgr, nr(1), nrdot(1), r(1), rdot(1), ptilde, ptot
1976 else if (bubbles_euler .and. num_fluids == 4)
then
1978 &
'(6x,f12.6,f24.8,f24.8,f24.8,f24.8,' //
'f24.8,f24.8,f24.8,f24.8,f24.8,f24.8,f24.8,f24.8,f24.8)') &
1980 & 0, 0),
q_cons_vf(4)%sf(
j - 2, 0, 0),
q_cons_vf(5)%sf(
j - 2, 0, 0),
q_cons_vf(6)%sf(
j - 2, 0, 0), &
1982 &
q_cons_vf(10)%sf(
j - 2, 0, 0), nbub, r(1), rdot(1)
1983 else if (hypoelasticity)
then
1984 write (i + 30,
'(6X,F12.6,F24.8,F24.8,F24.8,F24.8)') nondim_time, rho, vel(1), pres, tau_e(1)
1986 write (i + 30,
'(6X,F12.6,F24.8,F24.8,F24.8)') nondim_time, rho, vel(1), pres
1988 else if (p == 0)
then
1989 if (bubbles_euler)
then
1990# 1516 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1991 write (i + 30,
'(6X,10F24.8)') nondim_time, rho, vel(1), vel(2), pres, alf, nr(1), nrdot(1), r(1), &
1993# 1519 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1994 else if (hypoelasticity)
then
1995# 1521 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1996 write (i + 30,
'(6X,F12.6,F24.8,F24.8,F24.8,F24.8,' //
'F24.8,F24.8,F24.8)') nondim_time, rho, &
1997 & vel(1), vel(2), pres, tau_e(1), tau_e(2), tau_e(3)
1998# 1524 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2000 write (i + 30,
'(6X,F12.6,F24.8,F24.8,F24.8)') nondim_time, rho, vel(1), pres
2001 print *,
'time =', nondim_time,
'rho =', rho,
'pres =', pres
2004# 1530 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2005 if (hypoelasticity)
then
2006 write (i + 30,
'(6X,F12.6,16F24.8)') nondim_time, rho, vel(1), vel(2), vel(3), pres, gamma, pi_inf, &
2007 & qv, c, accel, tau_e(1), tau_e(2), tau_e(3), tau_e(4), tau_e(5), tau_e(6)
2010 &
'(6X,F12.6,F24.8,F24.8,F24.8,F24.8,' //
'F24.8,F24.8,F24.8,F24.8,F24.8,' //
'F24.8)') &
2011 & nondim_time, rho, vel(1), vel(2), vel(3), pres, gamma, pi_inf, qv, c, accel
2013# 1539 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2023 real(wp) :: run_time
2025 write (3,
'(A)')
' '
2028 write (3,
'(A,F9.6)')
'ICFL Max: ',
icfl_max
2029 if (surface_tension)
write (3,
'(A,F9.6)')
'CCFL Max: ',
ccfl_max
2030 if (viscous)
write (3,
'(A,F9.6)')
'VCFL Max: ',
vcfl_max
2031 if (viscous)
write (3,
'(A,ES16.6)')
'Rc Min: ',
rc_min
2033 call cpu_time(run_time)
2036 write (3,
'(A,I0,A)')
'Run-time: ', int(anint(run_time)),
's'
2037 write (3,
'(A)')
' '
2047 do i = 1, num_fluids
2058 do i = 1, num_probes
2067 integer :: i, m_ds, n_ds, p_ds
2069 if (run_time_info)
then
2071 if (surface_tension)
then
2082# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2084# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2085 use iso_fortran_env,
only: output_unit
2086# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2088# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2089 print *,
'm_data_output.fpp:1606: ',
'@:ALLOCATE(c_mass(num_fluids,5))'
2090# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2092# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2093 call flush (output_unit)
2094# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2096# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2098# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2099 allocate (
c_mass(num_fluids,5))
2100# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2102# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2104# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2105#if defined(MFC_OpenACC)
2106# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2108# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2109#elif defined(MFC_OpenMP)
2110# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2112# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2116 if (down_sample)
then
2117 m_ds = int((m + 1)/3) - 1
2118 n_ds = int((n + 1)/3) - 1
2119 p_ds = int((p + 1)/3) - 1
2123 allocate (
q_cons_temp_ds(i)%sf(-1:m_ds + 1,-1:n_ds + 1,-1:p_ds + 1))
2136# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2138# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2139 use iso_fortran_env,
only: output_unit
2140# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2142# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2143 print *,
'm_data_output.fpp:1628: ',
'@:DEALLOCATE(c_mass)'
2144# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2146# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2147 call flush (output_unit)
2148# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2150# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2152# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2154# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2155#if defined(MFC_OpenACC)
2156# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2158# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2159#elif defined(MFC_OpenMP)
2160# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2162# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2164# 1628 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2168 if (down_sample)
then
type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
Noncharacteristic and processor boundary condition application for ghost cells and buffer regions.
Platform-specific file and directory operations: create, delete, inquire, getcwd, and basename.
impure subroutine s_delete_directory(dir_name)
Recursively delete a directory using a platform-specific system command.
impure subroutine my_inquire(fileloc, dircheck)
Inquire on the existence of a directory or file.
impure subroutine s_create_directory(dir_name)
Create a directory and all its parents if it does not exist.
Compile-time constant parameters: default values, tolerances, and physical constants.
integer, parameter model_eqns_5eq
integer, parameter name_len
Maximum name length.
real(wp), parameter dflt_t_guess
Default guess for temperature (when a previous value is not available).
integer, parameter dflt_int
Default integer value.
real(wp), parameter sgm_eps
Segmentation tolerance.
integer, parameter nnode
Number of QBMM nodes.
integer, parameter precision_single
real(wp), parameter pi
Pi.
Writes solution data, run-time stability diagnostics (ICFL, VCFL, CCFL, Rc), and probe/center-of-mass...
real(wp), dimension(:,:), allocatable, public c_mass
impure subroutine, public s_open_probe_files
Open flow probe data files for writing.
real(wp) rc_min
Rc criterion maximum.
real(wp) vcfl_max
VCFL criterion maximum.
impure subroutine, public s_write_probe_files(t_step, q_cons_vf, accel_mag)
Write flow probe data at the current time step.
subroutine s_write_parallel_ib_state(t_step)
Writes the IB state information out to file.
impure subroutine, public s_write_com_files(t_step, c_mass_in)
Write center-of-mass data at the current time step.
impure subroutine, public s_initialize_data_output_module
Initialize the data output module.
impure subroutine, public s_finalize_data_output_module
Module deallocation and/or disassociation procedures.
subroutine s_write_serial_ib_state(t_step)
Write IB state data to a per-timestep serial (unformatted) file.
subroutine s_write_serial_ib_data(time_step)
Write immersed boundary marker data to a serial (per-processor) unformatted file.
impure subroutine, public s_close_run_time_information_file
Write footer with stability criteria extrema and run-time to the information file,...
impure subroutine, public s_write_data_files(q_cons_vf, q_t_sf, q_prim_vf, t_step, bc_type, beta)
Write data files. Dispatch subroutine that replaces procedure pointer.
impure subroutine, public s_write_serial_data_files(q_cons_vf, q_t_sf, q_prim_vf, t_step, bc_type, beta)
Write grid and conservative variable data files in serial format.
impure subroutine, public s_close_probe_files
Closes probe files.
impure subroutine, public s_close_com_files()
Closes communication files.
impure subroutine, public s_write_run_time_information(q_prim_vf, t_step)
Write stability criteria extrema to the run-time information file at the given time step.
impure subroutine, public s_open_run_time_information_file
Open the run-time information file and write the stability criteria table header.
real(wp) icfl_max
ICFL criterion maximum.
impure subroutine, public s_write_parallel_data_files(q_cons_vf, t_step, bc_type, beta, q_t_sf)
Write grid and conservative variable data files in parallel via MPI I/O.
impure subroutine, public s_write_ib_state_file(time_step)
Writes IB state records to restart_data/ib_state.dat. Must be called only on rank 0.
type(scalar_field), dimension(:), allocatable q_cons_temp_ds
subroutine s_write_parallel_ib_data(time_step)
Write immersed boundary marker data in parallel using MPI I/O.
impure subroutine, public s_open_com_files()
Open center-of-mass data files for writing.
subroutine, public s_write_ib_data_file(time_step)
Dispatch immersed boundary data output to the serial or parallel writer.
real(wp) ccfl_max
CCFL criterion maximum.
Rank-staggered file access delays to prevent I/O contention on parallel file systems.
impure subroutine, public s_delay_file_access(process_rank)
Introduce a rank-dependent busy-wait delay to stagger parallel file access and reduce I/O contention.
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...
real(wp) mytime
Current simulation time.
real(wp), dimension(:), allocatable fluid_inv_re
per-fluid Newtonian inverse-Re
type(int_bounds_info), dimension(1:3) idwint
real(wp), dimension(:), allocatable, target z_cb
logical any_non_newtonian
.true. if any fluid is non-Newtonian
type(qbmm_idx_info) qbmm_idx
QBMM moment index mappings (allocatable; GPU-managed separately).
integer proc_rank
Rank of the local processor.
type(mpi_io_ib_var), public mpi_io_ib_data
real(wp), dimension(:), allocatable weight
Simpson quadrature weights.
integer, dimension(num_local_ibs_max) local_ib_patch_ids
lookup table of IBs in the local compute domain
type(pres_field), dimension(:), allocatable pb_ts
integer n_el_bubs_glb
Number of Lagrangian bubbles (local and global).
type(pres_field), dimension(:), allocatable mv_ts
integer num_procs
Number of processors.
real(wp), dimension(:), allocatable, target y_cb
real(wp), dimension(:,:,:), allocatable ptil
Pressure modification.
type(mpi_io_var), public mpi_io_data
real(wp), dimension(:), allocatable hb_mu_max
logical, dimension(:), allocatable is_non_newtonian
per-fluid NN flag
real(wp), dimension(:), allocatable, target x_cb
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
logical elemental function, public f_approx_equal(a, b, tol_input)
Check if two floating point numbers of wp are within tolerance.
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
subroutine, public s_downsample_data(q_cons_vf, q_cons_temp, m_ds, n_ds, p_ds, m_glb_ds, n_glb_ds, p_glb_ds)
Downsample conservative variable fields by a factor of 3 in each direction using volume averaging.
elemental subroutine, public s_int_to_str(i, res)
Convert an integer to its trimmed string representation.
Ghost-node immersed boundary method: locates ghost/image points, computes interpolation coefficients,...
type(integer_field), public ib_markers
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
Simulation helper routines for cell state, CFL calculation, and stability checks.
subroutine, public s_compute_stability_from_dt(vel, c, rho, re_l, j, k, l, icfl, vcfl, rc, ccfl)
Computes stability criterion for a specified dt.
subroutine, public s_compute_cell_state(q_prim_vf, pres, rho, gamma, pi_inf, re, alpha, vel, vel_sum, qv, j, k, l)
Computes the mixture coefficients, velocity and pressure of one cell.
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
real(wp) function, public f_hypoelastic_energy(q_cons_vf, j, k, l, rho, g)
Hypoelastic strain energy at one cell, summed over the stress components.
subroutine, public s_convert_conservative_to_primitive_variables(qk_cons_vf, q_t_sf, qk_prim_vf, ibounds)
Convert conserved variables (rho*alpha, rho*u, E, alpha) to primitives (rho, u, p,...
subroutine, public s_compute_pressure(energy, alf, dyn_p, pi_inf, gamma, rho, qv, rhoyks, pres, t, e_e_in, pres_mag)
Compute the pressure from the appropriate equation of state.
subroutine, public s_compute_speed_of_sound(pres, rho, gamma, pi_inf, adv, c)
Speed of sound of a thermodynamic state. Enthalpy is not an argument: for a real state H,...
subroutine, public s_convert_to_mixture_variables(q_vf, i, j, k, rho, gamma, pi_inf, qv, re_k, g_k, g)
Dispatch to the s_convert_mixture_to_mixture_variables and s_convert_species_to_mixture_variables sub...
Derived type annexing an integer scalar field (SF).
Derived type annexing a scalar field (SF).