Path: | main/init_data.F90 |
Last Update: | Sat Nov 08 15:40:11 +0900 2008 |
Authors: | Yasuhiro MORIKAWA |
Version: | $Id: init_data.F90,v 1.2 2008-11-08 06:40:11 morikawa Exp $ |
Tag Name: | $Name: dcpam5-20081109-1 $ |
Copyright: | Copyright (C) GFD Dennou Club, 2008. All rights reserved. |
License: | See COPYRIGHT |
Main Program : |
Note that Japanese and English are described in parallel.
初期値データファイルを生成します.
Initial data file is created.
program init_data ! ! <b>Note that Japanese and English are described in parallel.</b> ! ! 初期値データファイルを生成します. ! ! Initial data file is created. ! ! モジュール引用 ; USE statements ! ! 初期値データ (リスタートデータ) 提供 ! Prepare initial data (restart data) ! use initial_data, only: InitDataGet ! リスタートデータ入出力 ! Restart data input/output ! use restart_file_io, only: RestartFileOutPut ! 種別型パラメタ ! Kind type parameter ! use dc_types, only: DP, STRING, TOKEN ! キーワード. Keywords. ! 宣言文 ; Declaration statements ! implicit none #ifdef LIB_MPI ! MPI ライブラリ ! MPI library ! include 'mpif.h' #endif ! 予報変数 (ステップ $ t-\Delta t $ , $ t $ , $ t+\Delta t $ ) ! Prediction variables (Step $ t-\Delta t $ , $ t $ , $ t+\Delta t $ ) ! real(DP), allocatable:: xyz_UB (:,:,:) ! $ u (t-\Delta t) $ . 東西風速. Eastward wind real(DP), allocatable:: xyz_VB (:,:,:) ! $ v (t-\Delta t) $ . 南北風速. Northward wind real(DP), allocatable:: xyz_TempB (:,:,:) ! $ T (t-\Delta t) $ . 温度. Temperature real(DP), allocatable:: xyz_QVapB (:,:,:) ! $ q (t-\Delta t) $ . 比湿. Specific humidity real(DP), allocatable:: xy_PsB (:,:) ! $ p_s (t-\Delta t) $ . 地表面気圧. Surface pressure real(DP), allocatable:: xyz_UN (:,:,:) ! $ u (t) $ . 東西風速. Eastward wind real(DP), allocatable:: xyz_VN (:,:,:) ! $ v (t) $ . 南北風速. Northward wind real(DP), allocatable:: xyz_TempN (:,:,:) ! $ T (t) $ . 温度. Temperature real(DP), allocatable:: xyz_QVapN (:,:,:) ! $ q (t) $ . 比湿. Specific humidity real(DP), allocatable:: xy_PsN (:,:) ! $ p_s (t) $ . 地表面気圧. Surface pressure real(DP), allocatable:: xyz_UA (:,:,:) ! $ u (t+\Delta t) $ . 東西風速. Eastward wind real(DP), allocatable:: xyz_VA (:,:,:) ! $ v (t+\Delta t) $ . 南北風速. Northward wind real(DP), allocatable:: xyz_TempA (:,:,:) ! $ T (t+\Delta t) $ . 温度. Temperature real(DP), allocatable:: xyz_QVapA (:,:,:) ! $ q (t+\Delta t) $ . 比湿. Specific humidity real(DP), allocatable:: xy_PsA (:,:) ! $ p_s (t+\Delta t) $ . 地表面気圧. Surface pressure ! 作業変数 ! Work variables ! ! 実行文 ; Executable statement ! ! 主プログラムの初期化 (内部サブルーチン) ! Initialization for the main program (Internal subroutine) ! call MainInit ! 初期値データの作成 ! Generate initial data ! call InitDataGet( xyz_UB, xyz_VB, xyz_TempB, xyz_QVapB, xy_PsB, xyz_UN, xyz_VN, xyz_TempN, xyz_QVapN, xy_PsN ) ! (out) ! 初期値データの出力 ! Output initial data ! call RestartFileOutput( xyz_UB, xyz_VB, xyz_TempB, xyz_QVapB, xy_PsB, xyz_UN, xyz_VN, xyz_TempN, xyz_QVapN, xy_PsN ) ! (in) ! 主プログラムの終了処理 (内部サブルーチン) ! Termination for the main program (Internal subroutine) ! call MainTerminate contains !------------------------------------------------------------------- subroutine MainInit ! ! 主プログラムの初期化手続き. ! ! Initialization procedure for the main program. ! #ifdef LIB_MPI ! メッセージ出力 ! Message output ! use dc_message, only: MessageSuppressMPI #endif ! コマンドライン引数処理 ! Command line option parser ! use option_parser, only: OptParseInit ! NAMELIST ファイル入力に関するユーティリティ ! Utilities for NAMELIST file input ! use namelist_util, only: NmlutilInit ! 時刻管理 ! Time control ! use timeset, only: TimesetInit ! ステップ $ t $ の時刻. Time of step $ t $. ! 出力ファイルの基本情報管理 ! Management basic information for output files ! use fileset, only: FilesetInit ! 格子点設定 ! Grid points settings ! use gridset, only: GridsetInit, imax, jmax, kmax ! 鉛直層数. ! Number of vertical level ! 物理定数設定 ! Physical constants settings ! use constants, only: ConstantsInit ! 座標データ設定 ! Axes data settings ! use axesset, only: AxessetInit ! リスタートデータ入出力 ! Restart data input/output ! use restart_file_io, only: RestartFileOpen, RestartFileGet ! 文字列操作 ! Character handling ! use dc_string, only: StoA ! 宣言文 ; Declaration statements ! implicit none #ifdef LIB_MPI integer :: myrank_mpi, nprocs_mpi, err_mpi ! MPI の初期化の際に使用される変数. ! Variables used for initialization of MPI. #endif ! 実行文 ; Executable statement ! #ifdef LIB_MPI ! MPI 初期化 ! Initialization of MPI ! CALL MPI_Init(err_mpi) CALL MPI_Comm_Rank(mpi_comm_world, myrank_mpi, err_mpi) CALL MPI_Comm_Size(mpi_comm_world, nprocs_mpi, err_mpi) #endif #ifdef LIB_MPI ! メッセージ出力 ! Message output ! call MessageSuppressMPI( rank = 0 ) #endif ! コマンドライン引数処理 ! Command line option parser ! call OptParseInit ! NAMELIST ファイル名入力 ! Input NAMELIST file name ! call NmlutilInit ! 時刻管理 ! Time control ! call TimesetInit ! 出力ファイルの基本情報管理 ! Management basic information for output files ! call FilesetInit ! 格子点設定 ! Grid points settings ! call GridsetInit ! 物理定数設定 ! Physical constants settings ! call ConstantsInit ! 座標データ設定 ! Axes data settings ! call AxessetInit ! 予報変数の割付 ! Allocation of prediction variables ! allocate( xyz_UB (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_VB (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_TempB (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_QVapB (0:imax-1, 1:jmax, 1:kmax) ) allocate( xy_PsB (0:imax-1, 1:jmax) ) allocate( xyz_UN (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_VN (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_TempN (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_QVapN (0:imax-1, 1:jmax, 1:kmax) ) allocate( xy_PsN (0:imax-1, 1:jmax) ) allocate( xyz_UA (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_VA (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_TempA (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_QVapA (0:imax-1, 1:jmax, 1:kmax) ) allocate( xy_PsA (0:imax-1, 1:jmax) ) ! 初期値データ出力 ! Initial data output ! call RestartFileOpen( flag_init_data = .true. ) ! (in) optional end subroutine MainInit !------------------------------------------------------------------- subroutine MainTerminate ! ! 主プログラムの終了処理手続き. ! ! Termination procedure for the main program. ! ! 時刻管理 ! Time control ! use timeset, only: TimesetClose ! リスタートデータ入出力 ! Restart data input/output ! use restart_file_io, only: RestartFileClose ! 宣言文 ; Declaration statements ! implicit none #ifdef LIB_MPI integer :: err_mpi ! MPI の終了処理の際に使用される変数. ! Variable used for termination of MPI. #endif ! 実行文 ; Executable statement ! ! リスタートデータファイルクローズ ! Close restart data input ! call RestartFileClose ! 時刻管理終了処理 ! Termination of time control ! call TimesetClose #ifdef LIB_MPI ! MPI 終了処理 ! Termination of MPI ! call MPI_Finalize(err_mpi) #endif end subroutine MainTerminate end program init_data
Subroutine : |
主プログラムの初期化手続き.
Initialization procedure for the main program.
subroutine MainInit ! ! 主プログラムの初期化手続き. ! ! Initialization procedure for the main program. ! #ifdef LIB_MPI ! メッセージ出力 ! Message output ! use dc_message, only: MessageSuppressMPI #endif ! コマンドライン引数処理 ! Command line option parser ! use option_parser, only: OptParseInit ! NAMELIST ファイル入力に関するユーティリティ ! Utilities for NAMELIST file input ! use namelist_util, only: NmlutilInit ! 時刻管理 ! Time control ! use timeset, only: TimesetInit ! ステップ $ t $ の時刻. Time of step $ t $. ! 出力ファイルの基本情報管理 ! Management basic information for output files ! use fileset, only: FilesetInit ! 格子点設定 ! Grid points settings ! use gridset, only: GridsetInit, imax, jmax, kmax ! 鉛直層数. ! Number of vertical level ! 物理定数設定 ! Physical constants settings ! use constants, only: ConstantsInit ! 座標データ設定 ! Axes data settings ! use axesset, only: AxessetInit ! リスタートデータ入出力 ! Restart data input/output ! use restart_file_io, only: RestartFileOpen, RestartFileGet ! 文字列操作 ! Character handling ! use dc_string, only: StoA ! 宣言文 ; Declaration statements ! implicit none #ifdef LIB_MPI integer :: myrank_mpi, nprocs_mpi, err_mpi ! MPI の初期化の際に使用される変数. ! Variables used for initialization of MPI. #endif ! 実行文 ; Executable statement ! #ifdef LIB_MPI ! MPI 初期化 ! Initialization of MPI ! CALL MPI_Init(err_mpi) CALL MPI_Comm_Rank(mpi_comm_world, myrank_mpi, err_mpi) CALL MPI_Comm_Size(mpi_comm_world, nprocs_mpi, err_mpi) #endif #ifdef LIB_MPI ! メッセージ出力 ! Message output ! call MessageSuppressMPI( rank = 0 ) #endif ! コマンドライン引数処理 ! Command line option parser ! call OptParseInit ! NAMELIST ファイル名入力 ! Input NAMELIST file name ! call NmlutilInit ! 時刻管理 ! Time control ! call TimesetInit ! 出力ファイルの基本情報管理 ! Management basic information for output files ! call FilesetInit ! 格子点設定 ! Grid points settings ! call GridsetInit ! 物理定数設定 ! Physical constants settings ! call ConstantsInit ! 座標データ設定 ! Axes data settings ! call AxessetInit ! 予報変数の割付 ! Allocation of prediction variables ! allocate( xyz_UB (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_VB (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_TempB (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_QVapB (0:imax-1, 1:jmax, 1:kmax) ) allocate( xy_PsB (0:imax-1, 1:jmax) ) allocate( xyz_UN (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_VN (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_TempN (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_QVapN (0:imax-1, 1:jmax, 1:kmax) ) allocate( xy_PsN (0:imax-1, 1:jmax) ) allocate( xyz_UA (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_VA (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_TempA (0:imax-1, 1:jmax, 1:kmax) ) allocate( xyz_QVapA (0:imax-1, 1:jmax, 1:kmax) ) allocate( xy_PsA (0:imax-1, 1:jmax) ) ! 初期値データ出力 ! Initial data output ! call RestartFileOpen( flag_init_data = .true. ) ! (in) optional end subroutine MainInit
Subroutine : |
主プログラムの終了処理手続き.
Termination procedure for the main program.
subroutine MainTerminate ! ! 主プログラムの終了処理手続き. ! ! Termination procedure for the main program. ! ! 時刻管理 ! Time control ! use timeset, only: TimesetClose ! リスタートデータ入出力 ! Restart data input/output ! use restart_file_io, only: RestartFileClose ! 宣言文 ; Declaration statements ! implicit none #ifdef LIB_MPI integer :: err_mpi ! MPI の終了処理の際に使用される変数. ! Variable used for termination of MPI. #endif ! 実行文 ; Executable statement ! ! リスタートデータファイルクローズ ! Close restart data input ! call RestartFileClose ! 時刻管理終了処理 ! Termination of time control ! call TimesetClose #ifdef LIB_MPI ! MPI 終了処理 ! Termination of MPI ! call MPI_Finalize(err_mpi) #endif end subroutine MainTerminate