12.1.18. Batch Queue¶
MFiX can be used on systems where code execution is controlled through a batch
queue submission system instead of interactive or background job type methods as
shown in the previous section. Usually, the user specifies the wall clock time
duration of the job, and the batch queuing system prioritizes incoming jobs based on
their resource allocation requests. In order for MFiX to avoid abrupt and
abnormal termination at the end of the batch job session, several keywords need
to be entered in mfix.dat. Controlled and clean termination in environments with
batch queue is important as the system may terminate the batch job while MFiX is
writing out *.SP
files, which may corrupt the files or cause loss of data.
For this purpose, MFiX checks whether the user-specified termination criteria is
reached at the beginning of each time step. However, to avoid performance
bottlenecks on small systems where the user is running jobs without a
batch queue, this feature is disabled by default. In order to enable this
feature the following block of keywords need to be entered into mfix.dat
.
CHK_BATCHQ_END = .TRUE. ! Enable the controlled termination feature
BATCH_WALLCLOCK = 3600.0 ! Specify the total wall clock duration
! of your job in seconds
TERM_BUFFER = 300.0 ! Specify a buffer time to start
! clean termination of MFiX
Setting CHK_BATCH_END = .TRUE.
in mfix.dat
will enable the checking of
the termination criteria at the beginning of each time step. In the above
example, the user has set the total wall clock time for the duration of the
batch session to 1 hour (this is specified in seconds in mfix.dat) and a buffer
of 300 seconds has been set so that MFiX has sufficient time to terminate
cleanly by writing out all *.SP
and *.RES
files before the batch session
terminates. The duration of the buffer is critical for simulations with large
files. MFiX will check if elapsed time >= (BATCH_WALLCLOCK - TERM_BUFFER)
to
start clean termination.
Another way to gracefully terminate MFiX as soon as possible is to create an
empty file named MFIX.STOP (filename all uppercase) in the working directory
where MFiX runs. At the beginning of each time step if the MFIX.STOP file is
detected, then MFiX will terminate gracefully by saving *.RES
files.
CHK_BATCHQ_END flag must be set to .TRUE. in order to activate this feature.
The following terminal command can be used to gracefully terminate MFiX:
$ touch MFIX.STOP
Remember to delete the file once MFiX terminates, otherwise the next time MFiX is run
in the same directory it will terminate immediately.
$ rm -f ./MFIX.STOP
12.1.18.1. CHK_BATCHQ_END¶
Data Type: LOGICAL
Enables controlled termination feature when running under batch queue system to force MFiX to cleanly terminate before the end of wall clock allocated in the batch session.
12.1.18.2. BATCH_WALLCLOCK¶
Data Type: DOUBLE PRECISION
Total wall-clock duration of the job, in seconds.
12.1.18.3. TERM_BUFFER¶
Data Type: DOUBLE PRECISION
Buffer time specified to allow MFiX to write out the files and cleanly terminate before queue wall clock time limit is reached such that (BATCH_WALLCLOCK-TERM_BUFFER) is less than then batch queue wall clock time limit, in seconds.