Class gridset
In: setup/gridset.f90

格子点数・最大波数設定

Number of grid points and maximum truncated wavenumber settings

Note that Japanese and English are described in parallel.

格子点数の設定および保管を行います. スペクトル法を用いることを前提にしており, 最大波数の設定と保管も行います.

Number of grid points is set and stored. Maximum truncated wavenumber is set and stored too, because spectral method is expected to be used.

Variables List

nmax :最大全波数
imax :経度格子点数
jmax :緯度格子点数
kmax :鉛直層数
———— :————
nmax :Maximum truncated wavenumber
imax :Number of grid points in longitude
jmax :Number of grid points in latitude
kmax :Number of vertical level

Procedures List

GridsetInit :格子点数と最大波数の設定
———— :————
GridsetInit :Settings of number of grid points and maximum truncated wavenumber

NAMELIST

NAMELIST#gridset_nml

Methods

Included Modules

dc_types namelist_util dc_iounit dc_message

Public Instance methods

Subroutine :
im :integer, intent(in), optional
: 経度格子点数. Number of grid points in longitude
jm :integer, intent(in), optional
: 緯度格子点数. Number of grid points in latitude
km :integer, intent(in), optional
: 鉛直層数. Number of vertical level

(in) optional

格子点数の変更を行います. 主に並列化のために用いられます. このサブルーチンは演算プログラム群が呼ばれる前に 使用してください.

Grid number is changes. Mainly, this subroutine is used for parallelization. Use this subroutine before programs for calculation are called.

[Source]

  subroutine GridsetChange( im, jm, km ) ! (in) optional
    !
    ! 格子点数の変更を行います. 
    ! 主に並列化のために用いられます. 
    ! このサブルーチンは演算プログラム群が呼ばれる前に
    ! 使用してください. 
    !
    ! Grid number is changes. 
    ! Mainly, this subroutine is used for parallelization. 
    ! Use this subroutine before programs for calculation are called. 
    ! 

    ! モジュール引用 ; USE statements
    !

    ! メッセージ出力
    ! Message output
    !
    use dc_message, only: MessageNotify

    ! 宣言文 ; Declaration statements
    !
    implicit none
    integer, intent(in), optional:: im
                              ! 経度格子点数. 
                              ! Number of grid points in longitude
    integer, intent(in), optional:: jm
                              ! 緯度格子点数. 
                              ! Number of grid points in latitude
    integer, intent(in), optional:: km
                              ! 鉛直層数. 
                              ! Number of vertical level


    ! 実行文 ; Executable statement
    !

    if ( .not. gridset_inited ) then
      call MessageNotify( 'E', module_name, 'call "GridsetInit" before "GridsetChange" is called' )
    end if
    
    ! 格子点数の変更
    ! Change grid number
    !
    if ( present(im) ) imax = im
    if ( present(jm) ) jmax = jm
    if ( present(km) ) kmax = km

    ! 印字 ; Print
    !
    call MessageNotify( 'M', module_name, '----- GridsetChange Messages -----' )
    call MessageNotify( 'M', module_name, '  nmax = %d -> %d', i = (/ nmax_save, nmax /) )
    call MessageNotify( 'M', module_name, '  imax = %d -> %d', i = (/ imax_save, imax /) )
    call MessageNotify( 'M', module_name, '  jmax = %d -> %d', i = (/ jmax_save, jmax /) )
    call MessageNotify( 'M', module_name, '  kmax = %d -> %d', i = (/ kmax_save, kmax /) )
    call MessageNotify( 'M', module_name, '-- version = %c', c1 = trim(version) )

  end subroutine GridsetChange
Subroutine :

gridset モジュールの初期化を行います. NAMELIST#gridset_nml の読み込みはこの手続きで行われます.

"gridset" module is initialized. NAMELIST#gridset_nml is loaded in this procedure.

This procedure input/output NAMELIST#gridset_nml .

[Source]

  subroutine GridsetInit
    !
    ! gridset モジュールの初期化を行います. 
    ! NAMELIST#gridset_nml の読み込みはこの手続きで行われます. 
    !
    ! "gridset" module is initialized. 
    ! NAMELIST#gridset_nml is loaded in this procedure. 
    !

    ! モジュール引用 ; USE statements
    !

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

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

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

    ! メッセージ出力
    ! Message output
    !
    use dc_message, only: MessageNotify

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

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

    ! 実行文 ; Executable statement
    !

    if ( gridset_inited ) return
    call InitCheck

    ! デフォルト値の設定
    ! Default values settings
    !
    nmax = 10
    imax = 32
    jmax = 16
    kmax = 5

    ! 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 = gridset_nml, iostat = iostat_nml ) ! (out)
      close( unit_nml )

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

    ! 格子点数のチェック
    ! Check number of grid points
    !
    if ( nmax < 1 .or. imax < 1 .or. jmax < 1 .or. kmax < 1 ) then
      call MessageNotify( 'E', module_name, 'number of grid points and maximum truncated wavenumber must be more than 0. ' // 'nmax=%d, imax=%d, jmax=%d, kmax=%d' , i = (/ nmax, imax, jmax, kmax /) )
    end if

    ! 格子点数の保存
    ! Save grid number
    !
    nmax_save = nmax
    imax_save = imax
    jmax_save = jmax
    kmax_save = kmax

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

    gridset_inited = .true.
  end subroutine GridsetInit
gridset_inited
Variable :
gridset_inited = .false. :logical, save, public
: 初期設定フラグ. Initialization flag
imax
Variable :
imax :integer, save, public
: 経度格子点数. Number of grid points in longitude
jmax
Variable :
jmax :integer, save, public
: 緯度格子点数. Number of grid points in latitude
kmax
Variable :
kmax :integer, save, public
: 鉛直層数. Number of vertical level
nmax
Variable :
nmax :integer, save, public
: 最大全波数. Maximum truncated wavenumber

Private Instance methods

Subroutine :

依存モジュールの初期化チェック

Check initialization of dependency modules

[Source]

  subroutine InitCheck
    !
    ! 依存モジュールの初期化チェック
    !
    ! Check initialization of dependency modules

    ! モジュール引用 ; USE statements
    !

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

    ! メッセージ出力
    ! Message output
    !
    use dc_message, only: MessageNotify

    ! 実行文 ; Executable statement
    !

    if ( .not. namelist_util_inited ) call MessageNotify( 'E', module_name, '"namelist_util" module is not initialized.' )

  end subroutine InitCheck
imax_save
Variable :
imax_save :integer, save
: 経度格子点数. Number of grid points in longitude
jmax_save
Variable :
jmax_save :integer, save
: 緯度格子点数. Number of grid points in latitude
kmax_save
Variable :
kmax_save :integer, save
: 鉛直層数. Number of vertical level
module_name
Constant :
module_name = ‘gridset :character(*), parameter
: モジュールの名称. Module name
nmax_save
Variable :
nmax_save :integer, save
: 最大全波数. Maximum truncated wavenumber
version
Constant :
version = ’$Name: dcpam5-20090317 $’ // ’$Id: gridset.f90,v 1.3 2008-10-09 10:15:39 morikawa Exp $’ :character(*), parameter
: モジュールのバージョン Module version

[Validate]