Class sltt_const
In: sltt/sltt_const.f90

セミラグランジュ法 で用いる定数

Constants for Semi-Lagrangian method

Methods

Included Modules

dc_types dc_message gridset namelist_util dc_iounit constants0

Public Instance methods

PIH
Variable :
PIH :real(DP), save
PIx2
Variable :
PIx2 :real(DP), save
Subroutine :

This procedure input/output NAMELIST#sltt_const_nml .

[Source]

  subroutine SLTTConstInit

    ! 種別型パラメタ
    ! Kind type parameter
    !
    use dc_types, only: STDOUT              ! 標準出力の装置番号. Unit number of standard output

    ! NAMELIST ファイル入力に関するユーティリティ
    ! Utilities for NAMELIST file input
    !
    use namelist_util, only: namelist_filename, NmlutilMsg

    ! ファイル入出力補助
    ! File I/O support
    !
    use dc_iounit, only: FileOpen

    use gridset    , only : jmax
    use constants0 , only : PI

    !
    ! local variables
    !

    integer:: unit_nml        ! NAMELIST ファイルオープン用装置番号.
                              ! Unit number for NAMELIST file open
    integer:: iostat_nml      ! NAMELIST 読み込み時の IOSTAT.
                              ! IOSTAT of NAMELIST read

    ! NAMELIST 変数群
    ! NAMELIST group name
    !
    namelist /sltt_const_nml/ dtiw, dtjw
          !
          ! デフォルト値については初期化手続 "sltt_const#SLTTConstInit"
          ! のソースコードを参照のこと.
          !
          ! Refer to source codes in the initialization procedure
          ! "sltt_const#SLTTConstInit" for the default values.
          !


    ! 実行文 ; Executable statement
    !

    if ( sltt_const_inited ) return


    ! デフォルト値の設定
    ! Default values settings
    !
    dtiw = 2
    dtjw = 2


    ! NAMELIST の読み込み
    ! NAMELIST is input
    !
    if ( trim(namelist_filename) /= '' ) then
      call FileOpen( unit_nml, namelist_filename, mode = 'r' ) ! (in)

      rewind( unit_nml )
      read( unit_nml, nml = sltt_const_nml, iostat = iostat_nml )    ! (out)
      close( unit_nml )

      call NmlutilMsg( iostat_nml, module_name ) ! (in)
      if ( iostat_nml == 0 ) write( STDOUT, nml = sltt_const_nml )
    end if


    PIx2 = PI + PI
    PIH  = PI / 2.0_DP

!!$    if( jew > jmax/2 ) then
!!$      write( 6, * ) "SLTT ERROR : MYRANK = ", myrank, &
!!$        " JEW = ", jew, " JMAX/2 = ", jmax/2
!!$      write( 6, * ) "SLTT ERROR : JEW MUST BE LESS THAN JMAX."
!!$      stop
!!$    end if

!!$    if( nprocs > 1 ) then
!!$      if( jmax/2 < dtjw ) then
!!$        write( 6, * ) "SLTT ERROR : MYRANK = ", myrank, &
!!$          " JMAX/2 = ", jmax/2, " TRANSFERED J WIDTH = ", dtjw
!!$        write( 6, * ) "SLTT ERROR : JMAX MUST BE GREATER THAN TRANSFERED J WIDTH."
!!$        stop
!!$      end if
!!$    end if


    ! Set minimum and maximu indices for south-north separate extended arrays
!!$    iexmin = -2          ! width of halo region of dtjw
!!$    iexmax = imax-1+1+2  ! 1 for 360 longitude and width of halo region of dtjw
!!$    if ( myrank == (nprocs-1) ) then
!!$      jexmins = -dtjw          ! minimum j of southern array
!!$      jexmaxs = jmax/2+dtjw    ! maximum j of southern array
!!$      jexminn = -dtjw+1        ! maximum j of northern array
!!$      jexmaxn = jmax/2+1+dtjw  ! maximum j of northern array
!!$    else
!!$      jexmins = -dtjw+1        ! minimum j of southern array
!!$      jexmaxs = jmax/2+dtjw    ! maximum j of southern array
!!$      jexminn = -dtjw+1        ! maximum j of northern array
!!$      jexmaxn = jmax/2+dtjw    ! maximum j of northern array
!!$    end if

    jmaxh = jmax/2

    iexmin = 0-dtiw         ! width of halo region of dtiw
    iexmax = imax-1+dtiw    ! 1 for 360 longitude and width of halo region of dtiw
    jexmin = -dtjw+1        ! minimum j of southern array
    jexmax = jmaxh+dtjw     ! maximum j of southern array

    jexglobalmin = -dtjw+1
    jexglobalmax = jmax_global+dtjw


    ! 印字 ; Print
    !
    call MessageNotify( 'M', module_name, '----- Initialization Messages -----' )
    call MessageNotify( 'M', module_name, '  dtiw = %d', i = (/ dtiw /) )
    call MessageNotify( 'M', module_name, '  dtjw = %d', i = (/ dtjw /) )
    call MessageNotify( 'M', module_name, '-- version = %c', c1 = trim(version) )


    sltt_const_inited = .true.

  end subroutine SLTTConstInit
dtjw
Variable :
dtjw :integer, save
iexmax
Variable :
iexmax :integer, save
iexmin
Variable :
iexmin :integer, save
jexglobalmax
Variable :
jexglobalmax :integer, save
jexglobalmin
Variable :
jexglobalmin :integer, save
jexmax
Variable :
jexmax :integer, save
jexmin
Variable :
jexmin :integer, save
jmaxh
Variable :
jmaxh :integer, save
nloop_dp_h
Variable :
nloop_dp_h = 4 :integer, save
nloop_dp_v
Variable :
nloop_dp_v = 4 :integer, save

Private Instance methods

dtiw
Variable :
dtiw :integer, save
module_name
Constant :
module_name = ‘sltt_const :character(*), parameter
: モジュールの名称. Module name
sltt_const_inited
Variable :
sltt_const_inited = .false. :logical, save
: 初期設定フラグ. Initialization flag
version
Constant :
version = ’$Name: $’ // ’$Id: sltt_const.f90,v 1.2 2013/01/27 11:26:14 yot Exp $’ :character(*), parameter
: モジュールのバージョン Module version