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# 145 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
36# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
37# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
38# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
42# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
46# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62# 145 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
66# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
67# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
68# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
69# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
70# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
72# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
74# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
144# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
145# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
146# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
147# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
148# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
149# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
150# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
152# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
153# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
154# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170# 145 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
174# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
176# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
178# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
180# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
182# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
184# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
233# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
236# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
239# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
242# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
289# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
292# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
294# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
299# 57 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
302# 77 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
305# 85 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
308# 109 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
311# 125 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
314# 150 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
316# 156 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
318# 163 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
320# 6 "/home/runner/work/MFC/MFC/src/simulation/m_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),
allocatable,
dimension(:,:,:) ::
icfl_sf
358 real(wp),
allocatable,
dimension(:,:,:) ::
vcfl_sf
359 real(wp),
allocatable,
dimension(:,:,:) ::
rc_sf
360 real(wp),
public,
allocatable,
dimension(:,:) ::
c_mass
362# 36 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
363#if defined(MFC_OpenACC)
364# 36 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
366# 36 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
367#elif defined(MFC_OpenMP)
368# 36 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
370# 36 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
377# 41 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
378#if defined(MFC_OpenACC)
379# 41 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
381# 41 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
382#elif defined(MFC_OpenMP)
383# 41 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
385# 41 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
388# 42 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
389#if defined(MFC_OpenACC)
390# 42 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
392# 42 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
393#elif defined(MFC_OpenMP)
394# 42 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
396# 42 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
415 type(
scalar_field),
dimension(sys_size),
intent(inout) :: q_prim_vf
416 integer,
intent(in) :: t_step
418 type(
integer_field),
dimension(1:num_dims,-1:1),
intent(in) :: bc_type
420 if (.not. parallel_io)
then
431 character(LEN=name_len),
parameter :: file_name =
'run_time.inf'
432 character(LEN=path_len + name_len) :: file_path
433 character(LEN=8) :: file_date
435 file_path = trim(case_dir) //
'/' // trim(file_name)
437 open (3, file=trim(file_path), form=
'formatted', status=
'replace')
439 write (3,
'(A)')
'Description: Stability information at ' //
'each time-step of the simulation. This'
440 write (3,
'(13X,A)')
'data is composed of the inviscid ' //
'Courant-Friedrichs-Lewy (ICFL)'
441 write (3,
'(13X,A)')
'number, the viscous CFL (VCFL) number, ' //
'the capillary CFL (CCFL)'
442 write (3,
'(13X,A)')
'number and the cell Reynolds (Rc) ' //
'number. Please note that only'
443 write (3,
'(13X,A)')
'those stability conditions pertinent ' //
'to the physics included in'
444 write (3,
'(13X,A)')
'the current computation are displayed.'
446 call date_and_time(date=file_date)
448 write (3,
'(A)')
'Date: ' // file_date(5:6) //
'/' // file_date(7:8) //
'/' // file_date(3:4)
450 write (3,
'(A)')
'';
write (3,
'(A)')
''
452 write (3,
'(13X,A9,13X,A10,13X,A10,13X,A10)', advance=
"no") trim(
'Time-step'), trim(
'dt'), trim(
'Time'), trim(
'ICFL Max')
455 write (3,
'(13X,A10,13X,A16)', advance=
"no") trim(
'VCFL Max'), trim(
'Rc Min')
465 character(len=path_len + 3*name_len) :: file_path
469 write (file_path,
'(A,I0,A)')
'/fluid', i,
'_com.dat'
470 file_path = trim(case_dir) // trim(file_path)
471 open (i + 120, file=trim(file_path), form=
'formatted', position=
'append', status=
'unknown')
473 write (i + 120,
'(A)')
' Non-Dimensional Time ' //
' Total Mass ' //
' x-loc ' //
' Total Volume '
474 else if (p == 0)
then
476 &
'(A)')
' Non-Dimensional Time ' //
' Total Mass ' //
' x-loc ' //
' y-loc ' &
477 & //
' Total Volume '
480 &
'(A)')
' Non-Dimensional Time ' //
' Total Mass ' //
' x-loc ' //
' y-loc ' //
' z-loc ' &
481 & //
' Total Volume '
490 character(LEN=path_len + 3*name_len) :: file_path
492 logical :: file_exist
495 write (file_path,
'(A,I0,A)')
'/D/probe', i,
'_prim.dat'
496 file_path = trim(case_dir) // trim(file_path)
498 inquire (file=trim(file_path), exist=file_exist)
501 open (i + 30, file=trim(file_path), form=
'formatted', status=
'old', position=
'append')
503 open (i + 30, file=trim(file_path), form=
'formatted', status=
'unknown')
507 if (integral_wrt)
then
508 do i = 1, num_integrals
509 write (file_path,
'(A,I0,A)')
'/D/integral', i,
'_prim.dat'
510 file_path = trim(case_dir) // trim(file_path)
512 open (i + 70, file=trim(file_path), form=
'formatted', position=
'append', status=
'unknown')
521 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
522 integer,
intent(in) :: t_step
525# 174 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
526 real(wp),
dimension(num_fluids) :: alpha
527 real(wp),
dimension(num_vels) :: vel
528# 177 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
536 real(wp),
dimension(2) :: re
543# 190 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
545# 190 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
546#if defined(MFC_OpenACC)
547# 190 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
549# 190 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
550#elif defined(MFC_OpenMP)
551# 190 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
553# 190 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
555# 190 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
557# 190 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
559# 190 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
561# 190 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
566 call s_compute_enthalpy(q_prim_vf, pres, rho, gamma, pi_inf, re, h, alpha, vel, vel_sum, qv,
j,
k,
l)
572 do fl = 1, num_fluids
579 re(1) = 1._wp/max(re(1),
sgm_eps)
591# 218 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
592#if defined(MFC_OpenACC)
593# 218 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
595# 218 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
596#elif defined(MFC_OpenMP)
597# 218 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
599# 218 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
601# 218 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
606# 221 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
607#if defined(MFC_OpenACC)
608# 221 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
610# 221 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
611#elif defined(MFC_OpenMP)
612# 221 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
614# 221 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
619# 224 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
620#if defined(MFC_OpenACC)
621# 224 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
623# 224 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
624#elif defined(MFC_OpenMP)
625# 224 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
627# 224 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
639# 234 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
641# 234 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
642#if defined(MFC_OpenACC)
643# 234 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
645# 234 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
647# 234 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
649# 234 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
650#elif defined(MFC_OpenMP)
651# 234 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
653# 234 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
655# 234 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
657# 234 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
659# 234 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
661# 234 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
663# 234 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
665# 234 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
667# 237 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
670# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
672# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
673#if defined(MFC_OpenACC)
674# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
676# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
678# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
680# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
682# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
683#elif defined(MFC_OpenMP)
684# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
686# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
688# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
690# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
692# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
694# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
696# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
698# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
700# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
702# 238 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
704# 242 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
725 write (3,
'(13X,I9,13X,F10.6,13X,F10.6,13X,F10.6)', advance=
"no") t_step, dt,
mytime,
icfl_max_glb
734 call s_mpi_abort(
'ICFL is NaN. Exiting.')
737 call s_mpi_abort(
'ICFL is greater than 1.0. Exiting.')
742 call s_mpi_abort(
'VCFL is NaN. Exiting.')
745 call s_mpi_abort(
'VCFL is greater than 1.0. Exiting.')
759 type(
scalar_field),
dimension(sys_size),
intent(inout) :: q_prim_vf
760 integer,
intent(in) :: t_step
762 type(
integer_field),
dimension(1:num_dims,-1:1),
intent(in) :: bc_type
763 character(LEN=path_len + 2*name_len) :: t_step_dir
764 character(LEN=path_len + 3*name_len) :: file_path
765 logical :: file_exist
766 character(LEN=15) :: fmt
767 integer :: i,
j,
k,
l, r
768 real(wp) :: gamma, lit_gamma, pi_inf, qv
770 write (t_step_dir,
'(A,I0,A,I0)') trim(case_dir) //
'/p_all'
771 write (t_step_dir,
'(a,i0,a,i0)') trim(case_dir) //
'/p_all/p',
proc_rank,
'/', t_step
773 file_path = trim(t_step_dir) //
'/.'
778 file_path = trim(t_step_dir) //
'/x_cb.dat'
780 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
781 write (2)
x_cb(-1:m);
close (2)
784 file_path = trim(t_step_dir) //
'/y_cb.dat'
786 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
787 write (2)
y_cb(-1:n);
close (2)
790 file_path = trim(t_step_dir) //
'/z_cb.dat'
792 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
793 write (2)
z_cb(-1:p);
close (2)
798 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/q_cons_vf', i,
'.dat'
800 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
802 write (2)
q_cons_vf(i)%sf(0:m,0:n,0:p);
close (2)
807 if (bubbles_lagrange)
then
808 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/q_cons_vf', sys_size + 1,
'.dat'
810 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
812 write (2) beta%sf(0:m,0:n,0:p);
close (2)
815 if (qbmm .and. .not. polytropic)
then
818 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/pb', sys_size + (i - 1)*
nnode + r,
'.dat'
820 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
822 write (2)
pb_ts(1)%sf(0:m,0:n,0:p,r, i);
close (2)
828 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/mv', sys_size + (i - 1)*
nnode + r,
'.dat'
830 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
832 write (2)
mv_ts(1)%sf(0:m,0:n,0:p,r, i);
close (2)
853 write (t_step_dir,
'(A,I0,A,I0)') trim(case_dir) //
'/D'
854 file_path = trim(t_step_dir) //
'/.'
856 inquire (file=trim(file_path), exist=file_exist)
860 if ((prim_vars_wrt .or. (n == 0 .and. p == 0)) .and. (.not. igr))
then
864# 400 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
865#if defined(MFC_OpenACC)
866# 400 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
868# 400 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
869#elif defined(MFC_OpenMP)
870# 400 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
872# 400 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
878 q_prim_vf(eqn_idx%bub%beg)%sf = 1._wp
882 if (n == 0 .and. p == 0)
then
885 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/prim.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
887 open (2, file=trim(file_path))
890 if (((i >= eqn_idx%adv%beg) .and. (i <= eqn_idx%adv%end)))
then
893 write (2, fmt)
x_cb(
j), q_prim_vf(i)%sf(
j, 0, 0)
901 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/cons.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
903 open (2, file=trim(file_path))
910 if (qbmm .and. .not. polytropic)
then
913 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/pres.', i,
'.', r,
'.',
proc_rank, &
914 &
'.', t_step,
'.dat'
916 open (2, file=trim(file_path))
925 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/mv.', i,
'.', r,
'.',
proc_rank, &
926 &
'.', t_step,
'.dat'
928 open (2, file=trim(file_path))
944 if ((n > 0) .and. (p == 0))
then
946 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/cons.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
947 open (2, file=trim(file_path))
957 if (
present(beta))
then
958 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/beta.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
959 open (2, file=trim(file_path))
969 if (qbmm .and. .not. polytropic)
then
972 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/pres.', i,
'.', r,
'.',
proc_rank, &
973 &
'.', t_step,
'.dat'
975 open (2, file=trim(file_path))
986 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/mv.', i,
'.', r,
'.',
proc_rank, &
987 &
'.', t_step,
'.dat'
989 open (2, file=trim(file_path))
1000 if (prim_vars_wrt .and. (.not. igr))
then
1002 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/prim.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
1004 open (2, file=trim(file_path))
1008 if (((i >= eqn_idx%cont%beg) .and. (i <= eqn_idx%cont%end)) .or. ((i >= eqn_idx%adv%beg) &
1009 & .and. (i <= eqn_idx%adv%end)))
then
1012 write (2, fmt)
x_cb(
j),
y_cb(
k), q_prim_vf(i)%sf(
j,
k, 0)
1030 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/cons.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
1031 open (2, file=trim(file_path))
1044 if (
present(beta))
then
1045 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/beta.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
1046 open (2, file=trim(file_path))
1059 if (qbmm .and. .not. polytropic)
then
1062 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/pres.', i,
'.', r,
'.',
proc_rank, &
1063 &
'.', t_step,
'.dat'
1065 open (2, file=trim(file_path))
1078 write (file_path,
'(A,I0,A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/mv.', i,
'.', r,
'.',
proc_rank, &
1079 &
'.', t_step,
'.dat'
1081 open (2, file=trim(file_path))
1094 if (prim_vars_wrt .and. (.not. igr))
then
1096 write (file_path,
'(A,I0,A,I2.2,A,I6.6,A)') trim(t_step_dir) //
'/prim.', i,
'.',
proc_rank,
'.', t_step,
'.dat'
1098 open (2, file=trim(file_path))
1103 if (((i >= eqn_idx%cont%beg) .and. (i <= eqn_idx%cont%end)) .or. ((i >= eqn_idx%adv%beg) &
1104 & .and. (i <= eqn_idx%adv%end)) .or. ((i >= eqn_idx%species%beg) &
1105 & .and. (i <= eqn_idx%species%end)))
then
1126 integer,
intent(in) :: t_step
1128 type(
integer_field),
dimension(1:num_dims,-1:1),
intent(in) :: bc_type
1132 integer :: ifile, ierr, data_size
1133 integer,
dimension(MPI_STATUS_SIZE) :: status
1134 integer(kind=MPI_OFFSET_kind) :: disp
1135 integer(kind=MPI_OFFSET_kind) :: m_mok, n_mok, p_mok
1136 integer(kind=MPI_OFFSET_kind) :: wp_mok, var_mok, str_mok
1137 integer(kind=MPI_OFFSET_kind) :: nvars_mok
1138 integer(kind=MPI_OFFSET_kind) :: mok
1139 character(LEN=path_len + 2*name_len) :: file_loc
1140 logical :: file_exist, dir_check
1141 character(len=10) :: t_step_string
1145 integer :: m_ds, n_ds, p_ds
1146 integer :: m_glb_ds, n_glb_ds, p_glb_ds
1147 integer :: m_glb_save, n_glb_save, p_glb_save
1149 if (down_sample)
then
1153 if (
present(beta))
then
1154 alt_sys = sys_size + 1
1159 if (file_per_process)
then
1162 if (down_sample)
then
1173 file_loc = trim(case_dir) //
'/restart_data/lustre_' // trim(t_step_string)
1175 if (dir_check .neqv. .true.)
then
1180 call s_mpi_barrier()
1185 write (file_loc,
'(I0,A,i7.7,A)') t_step,
'_',
proc_rank,
'.dat'
1186 file_loc = trim(case_dir) //
'/restart_data/lustre_' // trim(t_step_string) // trim(mpiiofs) // trim(file_loc)
1187 inquire (file=trim(file_loc), exist=file_exist)
1188 if (file_exist .and.
proc_rank == 0)
then
1189 call mpi_file_delete(file_loc, mpi_info_int, ierr)
1191 call mpi_file_open(mpi_comm_self, file_loc, ior(mpi_mode_wronly, mpi_mode_create), mpi_info_int, ifile, ierr)
1193 if (down_sample)
then
1194 data_size = (m_ds + 3)*(n_ds + 3)*(p_ds + 3)
1195 m_glb_save = m_glb_ds + 1
1196 n_glb_save = n_glb_ds + 1
1197 p_glb_save = p_glb_ds + 1
1199 data_size = (m + 1)*(n + 1)*(p + 1)
1200 m_glb_save =
m_glb + 1
1201 n_glb_save =
n_glb + 1
1202 p_glb_save =
p_glb + 1
1205 m_mok = int(m_glb_save + 1, mpi_offset_kind)
1206 n_mok = int(n_glb_save + 1, mpi_offset_kind)
1207 p_mok = int(p_glb_save + 1, mpi_offset_kind)
1208 wp_mok = int(storage_size(0._stp)/8, mpi_offset_kind)
1209 mok = int(1._wp, mpi_offset_kind)
1210 str_mok = int(
name_len, mpi_offset_kind)
1211 nvars_mok = int(sys_size, mpi_offset_kind)
1213 if (bubbles_euler)
then
1215 var_mok = int(i, mpi_offset_kind)
1217 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1219 if (qbmm .and. .not. polytropic)
then
1220 do i = sys_size + 1, sys_size + 2*
nb*
nnode
1221 var_mok = int(i, mpi_offset_kind)
1223 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1227 if (down_sample)
then
1229 var_mok = int(i, mpi_offset_kind)
1231 call mpi_file_write_all(ifile,
q_cons_temp_ds(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1235 var_mok = int(i, mpi_offset_kind)
1237 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1242 call mpi_file_close(ifile, ierr)
1250 else if (
present(beta))
then
1251 call s_initialize_mpi_data(
q_cons_vf, beta=beta)
1256 write (file_loc,
'(I0,A)') t_step,
'.dat'
1257 file_loc = trim(case_dir) //
'/restart_data' // trim(mpiiofs) // trim(file_loc)
1258 inquire (file=trim(file_loc), exist=file_exist)
1259 if (file_exist .and.
proc_rank == 0)
then
1260 call mpi_file_delete(file_loc, mpi_info_int, ierr)
1262 call mpi_file_open(mpi_comm_world, file_loc, ior(mpi_mode_wronly, mpi_mode_create), mpi_info_int, ifile, ierr)
1264 data_size = (m + 1)*(n + 1)*(p + 1)
1266 m_mok = int(
m_glb + 1, mpi_offset_kind)
1267 n_mok = int(
n_glb + 1, mpi_offset_kind)
1268 p_mok = int(
p_glb + 1, mpi_offset_kind)
1269 wp_mok = int(storage_size(0._stp)/8, mpi_offset_kind)
1270 mok = int(1._wp, mpi_offset_kind)
1271 str_mok = int(
name_len, mpi_offset_kind)
1272 nvars_mok = int(alt_sys, mpi_offset_kind)
1274 if (bubbles_euler)
then
1276 var_mok = int(i, mpi_offset_kind)
1278 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
1280 call mpi_file_set_view(ifile, disp, mpi_p,
mpi_io_data%view(i),
'native', mpi_info_int, ierr)
1281 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1283 if (qbmm .and. .not. polytropic)
then
1284 do i = sys_size + 1, sys_size + 2*
nb*
nnode
1285 var_mok = int(i, mpi_offset_kind)
1287 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
1289 call mpi_file_set_view(ifile, disp, mpi_p,
mpi_io_data%view(i),
'native', mpi_info_int, ierr)
1290 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1295 var_mok = int(i, mpi_offset_kind)
1297 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
1299 call mpi_file_set_view(ifile, disp, mpi_p,
mpi_io_data%view(i),
'native', mpi_info_int, ierr)
1300 call mpi_file_write_all(ifile,
mpi_io_data%var(i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1304 if (
present(beta))
then
1305 var_mok = int(sys_size + 1, mpi_offset_kind)
1307 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
1309 call mpi_file_set_view(ifile, disp, mpi_p,
mpi_io_data%view(sys_size + 1),
'native', mpi_info_int, ierr)
1310 call mpi_file_write_all(ifile,
mpi_io_data%var(sys_size + 1)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
1313 call mpi_file_close(ifile, ierr)
1326 integer,
intent(in) :: time_step
1327 character(LEN=path_len + 2*name_len) :: file_path
1328 character(LEN=path_len + 2*name_len) :: t_step_dir
1330 write (t_step_dir,
'(A,I0,A,I0)') trim(case_dir) //
'/p_all'
1331 write (t_step_dir,
'(a,i0,a,i0)') trim(case_dir) //
'/p_all/p',
proc_rank,
'/', time_step
1332 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/ib_data.dat'
1334 open (2, file=trim(file_path), form=
'unformatted', status=
'new')
1337# 863 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1338#if defined(MFC_OpenACC)
1339# 863 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1341# 863 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1342#elif defined(MFC_OpenMP)
1343# 863 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1345# 863 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1347 write (2)
ib_markers%sf(0:m,0:n,0:p);
close (2)
1354 integer,
intent(in) :: time_step
1357 character(LEN=path_len + 2*name_len) :: file_loc
1358 integer(kind=MPI_OFFSET_kind) :: disp
1359 integer(kind=MPI_OFFSET_kind) :: m_MOK, n_MOK, p_MOK
1360 integer(kind=MPI_OFFSET_kind) :: WP_MOK, var_MOK, MOK
1361 integer :: ifile, ierr, data_size
1362 integer,
dimension(MPI_STATUS_SIZE) :: status
1365# 881 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1366#if defined(MFC_OpenACC)
1367# 881 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1369# 881 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1370#elif defined(MFC_OpenMP)
1371# 881 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1373# 881 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1376 data_size = (m + 1)*(n + 1)*(p + 1)
1377 m_mok = int(
m_glb + 1, mpi_offset_kind)
1378 n_mok = int(
n_glb + 1, mpi_offset_kind)
1379 p_mok = int(
p_glb + 1, mpi_offset_kind)
1380 wp_mok = int(storage_size(0._stp)/8, mpi_offset_kind)
1381 mok = int(1._wp, mpi_offset_kind)
1383 write (file_loc,
'(A)')
'ib.dat'
1384 file_loc = trim(case_dir) //
'/restart_data' // trim(mpiiofs) // trim(file_loc)
1385 call mpi_file_open(mpi_comm_world, file_loc, ior(mpi_mode_wronly, mpi_mode_create), mpi_info_int, ifile, ierr)
1387 var_mok = int(sys_size + 1, mpi_offset_kind)
1388 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1 + int(time_step/t_step_save))
1389 if (time_step == 0) disp = 0
1391 call mpi_file_set_view(ifile, disp, mpi_integer,
mpi_io_ib_data%view,
'native', mpi_info_int, ierr)
1392 call mpi_file_write_all(ifile,
mpi_io_ib_data%var%sf, data_size, mpi_integer, status, ierr)
1393 call mpi_file_close(ifile, ierr)
1401 integer,
intent(in) :: time_step
1404# 910 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1405#if defined(MFC_OpenACC)
1406# 910 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1408# 910 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1409#elif defined(MFC_OpenMP)
1410# 910 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1412# 910 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1415 if (parallel_io)
then
1426 integer,
intent(in) :: t_step
1429 character(LEN=path_len + 2*name_len) :: file_loc
1430 integer(kind=MPI_OFFSET_KIND) :: disp
1431 integer(kind=MPI_OFFSET_KIND) :: WP_MOK
1432 integer :: ifile, ierr
1433 integer,
dimension(MPI_STATUS_SIZE) :: status
1434 logical :: file_exist, dir_check
1435 integer :: i, ib_idx
1436 integer,
parameter :: NFIELDS_PER_IB = 20
1437 real(wp) :: ib_buf(NFIELDS_PER_IB)
1438 integer :: file_unit
1439 character(len=10) :: t_step_string
1442 integer :: ib_start, ib_end, nibs_per_rank, remainder
1444 wp_mok = int(storage_size(0._wp)/8, mpi_offset_kind)
1446 if (file_per_process)
then
1450 file_loc = trim(case_dir) //
'/restart_data/lustre_' // trim(t_step_string)
1453 call s_mpi_barrier()
1456 write (file_loc,
'(A,I0,A,i7.7,A)')
'ib_state_', t_step,
'_',
proc_rank,
'.dat'
1457 file_loc = trim(case_dir) //
'/restart_data/lustre_' // trim(t_step_string) //
'/' // trim(file_loc)
1459 inquire (file=trim(file_loc), exist=file_exist)
1460 if (file_exist)
then
1461 open (newunit=file_unit, file=trim(file_loc), form=
'unformatted', access=
'stream', status=
'replace')
1463 open (newunit=file_unit, file=trim(file_loc), form=
'unformatted', access=
'stream', status=
'new')
1470 ib_buf(2:4) = patch_ib(ib_idx)%force(1:3)
1471 ib_buf(5:7) = patch_ib(ib_idx)%torque(1:3)
1472 ib_buf(8:10) = patch_ib(ib_idx)%vel(1:3)
1473 ib_buf(11:13) = patch_ib(ib_idx)%angular_vel(1:3)
1474 ib_buf(14:16) = patch_ib(ib_idx)%angles(1:3)
1475 ib_buf(17) = patch_ib(ib_idx)%x_centroid
1476 ib_buf(18) = patch_ib(ib_idx)%y_centroid
1477 ib_buf(19) = patch_ib(ib_idx)%z_centroid
1478 ib_buf(20) = patch_ib(ib_idx)%radius
1480 write (file_unit) patch_ib(ib_idx)%gbl_patch_id
1481 write (file_unit) ib_buf
1489 call s_mpi_barrier()
1491 write (file_loc,
'(A,I0,A)')
'/restart_data/ib_state_', t_step,
'.dat'
1492 file_loc = trim(case_dir) // trim(file_loc)
1494 inquire (file=trim(file_loc), exist=file_exist)
1495 if (file_exist .and.
proc_rank == 0)
then
1496 call mpi_file_delete(file_loc, mpi_info_int, ierr)
1498 call s_mpi_barrier()
1500 call mpi_file_open(mpi_comm_world, file_loc, ior(mpi_mode_wronly, mpi_mode_create), mpi_info_int, ifile, ierr)
1505 ib_buf(2:4) = patch_ib(ib_idx)%force(1:3)
1506 ib_buf(5:7) = patch_ib(ib_idx)%torque(1:3)
1507 ib_buf(8:10) = patch_ib(ib_idx)%vel(1:3)
1508 ib_buf(11:13) = patch_ib(ib_idx)%angular_vel(1:3)
1509 ib_buf(14:16) = patch_ib(ib_idx)%angles(1:3)
1510 ib_buf(17) = patch_ib(ib_idx)%x_centroid
1511 ib_buf(18) = patch_ib(ib_idx)%y_centroid
1512 ib_buf(19) = patch_ib(ib_idx)%z_centroid
1513 ib_buf(20) = patch_ib(ib_idx)%radius
1516 disp = int(patch_ib(ib_idx)%gbl_patch_id - 1, mpi_offset_kind)*int(nfields_per_ib, mpi_offset_kind)*wp_mok
1518 call mpi_file_write_at(ifile, disp, ib_buf, nfields_per_ib, mpi_p, status, ierr)
1521 call mpi_file_close(ifile, ierr)
1530 integer,
intent(in) :: t_step
1531 character(LEN=path_len + 2*name_len) :: file_loc
1532 integer :: i, ios, file_unit
1533 integer,
parameter :: NFIELDS_PER_IB = 20
1534 real(wp) :: ib_buf(NFIELDS_PER_IB)
1538 write (file_loc,
'(A,I0,A)')
'/restart_data/ib_state_', t_step,
'.dat'
1539 file_loc = trim(case_dir) // trim(file_loc)
1541 open (newunit=file_unit, file=trim(file_loc), form=
'unformatted', access=
'stream', status=
'replace', iostat=ios)
1542 if (ios /= 0)
call s_mpi_abort(
'Cannot open IB state output file: ' // trim(file_loc))
1546 ib_buf(2:4) = patch_ib(i)%force(1:3)
1547 ib_buf(5:7) = patch_ib(i)%torque(1:3)
1548 ib_buf(8:10) = patch_ib(i)%vel(1:3)
1549 ib_buf(11:13) = patch_ib(i)%angular_vel(1:3)
1550 ib_buf(14:16) = patch_ib(i)%angles(1:3)
1551 ib_buf(17) = patch_ib(i)%x_centroid
1552 ib_buf(18) = patch_ib(i)%y_centroid
1553 ib_buf(19) = patch_ib(i)%z_centroid
1554 ib_buf(20) = patch_ib(i)%radius
1556 write (file_unit) ib_buf
1566 integer,
intent(in) :: time_step
1569# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1570#if defined(MFC_OpenACC)
1571# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1573# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1574#elif defined(MFC_OpenMP)
1575# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1577# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1580 if (parallel_io)
then
1591 integer,
intent(in) :: t_step
1592 real(wp),
dimension(num_fluids, 5),
intent(in) :: c_mass_in
1594 real(wp) :: nondim_time
1597 nondim_time = real(t_step + t_step_old, wp)*dt
1599 nondim_time = real(t_step, wp)*dt
1604 do i = 1, num_fluids
1605 write (i + 120,
'(6X,4F24.12)') nondim_time, c_mass_in(i, 1), c_mass_in(i, 2), c_mass_in(i, 5)
1607 else if (p == 0)
then
1608 do i = 1, num_fluids
1609 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)
1612 do i = 1, num_fluids
1613 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, &
1614 & 4), c_mass_in(i, 5)
1624 integer,
intent(in) :: t_step
1626 real(wp),
dimension(0:m,0:n,0:p),
intent(in) :: accel_mag
1627 real(wp),
dimension(-1:m) :: distx
1628 real(wp),
dimension(-1:n) :: disty
1629 real(wp),
dimension(-1:p) :: distz
1633 real(wp) :: lit_gamma, nbub
1635 real(wp),
dimension(num_vels) :: vel
1641 real(wp),
dimension(num_fluids) :: alpha
1646 real(wp) :: m00, m10, m01, m20, m02
1647 real(wp) :: varr, varv
1648 real(wp),
dimension(Nb) :: nr, r, nrdot, rdot
1651 real(wp) :: int_pres
1652 real(wp) :: max_pres
1653 real(wp),
dimension(2) :: re
1654 real(wp),
dimension(6) :: tau_e
1656 real(wp) :: dyn_p, t
1657 real(wp) :: damage_state
1658 integer :: i,
j,
k,
l, s, d
1659 real(wp) :: nondim_time
1662 real(wp) :: rad, thickness
1664 real(wp) :: rhoyks(1:num_species)
1668 if (time_stepper == 23)
then
1672 nondim_time = real(t_step + t_step_old, wp)*dt
1674 nondim_time = real(t_step, wp)*dt
1678 do i = 1, num_probes
1689 nr = 0._wp; r = 0._wp
1690 nrdot = 0._wp; rdot = 0._wp
1697 varr = 0._wp; varv = 0._wp
1699 do s = 1, (num_dims*(num_dims + 1))/2
1702 damage_state = 0._wp
1705 if ((probe(i)%x >=
x_cb(-1)) .and. (probe(i)%x <=
x_cb(m)))
then
1707 distx(s) =
x_cb(s) - probe(i)%x
1708 if (distx(s) < 0._wp) distx(s) = 1000._wp
1710 j = minloc(distx, 1)
1716 do d = 1, num_species
1717 rhoyks(d) =
q_cons_vf(eqn_idx%species%beg + d - 1)%sf(
j - 2,
k,
l)
1722 if (elasticity)
then
1723 call s_convert_to_mixture_variables(
q_cons_vf,
j - 2,
k,
l, rho, gamma, pi_inf, qv, re, g_local, &
1729 vel(s) =
q_cons_vf(eqn_idx%cont%end + s)%sf(
j - 2,
k,
l)/rho
1732 dyn_p = 0.5_wp*rho*dot_product(vel, vel)
1734 if (elasticity)
then
1735 if (cont_damage)
then
1736 damage_state =
q_cons_vf(eqn_idx%damage)%sf(
j - 2,
k,
l)
1737 g_local = g_local*max((1._wp - damage_state), 0._wp)
1741 & pi_inf, gamma, rho, qv, rhoyks(:), pres, t, &
1746 & dyn_p, pi_inf, gamma, rho, qv, rhoyks, pres, t)
1751 else if (elasticity)
then
1752 tau_e(1) =
q_cons_vf(eqn_idx%stress%end)%sf(
j - 2,
k,
l)/rho
1755 if (bubbles_euler)
then
1757 if (num_fluids == 3)
then
1770 nr3 = nr3 +
weight(s)*(nr(s)**3._wp)
1773 nbub = sqrt((4._wp*
pi/3._wp)*nr3/alf)
1776 print *,
'In probe, nbub: ', nbub
1790 varr = m20 - m10**2._wp
1791 varv = m02 - m01**2._wp
1794 rdot(:) = nrdot(:)/nbub
1797 ptot = pres - ptilde
1804 accel = accel_mag(
j - 2,
k,
l)
1806 else if (p == 0)
then
1808 do d = 1, num_species
1809 rhoyks(d) =
q_cons_vf(eqn_idx%species%beg + d - 1)%sf(
j - 2,
k - 2,
l)
1813 if ((probe(i)%x >=
x_cb(-1)) .and. (probe(i)%x <=
x_cb(m)))
then
1814 if ((probe(i)%y >=
y_cb(-1)) .and. (probe(i)%y <=
y_cb(n)))
then
1816 distx(s) =
x_cb(s) - probe(i)%x
1817 if (distx(s) < 0._wp) distx(s) = 1000._wp
1820 disty(s) =
y_cb(s) - probe(i)%y
1821 if (disty(s) < 0._wp) disty(s) = 1000._wp
1823 j = minloc(distx, 1)
1824 k = minloc(disty, 1)
1830 call s_convert_to_mixture_variables(
q_cons_vf,
j - 2,
k - 2,
l, rho, gamma, pi_inf, qv, re, g_local, &
1833 vel(s) =
q_cons_vf(eqn_idx%cont%end + s)%sf(
j - 2,
k - 2,
l)/rho
1836 dyn_p = 0.5_wp*rho*dot_product(vel, vel)
1838 if (elasticity)
then
1839 if (cont_damage)
then
1840 damage_state =
q_cons_vf(eqn_idx%damage)%sf(
j - 2,
k - 2,
l)
1841 g_local = g_local*max((1._wp - damage_state), 0._wp)
1845 & dyn_p, pi_inf, gamma, rho, qv, rhoyks, pres, t, &
1847 &
q_cons_vf(eqn_idx%mom%beg)%sf(
j - 2,
k - 2,
l), g_local)
1850 &
k - 2,
l), dyn_p, pi_inf, gamma, rho, qv, rhoyks, pres, t)
1855 else if (elasticity)
then
1861 if (bubbles_euler)
then
1873 nr3 = nr3 +
weight(s)*(nr(s)**3._wp)
1876 nbub = sqrt((4._wp*
pi/3._wp)*nr3/alf)
1880 rdot(:) = nrdot(:)/nbub
1884 & 0._wp, 0._wp, c, qv)
1888 if ((probe(i)%x >=
x_cb(-1)) .and. (probe(i)%x <=
x_cb(m)))
then
1889 if ((probe(i)%y >=
y_cb(-1)) .and. (probe(i)%y <=
y_cb(n)))
then
1890 if ((probe(i)%z >=
z_cb(-1)) .and. (probe(i)%z <=
z_cb(p)))
then
1892 distx(s) =
x_cb(s) - probe(i)%x
1893 if (distx(s) < 0._wp) distx(s) = 1000._wp
1896 disty(s) =
y_cb(s) - probe(i)%y
1897 if (disty(s) < 0._wp) disty(s) = 1000._wp
1900 distz(s) =
z_cb(s) - probe(i)%z
1901 if (distz(s) < 0._wp) distz(s) = 1000._wp
1903 j = minloc(distx, 1)
1904 k = minloc(disty, 1)
1905 l = minloc(distz, 1)
1912 & g_local, fluid_pp(:)%G)
1914 vel(s) =
q_cons_vf(eqn_idx%cont%end + s)%sf(
j - 2,
k - 2,
l - 2)/rho
1917 dyn_p = 0.5_wp*rho*dot_product(vel, vel)
1920 do d = 1, num_species
1921 rhoyks(d) =
q_cons_vf(eqn_idx%species%beg + d - 1)%sf(
j - 2,
k - 2,
l - 2)
1925 if (elasticity)
then
1926 if (cont_damage)
then
1927 damage_state =
q_cons_vf(eqn_idx%damage)%sf(
j - 2,
k - 2,
l - 2)
1928 g_local = g_local*max((1._wp - damage_state), 0._wp)
1932 &
k - 2,
l - 2), dyn_p, pi_inf, gamma, rho, qv, rhoyks, pres, t, &
1933 &
q_cons_vf(eqn_idx%stress%beg)%sf(
j - 2,
k - 2,
l - 2), &
1934 &
q_cons_vf(eqn_idx%mom%beg)%sf(
j - 2,
k - 2,
l - 2), g_local)
1937 &
q_cons_vf(eqn_idx%alf)%sf(
j - 2,
k - 2,
l - 2), dyn_p, pi_inf, gamma, &
1938 & rho, qv, rhoyks, pres, t)
1943 & 0._wp, 0._wp, c, qv)
1945 accel = accel_mag(
j - 2,
k - 2,
l - 2)
1951# 1439 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1953 call s_mpi_allreduce_sum(tmp, rho)
1954# 1439 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1956 call s_mpi_allreduce_sum(tmp, pres)
1957# 1439 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1959 call s_mpi_allreduce_sum(tmp, gamma)
1960# 1439 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1962 call s_mpi_allreduce_sum(tmp, pi_inf)
1963# 1439 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1965 call s_mpi_allreduce_sum(tmp, qv)
1966# 1439 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1968 call s_mpi_allreduce_sum(tmp, c)
1969# 1439 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1971 call s_mpi_allreduce_sum(tmp, accel)
1972# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1976 call s_mpi_allreduce_sum(tmp, vel(s))
1979 if (bubbles_euler)
then
1980# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1982 call s_mpi_allreduce_sum(tmp, alf)
1983# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1985 call s_mpi_allreduce_sum(tmp, alfgr)
1986# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1988 call s_mpi_allreduce_sum(tmp, nbub)
1989# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1991 call s_mpi_allreduce_sum(tmp, nr(1))
1992# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1994 call s_mpi_allreduce_sum(tmp, nrdot(1))
1995# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
1997 call s_mpi_allreduce_sum(tmp, m00)
1998# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2000 call s_mpi_allreduce_sum(tmp, r(1))
2001# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2003 call s_mpi_allreduce_sum(tmp, rdot(1))
2004# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2006 call s_mpi_allreduce_sum(tmp, ptilde)
2007# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2009 call s_mpi_allreduce_sum(tmp, ptot)
2010# 1453 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2013# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2015 call s_mpi_allreduce_sum(tmp, varr)
2016# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2018 call s_mpi_allreduce_sum(tmp, varv)
2019# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2021 call s_mpi_allreduce_sum(tmp, m10)
2022# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2024 call s_mpi_allreduce_sum(tmp, m01)
2025# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2027 call s_mpi_allreduce_sum(tmp, m20)
2028# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2030 call s_mpi_allreduce_sum(tmp, m02)
2031# 1459 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2035 if (elasticity)
then
2036 do s = 1, (num_dims*(num_dims + 1))/2
2038 call s_mpi_allreduce_sum(tmp, tau_e(s))
2042 if (cont_damage)
then
2044 call s_mpi_allreduce_sum(tmp, damage_state)
2049 if (bubbles_euler .and. (num_fluids <= 2))
then
2051 write (i + 30,
'(6x,f12.6,14f28.16)') nondim_time, rho, vel(1), pres, alf, r(1), rdot(1), nr(1), &
2052 & nrdot(1), varr, varv, m10, m01, m20, m02
2054 write (i + 30,
'(6x,f12.6,8f24.8)') nondim_time, rho, vel(1), pres, alf, r(1), rdot(1), nr(1), nrdot(1)
2057 else if (bubbles_euler .and. (num_fluids == 3))
then
2059 &
'(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)') &
2060 & nondim_time, rho, vel(1), pres, alf, alfgr, nr(1), nrdot(1), r(1), rdot(1), ptilde, ptot
2061 else if (bubbles_euler .and. num_fluids == 4)
then
2063 &
'(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)') &
2065 & 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), &
2067 &
q_cons_vf(10)%sf(
j - 2, 0, 0), nbub, r(1), rdot(1)
2069 write (i + 30,
'(6X,F12.6,F24.8,F24.8,F24.8)') nondim_time, rho, vel(1), pres
2071 else if (p == 0)
then
2072 if (bubbles_euler)
then
2073# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2074 write (i + 30,
'(6X,10F24.8)') nondim_time, rho, vel(1), vel(2), pres, alf, nr(1), nrdot(1), r(1), &
2076# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2077 else if (elasticity)
then
2078# 1506 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2079 write (i + 30,
'(6X,F12.6,F24.8,F24.8,F24.8,F24.8,' //
'F24.8,F24.8,F24.8)') nondim_time, rho, &
2080 & vel(1), vel(2), pres, tau_e(1), tau_e(2), tau_e(3)
2081# 1509 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2083 write (i + 30,
'(6X,F12.6,F24.8,F24.8,F24.8)') nondim_time, rho, vel(1), pres
2084 print *,
'time =', nondim_time,
'rho =', rho,
'pres =', pres
2087# 1515 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2089 &
'(6X,F12.6,F24.8,F24.8,F24.8,F24.8,' //
'F24.8,F24.8,F24.8,F24.8,F24.8,' //
'F24.8)') &
2090 & nondim_time, rho, vel(1), vel(2), vel(3), pres, gamma, pi_inf, qv, c, accel
2091# 1519 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2096 if (integral_wrt .and. bubbles_euler)
then
2098 do i = 1, num_integrals
2114 if ((integral(i)%xmin <=
x_cb(
j)) .and. (integral(i)%xmax >=
x_cb(
j)))
then
2118 vel(s) =
q_cons_vf(eqn_idx%cont%end + s)%sf(
j,
k,
l)/rho
2122 &
l)**2._wp)/rho)/(1._wp -
q_cons_vf(eqn_idx%alf)%sf(
j,
k,
l)) - pi_inf - qv)/gamma
2123 int_pres = int_pres + (pres - 1._wp)**2._wp
2126 int_pres = sqrt(int_pres/(1._wp*npts))
2130 call s_mpi_allreduce_sum(tmp, int_pres)
2134 if (bubbles_euler .and. (num_fluids <= 2))
then
2135 write (i + 70,
'(6x,f12.6,f24.8)') nondim_time, int_pres
2139 else if (p == 0)
then
2140 if (num_integrals /= 3)
then
2141 call s_mpi_abort(
'Incorrect number of integrals')
2144 rad = integral(1)%xmax
2145 thickness = integral(1)%xmin
2147 do i = 1, num_integrals
2157 if (sqrt(
x_cb(
j)**2._wp +
y_cb(
k)**2._wp) < (rad - 0.5_wp*thickness)) trigger = .true.
2158 else if (i == 2)
then
2160 if (sqrt(
x_cb(
j)**2._wp +
y_cb(
k)**2._wp) > (rad - 0.5_wp*thickness) .and. sqrt(
x_cb(
j)**2._wp &
2161 & +
y_cb(
k)**2._wp) < (rad + 0.5_wp*thickness)) trigger = .true.
2162 else if (i == 3)
then
2164 if (sqrt(
x_cb(
j)**2._wp +
y_cb(
k)**2._wp) > (rad + 0.5_wp*thickness)) trigger = .true.
2181 vel(s) =
q_cons_vf(eqn_idx%cont%end + s)%sf(
j,
k,
l)/rho
2185 &
l)**2._wp)/rho)/(1._wp -
q_cons_vf(eqn_idx%alf)%sf(
j,
k,
l)) - pi_inf - qv)/gamma
2186 int_pres = int_pres + abs(pres - 1._wp)
2187 max_pres = max(max_pres, abs(pres - 1._wp))
2193 int_pres = int_pres/(1._wp*npts)
2200 call s_mpi_allreduce_sum(tmp, int_pres)
2203 call s_mpi_allreduce_max(tmp, max_pres)
2207 if (bubbles_euler .and. (num_fluids <= 2))
then
2208 write (i + 70,
'(6x,f12.6,f24.8,f24.8)') nondim_time, int_pres, max_pres
2220 real(wp) :: run_time
2222 write (3,
'(A)')
' '
2225 write (3,
'(A,F9.6)')
'ICFL Max: ',
icfl_max
2226 if (viscous)
write (3,
'(A,F9.6)')
'VCFL Max: ',
vcfl_max
2227 if (viscous)
write (3,
'(A,F10.6)')
'Rc Min: ',
rc_min
2229 call cpu_time(run_time)
2232 write (3,
'(A,I0,A)')
'Run-time: ', int(anint(run_time)),
's'
2233 write (3,
'(A)')
' '
2243 do i = 1, num_fluids
2254 do i = 1, num_probes
2263 integer :: i, m_ds, n_ds, p_ds
2265 if (run_time_info)
then
2267# 1693 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2269# 1693 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2270 use iso_fortran_env,
only: output_unit
2271# 1693 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2273# 1693 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2274 print *,
'm_data_output.fpp:1693: ',
'@:ALLOCATE(icfl_sf(0:m, 0:n, 0:p))'
2275# 1693 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2277# 1693 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2278 call flush (output_unit)
2279# 1693 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2281# 1693 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2283# 1693 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2284 allocate (
icfl_sf(0:m, 0:n, 0:p))
2285# 1693 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2287# 1693 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2289# 1693 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2290#if defined(MFC_OpenACC)
2291# 1693 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2293# 1693 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2294#elif defined(MFC_OpenMP)
2295# 1693 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2297# 1693 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2303# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2305# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2306 use iso_fortran_env,
only: output_unit
2307# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2309# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2310 print *,
'm_data_output.fpp:1697: ',
'@:ALLOCATE(vcfl_sf(0:m, 0:n, 0:p))'
2311# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2313# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2314 call flush (output_unit)
2315# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2317# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2319# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2320 allocate (
vcfl_sf(0:m, 0:n, 0:p))
2321# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2323# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2325# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2326#if defined(MFC_OpenACC)
2327# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2329# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2330#elif defined(MFC_OpenMP)
2331# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2333# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2336# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2338# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2339 use iso_fortran_env,
only: output_unit
2340# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2342# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2343 print *,
'm_data_output.fpp:1698: ',
'@:ALLOCATE(Rc_sf (0:m, 0:n, 0:p))'
2344# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2346# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2347 call flush (output_unit)
2348# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2350# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2352# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2353 allocate (
rc_sf(0:m, 0:n, 0:p))
2354# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2356# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2358# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2359#if defined(MFC_OpenACC)
2360# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2362# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2363#elif defined(MFC_OpenMP)
2364# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2366# 1698 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2376# 1706 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2378# 1706 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2379 use iso_fortran_env,
only: output_unit
2380# 1706 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2382# 1706 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2383 print *,
'm_data_output.fpp:1706: ',
'@:ALLOCATE(c_mass(num_fluids,5))'
2384# 1706 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2386# 1706 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2387 call flush (output_unit)
2388# 1706 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2390# 1706 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2392# 1706 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2393 allocate (
c_mass(num_fluids,5))
2394# 1706 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2396# 1706 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2398# 1706 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2399#if defined(MFC_OpenACC)
2400# 1706 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2402# 1706 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2403#elif defined(MFC_OpenMP)
2404# 1706 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2406# 1706 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2410 if (down_sample)
then
2411 m_ds = int((m + 1)/3) - 1
2412 n_ds = int((n + 1)/3) - 1
2413 p_ds = int((p + 1)/3) - 1
2417 allocate (
q_cons_temp_ds(i)%sf(-1:m_ds + 1,-1:n_ds + 1,-1:p_ds + 1))
2430# 1728 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2432# 1728 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2433 use iso_fortran_env,
only: output_unit
2434# 1728 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2436# 1728 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2437 print *,
'm_data_output.fpp:1728: ',
'@:DEALLOCATE(c_mass)'
2438# 1728 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2440# 1728 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2441 call flush (output_unit)
2442# 1728 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2444# 1728 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2446# 1728 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2448# 1728 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2449#if defined(MFC_OpenACC)
2450# 1728 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2452# 1728 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2453#elif defined(MFC_OpenMP)
2454# 1728 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2456# 1728 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2458# 1728 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2462 if (run_time_info)
then
2464# 1732 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2466# 1732 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2467 use iso_fortran_env,
only: output_unit
2468# 1732 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2470# 1732 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2471 print *,
'm_data_output.fpp:1732: ',
'@:DEALLOCATE(icfl_sf)'
2472# 1732 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2474# 1732 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2475 call flush (output_unit)
2476# 1732 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2478# 1732 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2480# 1732 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2482# 1732 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2483#if defined(MFC_OpenACC)
2484# 1732 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2486# 1732 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2487#elif defined(MFC_OpenMP)
2488# 1732 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2490# 1732 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2492# 1732 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2496# 1734 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2498# 1734 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2499 use iso_fortran_env,
only: output_unit
2500# 1734 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2502# 1734 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2503 print *,
'm_data_output.fpp:1734: ',
'@:DEALLOCATE(vcfl_sf, Rc_sf)'
2504# 1734 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2506# 1734 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2507 call flush (output_unit)
2508# 1734 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2510# 1734 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2512# 1734 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2514# 1734 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2515#if defined(MFC_OpenACC)
2516# 1734 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2518# 1734 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2519#elif defined(MFC_OpenMP)
2520# 1734 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2522# 1734 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2524# 1734 "/home/runner/work/MFC/MFC/src/simulation/m_data_output.fpp"
2529 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)
Inquires on the existence of a directory.
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_4eq
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.
real(wp), dimension(:,:,:), allocatable vcfl_sf
VCFL stability criterion.
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.
real(wp) rc_min_glb
Rc stability extrema on local and global grids.
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,...
real(wp) vcfl_max_glb
VCFL stability extrema on local and global grids.
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.
real(wp), dimension(:,:,:), allocatable rc_sf
Rc stability criterion.
impure subroutine, public s_close_probe_files
Closes probe files.
impure subroutine, public s_close_com_files()
Closes communication files.
real(wp) icfl_max_glb
ICFL stability extrema on local and global grids.
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.
real(wp), dimension(:,:,:), allocatable icfl_sf
ICFL stability criterion.
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.
Rank-staggered file access delays to prevent I/O contention on parallel file systems.
impure subroutine, public delayfileaccess(processrank)
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
type(pres_field), dimension(:), allocatable mv_ts
real(wp), dimension(:), allocatable qvs
real(wp), dimension(:), allocatable pi_infs
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 gammas
real(wp), dimension(:), allocatable gs_min
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_sf, vcfl_sf, rc_sf)
Computes stability criterion for a specified dt.
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
subroutine 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_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_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).