18 use discretelement
, only: discrete_element
41 LOGICAL,
INTENT(IN) :: EXIT_SIGNAL
43 LOGICAL,
INTENT(IN) :: FINISHED
50 LOGICAL :: bWRITE_NETCDF_FILES
54 CHARACTER(LEN=35) :: EXT_END
56 DOUBLE PRECISION :: WALL_START
61 ext_end =
'123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' 69 IF(
time+0.1d0*
dt>=res_backup_time)
THEN 70 res_backup_time =
next_time(res_backup_dt)
81 IF(discrete_element)
THEN 95 bwrite_netcdf_files = .false.
104 disk_tot = disk_tot + disk(lc)
107 bwrite_netcdf_files = .true.
137 DO lc = 1, dimension_vtk
161 DOUBLE PRECISION,
INTENT(IN) :: lTIME
175 DOUBLE PRECISION FUNCTION next_time(lWRITE_DT)
177 DOUBLE PRECISION,
INTENT(IN) :: lWRITE_DT
197 CHARACTER(len=*),
INTENT(IN) :: MSG
198 CHARACTER(len=*),
INTENT(IN),
OPTIONAL :: EXT
207 IF(scr_log)
WRITE(*, 1000, advance=
'NO')
time 211 1000
FORMAT(
' ',/
' t=',f12.6,
' Wrote')
213 IF(.NOT.
present(ext))
THEN 214 IF(dmp_log)
WRITE(
unit_log, 1100, advance=
'NO') msg
215 IF(scr_log)
WRITE(*, 1100, advance=
'NO') msg
218 IF(dmp_log)
WRITE(
unit_log, 1110, advance=
'NO') msg, ext
219 IF(scr_log)
WRITE(*, 1110, advance=
'NO') msg, ext
221 IF(dmp_log)
WRITE(
unit_log, 1120, advance=
'NO') ext
222 IF(scr_log)
WRITE(*, 1120, advance=
'NO') ext
227 1110
FORMAT(1x,a,1x,a)
246 IF(dmp_log)
WRITE(
unit_log,1000, advance=
'NO')
247 IF(scr_log)
WRITE(*,1000, advance=
'NO')
260 use discretelement
, only: discrete_element, des_continuum_coupled
261 use discretelement
, only: dtsolid
273 DOUBLE PRECISION :: WALL_ELAP, WALL_LEFT, WALL_NOW
274 CHARACTER(LEN=9) :: CHAR_ELAP, CHAR_LEFT
275 CHARACTER(LEN=4) :: UNIT_ELAP, UNIT_LEFT
282 IF(.NOT.hdr_msg)
THEN 284 IF(scr_log)
WRITE(*,1000)
287 1000
FORMAT(
' ',/
' ')
292 IF(discrete_element .AND. .NOT.des_continuum_coupled)
THEN 293 tnits = ceiling(
real((tstop-
time)/dtsolid))
295 CALL flush_err_msg(header=.false., footer=.false., log=.false.)
297 1100
FORMAT(/
'Time: ',g12.5,3x,
'DT: ',g12.5,3x,
'Remaining DEM NITs: ',a)
301 wall_elap = wall_now - wall_start
302 CALL get_tunit(wall_elap, unit_elap)
303 char_elap=
'';
WRITE(char_elap,
"(F9.2)") wall_elap
304 char_elap = trim(adjustl(char_elap))
306 wall_left = (wall_now-wall_start)*(tstop-
time)/ &
307 max(
time-time_start,1.0d-6)
308 CALL get_tunit(wall_left, unit_left)
311 char_left=
'';
WRITE(char_left,
"(F9.2)") wall_left
312 char_left = trim(adjustl(char_left))
320 'Elapsed:', trim(char_elap), trim(unit_elap), &
321 'Est. Remaining:',trim(char_left), trim(unit_left)
325 2000
FORMAT(
'Wall Time - ',2(a,1x,a,a,4x))
375 DOUBLE PRECISION :: DISK_ONE
381 out_time = merge(
time, undefined, out_dt /= undefined)
390 disk(1) = 1.0*disk_one
391 disk(2) = 2.0*disk_one
392 disk(3) = 3.0*disk_one
393 disk(4) = 3.0*disk_one*
mmax 394 disk(5) = 1.0*disk_one*
mmax 395 disk(6) = 1.0*disk_one*(
mmax+1)
396 disk(7) = 1.0*disk_one*(sum(
nmax(0:
mmax)))
397 disk(8) = 1.0*disk_one*
mmax 399 disk(10) =
nrr*disk_one
400 disk(11) = merge(2.0*disk_one, zero, k_epsilon)
404 IF (run_type ==
'NEW')
THEN 406 spx_time(:n_spx) =
time 409 res_time = res_dt * &
410 (int((
time + 0.1d0*
dt)/res_dt) + 1)
411 spx_time(:n_spx) = spx_dt(:n_spx) * &
412 (int((
time + 0.1d0*
dt)/spx_dt(:n_spx)) + 1)
417 res_backup_time = undefined
418 IF(res_backup_dt /= undefined) res_backup_time = &
419 res_backup_dt * (int((
time+0.1d0*
dt)/res_backup_dt)+1)
423 usr_time(lc) = undefined
424 IF (usr_dt(lc) /= undefined)
THEN 425 IF (run_type ==
'NEW')
THEN 428 usr_time(lc) = usr_dt(lc) * &
429 (int((
time+0.1d0*
dt)/usr_dt(lc))+1)
437 DO lc = 1, dimension_vtk
438 vtk_time(lc) = undefined
439 IF (vtk_dt(lc) /= undefined)
THEN 440 IF (run_type ==
'NEW'.OR.run_type==
'RESTART_2')
THEN 443 vtk_time(lc) = vtk_dt(lc) * &
444 (int((
time + 0.1d0*
dt)/vtk_dt(lc))+1)
468 use discretelement
, only: discrete_element
473 CHARACTER(len=256) :: FNAME0, FNAME1
486 IF(discrete_element)
THEN 498 IF(discrete_element)
THEN 516 CHARACTER(LEN=*),
INTENT(IN) :: pFN0, pFN1, ACT
517 CHARACTER(len=1024) :: CMD
520 INQUIRE(file=trim(pfn0),exist=exists)
522 cmd=
'';
WRITE(cmd,1000)trim(act), trim(pfn0),trim(pfn1)
523 CALL system(trim(cmd))
526 1000
FORMAT(a,1x,a,1x,a)
535 SUBROUTINE set_fname(pFNAME, pEXT, pINDX)
541 CHARACTER(LEN=*),
INTENT(OUT) :: pFNAME
542 CHARACTER(LEN=*),
INTENT(IN) :: pEXT
543 INTEGER,
INTENT(IN),
OPTIONAL :: pINDX
547 IF(.NOT.
PRESENT(pindx))
THEN 548 WRITE(pfname,1000) trim(
run_name),pext
551 WRITE(pfname,1001) trim(
run_name), pext, pindx
553 WRITE(pfname,1002) trim(
run_name), pext, pindx
555 WRITE(pfname,1003) trim(
run_name), pext, pindx
557 WRITE(pfname,1004) trim(
run_name), pext, pindx
559 WRITE(pfname,1005) trim(
run_name), pext, pindx
561 WRITE(pfname,1006) trim(
run_name), pext, pindx
566 1001
FORMAT(
'BACKUP_RES/',2a,i1.1)
567 1002
FORMAT(
'BACKUP_RES/',2a,i2.2)
568 1003
FORMAT(
'BACKUP_RES/',2a,i3.3)
569 1004
FORMAT(
'BACKUP_RES/',2a,i4.4)
570 1005
FORMAT(
'BACKUP_RES/',2a,i5.5)
571 1006
FORMAT(
'BACKUP_RES/',2a,i6.6)
double precision out_time
subroutine init_output_vars
subroutine output_manager(EXIT_SIGNAL, FINISHED)
subroutine flush_notify_user
subroutine write_spx1(L, unit_add)
logical function check_time(lTIME)
subroutine write_vtp_file(LCV, MODE)
double precision function wall_time()
subroutine shift_res(pFN0, pFN1, ACT)
subroutine set_fname(pFNAME, pEXT, pINDX)
character(len=60) run_name
subroutine write_netcdf(L, unit_add, the_time)
double precision wall_start
double precision, parameter undefined
double precision, dimension(n_spx) spx_dt
integer, parameter dimension_usr
double precision function next_time(lWRITE_DT)
double precision res_time
double precision res_backup_time
double precision, parameter onemeg
double precision, dimension(dimension_vtk) vtk_dt
subroutine create_dir(PDIR)
subroutine notify_user(MSG, EXT)
subroutine write_vtu_file(LCV, MODE)
character(len=16) run_type
double precision, dimension(n_spx) disk
subroutine write_res0_des
integer, parameter unit_log
double precision, dimension(dimension_usr) usr_dt
integer, dimension(0:dim_m) nmax
double precision, dimension(dimension_usr) usr_time
double precision, dimension(dimension_vtk) vtk_time
integer, parameter undefined_i
character(len=line_length), dimension(line_count) err_msg
double precision res_backup_dt
subroutine qmomk_write_restart
integer, parameter dimension_vtk
double precision, dimension(n_spx) spx_time
double precision time_start
double precision disk_tot
subroutine get_tunit(TLEFT, TUNIT)
double precision, parameter zero
subroutine flush_err_msg(DEBUG, HEADER, FOOTER, ABORT, LOG, CALL_TREE)