This document is tutorial for performing experiments easily with dcpam5.
As an aside, "RAKURAKU" means "easier".
"dcpam5" input/output NetCDF data based on Gtool4 NetCDF Conventions
Therefore, analysis and visualization tools for NetCDF data need to be prepared in order to analyze and visualize results of numerical experiments. Tools provided from Dennou Ruby Project are recommended here. GAVE that is one of products of the project is used in the following examples.
It may be possible to analyze and visualize results of numerical experiments with some analysis and visualization tools (for example, GrADS, etc.) that can treat NetCDF data.
Click Installation guide in left side of Dennou Ruby Project page, and select a method of installation depending on your environment.
Build dcpam5 referring to dcpam5 Installation Guide. Work until "Compile source code" in "How to build".
Notes about some compilers that are done the operation check or have done are as follows.
Read it through if the following operation check doesn't go well, because it is likely to apply about other compilers.
A method for run of a benchmark calculation for evaluating the dynamical cores of atmospheric general circulation models independently of the physical parameterizations proposed by Held and Suarez (1994) (See References) is explained.
"dcpam5" prepares a executable file dcpam_main.F90 that calculates dynamical core and Newtonian relaxation and Rayleigh damping proposed by Held and Suarez (1994).
In order to create the exectable file, edit a variable "MAIN_PROGRAM" in "Config.mk" file in "dcpam5" directory as follows first.
MAIN_PROGRAM=HS94
After that, move "src/main", and execute GNU Make command. ("/usr/bin/make" is supposed as GNU Make command).
$ /usr/bin/make clean all
Move "practice" directory.
$ cd practice
In the directory, execute 'make' command. The execution files and the NAMELIST files will be automatically copied. Input directory name first of all after inputting 'make' command. (It is assumed "hs94-exp" in the following example). Input 'Enter' to the question after that.
$ make ****** Setup a directory for a experiment ****** Enter directory name [testXX]: hs94-exp Directory in which executable files are prepared [/home/dcpam/work/dcpam5/src/main]: Directory in which NAMELIST files are prepared [/home/dcpam/work/dcpam5/src/main]: Save F90/95 source code files? [Y/n]: Directory in which source code files are prepared [/home/dcpam/work/dcpam5/src]: : *** Setup of "hs94-exp" is complete ***
Then a directory 'hs94-exp' is created, and executable files, NAMELIST files, and source code files are copied to the directory. Move the 'hs94-exp'.
$ cd hs94-exp
Executable files 'dcpam_main', 'init_data' etc. will be prepared. Execute 'dcpam_main' as follows. This program will be finished in few minutes - tens of minutes.
$ ./dcpam_main *** MESSAGE [dcpam_main] *** Run: Held and Suarez (1994) benchmark test : *** MESSAGE [timeset] *** ----- Initialization Messages ----- *** MESSAGE [timeset] *** StartTime = 0. [day] *** MESSAGE [timeset] *** EndTime = 7. [day] *** MESSAGE [timeset] *** DelTime = 30. [min] *** MESSAGE [timeset] *** = 1800. [sec] : : *** MESSAGE [fileset] *** ----- Initialization Messages ----- *** MESSAGE [fileset] *** FileTitle = dcpam5 test run *** MESSAGE [fileset] *** FileSource = dcpam5 (http://www.gfd-dennou.org/library/dcpam) *** MESSAGE [fileset] *** FileInstitution = GFD Dennou Club (http://www.gfd-dennou.org) *** MESSAGE [fileset] *** -- version = ... *** MESSAGE [gridset] *** ----- Initialization Messages ----- *** MESSAGE [gridset] *** nmax = 10 *** MESSAGE [gridset] *** imax = 32 *** MESSAGE [gridset] *** jmax = 16 *** MESSAGE [gridset] *** kmax = 5 *** MESSAGE [gridset] *** -- version = ... : ########## PREDICTION OF CALCULATION ########### Start Date 2008-11-29T16:55:11+09:00 Current Date 2008-11-29T16:55:25+09:00 Progress 57.14% [************** ] Remaining CPU TIME 0.100000E+02 Completion Date 2008-11-29T16:55:35+09:00 : ############## CPU TIME SUMMARY ################ held_suarez_1994 0.165611E+01 dynamics_hspl_vas83 0.191452E+02 timefilter_asselin19 0.264027E+00 others 0.896038E+00 ------------------------------------------------ TOTAL TIME = 0.219614E+02
In this case, 7 days integration is performed. Resolution is T10L5 (Number of grid points of longitude, latitude is 32, 16, and number of vertical layer is 5). History data are output to 'U.nc' and 'Temp.nc' etc., and a restart data is output to 'restart.nc'.
In a normal situation, the integration periods and resolution are too short, and too small as benchmark test. In Held and Suarez (1994), integration periods is 1200 days and resolution is T42L20 (Number of grid points of longitude, latitude is 128, 64, and number of vertical layer is 20).
Use ncdump command in order to refer information of output data. That command is included in NetCDF library, so the commend has been built and installed in process of installation of "dcpam5".
In order to refer information of "U.nc", input the command as follows. Contents are passed to pager "more" over pipe-line, since displayed lines are many.
$ ncdump -h U.nc | more
Contents are explained.
List of dimensional variables included in the data file. Numerical value is number of data of the dimensional variables.
netcdf U { dimensions: lon = 32 ; lat = 16 ; sig = 5 ; sigm = 6 ; time = UNLIMITED ; // (8 currently)
Metadata of dimensional and dependent variables included in the data file. 'float' indicates that the data is single precision real. If the data is double precision or integer, the character is changed to 'double' or 'int'. Variable(dimensional variables depended) is displayed at the back of it.
variables: float lon(lon) ; lon:long_name = "longitude" ; lon:units = "degree_east" ; lon:standard_name = "longitude" ; lon:gt_calc_weight = "lon_weight" ; : float time(time) ; time:long_name = "time" ; time:units = "day" ; : float U(time, sig, lat, lon) ; U:long_name = "eastward wind" ; U:units = "m s-1" ;
Global attirbutes appended to whole of the data file. Conventions of the file, title, source of data, created date and time, etc. are registered.
// global attributes: :Conventions = "http://www.gfd-dennou.org/library/gtool4/conventions/" ; :gt_version = "4.3" ; :title = "dcpam5 test run history data" ; :source = "dcpam5 (http://www.gfd-dennou.org/library/dcpam)" ; :institution = "GFD Dennou Club (http://www.gfd-dennou.org)" ; :history = "2008-11-29T22:01:10+09:00 morikawa> gtool_history: HistoryCreate\n", "" ; }
In order to refer data, input the command as follows.
$ ncdump Temp.nc | more
The data is displayed as follows.
data: lon = 0, 11.25, 22.5, 33.75, 45, 56.25, 67.5, 78.75, 90, 101.25, 112.5, 123.75, 135, 146.25, 157.5, 168.75, 180, 191.25, 202.5, 213.75, 225, 236.25, 247.5, 258.75, 270, 281.25, 292.5, 303.75, 315, 326.25, 337.5, 348.75 ; lat = -81.65059, -70.83464, -59.95486, -49.06072, -38.16121, -27.25921, -16.35593, -5.45204, 5.45204, 16.35593, 27.25921, 38.16121, 49.06072, 59.95486, 70.83464, 81.65059 ; : Temp = 249.9899, 249.9622, 249.9368, 249.9154, 249.8999, 249.8913, 249.8905, 249.8973, 249.9113, 249.9315, 249.9562, 249.9835, 250.0113, 250.0375, 250.0599, 250.0769, 250.0871, 250.0898, 250.0847, 250.0722, 250.0533, 250.0295, 250.0026, 249.9747, 249.948, 249.9245, 249.9062, 249.8943, 249.8899, 249.8932, 249.9041, 249.9217, 249.9899, 249.9658, 249.9432, 249.9233, 249.9073, 249.8962, 249.8905, 249.8907, 249.8967, 249.9081, 249.9244, 249.9445, 249.9672, 249.9913, 250.0153, 250.0378, 250.0575, 250.0732, 250.084, 250.0894, 250.0889, 250.0825, 250.0708, 250.0543, 250.034, 250.0112, 249.987, 249.9631, 249.9407, 249.9212, 249.9058, 249.8952,
Some data is visualized. A method of visualization with "GAVE" are showed as follows. Firstly, run "gave".
$ gave
Following window will be displayed.
Select a data file by [File] -> [Open] . Select "TempEQHs94.nc" here. This is equilibrium temperature used in Newtonian relaxation proposed by Held and Suarez (1994). After the file is opended, set values as follows, and click [draw].
Following window will be displayed. The figure indicates that temperature is 300 K or more on surface and the equator, and it is decreased as longitude increased and altitude increases.
Select a data file by [File] -> [Open] . Select "TempEQHs94.nc" here. This is equilibrium temperature used in Newtonian relaxation proposed by Held and Suarez (1994). After the file is opended, set as follows, and click [draw].
Next, see changes of eastward wind. Load 'U.nc' by [File] -> [Open] . In this time, set values as follows, and click [draw].
Following window will be displayed. This is eastward wind in a layer nearest to the surface. The figure indicates that velocity is 0 m/s at initial fields, and westward wind is arose at the equator and mid-latitude gradually.
At last, see changes of eastward wind in midair. Display a window that sets dimension by [Tools] -> [Dimensions]. On the windows set [sig] to about 0.2, and click [draw].
Following window will be displayed. This is eastward wind in a layer at about 200 hPa. The figure indicates that velocity is 0 m/s at initial fields, and eastward wind is arose at +/- 40 deg. latitude gradually.
Setting values of calculation is output to standard output. Contents displayed in Run: Dry atmosphere benchmark experiment for dynamical core suggested by Held and Suarez (1994) are explained.
Start time of calculation, end time of calculation, time step, Interval of predicted end time output, On/off of CPU time monitoring are displayed. These values are managed in timeset module.
|*** MESSAGE [timeset] *** ----- Initialization Messages ----- |*** MESSAGE [timeset] *** StartTime = 0. [day] |*** MESSAGE [timeset] *** EndTime = 7. [day] |*** MESSAGE [timeset] *** DelTime = 30. [min] |*** MESSAGE [timeset] *** = 1800. [sec] |*** MESSAGE [timeset] *** PredictInt = 1. [day] |*** MESSAGE [timeset] *** CpuTimeMoniter = T |*** MESSAGE [timeset] *** -- version = ...
Title of experiments, source of data, institutions are displayed. These are given to global attributes of output data. These values are managed in fileset module.
|*** MESSAGE [fileset] *** ----- Initialization Messages ----- |*** MESSAGE [fileset] *** FileTitle = dcpam5 test run |*** MESSAGE [fileset] *** FileSource = dcpam5 (http://www.gfd-dennou.org/library/dcpam) |*** MESSAGE [fileset] *** FileInstitution = GFD Dennou Club (http://www.gfd-dennou.org) |*** MESSAGE [fileset] *** -- version ...
Maximum truncated wavenumber, number of grid points in longitude and latitude, number of vertical level are displayed. These values are managed in gridset module.
|*** MESSAGE [gridset] *** ----- Initialization Messages ----- |*** MESSAGE [gridset] *** nmax = 10 |*** MESSAGE [gridset] *** imax = 32 |*** MESSAGE [gridset] *** jmax = 16 |*** MESSAGE [gridset] *** kmax = 5 |*** MESSAGE [gridset] *** -- version ...
Some physical constants are displauyed. These values are managed in constants module. See a manual of this module for details.
|*** MESSAGE [constants] *** ----- Initialization Messages ----- |*** MESSAGE [constants] *** PI = 3.141592653589793 |*** MESSAGE [constants] *** GasRUniv = 8.314 |*** MESSAGE [constants] *** StB = 0.567E-07 |*** MESSAGE [constants] *** FKarm = 0.4 |*** MESSAGE [constants] *** RPlanet = 6371000. |*** MESSAGE [constants] *** Omega = 0.7292106590880652E-04 |*** MESSAGE [constants] *** Grav = 9.800000000000001 |*** MESSAGE [constants] *** CpDry = 1004.6 |*** MESSAGE [constants] *** MolWtDry = 0.28964E-01 |*** MESSAGE [constants] *** GasRDry = 287.0459881231874 |*** MESSAGE [constants] *** CpWet = 1810. |*** MESSAGE [constants] *** MolWtWet = 0.1801528E-01 |*** MESSAGE [constants] *** GasRWet = 461.4971291037386 |*** MESSAGE [constants] *** LatentHeat = 2500000. |*** MESSAGE [constants] *** EpsV = 0.6219886755972932 |*** MESSAGE [constants] *** -- version ...
Information of input/output of restart data are displayed. These values are managed in restart_file_io module. See a manual of this module for details.
|*** MESSAGE [restart_file_io] *** ----- Initialization Messages ----- |*** MESSAGE [restart_file_io] *** Input:: |*** MESSAGE [restart_file_io] *** InputFile = |*** MESSAGE [restart_file_io] *** Output:: |*** MESSAGE [restart_file_io] *** OutputFile = restart.nc |*** MESSAGE [restart_file_io] *** IntTime = 1. [day] |*** MESSAGE [restart_file_io] *** -- version ...
Information of output of history data are displayed. These values are managed in "gtool_historyauto" module of gtool5 library. See this manual for details.
|*** MESSAGE [HistAuto] *** ----- "gtool_historyauto_nml" is not loaded" ----- |*** MESSAGE [HistAuto] *** Global Settings: |*** MESSAGE [HistAuto] *** AllOutput = T |*** MESSAGE [HistAuto] *** FilePrefix = |*** MESSAGE [HistAuto] *** Interval = 1. [day] |*** MESSAGE [HistAuto] *** Precision = float |*** MESSAGE [HistAuto] *** TimeAverage = F |*** MESSAGE [HistAuto] *** Origin = 0. [sec] |*** MESSAGE [HistAuto] *** Terminus = 7. [day] |*** MESSAGE [HistAuto] *** SliceStart = (/ 1, 1, 1, 1, 1 /) |*** MESSAGE [HistAuto] *** SliceEnd = (/ -1, -1, -1, -1, -1 /) |*** MESSAGE [HistAuto] *** SliceStride = (/ 1, 1, 1, 1, 1 /) |*** MESSAGE [HistAuto] *** SpaceAverage = (/ F, F, F, F, F /) |*** MESSAGE [HistAuto] *** NewFileInterval = -1 [day] |*** MESSAGE [HistAuto] ***
Information of setting values of dynamical core are displayed. These values are managed in dynamics_hspl_vas83 module. See a manual of this module for details.
|*** MESSAGE [dynamics_hspl_vas83] *** ----- Initialization Messages ----- |*** MESSAGE [dynamics_hspl_vas83] *** TimeIntegScheme = Semi-implicit |*** MESSAGE [dynamics_hspl_vas83] *** EFoldTime = 8640. [sec] |*** MESSAGE [dynamics_hspl_vas83] *** VisOrder = 8 |*** MESSAGE [dynamics_hspl_vas83] *** VisCoef = 0.214573634546703E+43 |*** MESSAGE [dynamics_hspl_vas83] *** GeoPotentialFile = |*** MESSAGE [dynamics_hspl_vas83] *** GeoPotentialVarname = |*** MESSAGE [dynamics_hspl_vas83] *** -- version ...
In order to configure the settings of calculation, use NAMELIST file. As a sample, 'dcpam_hs94_T42L20.nml' is prepared. Create NAMELIST file referring to this file. A part of 'dcpam_hs94_T42L20.nml' is showed as follows.
#= NAMELIST file for "dcpam_hs94" # &fileset_nml FileTitle = 'dcpam5 test run', ! Title of output data files FileSource = 'dcpam5 (http://www.gfd-dennou.org/library/dcpam)', ! Source of data file FileInstitution = 'GFD Dennou Club (http://www.gfd-dennou.org)' ! Institution or person that changes data files for the last time / &gridset_nml nmax = 42, ! Maximum truncated wavenumber imax = 128, ! Number of grid points in longitude jmax = 64, ! Number of grid points in latitude kmax = 20 ! Number of vertical level / :
A NAMELIST group name "&xxxxxx_nml" is managed by "xxxxxx" module. List of NAMELIST group names managed in dcpam5 is dcpam5 NAMELIST. See this manual for details. However, only >ool_historyauto_nml is exception. See Configure output settings about that.
After edit, execute with '-N' (or '--namelist') option as follows.
$ ./dcpam_main -N=dcpam_hs94_T42L20.nml *** MESSAGE [timeset] *** NAMELIST group "timeset_nml" is loaded from "dcpam_hs94_T42L20.nml". *** MESSAGE [timeset] *** ----- Initialization Messages ----- *** MESSAGE [timeset] *** StartTime = 0. [day] *** MESSAGE [timeset] *** EndTime = 1200. [day] *** MESSAGE [timeset] *** DelTime = 30. [min] *** MESSAGE [timeset] *** = 1800. [sec] *** MESSAGE [timeset] *** PredictInt = 1. [day] *** MESSAGE [timeset] *** CpuTimeMoniter = T *** MESSAGE [timeset] *** -- version = ..... *** MESSAGE [gridset] *** NAMELIST group "gridset_nml" is loaded from "dcpam_hs94_T42L20.nml". *** MESSAGE [gridset] *** ----- Initialization Messages ----- *** MESSAGE [gridset] *** nmax = 42 *** MESSAGE [gridset] *** imax = 128 *** MESSAGE [gridset] *** jmax = 64 *** MESSAGE [gridset] *** kmax = 20 :
!!! Under construction !!!
In the case of above experiment, initial data is generated internally by execution program. A way to output initial data to a file is described below.
First, as above, move "practice" directory, and create a directory for a experiment by "make" command. Then move the directory.
Executive file "init_data" and NAMELIST file "init_data_T10L8.nml" etc. are prepared for generation of initial data file. At first, edit "init_data_T10L8.nml", and execute as follows. If "-h" or "--help" are specified as command line options, the resolution or output files are displayed.
$ ./init_data -N=init_data_T10L8.nml
By default, a file named "init.nc" is output. In order to use this file as initial data or restart data, See Input initial data or restart data file.
In order to input initial data or restart data from a file, edit NAMELIST file as follows.
&restart_file_io_nml InputFile = 'init.nc', ! 入力するリスタートデータのファイル名 ! filename of input restart data : /
Specify a filename of initial data or restart data to "InputFile".
After change of NAMELIST file, start an experiment with -N or --namelist option and the NAMELIST file as follows.
$ ./dcpam_main -N=dcpam_hs94_TXXLXX.nml
Starting an experiments, following data input messages may be displayed. Confirm them.
|*** MESSAGE [HistoryGetDouble3] *** Input init.nc@UB,time=10.0 |*** MESSAGE [HistoryGetDouble3] *** Input init.nc@UN,time=10.0 |*** MESSAGE [HistoryGetDouble3] *** Input init.nc@VB,time=10.0 |*** MESSAGE [HistoryGetDouble3] *** Input init.nc@VN,time=10.0 |*** MESSAGE [HistoryGetDouble3] *** Input init.nc@TempB,time=10.0 |*** MESSAGE [HistoryGetDouble3] *** Input init.nc@TempN,time=10.0 |*** MESSAGE [HistoryGetDouble3] *** Input init.nc@QVapB,time=10.0 |*** MESSAGE [HistoryGetDouble3] *** Input init.nc@QVapN,time=10.0 |*** MESSAGE [HistoryGetDouble2] *** Input init.nc@PsB,time=10.0 |*** MESSAGE [HistoryGetDouble2] *** Input init.nc@PsN,time=10.0
Secondly, a way to execute an aqua planet experiment (planetary surface is watar in whole) is explained.
In this calculation, following physical processes are added to above dynamical process.
In order to create the executable file, edit a variable "MAIN_PROGRAM" in "Config.mk" file in "dcpam5" directory as follows.
MAIN_PROGRAM=APE
After that, move "src/main", and execute GNU Make command. ("/usr/bin/make" is supposed as GNU Make command).
$ /usr/bin/make clean all
(In cross compile environment, programs can not be executed as following methods. See a manual of the environment for execution method. )
Move "practice" directory:
$ cd practice
In the directory, execute 'make' command. The execution files and the NAMELIST files will be automatically copied. Input directory name first of all after inputting 'make' command. (It is assumed "ape-exp" in the following example). Input 'Enter' to the question after that.
$ make ****** Setup a directory for a experiment ****** Enter directory name [testXX]: ape-exp Directory in which executable files are prepared [/home/dcpam/work/dcpam5/src/main]: :
Move the directory
$ cd ape-exp
Create initial data file "init_T21L16.nc" using "init_data" and "init_data_T21L16.nml"
$ ./init_data -N=init_data_T21L16.nml : *** MESSAGE [restart_file_io] *** ----- Initialization Messages ----- *** MESSAGE [restart_file_io] *** Input:: *** MESSAGE [restart_file_io] *** InputFile = *** MESSAGE [restart_file_io] *** Output:: *** MESSAGE [restart_file_io] *** OutputFile = init_T21L16.nc *** MESSAGE [restart_file_io] *** IntTime = 1. [day] *** MESSAGE [HistoryCreate3] *** "init_T21L16.nc" is created (origin=0. [day]) *** MESSAGE [initial_data] *** NAMELIST group "initial_data_nml" is loaded from "init_data_T21L16.nml". *** MESSAGE [initial_data] *** NAMELIST group "initial_data_nml" is loaded from "init_data_T21L16.nml". *** MESSAGE [initial_data] *** ----- Initialization Messages ----- *** MESSAGE [initial_data] *** Pattern = Small Disturbance of Temperature *** MESSAGE [initial_data] *** TempAvr = 280. *** MESSAGE [initial_data] *** PsAvr = 100000. *** MESSAGE [initial_data] *** QVapAvr = 0.1E-09 *** MESSAGE [HistoryClose] *** "init_T21L16.nc" is closed
Next, create SST data "sst_T21.nc" using "sst_data" and "sst_data_T21.nml".
$ ./sst_data -N=sst_data_T21.nml : *** MESSAGE [restart_surftemp_io] *** ----- Initialization Messages ----- *** MESSAGE [restart_surftemp_io] *** Input:: *** MESSAGE [restart_surftemp_io] *** InputFile = *** MESSAGE [restart_surftemp_io] *** InputName = SurfTemp *** MESSAGE [restart_surftemp_io] *** Output:: *** MESSAGE [restart_surftemp_io] *** OutputFile = sst_T21.nc *** MESSAGE [restart_surftemp_io] *** IntTime = 1. [day] *** MESSAGE [HistoryCreate3] *** "sst_T21.nc" is created (origin=0. [day]) *** MESSAGE [surface_data] *** NAMELIST group "surface_data_nml" is loaded from "sst_data_T21.nml". *** MESSAGE [surface_data] *** NAMELIST group "surface_data_nml" is loaded from "sst_data_T21.nml". *** MESSAGE [surface_data] *** ----- Initialization Messages ----- *** MESSAGE [surface_data] *** Pattern = Hosaka et al. (1998) *** MESSAGE [surface_data] *** SurfTemp = 302. *** MESSAGE [surface_data] *** Albedo = 0.15 *** MESSAGE [surface_data] *** HumidCoeff = 1. *** MESSAGE [surface_data] *** RoughLength = 0.1E-03 *** MESSAGE [surface_data] *** HeatCapacity = 0. *** MESSAGE [surface_data] *** TempFlux = 0. *** MESSAGE [surface_data] *** SurfCond = 0 *** MESSAGE [HistoryClose] *** "sst_T21.nc" is closed
At the last, run a experiment using "dcpam_main" and "dcpam_ape_T21L16.nml". Resolution is T21L16, time step is 20 minutes. Integration time is 7 days. A restart data file, a restart data file of surface data, and some history data files are output.
$ ./dcpam_main -N=dcpam_ape_T21L16.nml
If initial data, surface data, settings of experiments want to be changed, edit "init_data_T21L16.nml", "sst_data_T21.nml", "dcpam_ape_T21L16.nml".
!!! Under construction !!!
!!! Under construction !!!
After editing files under "src" directory, update of contents in a directory for a experiment under "practice" is performed easily as follows. If you edit Fortran 90/95 programs under "src", see RAKURAKU (easier) dcpam5 (under construction) for detail.
Forst, move a directory for a experiment under "practice".
$ cd practice/testXX
Input a following command. A question whether update them may be displayed, then input "Y".
$ make update Update directory "testXX" ? [y/N]: Y
Updated files under "src" directory are copied into "practice/testXX". Old files are renamed to filenames with suffixes ".bak.XX".