Load the abortCriteria from a given configuration.
The abort_critera are defined in a table as follows:
abort_criteria = {stop_file='', steady_state=false}
stop_file indicates, which file should be checked for to stop the execution. A typical setting would for example be stop_file = 'stop'. If the string is empty, no checks are performed. The default is an empty string. Empty stop files will be deleted after they are encountered. Non-empty ones are kept.
steady_state indicates if the simulation should stop when a steady_state solution is found. Default ist false.
If steady_state is True then load convergence table for condition to check for steady state
Solvers may pass an additional solverAborts for specific abort parameters to be filled from the abort_criteria table.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_abortCriteria_type), | intent(out) | :: | me |
Abort criteria to load from the Lua table. |
||
type(flu_State) | :: | conf |
Handle for the Lua script. |
|||
integer, | intent(in), | optional | :: | parent |
Parent table to read from. |
|
character(len=*), | intent(in), | optional | :: | key |
Name of the time control table. Default: 'time_control' |
|
class(tem_solverAborts_type), | intent(inout), | optional | :: | solverAborts |
Solver specific abort criteria to load. |
subroutine tem_abortCriteria_load(me, conf, parent, key, solverAborts)
! -------------------------------------------------------------------- !
!> Abort criteria to load from the Lua table.
type(tem_abortCriteria_type), intent(out) :: me
!> Handle for the Lua script.
type(flu_state) :: conf
!> Parent table to read from.
integer, intent(in), optional :: parent
!> Name of the time control table. Default: 'time_control'
character(len=*), intent(in), optional :: key
!> Solver specific abort criteria to load.
class(tem_solverAborts_type), intent(inout), optional :: solverAborts
! -------------------------------------------------------------------- !
character(len=labelLen) :: loc_key
integer :: thandle
integer :: iErr
! -------------------------------------------------------------------- !
loc_key = 'abort_criteria'
if (present(key)) loc_key = key
call aot_table_open( L = conf, &
& parent = parent, &
& thandle = thandle, &
& key = loc_key )
if (thandle /= 0) then
call aot_get_val( L = conf, &
& thandle = thandle, &
& val = me%stop_file, &
& key = 'stop_file', &
& default = '', &
& ErrCode = iErr )
call aot_get_val( L = conf, &
& thandle = thandle, &
& val = me%steady_state, &
& key = 'steady_state', &
& default = .false., &
& ErrCode = iErr )
if (me%steady_state) then
call tem_convergence_load( me = me%convergence, &
& conf = conf, &
& parent = thandle, &
& steady_state = me%steady_state )
end if
if (present(solverAborts)) then
call solverAborts%load( conf = conf, &
& abort_table = thandle )
end if
else
me%stop_file = ''
me%steady_state = .false.
end if
! If no steady state is defined
if (.not. me%steady_state) allocate(me%convergence(0))
call aot_table_close( L = conf, &
& thandle = thandle )
end subroutine tem_abortCriteria_load