This routine loads the boundCube table from config file
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_cube_type), | intent(out) | :: | me | |||
type(flu_State) | :: | conf | ||||
character(len=*), | intent(in), | optional | :: | key |
open cube table by given key |
|
integer, | intent(in), | optional | :: | pos |
open cube table by position |
|
integer, | intent(in), | optional | :: | parent |
if cube is to be load from pos, parent handle is required |
subroutine tem_load_cube(me, conf, key, pos, parent) ! --------------------------------------------------------------------------! type(tem_cube_type), intent(out) :: me !< seeder cube type type(flu_state) :: conf !< lua state !> open cube table by given key character(len=*), optional, intent(in) :: key !> open cube table by position integer, optional, intent(in) :: pos !> if cube is to be load from pos, parent handle is required integer, optional, intent(in) :: parent ! --------------------------------------------------------------------------! integer :: thandle !< cube handle integer :: iError, vError(3), errFatal(3) real(kind=rk) :: deflen ! --------------------------------------------------------------------------! errFatal = aoterr_fatal me%origin = 0.0 deflen = 1.0_rk if (present(key)) then ! open cube table from given key call aot_table_open(L=conf, thandle=thandle, key=trim(key)) if (thandle == 0) then write(logunit(0),*) 'FATAL Error: cube definition not found with key:' write(logunit(0),*) (trim(key)) call tem_abort() end if else if (present(parent) .and. present(pos)) then ! else open cube from given table pos call aot_table_open(L=conf, parent = parent, thandle=thandle, pos=pos) if (thandle == 0) then write(logunit(0),*) & & 'FATAL Error: cube definition not found with pos:', pos call tem_abort() end if else write(logunit(0),*) 'ERROR: Neither key nor pos is provided to load ' & & //' cube table' call tem_abort() end if call aot_get_val(L=conf, thandle=thandle, val=me%origin, ErrCode=vError, & & key='origin', pos = 1, default=[0.0_rk, 0.0_rk, 0.0_rk] ) if (any(btest(vError, errFatal))) then write(logunit(0),*) 'FATAL Error occured, while retrieving cube origin.' call tem_abort() end if call aot_get_val(L=conf, thandle=thandle, & & val=me%extent, ErrCode=iError, & & key='length', pos=2, default=deflen) if (btest(iError, aoterr_Fatal)) then write(logunit(0),*) 'FATAL Error occured, while retrieving cube length:' if (btest(iError, aoterr_NonExistent)) & & write(logunit(0),*) 'Variable not existent!' if (btest(iError, aoterr_WrongType)) & & write(logunit(0),*) 'Variable has wrong type!' call tem_abort() else if (btest(iError, aoterr_NonExistent)) & & write(logunit(1),*) 'Variable length not set in configuration, ' & & //'using default value!' end if me%halfwidth = 0.5_rk*me%extent me%center = me%origin + me%halfwidth write(logunit(1),*) ' Cube origin: ', me%origin write(logunit(1),*) ' Cube length: ', me%extent call aot_table_close(L=conf, thandle=thandle) end subroutine tem_load_cube