Presentation

advertisement
NMMB tutorial
Running NMMB
Ratko Vasic
NCWCP, April 1st 2015
Retrieving model source code (SVN)
• https://svnemc.ncep.noaa.gov/projects/nems/trunk
• Usage:
#>svn co https://svnemc.ncep.noaa.gov/projects/nems/trunk
• Directory structure:
trunk:
exe/
job_notused/
README
README.GFS
README.NMM
README.TESTS
src/
tests/
Directory structure contd.
src:
atmos/
chem/
conf/
configure*
ENS_Cpl/
ESMFVersionDefine_ESMF_3.h
ESMFVersionDefine_ESMF_630rAPI.h
ESMFVersionDefine_ESMF_NUOPC.h
ESMFVersionLogic.h
MAIN_NEMS.F90
makefile
module_EARTH_GENERIC_COMP.F90
module_EARTH_GRID_COMP.F90
module_EARTH_INTERNAL_STATE.F90
module_MEDIATOR.F90
module_NEMS_GRID_COMP.F90
module_NEMS_INTERNAL_STATE.F90
atmos:
fim/
gen/
gsm/
io/
makefile
module_ATM_GRID_COMP.F90
module_ATM_INTERNAL_STATE.F90
nmm/
phys/
post/
share/
Compilation on known machines:
#> cd ~/trunk/src
#> ./configure
Run ./configure with one argument:
'configure 3_wcoss'
: ESMF 3.1.0rp2 library on wcoss
'configure 3_zeus'
: ESMF 3.1.0r series library
(i.e. ESMF 3.1.0rp2, 3.1.0rp5) on zeus
'configure 3_gaea'
: ESMF 3.1.0rp2 library on gaea
'configure 3_yellowstone'
: ESMF 3.1.0rp2 library on
yellowstone
....................
....................
#> ./configure 6_nmm_zeus
#> make nmm
#> ls –g ../exe
total 30548
-rwxr-xr-x 1 ptmp
11801 Mar 28 00:05 mkDepends.pl
-rwxr-xr-x 1 ptmp 31248845 Mar 29 07:02 NEMS.x
Configure model
• Configure directory
#> cd ~/trunk/src/conf
#> ls
configure.nems.Gaea.intel
configure.nems.Gaea.pgi
configure.nems.Jet.ifort
configure.nems.Linux.g95
.......
modules.nems.Gaea_ESMF_NUOPC*
modules.nems.wcoss_ESMF_3*
modules.nems.wcoss_ESMF_630rAPI_gsm*
modules.nems.wcoss_ESMF_630rAPI_nmm*
.......
#> cat modules.nems.Zeus_ESMF_630rAPI_nmm
# This script is responsible for loading modules that are
# compatible with the ESMF 6.3.0r API.
module purge
module load mpt intel esmf/6.3.0rp1 netcdf
Configure model (contd.)
• Configure file (Snippet form configure.nems.Zeus.intel_12)
SHELL
include
ESMF_INC
ESMF_LIB
NETCDF_INC
NETCDF_LIB
= /bin/sh
$(ESMFMKFILE)
= $(ESMF_F90COMPILEPATHS)
= $(ESMF_F90LINKPATHS) $(ESMF_F90LINKRPATHS) $(ESMF_F90ESMFLINKLIBS)
= -I$(NETCDF)/include
= -L$(NETCDF)/lib -lnetcdf
LIBDIR=/contrib/nceplibs/nwprod/lib
NEMSIO_INC
= -I${LIBDIR}/incmod/nemsio
BACIO_LIB
= -L${LIBDIR} -lbacio_4
EXTLIBS
= $(NEMSIO_LIB) \
$(BACIO_LIB) \
FC
= ifort -lmpi -openmp -convert big_endian -assume byterecl -mkl=sequential
FPP
= -fpp
F77
= ifort -lmpi -openmp -convert big_endian -assume byterecl -mkl=sequential
FREE
= -free
FIXED
= -fixed
R8
= -r8
FINCS
= $(ESMF_INC) $(NEMSIO_INC) $(NETCDF_INC)
TRAPS
=
#TRAPS
= -g -fno-inline -no-ip -traceback -ftrapuv -fpe0 -ftz -check all -check
noarg_temp_created -fp-stack-check
FFLAGS
OPTS_NMM
= $(TRAPS) $(FINCS) -fp-model strict
= -O3
Procedure summary:
• checkout model:
svn co https://svnemc.ncep.noaa.gov/projects/nems/trunk
• configure:
cd ~/trunk/src ; ./configure 6_nmm_zeus
• make:
make nmm
• executable:
cd ~trunk/exe ; ls NEMS.x
Regression tests
• More groups work on the same project
• Possibility of breaking other’s code
#> cd ~trunk/tests
#> ./rt.sh
Usage: ./rt.sh -c <model> | -f | -s | -l <file> | -m | -h
-c
-f
-s
-l
-m
-h
create new baseline results for <model>
run full suite of regression tests
run standard suite of regression tests
runs test specified in <file>
compare against new baseline results
display this help
Use of regression tests to run the model
#> cd ~trunk/tests
#> more rt.conf
COMPILE | nmm_post
COMPILE | nmm
RUN
| nmm_cntrl
RUN
| nmm_nemsio
RUN
| nmm_rest
| standard | wcoss | 6.3r_nmm
| standard | zeus | 6_nmm
| standard |
| nmm
|
|
|
|
|
|
|
|
|
|
|
Use of regression tests to run the model
#> cd ~trunk/tests
#> more rt.conf
COMPILE | nmm_post
COMPILE | nmm
RUN
| nmm_cntrl
RUN
| nmm_nemsio
RUN
| nmm_rest
| standard | wcoss | 6.3r_nmm
| standard | zeus | 6_nmm
| standard |
| nmm
|
|
|
|
|
|
|
|
|
|
|
Use of regression tests to run the model
#> cd ~trunk/tests
#> more rt.conf
COMPILE | nmm
RUN
| nmm_cntrl
| standard | zeus
| standard |
#> ./rt.sh –s
Three files:
nmm_run
nmm_qsub
configure_file_01
| 6_nmm
| nmm
|
|
Running model (nmm_run)
RUNDIR=_RUND_
SRCDIR=_SRCD_
mkdir -p $RUNDIR
cd $RUNDIR
cp _RTPWD_/NMMB_reg/input_nmmb_regional.d01_nemsio input_domain_01_nemsio
cp _RTPWD_/NMMB_reg/nmmb_rst_01_nio_0024h_00m_00.00s restart_file_01_nemsio
cp _RTPWD_/NMMB_reg/boco.* .
cp _RTPWD_/data/* .
cp $SRCDIR/tests/solver_state.txt .
elif [ $SCHEDULER = 'pbs' ]; then
cp $SRCDIR/tests/nmm_qsub .
qsub nmm_qsub
Running model (nmm_qsub)
#!/bin/sh
#PBS -o out
#PBS -e err
#PBS -N rt_31806_1
#PBS -A nems
#PBS -l procs=48
#PBS -l walltime=00:15:00
export MPI_GROUP_MAX=96
export ESMF_RUNTIME_COMPLIANCECHECK=ON:depth=4
source .../modules.nems
module list
cd $PBS_O_WORKDIR
echo "Model started: " `date`
mpiexec_mpt -prefix " %g:" -np $PBS_NP ./NEMS.x
echo "Model ended:
" `date`
Running model (configure_file)
##### Grid Decomposition #####
inpes: 05
# Number of compute tasks in the I direction
jnpes: 09
# Number of compute tasks in the J direction
##### Fundamental Timestep (seconds) #####
dt_int: 180
# Integer seconds
dt_num: 0
# Numerator of fractional second
dt_den: 1
# Denominator of fractional second
nhours_fcst:
minutes_history:
48
180
# Length of the forecast (hours)
# Frequency of history output (minutes)
restart:
minutes_restart:
false # True--> A restarted run
720
# Frequency of restart output (minutes)
Running model (configure_file)
(contd.)
global:
true
hydro:
false
adiabatic: false
# True--> Global ; False--> Regional
# True--> Hydrostatic ; False--> Nonhydrostatic
# True--> Adiabatic ; False--> Diabatic
shortwave: rrtm
longwave: rrtm
convection: bmj
microphysics: fer_hires
turbulence: myj
sfc_layer: myj
land_surface: noah
nemsio_input: false
write_hst_bin:
true
write_hst_nemsio: true
write_rst_bin:
true
write_rst_nemsio: true
#
#
#
#
# Radiation schemes
#
#
#
#
#
Convection scheme
Microphysics scheme
Turbulence schemes
Surface layer schemes
Land surface schemes
True-->
True-->
True-->
True-->
Write
Write
Write
Write
history
history
restart
restart
files
files
files
files
in
in
in
in
binary
NEMSIO
binary
NEMSIO
format
format
format
format
Adding new variable
• Adding local variable to internal state:
Add it to a file:
~trunk/src/atmos/nmm/module_SOLVER_INTERNAL_STATE.F90
follow existing example i.e. “MAVAIL”
REAL(kind=KFPT),DIMENSION(:,:),ALLOCATABLE :: MAVAIL
ALLOCATE(int_state%MAVAIL(IMS:IME,JMS:JME))
REAL(kind=KFPT),DIMENSION(:,:),ALLOCATABLE :: XXX
ALLOCATE(int_state%XXX(IMS:IME,JMS:JME))
• Adding variable for history/restart:
1) Add it to a file:
~trunk/src/atmos/nmm/module_SOLVER_INTERNAL_STATE.F90
follow existing example i.e. “ACPREC”
REAL(kind=KFPT),DIMENSION(:,:),ALLOCATABLE :: ACPREC
CALL SET_VAR_PTR(int_state%VARS,NV,'ACPREC'
,int_state%ACPREC ,(/ IMS,JMS /),(/ IME,JME /) )
2) Add in output namelist:
~trunk/tests/solver_state.txt
follow same example (“ACPREC”)
'ACPREC'
H
R
O - - T 'Accumulated precip (m)'
Restarting model
• While running original run, turn on restart file
writing and choose interval in configure_file:
minutes_restart:
120 # Frequency of restart output (minutes)
write_rst_nemsio: true # True--> Write restart files in NEMSIO format
• Running restarted run:
mv nmmb_rst_01_nio_0016h_00m_00.00s restart_file_01_nemsio
In configure file:
restart: true
# True--> A restarted run
• Submit model as usual, it will find restart file,
read in data and continue from that point
Writing time series
• copy file ~trunk/tests/ts_locations.nml to run
directory
• choose variables in solver_state.txt :
'PBLH' H
R
O
-
-
T
'PBL height
• ts_locations.nml example:
&TS_LOCATIONS
NPOINTS=2,
POINTS_LON=-106.0, -110.0,
POINTS_LAT=54.0, 50.0
/
(m)'
Download
Related flashcards
Create Flashcards