Load initial condition
Check if restart file is defined. Then use restart file to initialize variables. If not then load state variables either as constant or function \author Kannan Masilamani
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_ini_condition_type), | intent(out) | :: | me |
Initial condition type |
||
type(flu_State) | :: | conf |
lua state type |
|||
integer, | intent(in), | optional | :: | parent | ||
character(len=*), | intent(in) | :: | StateName(:) |
array of defined initial state variables |
||
character(len=*), | intent(in), | optional | :: | key |
key for the initial cond. |
|
integer, | intent(out) | :: | errCode(:) |
errCode of variables Solver should take appropriate action according to errCode |
subroutine tem_load_ic(me, conf, parent, StateName, key, errCode )
! ---------------------------------------------------------------------------
!> Initial condition type
type(tem_ini_condition_type), intent(out) :: me
!> lua state type
type(flu_State) :: conf
!> array of defined initial state variables
character(len=*), intent(in) :: StateName(:)
!> errCode of variables
!! Solver should take appropriate action according to errCode
integer, intent(out) :: errCode(:)
!>
integer, intent(in), optional :: parent
!> key for the initial cond.
character(len=*), intent(in), optional :: key
! ---------------------------------------------------------------------------
integer :: iState, nStates
integer :: ic_table
character(len=labelLen) :: lockey ! key for the initial cond.
! ---------------------------------------------------------------------------
nStates = size(StateName)
allocate(me%StateName(nStates))
allocate(me%ini_state(nStates))
me%StateName = StateName
if ( present(key) ) then
lockey = key
else
lockey = 'initial_condition'
end if
call aot_table_open(L=conf, parent=parent, thandle=ic_table, key=lockey)
call tem_horizontalSpacer(fUnit=logUnit(1))
write(logUnit(1),*) ' Loading initial conditions'
if (ic_table == 0) then
! Interpret the initial_condition entry as name for the restart file,
! if it is not a table.
call tem_abort('Initial condition table is not found!')
else
! We are not doing a restart, need to find initial conditions for all
! requested states.
do iState = 1, nStates
call tem_load_spatial( me = me%ini_state(iState), &
& conf = conf, &
& parent = ic_table, &
& key = trim(me%stateName(iState)), &
& errCode = errCode( iState ), &
& defaultValue = 0._rk )
! check if the initial condition has kind = none
! if ( me%ini_state(iState)%kind == 'none' ) then
! write(*,*) 'Initial condition variable', trim(me%stateName(iState)), &
! & 'has kind none, stopping ...'
! call tem_abort()
! end if
end do
end if
call aot_table_close(L=conf, thandle=ic_table)
end subroutine tem_load_ic