Path: | main/dcpam_init_data_surface.f90 |
Last Update: | 2016-05-12 03:15:05 +0900 |
Authors: | Yasuhiro Morikawa, Yoshiyuki O. Takahashi |
Version: | $Id: dcpam_init_data_surface.f90,v 1.1 2013/10/06 13:42:17 yot Exp $ |
Tag Name: | $Name: $ |
Copyright: | Copyright (C) GFD Dennou Club, 2008. All rights reserved. |
License: | See COPYRIGHT |
Main Program : |
Note that Japanese and English are described in parallel.
地表面データファイルを生成します.
Surface data file is created.
program dcpam_init_data_surface ! ! <b>Note that Japanese and English are described in parallel.</b> ! ! 地表面データファイルを生成します. ! ! Surface data file is created. ! ! モジュール引用 ; USE statements ! ! 格子点設定 ! Grid points settings ! use gridset, only: imax, jmax, kslmax, ksimax ! 海氷の鉛直層数. ! Number of sea ice vertical level ! 地表面データ提供 ! Prepare surface data ! use surface_data, only: SetSurfData ! ! Prepare initial surface data ! use initial_surface_data, only: SetInitSurfaceData ! 地表面温度リスタートデータ入出力 ! Restart data of surface temperature input/output ! use restart_surftemp_io, only: RestartSurfTempOutput ! 種別型パラメタ ! Kind type parameter ! use dc_types, only: DP, STRING, TOKEN ! キーワード. Keywords. ! 宣言文 ; Declaration statements ! implicit none ! 変数 ! Variables ! real(DP), allocatable:: xy_SurfTemp (:,:) ! 地表面温度. ! Surface temperature real(DP), allocatable:: xyz_SoilTemp (:,:,:) ! 土壌温度. ! Soil temperature real(DP), allocatable:: xyz_SOSeaIceTemp (:,:,:) ! 海氷温度. ! Sea ice temperature real(DP), allocatable:: xy_SOSeaIceMass(:,:) ! ! slab sea ice mass real(DP), allocatable:: xy_SurfMajCompIceB(:,:) ! ! surface major component ice at previous time step real(DP), allocatable:: xy_SurfMajCompIceN(:,:) ! ! surface major component ice at present time step real(DP), allocatable:: xy_SoilMoistB(:,:) ! ! soil moisture at previous time step real(DP), allocatable:: xy_SoilMoistN(:,:) ! ! soil moisture at present time step real(DP), allocatable:: xy_SurfSnowB(:,:) ! ! surface snow amount at previous time step real(DP), allocatable:: xy_SurfSnowN(:,:) ! ! surface snow amount at present time step ! 作業変数 ! Work variables ! integer :: k ! 実行文 ; Executable statement ! ! 主プログラムの初期化 (内部サブルーチン) ! Initialization for the main program (Internal subroutine) ! call MainInit ! 地表面データの作成 ! Generate surface data ! call SetSurfData( xy_SurfTemp = xy_SurfTemp ) ! (out) optional do k = 1, kslmax xyz_SoilTemp(:,:,k) = xy_SurfTemp end do do k = 1, ksimax xyz_SOSeaIceTemp(:,:,k) = xy_SurfTemp end do ! != Prepare initial surface data ! call SetInitSurfaceData( xy_SurfMajCompIceB, xy_SoilMoistB, xy_SurfSnowB, xy_SOSeaIceMass ) xy_SurfMajCompIceN = xy_SurfMajCompIceB xy_SoilMoistN = xy_SoilMoistB xy_SurfSnowN = xy_SurfSnowB ! 地表面温度リスタートデータ出力 ! Restart data of surface temperature output ! call RestartSurfTempOutput( xy_SurfTemp, xyz_SoilTemp, xyz_SOSeaIceTemp, xy_SOSeaIceMass, xy_SurfMajCompIceB, xy_SoilMoistB, xy_SurfSnowB, xy_SurfMajCompIceN, xy_SoilMoistN, xy_SurfSnowN ) ! 主プログラムの終了処理 (内部サブルーチン) ! Termination for the main program (Internal subroutine) ! call MainTerminate contains !------------------------------------------------------------------- subroutine MainInit ! ! 主プログラムの初期化手続き. ! ! Initialization procedure for the main program. ! ! MPI ! use mpi_wrapper, only : MPIWrapperInit use dc_message, only: MessageNotify ! コマンドライン引数処理 ! 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, kslmax, ksimax ! 海氷の鉛直層数. ! Number of sea ice vertical level ! 物理定数設定 ! Physical constants settings ! use constants, only: ConstantsInit ! 座標データ設定 ! Axes data settings ! use axesset, only: AxessetInit ! 地表面温度リスタートデータ入出力 ! Restart data of surface temperature input/output ! use restart_surftemp_io, only: RestartSurfTempInit, RestartSurfTempOpen ! 地表面データ提供 ! Prepare surface data ! use surface_data, only : SurfDataInit ! ! Prepare initial surface data ! use initial_surface_data, only: InitSurfaceDataInit ! 宣言文 ; Declaration statements ! implicit none character(*), parameter:: prog_name = 'dcpam_init_data_surface' ! 主プログラム名. ! Main program name character(*), parameter:: version = '$Name: $' // '$Id: dcpam_init_data_surface.f90,v 1.1 2013/10/06 13:42:17 yot Exp $' ! 主プログラムのバージョン ! Main program version character(STRING) :: namelist_filename ! NAMELIST ファイルの名称. ! NAMELIST file name character(STRING):: brief ! 実行ファイルの簡潔な説明 ! Brief account of executable file ! 実行文 ; Executable statement ! ! Initialize MPI ! call MPIWrapperInit brief = 'SST data generation' call MessageNotify( 'M', prog_name, 'Run: %c', c1 = trim(brief) ) call MessageNotify( 'M', prog_name, '-- version = %c', c1 = trim(version) ) ! コマンドライン引数処理 ! Command line option parser ! call OptParseInit( namelist_filename, prog_name, brief ) ! NAMELIST ファイル名入力 ! Input NAMELIST file name ! call NmlutilInit( namelist_filename ) ! 時刻管理 ! 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 ! 地表面データ提供 ! Prepare surface data ! call SurfDataInit ! ! Prepare initial surface data ! call InitSurfaceDataInit ! 地表面温度変数の割付 ! Allocation of a variable of surface temperature ! allocate( xy_SurfTemp (0:imax-1, 1:jmax) ) allocate( xyz_SoilTemp (0:imax-1, 1:jmax, 1:kslmax) ) allocate( xyz_SOSeaIceTemp (0:imax-1, 1:jmax, 1:ksimax) ) allocate( xy_SurfMajCompIceB(0:imax-1, 1:jmax) ) allocate( xy_SurfMajCompIceN(0:imax-1, 1:jmax) ) allocate( xy_SoilMoistB (0:imax-1, 1:jmax) ) allocate( xy_SoilMoistN (0:imax-1, 1:jmax) ) allocate( xy_SurfSnowB (0:imax-1, 1:jmax) ) allocate( xy_SurfSnowN (0:imax-1, 1:jmax) ) allocate( xy_SOSeaIceMass (0:imax-1, 1:jmax) ) ! 地表面温度リスタートデータファイルの初期化 ! Initialization of restart data file of surface temperature ! call RestartSurfTempInit call RestartSurfTempOpen( flag_init_data = .true. ) ! (in) optional end subroutine MainInit !------------------------------------------------------------------- subroutine MainTerminate ! ! 主プログラムの終了処理手続き. ! ! Termination procedure for the main program. ! ! MPI ! use mpi_wrapper, only : MPIWrapperFinalize ! 時刻管理 ! Time control ! use timeset, only: TimesetClose ! 地表面温度リスタートデータ入出力 ! Restart data of surface temperature input/output ! use restart_surftemp_io, only: RestartSurfTempClose ! ヒストリデータ出力 ! History data output ! use history_file_io, only: HistoryFileClose ! 宣言文 ; Declaration statements ! implicit none ! 実行文 ; Executable statement ! ! 地表面温度リスタートデータファイルクローズ ! Close restart data file of surface temperature ! call RestartSurfTempClose ! 時刻管理終了処理 ! Termination of time control ! call TimesetClose ! 地表面温度変数の割付解除 ! Deallocation of a variable of surface temperature ! deallocate( xy_SurfTemp ) ! Finalize MPI ! call MPIWrapperFinalize end subroutine MainTerminate end program dcpam_init_data_surface
Subroutine : |
主プログラムの初期化手続き.
Initialization procedure for the main program.
subroutine MainInit ! ! 主プログラムの初期化手続き. ! ! Initialization procedure for the main program. ! ! MPI ! use mpi_wrapper, only : MPIWrapperInit use dc_message, only: MessageNotify ! コマンドライン引数処理 ! 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, kslmax, ksimax ! 海氷の鉛直層数. ! Number of sea ice vertical level ! 物理定数設定 ! Physical constants settings ! use constants, only: ConstantsInit ! 座標データ設定 ! Axes data settings ! use axesset, only: AxessetInit ! 地表面温度リスタートデータ入出力 ! Restart data of surface temperature input/output ! use restart_surftemp_io, only: RestartSurfTempInit, RestartSurfTempOpen ! 地表面データ提供 ! Prepare surface data ! use surface_data, only : SurfDataInit ! ! Prepare initial surface data ! use initial_surface_data, only: InitSurfaceDataInit ! 宣言文 ; Declaration statements ! implicit none character(*), parameter:: prog_name = 'dcpam_init_data_surface' ! 主プログラム名. ! Main program name character(*), parameter:: version = '$Name: $' // '$Id: dcpam_init_data_surface.f90,v 1.1 2013/10/06 13:42:17 yot Exp $' ! 主プログラムのバージョン ! Main program version character(STRING) :: namelist_filename ! NAMELIST ファイルの名称. ! NAMELIST file name character(STRING):: brief ! 実行ファイルの簡潔な説明 ! Brief account of executable file ! 実行文 ; Executable statement ! ! Initialize MPI ! call MPIWrapperInit brief = 'SST data generation' call MessageNotify( 'M', prog_name, 'Run: %c', c1 = trim(brief) ) call MessageNotify( 'M', prog_name, '-- version = %c', c1 = trim(version) ) ! コマンドライン引数処理 ! Command line option parser ! call OptParseInit( namelist_filename, prog_name, brief ) ! NAMELIST ファイル名入力 ! Input NAMELIST file name ! call NmlutilInit( namelist_filename ) ! 時刻管理 ! 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 ! 地表面データ提供 ! Prepare surface data ! call SurfDataInit ! ! Prepare initial surface data ! call InitSurfaceDataInit ! 地表面温度変数の割付 ! Allocation of a variable of surface temperature ! allocate( xy_SurfTemp (0:imax-1, 1:jmax) ) allocate( xyz_SoilTemp (0:imax-1, 1:jmax, 1:kslmax) ) allocate( xyz_SOSeaIceTemp (0:imax-1, 1:jmax, 1:ksimax) ) allocate( xy_SurfMajCompIceB(0:imax-1, 1:jmax) ) allocate( xy_SurfMajCompIceN(0:imax-1, 1:jmax) ) allocate( xy_SoilMoistB (0:imax-1, 1:jmax) ) allocate( xy_SoilMoistN (0:imax-1, 1:jmax) ) allocate( xy_SurfSnowB (0:imax-1, 1:jmax) ) allocate( xy_SurfSnowN (0:imax-1, 1:jmax) ) allocate( xy_SOSeaIceMass (0:imax-1, 1:jmax) ) ! 地表面温度リスタートデータファイルの初期化 ! Initialization of restart data file of surface temperature ! call RestartSurfTempInit call RestartSurfTempOpen( flag_init_data = .true. ) ! (in) optional end subroutine MainInit
Subroutine : |
主プログラムの終了処理手続き.
Termination procedure for the main program.
subroutine MainTerminate ! ! 主プログラムの終了処理手続き. ! ! Termination procedure for the main program. ! ! MPI ! use mpi_wrapper, only : MPIWrapperFinalize ! 時刻管理 ! Time control ! use timeset, only: TimesetClose ! 地表面温度リスタートデータ入出力 ! Restart data of surface temperature input/output ! use restart_surftemp_io, only: RestartSurfTempClose ! ヒストリデータ出力 ! History data output ! use history_file_io, only: HistoryFileClose ! 宣言文 ; Declaration statements ! implicit none ! 実行文 ; Executable statement ! ! 地表面温度リスタートデータファイルクローズ ! Close restart data file of surface temperature ! call RestartSurfTempClose ! 時刻管理終了処理 ! Termination of time control ! call TimesetClose ! 地表面温度変数の割付解除 ! Deallocation of a variable of surface temperature ! deallocate( xy_SurfTemp ) ! Finalize MPI ! call MPIWrapperFinalize end subroutine MainTerminate