subroutine grid_3d_init
!
!==== Dependency
!
use type_mod, only: INTKIND
use nmlfile_mod,only: nmlfile_init, nmlfile_open, nmlfile_close
use dc_trace, only: DbgMessage, BeginSub, EndSub
use dc_message, only: MessageNotify
!=end
implicit none
!-------------------------------------------------------------------
! 変数定義
!-------------------------------------------------------------------
logical :: invalid_grid = .false.
logical :: nmlreadable
integer(INTKIND) :: nmlunit, nmlstat
character(STRING), parameter:: subname = "grid_3d_init"
!=begin
!==== NAMELIST
!
namelist /grid_3d_nml/ im , jm , km ! 鉛直格子点数
!=end
continue
!----------------------------------------------------------------
! Check Initialization
!----------------------------------------------------------------
call BeginSub(subname)
if (grid_3d_initialized) then
call EndSub( subname, '%c is already called', c1=trim(subname) )
return
else
grid_3d_initialized = .true.
endif
!----------------------------------------------------------------
! Version identifier
!----------------------------------------------------------------
call DbgMessage('%c :: %c', c1=trim(version), c2=trim(tagname))
!----------------------------------------------------------------
! read grid_3d_nml
!----------------------------------------------------------------
call nmlfile_init
call nmlfile_open(nmlunit, nmlreadable)
if (nmlreadable) then
read(nmlunit, nml=grid_3d_nml, iostat=nmlstat)
call DbgMessage('Stat of NAMELIST grid_3d_nml Input is <%d>', i=(/nmlstat/))
write(0, nml=grid_3d_nml)
else
call DbgMessage('Not Read NAMELIST grid_3d_nml')
call MessageNotify('W', subname, 'Can not Read NAMELIST grid_3d_nml. Force Use Default Value.')
end if
call nmlfile_close
!----------------------------------------------------------------
! Exception handling
!----------------------------------------------------------------
invalid_grid = .false.
if (im < 1) then
im = 64
invalid_grid = .true.
end if
if (jm < 1) then
jm = 32
invalid_grid = .true.
end if
if (km < 1) then
km = 12
invalid_grid = .true.
end if
if (invalid_grid) then
call MessageNotify('W', subname, 'Invalid grid number is exist. Force Set im=<%d>, jm=<%d>, km=<%d>', i=(/im, jm, km/) )
call DbgMessage( 'Invalid grid number is exist. Force Set im=<%d>, jm=<%d>, km=<%d>', i=(/im, jm, km/) )
endif
call EndSub( subname, 'im=<%d>, jm=<%d>, km=<%d>', i=(/im, jm, km/) )
end subroutine grid_3d_init