Class | initial_surface_data |
In: |
prepare_data/initial_surface_data.f90
|
初期値データのサンプルを提供します.
Prepare sample data of initial surface data (restart data)
SetInitSurfaceData : | 初期値データ取得 |
—————— : | ———— |
SetInitSurfaceData : | Get initial surface data |
NAMELIST#initial_surface_data_nml
Subroutine : |
subroutine InitSurfaceDataInit ! モジュール引用 ; USE statements ! ! NAMELIST ファイル入力に関するユーティリティ ! Utilities for NAMELIST file input ! use namelist_util, only: namelist_filename, NmlutilMsg, NmlutilAryValid ! ファイル入出力補助 ! File I/O support ! use dc_iounit, only: FileOpen ! 文字列操作 ! Character handling ! use dc_string, only: LChar ! 宣言文 ; 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 /initial_surface_data_nml/ Pattern, & !!$ & TempAvr, PsAvr, QVapAvr, Ueq, UGeos, VGeos ! ! デフォルト値については初期化手続 "initial_surface_data#InitSurfaceDataInit" ! のソースコードを参照のこと. ! ! Refer to source codes in the initialization procedure ! "initial_surface_data#InitSurfaceDataInit" for the default values. ! ! 実行文 ; Executable statement if ( initial_surface_data_inited ) return ! デフォルト値の設定 (まずは Pattern のみ) ! Default values settings (At first, "Pattern" only) ! !!$ Pattern = 'Small Disturbance of Temperature' !Pattern = 'AGCM 5.3 Default' ! NAMELIST の読み込み (まずは Pattern のみ) ! NAMELIST is input (At first, "Pattern" only) ! !!$ if ( trim(namelist_filename) /= '' ) then !!$ call FileOpen( unit_nml, & ! (out) !!$ & namelist_filename, mode = 'r' ) ! (in) !!$ !!$ rewind( unit_nml ) !!$ read( unit_nml, & ! (in) !!$ & nml = initial_data_nml, & ! (out) !!$ & iostat = iostat_nml ) ! (out) !!$ close( unit_nml ) !!$ !!$ call NmlutilMsg( iostat_nml, module_name ) ! (in) !!$ end if ! 印字 ; Print ! call MessageNotify( 'M', module_name, '----- Initialization Messages -----' ) !!$ call MessageNotify( 'M', module_name, ' Pattern = %c', c1 = trim(Pattern) ) !!$ call MessageNotify( 'M', module_name, ' TempAvr = %f', d = (/ TempAvr /) ) call MessageNotify( 'M', module_name, '-- version = %c', c1 = trim(version) ) initial_surface_data_inited = .true. end subroutine InitSurfaceDataInit
Subroutine : | |||
xy_SurfMajCompIce(0:imax-1, 1:jmax) : | real(DP), intent(out)
| ||
xy_SoilMoist(0:imax-1, 1:jmax) : | real(DP), intent(out)
| ||
xy_SurfSnow(0:imax-1, 1:jmax) : | real(DP), intent(out)
|
初期値データのサンプルを提供します.
Prepare sample data of initial data
subroutine SetInitSurfaceData( xy_SurfMajCompIce, xy_SoilMoist, xy_SurfSnow ) ! ! 初期値データのサンプルを提供します. ! ! Prepare sample data of initial data ! ! モジュール引用 ; USE statements ! ! 物理・数学定数設定 ! Physical and mathematical constants settings ! use constants0, only: PI ! $ \pi $. ! 円周率. Circular constant ! 座標データ設定 ! Axes data settings ! use axesset, only: x_Lon, y_Lat, z_Sigma ! $ \sigma $ レベル (整数). ! Full $ \sigma $ level ! 文字列操作 ! Character handling ! use dc_string, only: LChar ! ファイルから 1 次元プロファイルを読んで設定する. ! read 1-D profile from a file and set it ! use set_1d_profile, only : Set1DProfilePs, Set1DProfileAtm ! セミラグ移流テスト用初期値作成 ! Preparation of initial condition for SLTT advection ! use sltt_debug, only : SLTTDebugSetUV, SLTTDebugSetQ ! 宣言文 ; Declaration statements ! implicit none real(DP), intent(out):: xy_SurfMajCompIce(0:imax-1, 1:jmax) ! ! surface major component ice real(DP), intent(out):: xy_SoilMoist(0:imax-1, 1:jmax) ! ! soil moisture real(DP), intent(out):: xy_SurfSnow(0:imax-1, 1:jmax) ! ! surface snow amount ! 作業変数 ! Work variables ! integer:: i ! 経度方向に回る DO ループ用作業変数 ! Work variables for DO loop in longitude integer:: j ! 緯度方向に回る DO ループ用作業変数 ! Work variables for DO loop in latitude integer:: k ! 鉛直方向に回る DO ループ用作業変数 ! Work variables for DO loop in vertical direction ! 実行文 ; Executable statement if ( .not. initial_surface_data_inited ) call InitSurfaceDataInit do j = 1, jmax !!$ if ( y_Lat(j) * 180.0_DP / PI > 0.0_DP ) then !!$ xy_SurfMajCompIce(:,j) = 0.0_DP !!$ else xy_SurfMajCompIce(:,j) = 0.0_DP !!$ end if ! !!$ if ( y_Lat(j) * 180.0_DP / PI > 0.0_DP ) then !!$ xy_SoilMoist(:,j) = 0.0_DP !!$ else xy_SoilMoist(:,j) = 0.0_DP !!$ end if ! !!$ if ( y_Lat(j) * 180.0_DP / PI > 0.0_DP ) then !!$ xy_SurfSnow(:,j) = 0.0_DP !!$ else xy_SurfSnow(:,j) = 0.0_DP !!$ end if end do end subroutine SetInitSurfaceData
Variable : | |||
SurfMajCompIce : | real(DP), save, public
|
Variable : | |||
initial_surface_data_inited = .false. : | logical, save, public
|
Constant : | |||
module_name = ‘initial_surface_data‘ : | character(*), parameter
|
Constant : | |||
version = ’$Name: dcpam5-20150213 $’ // ’$Id: initial_surface_data.f90,v 1.2 2015/01/29 12:05:42 yot Exp $’ : | character(*), parameter
|