diff --git a/Manuals/FDS_User_Guide/FDS_User_Guide.tex b/Manuals/FDS_User_Guide/FDS_User_Guide.tex index c339092031e..23fd1108729 100644 --- a/Manuals/FDS_User_Guide/FDS_User_Guide.tex +++ b/Manuals/FDS_User_Guide/FDS_User_Guide.tex @@ -9266,11 +9266,18 @@ \subsection*{Reading the Fields} \end{lstlisting} and FDS will read, for example, \ct{CHID_uvw_t1_m1.csv} through \ct{CHID_uvw_t1_m16.csv} in the order of the \ct{MESH} lines (note that a \ct{MULT} line for the meshes may also be used). -\section{Unfreezing the Initial Flow Field} +\subsection{Unfreezing the Initial Flow Field} \label{info:FREZ} -It may be useful to allow the solid phase to respond to an established flow field at the start of a simulation. This could be accomplished with the normal restart functionality; however, this limits the number of changes that can be made to the model before a restart is made. The \ct{UNFREEZE_TIME} parameter on the \ct{MISC} line can be used for this purpose. When set, the initial flow field is frozen with the options \ct{FREEZE_VELOCITY} and \ct{SOLID_PHASE_ONLY} set until the simulation time exceeds \ct{UNFREEZE_TIME}. - +It may be useful to allow the solid phase to respond to an established flow field at the start of a simulation. This could be accomplished with the normal restart functionality; however, this limits the number of changes that can be made to the model before a restart is made. The \ct{UNFREEZE_TIME} parameter on the \ct{MISC} line can be used for this purpose. When set, the initial flow field is frozen with the options \ct{FREEZE_VELOCITY}, \ct{SOLID_PHASE_ONLY}, and \ct{LOCK_TIME_STEP} set until the simulation time exceeds \ct{UNFREEZE_TIME}. It may also be useful to set the initial time step \ct{DT} to a larger value. It may be necessary to set \ct{LIMITING_DT_RATIO} to a lower value than the default if the fixed \ct{DT} while the flow field is frozen is much larger than that calculated by the stability conditions. An example configuration with a frozen flow field is shown below. +\begin{lstlisting} +&TIME DT=1.0, T_END=120.0, LIMITING_DT_RATIO=1e-6 / +&MISC UNFREEZE_TIME=90, / +&CSVF UVWFILE ='CHID_uvw_t1_m1.csv', + TMPFILE ='CHID_tmp_t1_m1.csv', + SPECFILE='CHID_spec_t1_m1.csv' / +\end{lstlisting} +The example will read in an initial flow field using the \ct{CSVF} files, then allow the solids to heat for 90 seconds at a time step of 1 seconds (90 time steps total). The flow field will then be unfrozen for the remaining 30 seconds of simulation time. \section{Gravity} \label{info:GVEC} diff --git a/Source/main.f90 b/Source/main.f90 index 87756c86b4a..368846399bf 100644 --- a/Source/main.f90 +++ b/Source/main.f90 @@ -544,6 +544,7 @@ PROGRAM FDS 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') @@ -586,6 +587,16 @@ PROGRAM FDS IF ((UNFREEZE_TIME > 0._EB).AND.(T>UNFREEZE_TIME)) THEN FREEZE_VELOCITY=.FALSE. SOLID_PHASE_ONLY=.FALSE. + LOCK_TIME_STEP=.FALSE. + + UNFREEZE_DT_LOOP: DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX + CALL CHECK_STABILITY(DT,DT_NEW,T,NM) + ENDDO UNFREEZE_DT_LOOP + IF (N_MPI_PROCESSES>1) THEN + CALL MPI_ALLGATHERV(MPI_IN_PLACE,0,MPI_DATATYPE_NULL,DT_NEW(1:NMESHES),& + COUNTS,DISPLS,MPI_DOUBLE_PRECISION,MPI_COMM_WORLD,IERR) + ENDIF + DT = MINVAL(DT_NEW) ENDIF !================================================================================================================================ diff --git a/Source/velo.f90 b/Source/velo.f90 index 5d647552beb..cdb053e0dd0 100644 --- a/Source/velo.f90 +++ b/Source/velo.f90 @@ -12,7 +12,8 @@ MODULE VELO PRIVATE PUBLIC VELOCITY_PREDICTOR,VELOCITY_CORRECTOR,NO_FLUX,BAROCLINIC_CORRECTION,MATCH_VELOCITY,MATCH_VELOCITY_FLUX,& - VELOCITY_BC,COMPUTE_VISCOSITY,VISCOSITY_BC,VELOCITY_FLUX,VELOCITY_FLUX_CYLINDRICAL + VELOCITY_BC,COMPUTE_VISCOSITY,VISCOSITY_BC,VELOCITY_FLUX,VELOCITY_FLUX_CYLINDRICAL,& + CHECK_STABILITY CONTAINS