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# 55 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
302# 75 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
305# 83 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
308# 107 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
311# 123 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
314# 148 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
316# 154 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
318# 161 "/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"
511 real(wp),
dimension(2) :: re
513 real(wp) :: icfl_max_loc, icfl_max_glb
514 real(wp) :: vcfl_max_loc, vcfl_max_glb
515 real(wp) :: ccfl_max_loc, ccfl_max_glb
516 real(wp) :: rc_min_loc, rc_min_glb
517 real(wp) :: icfl, vcfl, ccfl, rc
523 rc_min_loc = huge(1.0_wp)
526# 193 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
528# 193 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
529#if defined(MFC_OpenACC)
530# 193 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
532# 193 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
534# 193 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
535#elif defined(MFC_OpenMP)
536# 193 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
538# 193 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
540# 193 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
542# 193 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
544# 193 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
546# 193 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
548# 196 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
552 call s_compute_enthalpy(q_prim_vf, pres, rho, gamma, pi_inf, re, h, alpha, vel, vel_sum, qv,
j,
k,
l)
558 do fl = 1, num_fluids
565 re(1) = 1._wp/max(re(1),
sgm_eps)
568 call s_compute_stability_from_dt(vel, c, rho, re,
j,
k,
l, icfl, vcfl, rc, ccfl)
570 icfl_max_loc = max(icfl_max_loc, icfl)
571 vcfl_max_loc = max(vcfl_max_loc, merge(vcfl, 0.0_wp, viscous))
572 ccfl_max_loc = max(ccfl_max_loc, merge(ccfl, 0.0_wp, surface_tension))
573 rc_min_loc = min(rc_min_loc, merge(rc, huge(1.0_wp), viscous))
578# 224 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
579#if defined(MFC_OpenACC)
580# 224 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
582# 224 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
583#elif defined(MFC_OpenMP)
584# 224 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
586# 224 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
588# 224 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
593 call s_mpi_reduce_stability_criteria_extrema(icfl_max_loc, vcfl_max_loc, rc_min_loc,
n_el_bubs_loc, icfl_max_glb, &
594 & vcfl_max_glb, rc_min_glb,
n_el_bubs_glb, ccfl_max_loc, ccfl_max_glb)
596 icfl_max_glb = icfl_max_loc
597 if (viscous) vcfl_max_glb = vcfl_max_loc
598 if (viscous) rc_min_glb = rc_min_loc
599 if (surface_tension) ccfl_max_glb = ccfl_max_loc
605 if (surface_tension)
then
615 write (3,
'(13X,I9,13X,F10.6,13X,F10.6,13X,F10.6)', advance=
"no") t_step, dt,
mytime, icfl_max_glb
617 if (surface_tension)
then
618 write (3,
'(13X,F10.6)', advance=
"no") ccfl_max_glb
622 write (3,
'(13X,F10.6,13X,ES16.6)', advance=
"no") vcfl_max_glb, rc_min_glb
625 if (bubbles_lagrange)
then
632 call s_mpi_abort(
'ICFL is NaN. Exiting.')
633 else if (icfl_max_glb > 1._wp)
then
634 print *,
'icfl', icfl_max_glb
635 call s_mpi_abort(
'ICFL is greater than 1.0. Exiting.')
640 call s_mpi_abort(
'VCFL is NaN. Exiting.')
641 else if (vcfl_max_glb > 1._wp)
then
642 print *,
'vcfl', vcfl_max_glb
643 call s_mpi_abort(
'VCFL is greater than 1.0. Exiting.')
647 if (bubbles_lagrange)
then
649 call s_mpi_abort(
'No Lagrangian bubbles remain in the domain. Exiting.')
663 type(
scalar_field),
dimension(sys_size),
intent(inout) :: q_prim_vf
664 integer,
intent(in) :: t_step
666 type(
integer_field),
dimension(1:num_dims,-1:1),
intent(in) :: bc_type
667 character(LEN=path_len + 2*name_len) :: t_step_dir
668 character(LEN=path_len + 3*name_len) :: file_path
669 logical :: file_exist
670 character(LEN=15) :: fmt
671 integer :: i,
j,
k,
l, r
672 real(wp) :: gamma, lit_gamma, pi_inf, qv
674 write (t_step_dir,
'(A,I0,A,I0)') trim(case_dir) //
'/p_all'
675 write (t_step_dir,
'(a,i0,a,i0)') trim(case_dir) //
'/p_all/p',
proc_rank,
'/', t_step
677 file_path = trim(t_step_dir) //
'/.'
682 file_path = trim(t_step_dir) //
'/x_cb.dat'
684 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
685 write (2)
x_cb(-1:m);
close (2)
688 file_path = trim(t_step_dir) //
'/y_cb.dat'
690 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
691 write (2)
y_cb(-1:n);
close (2)
694 file_path = trim(t_step_dir) //
'/z_cb.dat'
696 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
697 write (2)
z_cb(-1:p);
close (2)
702 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/q_cons_vf', i,
'.dat'
704 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
706 write (2)
q_cons_vf(i)%sf(0:m,0:n,0:p);
close (2)
711 if (bubbles_lagrange)
then
712 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/q_cons_vf', sys_size + 1,
'.dat'
714 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
716 write (2) beta%sf(0:m,0:n,0:p);
close (2)
719 if (qbmm .and. .not. polytropic)
then
722 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/pb', sys_size + (i - 1)*
nnode + r,
'.dat'
724 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
726 write (2)
pb_ts(1)%sf(0:m,0:n,0:p,r, i);
close (2)
732 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/mv', sys_size + (i - 1)*
nnode + r,
'.dat'
734 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
736 write (2)
mv_ts(1)%sf(0:m,0:n,0:p,r, i);
close (2)
747 lit_gamma = gs_min(1)
757 write (t_step_dir,
'(A,I0,A,I0)') trim(case_dir) //
'/D'
758 file_path = trim(t_step_dir) //
'/.'
760 inquire (file=trim(file_path), exist=file_exist)
764 if ((prim_vars_wrt .or. (n == 0 .and. p == 0)) .and. (.not. igr))
then
768# 402 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
769#if defined(MFC_OpenACC)
770# 402 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
772# 402 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
773#elif defined(MFC_OpenMP)
774# 402 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
776# 402 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
782 q_prim_vf(eqn_idx%bub%beg)%sf = 1._wp
786 if (n == 0 .and. p == 0)
then
789 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/prim.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
791 open (2, file=trim(file_path))
794 if (((i >= eqn_idx%adv%beg) .and. (i <= eqn_idx%adv%end)))
then
797 write (2, fmt)
x_cb(
j), q_prim_vf(i)%sf(
j, 0, 0)
805 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/cons.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
807 open (2, file=trim(file_path))
814 if (qbmm .and. .not. polytropic)
then
817 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/pres.', i,
'.', r,
'.',
proc_rank, &
818 &
'.', t_step,
'.dat'
820 open (2, file=trim(file_path))
829 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/mv.', i,
'.', r,
'.',
proc_rank, &
830 &
'.', t_step,
'.dat'
832 open (2, file=trim(file_path))
848 if ((n > 0) .and. (p == 0))
then
850 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/cons.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
851 open (2, file=trim(file_path))
861 if (
present(beta))
then
862 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/beta.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
863 open (2, file=trim(file_path))
873 if (qbmm .and. .not. polytropic)
then
876 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/pres.', i,
'.', r,
'.',
proc_rank, &
877 &
'.', t_step,
'.dat'
879 open (2, file=trim(file_path))
890 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/mv.', i,
'.', r,
'.',
proc_rank, &
891 &
'.', t_step,
'.dat'
893 open (2, file=trim(file_path))
904 if (prim_vars_wrt .and. (.not. igr))
then
906 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/prim.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
908 open (2, file=trim(file_path))
912 if (((i >= eqn_idx%cont%beg) .and. (i <= eqn_idx%cont%end)) .or. ((i >= eqn_idx%adv%beg) &
913 & .and. (i <= eqn_idx%adv%end)))
then
916 write (2, fmt)
x_cb(
j),
y_cb(
k), q_prim_vf(i)%sf(
j,
k, 0)
934 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/cons.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
935 open (2, file=trim(file_path))
948 if (
present(beta))
then
949 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/beta.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
950 open (2, file=trim(file_path))
963 if (qbmm .and. .not. polytropic)
then
966 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/pres.', i,
'.', r,
'.',
proc_rank, &
967 &
'.', t_step,
'.dat'
969 open (2, file=trim(file_path))
982 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/mv.', i,
'.', r,
'.',
proc_rank, &
983 &
'.', t_step,
'.dat'
985 open (2, file=trim(file_path))
998 if (prim_vars_wrt .and. (.not. igr))
then
1000 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/prim.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
1002 open (2, file=trim(file_path))
1007 if (((i >= eqn_idx%cont%beg) .and. (i <= eqn_idx%cont%end)) .or. ((i >= eqn_idx%adv%beg) &
1008 & .and. (i <= eqn_idx%adv%end)) .or. ((i >= eqn_idx%species%beg) &
1009 & .and. (i <= eqn_idx%species%end)))
then
1030 integer,
intent(in) :: t_step
1032 type(
integer_field),
dimension(1:num_dims,-1:1),
intent(in) :: bc_type
1036 integer :: ifile, ierr, data_size
1037 integer,
dimension(MPI_STATUS_SIZE) :: status
1038 integer(kind=MPI_OFFSET_kind) :: disp
1039 integer(kind=MPI_OFFSET_kind) :: m_mok, n_mok, p_mok
1040 integer(kind=MPI_OFFSET_kind) :: wp_mok, var_mok, str_mok
1041 integer(kind=MPI_OFFSET_kind) :: nvars_mok
1042 integer(kind=MPI_OFFSET_kind) :: mok
1043 character(LEN=path_len + 2*name_len) :: file_loc
1044 logical :: file_exist, dir_check
1045 character(len=10) :: t_step_string
1049 integer :: m_ds, n_ds, p_ds
1050 integer :: m_glb_ds, n_glb_ds, p_glb_ds
1051 integer :: m_glb_save, n_glb_save, p_glb_save
1053 if (down_sample)
then
1057 if (
present(beta))
then
1058 alt_sys = sys_size + 1
1063 if (file_per_process)
then
1066 if (down_sample)
then
1067 call s_initialize_mpi_data_ds(m_ds, n_ds, p_ds)
1078 file_loc = trim(case_dir) //
'/restart_data/lustre_' // trim(t_step_string)
1080 if (dir_check .neqv. .true.)
then
1085 call s_mpi_barrier()
1090 write (file_loc,
'(I0,A,i7.7,A)') t_step,
'_',
proc_rank,
'.dat'
1091 file_loc = trim(case_dir) //
'/restart_data/lustre_' // trim(t_step_string) // trim(mpiiofs) // trim(file_loc)
1092 inquire (file=trim(file_loc), exist=file_exist)
1093 if (file_exist .and.
proc_rank == 0)
then
1094 call mpi_file_delete(file_loc, mpi_info_int, ierr)
1096 call mpi_file_open(mpi_comm_self, file_loc, ior(mpi_mode_wronly, mpi_mode_create), mpi_info_int, ifile, ierr)
1098 if (down_sample)
then
1099 data_size = (m_ds + 3)*(n_ds + 3)*(p_ds + 3)
1100 m_glb_save = m_glb_ds + 1
1101 n_glb_save = n_glb_ds + 1
1102 p_glb_save = p_glb_ds + 1
1104 data_size = (m + 1)*(n + 1)*(p + 1)
1105 m_glb_save =
m_glb + 1
1106 n_glb_save =
n_glb + 1
1107 p_glb_save =
p_glb + 1
1110 m_mok = int(m_glb_save + 1, mpi_offset_kind)
1111 n_mok = int(n_glb_save + 1, mpi_offset_kind)
1112 p_mok = int(p_glb_save + 1, mpi_offset_kind)
1113 wp_mok = int(storage_size(0._stp)/8, mpi_offset_kind)
1114 mok = int(1._wp, mpi_offset_kind)
1115 str_mok = int(
name_len, mpi_offset_kind)
1116 nvars_mok = int(sys_size, mpi_offset_kind)
1118 if (bubbles_euler)
then
1120 var_mok = int(i, mpi_offset_kind)
1122 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1124 if (qbmm .and. .not. polytropic)
then
1125 do i = sys_size + 1, sys_size + 2*
nb*
nnode
1126 var_mok = int(i, mpi_offset_kind)
1128 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1132 if (down_sample)
then
1134 var_mok = int(i, mpi_offset_kind)
1136 call mpi_file_write_all(ifile,
q_cons_temp_ds(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1140 var_mok = int(i, mpi_offset_kind)
1142 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1147 call mpi_file_close(ifile, ierr)
1156 else if (
present(beta))
then
1162 write (file_loc,
'(I0,A)') t_step,
'.dat'
1163 file_loc = trim(case_dir) //
'/restart_data' // trim(mpiiofs) // trim(file_loc)
1164 inquire (file=trim(file_loc), exist=file_exist)
1165 if (file_exist .and.
proc_rank == 0)
then
1166 call mpi_file_delete(file_loc, mpi_info_int, ierr)
1168 call mpi_file_open(mpi_comm_world, file_loc, ior(mpi_mode_wronly, mpi_mode_create), mpi_info_int, ifile, ierr)
1170 data_size = (m + 1)*(n + 1)*(p + 1)
1172 m_mok = int(
m_glb + 1, mpi_offset_kind)
1173 n_mok = int(
n_glb + 1, mpi_offset_kind)
1174 p_mok = int(
p_glb + 1, mpi_offset_kind)
1175 wp_mok = int(storage_size(0._stp)/8, mpi_offset_kind)
1176 mok = int(1._wp, mpi_offset_kind)
1177 str_mok = int(
name_len, mpi_offset_kind)
1178 nvars_mok = int(alt_sys, mpi_offset_kind)
1180 if (bubbles_euler)
then
1182 var_mok = int(i, mpi_offset_kind)
1184 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
1186 call mpi_file_set_view(ifile, disp, mpi_p,
mpi_io_data%view(i),
'native', mpi_info_int, ierr)
1187 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1189 if (qbmm .and. .not. polytropic)
then
1190 do i = sys_size + 1, sys_size + 2*
nb*
nnode
1191 var_mok = int(i, mpi_offset_kind)
1193 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
1195 call mpi_file_set_view(ifile, disp, mpi_p,
mpi_io_data%view(i),
'native', mpi_info_int, ierr)
1196 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1201 var_mok = int(i, mpi_offset_kind)
1203 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
1205 call mpi_file_set_view(ifile, disp, mpi_p,
mpi_io_data%view(i),
'native', mpi_info_int, ierr)
1206 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1210 if (
present(beta))
then
1211 var_mok = int(sys_size + 1, mpi_offset_kind)
1213 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
1215 call mpi_file_set_view(ifile, disp, mpi_p,
mpi_io_data%view(sys_size + 1),
'native', mpi_info_int, ierr)
1216 call mpi_file_write_all(ifile,
mpi_io_data%var(sys_size + 1)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1219 call mpi_file_close(ifile, ierr)
1232 integer,
intent(in) :: time_step
1233 character(LEN=path_len + 2*name_len) :: file_path
1234 character(LEN=path_len + 2*name_len) :: t_step_dir
1236 write (t_step_dir,
'(A,I0,A,I0)') trim(case_dir) //
'/p_all'
1237 write (t_step_dir,
'(a,i0,a,i0)') trim(case_dir) //
'/p_all/p',
proc_rank,
'/', time_step
1238 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/ib_data.dat'
1240 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
1243# 867 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1244#if defined(MFC_OpenACC)
1245# 867 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1247# 867 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1248#elif defined(MFC_OpenMP)
1249# 867 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1251# 867 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1253 write (2)
ib_markers%sf(0:m,0:n,0:p);
close (2)
1260 integer,
intent(in) :: time_step
1263 character(LEN=path_len + 2*name_len) :: file_loc
1264 integer(kind=MPI_OFFSET_kind) :: disp
1265 integer(kind=MPI_OFFSET_kind) :: m_MOK, n_MOK, p_MOK
1266 integer(kind=MPI_OFFSET_kind) :: WP_MOK, var_MOK, MOK
1267 integer :: ifile, ierr, data_size
1268 integer,
dimension(MPI_STATUS_SIZE) :: status
1271# 885 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1272#if defined(MFC_OpenACC)
1273# 885 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1275# 885 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1276#elif defined(MFC_OpenMP)
1277# 885 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1279# 885 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1282 data_size = (m + 1)*(n + 1)*(p + 1)
1283 m_mok = int(
m_glb + 1, mpi_offset_kind)
1284 n_mok = int(
n_glb + 1, mpi_offset_kind)
1285 p_mok = int(
p_glb + 1, mpi_offset_kind)
1286 wp_mok = int(storage_size(0._stp)/8, mpi_offset_kind)
1287 mok = int(1._wp, mpi_offset_kind)
1289 write (file_loc,
'(A)')
'ib.dat'
1290 file_loc = trim(case_dir) //
'/restart_data' // trim(mpiiofs) // trim(file_loc)
1292 call s_mpi_barrier()
1295 call mpi_file_open(mpi_comm_world, file_loc, ior(mpi_mode_wronly, mpi_mode_create), mpi_info_int, ifile, ierr)
1297 var_mok = int(sys_size + 1, mpi_offset_kind)
1298 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1 + int(time_step/t_step_save))
1299 if (time_step == 0) disp = 0
1301 call mpi_file_set_view(ifile, disp, mpi_integer,
mpi_io_ib_data%view,
'native', mpi_info_int, ierr)
1302 call mpi_file_write_all(ifile,
mpi_io_ib_data%var%sf, data_size, mpi_integer, status, ierr)
1303 call mpi_file_close(ifile, ierr)
1311 integer,
intent(in) :: time_step
1314# 918 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1315#if defined(MFC_OpenACC)
1316# 918 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1318# 918 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1319#elif defined(MFC_OpenMP)
1320# 918 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1322# 918 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1325 if (parallel_io)
then
1336 integer,
intent(in) :: t_step
1339 character(LEN=path_len + 2*name_len) :: file_loc
1340 integer(kind=MPI_OFFSET_KIND) :: disp
1341 integer(kind=MPI_OFFSET_KIND) :: WP_MOK
1342 integer :: ifile, ierr
1343 integer,
dimension(MPI_STATUS_SIZE) :: status
1344 logical :: file_exist, dir_check
1345 integer :: i, ib_idx
1346 integer,
parameter :: NFIELDS_PER_IB = 20
1347 real(wp) :: ib_buf(NFIELDS_PER_IB)
1348 integer :: file_unit
1349 character(len=10) :: t_step_string
1352 integer :: ib_start, ib_end, nibs_per_rank, remainder
1354 wp_mok = int(storage_size(0._wp)/8, mpi_offset_kind)
1356 if (file_per_process)
then
1360 file_loc = trim(case_dir) //
'/restart_data/lustre_' // trim(t_step_string)
1363 call s_mpi_barrier()
1366 write (file_loc,
'(A,I0,A,i7.7,A)')
'ib_state_', t_step,
'_',
proc_rank,
'.dat'
1367 file_loc = trim(case_dir) //
'/restart_data/lustre_' // trim(t_step_string) //
'/' // trim(file_loc)
1369 inquire (file=trim(file_loc), exist=file_exist)
1370 if (file_exist)
then
1371 open (newunit=file_unit, file=trim(file_loc), form=
'unformatted', access=
'stream', status=
'replace')
1373 open (newunit=file_unit, file=trim(file_loc), form=
'unformatted', access=
'stream', status=
'new')
1380 ib_buf(2:4) = patch_ib(ib_idx)%force(1:3)
1381 ib_buf(5:7) = patch_ib(ib_idx)%torque(1:3)
1382 ib_buf(8:10) = patch_ib(ib_idx)%vel(1:3)
1383 ib_buf(11:13) = patch_ib(ib_idx)%angular_vel(1:3)
1384 ib_buf(14:16) = patch_ib(ib_idx)%angles(1:3)
1385 ib_buf(17) = patch_ib(ib_idx)%x_centroid
1386 ib_buf(18) = patch_ib(ib_idx)%y_centroid
1387 ib_buf(19) = patch_ib(ib_idx)%z_centroid
1388 ib_buf(20) = patch_ib(ib_idx)%radius
1390 write (file_unit) patch_ib(ib_idx)%gbl_patch_id
1391 write (file_unit) ib_buf
1399 call s_mpi_barrier()
1401 write (file_loc,
'(A,I0,A)')
'/restart_data/ib_state_', t_step,
'.dat'
1402 file_loc = trim(case_dir) // trim(file_loc)
1404 inquire (file=trim(file_loc), exist=file_exist)
1405 if (file_exist .and.
proc_rank == 0)
then
1406 call mpi_file_delete(file_loc, mpi_info_int, ierr)
1408 call s_mpi_barrier()
1410 call mpi_file_open(mpi_comm_world, file_loc, ior(mpi_mode_wronly, mpi_mode_create), mpi_info_int, ifile, ierr)
1415 ib_buf(2:4) = patch_ib(ib_idx)%force(1:3)
1416 ib_buf(5:7) = patch_ib(ib_idx)%torque(1:3)
1417 ib_buf(8:10) = patch_ib(ib_idx)%vel(1:3)
1418 ib_buf(11:13) = patch_ib(ib_idx)%angular_vel(1:3)
1419 ib_buf(14:16) = patch_ib(ib_idx)%angles(1:3)
1420 ib_buf(17) = patch_ib(ib_idx)%x_centroid
1421 ib_buf(18) = patch_ib(ib_idx)%y_centroid
1422 ib_buf(19) = patch_ib(ib_idx)%z_centroid
1423 ib_buf(20) = patch_ib(ib_idx)%radius
1426 disp = int(patch_ib(ib_idx)%gbl_patch_id - 1, mpi_offset_kind)*int(nfields_per_ib, mpi_offset_kind)*wp_mok
1428 call mpi_file_write_at(ifile, disp, ib_buf, nfields_per_ib, mpi_p, status, ierr)
1431 call mpi_file_close(ifile, ierr)
1440 integer,
intent(in) :: t_step
1441 character(LEN=path_len + 2*name_len) :: file_loc
1442 integer :: i, ios, file_unit
1443 integer,
parameter :: NFIELDS_PER_IB = 20
1444 real(wp) :: ib_buf(NFIELDS_PER_IB)
1448 write (file_loc,
'(A,I0,A)')
'/restart_data/ib_state_', t_step,
'.dat'
1449 file_loc = trim(case_dir) // trim(file_loc)
1451 open (newunit=file_unit, file=trim(file_loc), form=
'unformatted', access=
'stream', status=
'replace', iostat=ios)
1452 if (ios /= 0)
call s_mpi_abort(
'Cannot open IB state output file: ' // trim(file_loc))
1456 ib_buf(2:4) = patch_ib(i)%force(1:3)
1457 ib_buf(5:7) = patch_ib(i)%torque(1:3)
1458 ib_buf(8:10) = patch_ib(i)%vel(1:3)
1459 ib_buf(11:13) = patch_ib(i)%angular_vel(1:3)
1460 ib_buf(14:16) = patch_ib(i)%angles(1:3)
1461 ib_buf(17) = patch_ib(i)%x_centroid
1462 ib_buf(18) = patch_ib(i)%y_centroid
1463 ib_buf(19) = patch_ib(i)%z_centroid
1464 ib_buf(20) = patch_ib(i)%radius
1466 write (file_unit) ib_buf
1476 integer,
intent(in) :: time_step
1479# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1480#if defined(MFC_OpenACC)
1481# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1483# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1484#elif defined(MFC_OpenMP)
1485# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1487# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1490 if (parallel_io)
then
1501 integer,
intent(in) :: t_step
1502 real(wp),
dimension(num_fluids, 5),
intent(in) :: c_mass_in
1504 real(wp) :: nondim_time
1507 nondim_time = real(t_step + t_step_old, wp)*dt
1509 nondim_time = real(t_step, wp)*dt
1514 do i = 1, num_fluids
1515 write (i + 120,
'(6X,4F24.12)') nondim_time, c_mass_in(i, 1), c_mass_in(i, 2), c_mass_in(i, 5)
1517 else if (p == 0)
then
1518 do i = 1, num_fluids
1519 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)
1522 do i = 1, num_fluids
1523 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, &
1524 & 4), c_mass_in(i, 5)
1534 integer,
intent(in) :: t_step
1536 real(wp),
dimension(0:m,0:n,0:p),
intent(in) :: accel_mag
1537 real(wp),
dimension(-1:m) :: distx
1538 real(wp),
dimension(-1:n) :: disty
1539 real(wp),
dimension(-1:p) :: distz
1543 real(wp) :: lit_gamma, nbub
1545 real(wp),
dimension(num_vels) :: vel
1551 real(wp),
dimension(num_fluids) :: alpha
1556 real(wp) :: m00, m10, m01, m20, m02
1557 real(wp) :: varr, varv
1558 real(wp),
dimension(Nb) :: nr, r, nrdot, rdot
1561 real(wp) :: int_pres
1562 real(wp) :: max_pres
1563 real(wp),
dimension(2) :: re
1564 real(wp),
dimension(6) :: tau_e
1566 real(wp) :: dyn_p, t
1567 real(wp) :: damage_state
1568 integer :: i,
j,
k,
l, s, d
1569 real(wp) :: nondim_time
1571 real(wp) :: rhoyks(1:num_species)
1575 if (time_stepper == 23)
then
1579 nondim_time = real(t_step + t_step_old, wp)*dt
1581 nondim_time = real(t_step, wp)*dt
1585 do i = 1, num_probes
1596 nr = 0._wp; r = 0._wp
1597 nrdot = 0._wp; rdot = 0._wp
1604 varr = 0._wp; varv = 0._wp
1606 do s = 1, (num_dims*(num_dims + 1))/2
1609 damage_state = 0._wp
1612 if ((probe(i)%x >=
x_cb(-1)) .and. (probe(i)%x <=
x_cb(m)))
then
1614 distx(s) =
x_cb(s) - probe(i)%x
1615 if (distx(s) < 0._wp) distx(s) = 1000._wp
1617 j = minloc(distx, 1)
1623 do d = 1, num_species
1624 rhoyks(d) =
q_cons_vf(eqn_idx%species%beg + d - 1)%sf(
j - 2,
k,
l)
1629 if (hypoelasticity)
then
1630 call s_convert_to_mixture_variables(
q_cons_vf,
j - 2,
k,
l, rho, gamma, pi_inf, qv, re, g_local, &
1636 vel(s) =
q_cons_vf(eqn_idx%cont%end + s)%sf(
j - 2,
k,
l)/rho
1638 do s = 1, num_fluids
1639 alpha(s) =
q_cons_vf(eqn_idx%adv%beg + s - 1)%sf(
j - 2,
k,
l)
1642 dyn_p = 0.5_wp*rho*dot_product(vel, vel)
1644 if (hypoelasticity)
then
1645 if (cont_damage)
then
1646 damage_state =
q_cons_vf(eqn_idx%damage)%sf(
j - 2,
k,
l)
1647 g_local = g_local*max((1._wp - damage_state), 0._wp)
1651 & dyn_p, pi_inf, gamma, rho, qv, rhoyks(:), pres, t, &
1656 & dyn_p, pi_inf, gamma, rho, qv, rhoyks, pres, t)
1659 if (hypoelasticity)
then
1660 tau_e(1) =
q_cons_vf(eqn_idx%stress%end)%sf(
j - 2,
k,
l)/rho
1663 if (bubbles_euler)
then
1665 if (num_fluids == 3)
then
1678 nr3 = nr3 +
weight(s)*(nr(s)**3._wp)
1681 nbub = sqrt((4._wp*
pi/3._wp)*nr3/alf)
1684 print *,
'In probe, nbub: ', nbub
1698 varr = m20 - m10**2._wp
1699 varv = m02 - m01**2._wp
1702 rdot(:) = nrdot(:)/nbub
1705 ptot = pres - ptilde
1711 if (hypoelasticity) c = sqrt(c*c + (4._wp/3._wp)*g_local/rho)
1713 accel = accel_mag(
j - 2,
k,
l)
1715 else if (p == 0)
then
1717 do d = 1, num_species
1718 rhoyks(d) =
q_cons_vf(eqn_idx%species%beg + d - 1)%sf(
j - 2,
k - 2,
l)
1722 if ((probe(i)%x >=
x_cb(-1)) .and. (probe(i)%x <=
x_cb(m)))
then
1723 if ((probe(i)%y >=
y_cb(-1)) .and. (probe(i)%y <=
y_cb(n)))
then
1725 distx(s) =
x_cb(s) - probe(i)%x
1726 if (distx(s) < 0._wp) distx(s) = 1000._wp
1729 disty(s) =
y_cb(s) - probe(i)%y
1730 if (disty(s) < 0._wp) disty(s) = 1000._wp
1732 j = minloc(distx, 1)
1733 k = minloc(disty, 1)
1739 call s_convert_to_mixture_variables(
q_cons_vf,
j - 2,
k - 2,
l, rho, gamma, pi_inf, qv, re, g_local, &
1742 vel(s) =
q_cons_vf(eqn_idx%cont%end + s)%sf(
j - 2,
k - 2,
l)/rho
1744 do s = 1, num_fluids
1745 alpha(s) =
q_cons_vf(eqn_idx%adv%beg + s - 1)%sf(
j - 2,
k - 2,
l)
1748 dyn_p = 0.5_wp*rho*dot_product(vel, vel)
1750 if (hypoelasticity)
then
1751 if (cont_damage)
then
1752 damage_state =
q_cons_vf(eqn_idx%damage)%sf(
j - 2,
k - 2,
l)
1753 g_local = g_local*max((1._wp - damage_state), 0._wp)
1757 &
k - 2,
l), dyn_p, pi_inf, gamma, rho, qv, rhoyks, pres, t, &
1759 &
q_cons_vf(eqn_idx%mom%beg)%sf(
j - 2,
k - 2,
l), g_local)
1762 &
k - 2,
l), dyn_p, pi_inf, gamma, rho, qv, rhoyks, pres, t)
1765 if (hypoelasticity)
then
1767 tau_e(s) =
q_cons_vf(eqn_idx%stress%beg + s - 1)%sf(
j - 2,
k - 2,
l)/rho
1771 if (bubbles_euler)
then
1783 nr3 = nr3 +
weight(s)*(nr(s)**3._wp)
1786 nbub = sqrt((4._wp*
pi/3._wp)*nr3/alf)
1790 rdot(:) = nrdot(:)/nbub
1794 & 0._wp, 0._wp, c, qv)
1795 if (hypoelasticity) c = sqrt(c*c + (4._wp/3._wp)*g_local/rho)
1799 if ((probe(i)%x >=
x_cb(-1)) .and. (probe(i)%x <=
x_cb(m)))
then
1800 if ((probe(i)%y >=
y_cb(-1)) .and. (probe(i)%y <=
y_cb(n)))
then
1801 if ((probe(i)%z >=
z_cb(-1)) .and. (probe(i)%z <=
z_cb(p)))
then
1803 distx(s) =
x_cb(s) - probe(i)%x
1804 if (distx(s) < 0._wp) distx(s) = 1000._wp
1807 disty(s) =
y_cb(s) - probe(i)%y
1808 if (disty(s) < 0._wp) disty(s) = 1000._wp
1811 distz(s) =
z_cb(s) - probe(i)%z
1812 if (distz(s) < 0._wp) distz(s) = 1000._wp
1814 j = minloc(distx, 1)
1815 k = minloc(disty, 1)
1816 l = minloc(distz, 1)
1823 & g_local, fluid_pp(:)%G)
1825 vel(s) =
q_cons_vf(eqn_idx%cont%end + s)%sf(
j - 2,
k - 2,
l - 2)/rho
1827 do s = 1, num_fluids
1828 alpha(s) =
q_cons_vf(eqn_idx%adv%beg + s - 1)%sf(
j - 2,
k - 2,
l - 2)
1831 dyn_p = 0.5_wp*rho*dot_product(vel, vel)
1834 do d = 1, num_species
1835 rhoyks(d) =
q_cons_vf(eqn_idx%species%beg + d - 1)%sf(
j - 2,
k - 2,
l - 2)
1839 if (hypoelasticity)
then
1840 if (cont_damage)
then
1841 damage_state =
q_cons_vf(eqn_idx%damage)%sf(
j - 2,
k - 2,
l - 2)
1842 g_local = g_local*max((1._wp - damage_state), 0._wp)
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,
q_cons_vf(eqn_idx%stress%beg)%sf(
j - 2, &
1848 &
k - 2,
l - 2),
q_cons_vf(eqn_idx%mom%beg)%sf(
j - 2,
k - 2,
l - 2), &
1852 &
q_cons_vf(eqn_idx%alf)%sf(
j - 2,
k - 2,
l - 2), dyn_p, pi_inf, gamma, &
1853 & rho, qv, rhoyks, pres, t)
1856 if (hypoelasticity)
then
1858 tau_e(s) =
q_cons_vf(eqn_idx%stress%beg + s - 1)%sf(
j - 2,
k - 2,
l - 2)/rho
1864 & 0._wp, 0._wp, c, qv)
1865 if (hypoelasticity) c = sqrt(c*c + (4._wp/3._wp)*g_local/rho)
1867 accel = accel_mag(
j - 2,
k - 2,
l - 2)
1873# 1459 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1875 call s_mpi_allreduce_sum(tmp, rho)
1876# 1459 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1878 call s_mpi_allreduce_sum(tmp, pres)
1879# 1459 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1881 call s_mpi_allreduce_sum(tmp, gamma)
1882# 1459 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1884 call s_mpi_allreduce_sum(tmp, pi_inf)
1885# 1459 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1887 call s_mpi_allreduce_sum(tmp, qv)
1888# 1459 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1890 call s_mpi_allreduce_sum(tmp, c)
1891# 1459 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1893 call s_mpi_allreduce_sum(tmp, accel)
1894# 1462 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1898 call s_mpi_allreduce_sum(tmp, vel(s))
1901 if (bubbles_euler)
then
1902# 1470 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1904 call s_mpi_allreduce_sum(tmp, alf)
1905# 1470 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1907 call s_mpi_allreduce_sum(tmp, alfgr)
1908# 1470 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1910 call s_mpi_allreduce_sum(tmp, nbub)
1911# 1470 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1913 call s_mpi_allreduce_sum(tmp, nr(1))
1914# 1470 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1916 call s_mpi_allreduce_sum(tmp, nrdot(1))
1917# 1470 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1919 call s_mpi_allreduce_sum(tmp, m00)
1920# 1470 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1922 call s_mpi_allreduce_sum(tmp, r(1))
1923# 1470 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1925 call s_mpi_allreduce_sum(tmp, rdot(1))
1926# 1470 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1928 call s_mpi_allreduce_sum(tmp, ptilde)
1929# 1470 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1931 call s_mpi_allreduce_sum(tmp, ptot)
1932# 1473 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1935# 1476 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1937 call s_mpi_allreduce_sum(tmp, varr)
1938# 1476 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1940 call s_mpi_allreduce_sum(tmp, varv)
1941# 1476 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1943 call s_mpi_allreduce_sum(tmp, m10)
1944# 1476 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1946 call s_mpi_allreduce_sum(tmp, m01)
1947# 1476 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1949 call s_mpi_allreduce_sum(tmp, m20)
1950# 1476 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1952 call s_mpi_allreduce_sum(tmp, m02)
1953# 1479 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1957 if (hypoelasticity)
then
1958 do s = 1, (num_dims*(num_dims + 1))/2
1960 call s_mpi_allreduce_sum(tmp, tau_e(s))
1964 if (cont_damage)
then
1966 call s_mpi_allreduce_sum(tmp, damage_state)
1971 if (bubbles_euler .and. (num_fluids <= 2))
then
1973 write (i + 30,
'(6x,f12.6,14f28.16)') nondim_time, rho, vel(1), pres, alf, r(1), rdot(1), nr(1), &
1974 & nrdot(1), varr, varv, m10, m01, m20, m02
1976 write (i + 30,
'(6x,f12.6,8f24.8)') nondim_time, rho, vel(1), pres, alf, r(1), rdot(1), nr(1), nrdot(1)
1979 else if (bubbles_euler .and. (num_fluids == 3))
then
1981 &
'(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)') &
1982 & nondim_time, rho, vel(1), pres, alf, alfgr, nr(1), nrdot(1), r(1), rdot(1), ptilde, ptot
1983 else if (bubbles_euler .and. num_fluids == 4)
then
1985 &
'(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)') &
1987 & 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), &
1989 &
q_cons_vf(10)%sf(
j - 2, 0, 0), nbub, r(1), rdot(1)
1990 else if (hypoelasticity)
then
1991 write (i + 30,
'(6X,F12.6,F24.8,F24.8,F24.8,F24.8)') nondim_time, rho, vel(1), pres, tau_e(1)
1993 write (i + 30,
'(6X,F12.6,F24.8,F24.8,F24.8)') nondim_time, rho, vel(1), pres
1995 else if (p == 0)
then
1996 if (bubbles_euler)
then
1997# 1523 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1998 write (i + 30,
'(6X,10F24.8)') nondim_time, rho, vel(1), vel(2), pres, alf, nr(1), nrdot(1), r(1), &
2000# 1526 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2001 else if (hypoelasticity)
then
2002# 1528 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2003 write (i + 30,
'(6X,F12.6,F24.8,F24.8,F24.8,F24.8,' //
'F24.8,F24.8,F24.8)') nondim_time, rho, &
2004 & vel(1), vel(2), pres, tau_e(1), tau_e(2), tau_e(3)
2005# 1531 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2007 write (i + 30,
'(6X,F12.6,F24.8,F24.8,F24.8)') nondim_time, rho, vel(1), pres
2008 print *,
'time =', nondim_time,
'rho =', rho,
'pres =', pres
2011# 1537 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2012 if (hypoelasticity)
then
2013 write (i + 30,
'(6X,F12.6,16F24.8)') nondim_time, rho, vel(1), vel(2), vel(3), pres, gamma, pi_inf, &
2014 & qv, c, accel, tau_e(1), tau_e(2), tau_e(3), tau_e(4), tau_e(5), tau_e(6)
2017 &
'(6X,F12.6,F24.8,F24.8,F24.8,F24.8,' //
'F24.8,F24.8,F24.8,F24.8,F24.8,' //
'F24.8)') &
2018 & nondim_time, rho, vel(1), vel(2), vel(3), pres, gamma, pi_inf, qv, c, accel
2020# 1546 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2030 real(wp) :: run_time
2032 write (3,
'(A)')
' '
2035 write (3,
'(A,F9.6)')
'ICFL Max: ',
icfl_max
2036 if (surface_tension)
write (3,
'(A,F9.6)')
'CCFL Max: ',
ccfl_max
2037 if (viscous)
write (3,
'(A,F9.6)')
'VCFL Max: ',
vcfl_max
2038 if (viscous)
write (3,
'(A,ES16.6)')
'Rc Min: ',
rc_min
2040 call cpu_time(run_time)
2043 write (3,
'(A,I0,A)')
'Run-time: ', int(anint(run_time)),
's'
2044 write (3,
'(A)')
' '
2054 do i = 1, num_fluids
2065 do i = 1, num_probes
2074 integer :: i, m_ds, n_ds, p_ds
2076 if (run_time_info)
then
2078 if (surface_tension)
then
2089# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2091# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2092 use iso_fortran_env,
only: output_unit
2093# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2095# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2096 print *,
'm_data_output.fpp:1613: ',
'@:ALLOCATE(c_mass(num_fluids,5))'
2097# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2099# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2100 call flush (output_unit)
2101# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2103# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2105# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2106 allocate (
c_mass(num_fluids,5))
2107# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2109# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2111# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2112#if defined(MFC_OpenACC)
2113# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2115# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2116#elif defined(MFC_OpenMP)
2117# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2119# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2123 if (down_sample)
then
2124 m_ds = int((m + 1)/3) - 1
2125 n_ds = int((n + 1)/3) - 1
2126 p_ds = int((p + 1)/3) - 1
2130 allocate (
q_cons_temp_ds(i)%sf(-1:m_ds + 1,-1:n_ds + 1,-1:p_ds + 1))
2143# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2145# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2146 use iso_fortran_env,
only: output_unit
2147# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2149# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2150 print *,
'm_data_output.fpp:1635: ',
'@:DEALLOCATE(c_mass)'
2151# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2153# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2154 call flush (output_unit)
2155# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2157# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2159# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2161# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2162#if defined(MFC_OpenACC)
2163# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2165# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2166#elif defined(MFC_OpenMP)
2167# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2169# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2171# 1635 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2175 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 enthalpy computation, CFL calculation, and stability checks.
subroutine, public s_compute_enthalpy(q_prim_vf, pres, rho, gamma, pi_inf, re, h, alpha, vel, vel_sum, qv, j, k, l)
Computes enthalpy.
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.
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
subroutine, public s_compute_pressure(energy, alf, dyn_p, pi_inf, gamma, rho, qv, rhoyks, pres, t, stress, mom, g, pres_mag)
Compute the pressure from the appropriate equation of state.
subroutine, public s_compute_speed_of_sound(pres, rho, gamma, pi_inf, h, adv, vel_sum, c_c, c, qv)
Compute the speed of sound from thermodynamic state variables, supporting multiple equation-of-state ...
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_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).