Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 3 additions & 7 deletions Source/dump.f90
Original file line number Diff line number Diff line change
Expand Up @@ -3634,16 +3634,14 @@ SUBROUTINE DUMP_RESTART(T,DT,NM)
ENDDO

WRITE(LU_CORE(NM)) N_BOUNDARY_COORD_DIM,N_BOUNDARY_ONE_D_DIM,N_BOUNDARY_PROP1_DIM,N_BOUNDARY_PROP2_DIM,N_BOUNDARY_RADIA_DIM
WRITE(LU_CORE(NM)) NEXT_AVAILABLE_BOUNDARY_COORD_SLOT,NEXT_AVAILABLE_BOUNDARY_ONE_D_SLOT,&
NEXT_AVAILABLE_BOUNDARY_PROP1_SLOT,NEXT_AVAILABLE_BOUNDARY_PROP2_SLOT,NEXT_AVAILABLE_BOUNDARY_RADIA_SLOT

WRITE(LU_CORE(NM)) N_WALL_CELLS,N_WALL_CELLS_DIM
OS => WALL_STORAGE
DO IW=1,N_WALL_CELLS
WC => WALL(IW)
RC=0 ; IC=0 ; LC=0
CALL PACK_WALL(NM,OS,WC,WC%SURF_INDEX,RC,IC,LC,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.,CHECK_BOUNDS=.FALSE.)
WRITE(LU_CORE(NM)) WC%SURF_INDEX
WRITE(LU_CORE(NM)) WC%SURF_INDEX,WC%TD_INDEX
WRITE(LU_CORE(NM)) OS%REALS,OS%INTEGERS,OS%LOGICALS
ENDDO

Expand Down Expand Up @@ -3831,8 +3829,6 @@ SUBROUTINE READ_RESTART(T,DT,NM)
ENDDO

READ(LU_RESTART(NM)) N_BOUNDARY_COORD_DIM,N_BOUNDARY_ONE_D_DIM,N_BOUNDARY_PROP1_DIM,N_BOUNDARY_PROP2_DIM,N_BOUNDARY_RADIA_DIM
READ(LU_RESTART(NM)) NEXT_AVAILABLE_BOUNDARY_COORD_SLOT,NEXT_AVAILABLE_BOUNDARY_ONE_D_SLOT,&
NEXT_AVAILABLE_BOUNDARY_PROP1_SLOT,NEXT_AVAILABLE_BOUNDARY_PROP2_SLOT,NEXT_AVAILABLE_BOUNDARY_RADIA_SLOT

IF (ALLOCATED(MESHES(NM)%BOUNDARY_COORD_OCCUPANCY)) DEALLOCATE(MESHES(NM)%BOUNDARY_COORD_OCCUPANCY)
IF (ALLOCATED(MESHES(NM)%BOUNDARY_ONE_D_OCCUPANCY)) DEALLOCATE(MESHES(NM)%BOUNDARY_ONE_D_OCCUPANCY)
Expand Down Expand Up @@ -3865,11 +3861,11 @@ SUBROUTINE READ_RESTART(T,DT,NM)
IF (ALLOCATED(MESHES(NM)%WALL)) DEALLOCATE(MESHES(NM)%WALL) ; ALLOCATE(MESHES(NM)%WALL(0:N_WALL_CELLS_DIM))
OS => WALL_STORAGE
DO IW=1,N_WALL_CELLS
READ(LU_RESTART(NM)) SURF_INDEX
WC => MESHES(NM)%WALL(IW)
READ(LU_RESTART(NM)) SURF_INDEX,WC%TD_INDEX
READ(LU_RESTART(NM)) OS%REALS,OS%INTEGERS,OS%LOGICALS
RC=0 ; IC=0 ; LC=0
CALL ALLOCATE_STORAGE(NM,SURF_INDEX=SURF_INDEX,WALL_INDEX=IW)
WC => MESHES(NM)%WALL(IW)
CALL PACK_WALL(NM,OS,WC,SURF_INDEX,RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.,CHECK_BOUNDS=.TRUE.)
ENDDO

Expand Down
26 changes: 20 additions & 6 deletions Source/main.f90
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ PROGRAM FDS

! Miscellaneous declarations

LOGICAL :: EX=.FALSE.,DIAGNOSTICS,CTRL_STOP_STATUS,CHECK_FREEZE_VELOCITY=.TRUE.,EXTERNAL_FAIL
LOGICAL :: EX=.FALSE.,DIAGNOSTICS,CTRL_STOP_STATUS,CHECK_FREEZE_VELOCITY=.TRUE.,EXTERNAL_FAIL,FIRST_RESTART_TIME_STEP
INTEGER :: LO10,NM,IZERO,ANG_INC_COUNTER
REAL(EB) :: T,DT,TNOW
REAL :: CPUTIME
Expand Down Expand Up @@ -553,18 +553,28 @@ PROGRAM FDS

INITIALIZATION_PHASE = .FALSE.

! If the simulation is restarted, there are some tasks to do during the first time step of the restarted simulation

IF (RESTART) THEN
FIRST_RESTART_TIME_STEP = .TRUE.
ELSE
FIRST_RESTART_TIME_STEP = .FALSE.
ENDIF

! Special feature allowing the user to delay the gas phase CFD simulation until a specified UNFREEZE_TIME

IF (UNFREEZE_TIME > 0._EB) THEN
FREEZE_VELOCITY=.TRUE.
SOLID_PHASE_ONLY=.TRUE.
LOCK_TIME_STEP=.TRUE.
ENDIF

IF (MY_RANK==0 .AND. VERBOSE) CALL VERBOSE_PRINTOUT('Starting the time-stepping')

!***********************************************************************************************************************************
! MAIN TIMESTEPPING LOOP
!***********************************************************************************************************************************

IF (MY_RANK==0 .AND. VERBOSE) CALL VERBOSE_PRINTOUT('Starting the time-stepping')

MAIN_LOOP: DO

ICYC = ICYC + 1 ! Time step iterations
Expand All @@ -591,11 +601,13 @@ PROGRAM FDS

IF ((T+DT+DT_END_FILL)>T_END) DT = MAX(T_END-T+TWENTY_EPSILON_EB,DT_END_MINIMUM)

! Determine when to dump out diagnostics to the .out file
! Determine if diagnostics should be dumped to the .out file at the end of this time step

LO10 = INT(LOG10(REAL(MAX(1,ABS(ICYC)),EB)))
IF (MOD(ICYC,10**LO10)==0 .OR. MOD(ICYC,DIAGNOSTICS_INTERVAL)==0 .OR. (T+DT)>=T_END) DIAGNOSTICS = .TRUE.

! Determine if a delayed gas phase simulation should be started

IF ((UNFREEZE_TIME > 0._EB).AND.(T>UNFREEZE_TIME)) THEN
FREEZE_VELOCITY=.FALSE.
SOLID_PHASE_ONLY=.FALSE.
Expand Down Expand Up @@ -1038,6 +1050,8 @@ PROGRAM FDS

IF (T>=T_END .AND. ICYC>0) EXIT MAIN_LOOP

FIRST_RESTART_TIME_STEP = .FALSE.

ENDDO MAIN_LOOP

!***********************************************************************************************************************************
Expand Down Expand Up @@ -3598,7 +3612,7 @@ SUBROUTINE MESH_EXCHANGE(CODE)
IW = OS%ITEM_INDEX(I)
WC => MESHES(NOM)%WALL(IW)
CALL PACK_WALL(NOM,OS,WC,OS%SURF_INDEX(I),RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.,&
CHECK_BOUNDS=INITIALIZATION_PHASE)
CHECK_BOUNDS=(INITIALIZATION_PHASE.OR.FIRST_RESTART_TIME_STEP))
ENDDO
ENDIF RECEIVE_BACK_WALL

Expand All @@ -3609,7 +3623,7 @@ SUBROUTINE MESH_EXCHANGE(CODE)
IW = OS%ITEM_INDEX(I)
TW => MESHES(NOM)%THIN_WALL(IW)
CALL PACK_THIN_WALL(NOM,OS,TW,OS%SURF_INDEX(I),RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.,&
CHECK_BOUNDS=INITIALIZATION_PHASE)
CHECK_BOUNDS=(INITIALIZATION_PHASE.OR.FIRST_RESTART_TIME_STEP))
ENDDO
ENDIF RECEIVE_BACK_THIN_WALL

Expand Down
Loading