Transcript Document

WRF Tutorial
For Version 2.2 / Synoptic Lab
10/3/2007
Robert Fovell
[email protected]
http://tinyurl.com/2uagrc or
http://www.atmos.ucla.edu/~fovell/WRF/wrf_tutorial_2007.ppt.htm
Background on WRF model
• “Weather Research and Forecasting”
• Co-developed by research and operational
communities
– ARW core “Advanced Research WRF”
– NMM core “Nonhydrostatic Mesoscale Model”
• Supercedes MM5 and Eta models
• Current version 2.2
• Platforms include Linux and Mac OS X
WRF advantages
• Better numerics than MM5
– Arakawa C grid, R-K scheme, odd order advection
w/ implicit diffusion
– Much less diffusive, larger effective resolution,
permits longer time steps
• Better handling of topography than Eta
(original NAM)
– NAM model is now WRF-NMM
• Fortran 95 (MM5 was F77)
• NetCDF, GRIB1 and GRIB2
Further advantages
• MPI from the ground up
• Allows real data and idealized simulations in
same framework
• Plug-in architecture (different groups will
supply WRF “cores”)
• Recently added: moving nests and nudging
• NetCDF output - many great tools such as
NetCDF operators: http://nco.sourceforge.net/
WRF disadvantages
• Bleeding edge
• Smaller range of physics choices (tho more
modern)
• Software design is unintuitive for physical
scientists
• Can take hours to compile
– But does not need frequent recompiling
• Comparatively slower than MM5
• NetCDF files can be huge
WRF and related software
• WRF Preprocessing System (WPS)
– Replaces/supercedes WRF SI
• WRF-ARW model
– Single node and MPI
• WRF postprocessing software
– RIP (read/interpolate/plot)
– GrADS
• Specific to “hurricane” Synoptic Lab
environment
• Neglecting for now: GRIB2, ARWpost
Web resources
• WRF model users site
http://www.mmm.ucar.edu/wrf/users/user_main.html
• ARW users’ guide
http://www.mmm.ucar.edu/wrf/users/docs/user_guide/contents.
html
• WRF-ARW/WPS online tutorial
http://www.mmm.ucar.edu/wrf/OnLineTutorial/index.htm
• WRF namelist description
http://www.mmm.ucar.edu/wrf/users/docs/user_guide/users_gui
de_chap5.html#Nml
• Tutorial presentations
http://www.mmm.ucar.edu/wrf/users/tutorial/tutorial_presentatio
n.htm
My resources
• This presentation (PPT format)
http://www.atmos.ucla.edu/~fovell/WRF/wrf_tutori
al_2007.ppt
• WRF on Mac OS X
http://www.atmos.ucla.edu/~fovell/WRF/WRF_ports.h
tml
http://macwrf.blogspot.com
Setup on “hurricane”
machines
Presumed:
• tcsh environment
• Intel Fortran compiler (64-bit)
• my environment setup employed
• precompiled versions of WRF, WPS, RIP and wrf_to_grads
Environment setup
> …is the command line prompt
• If you don’t have a .cshrc file (worth
saving) - recommended
> cp /home/fovell/.cshrc .
> source .cshrc
• If you want to keep your present .cshrc
> cp /home/fovell/cshrc_fovell.csh .
> ./cshrc_fovell.csh
[you need to have the compiler environment set up
already]
# RGF additions [abridged]
setenv RIP_ROOT /home/fovell/RIP4
setenv GADDIR /home/fovell/lib/grads
setenv GASCRP /home/fovell/gradslib
#
alias
alias
alias
alias
alias
alias
alias
lsm 'ls -alt | more'
rm 'rm -i'
cp 'cp -i'
mv 'mv -i'
trsl ' tail -f rsl.out.0000'
mpirun 'nohup time /home/fovell/mpich-1.2.7p1/bin/mpirun'
w2g '/home/fovell/WRF2GrADS/wrf_to_grads'
setenv P4_GLOBMEMSIZE 4096000
setenv P4_SOCKBUFSIZE 65536
unlimit
limit coredumpsize 0
This environment uses my versions of
netcdf, mpich, grads, RIP
Set up a run directory
> cd
> mkdir FELIX
> cd FELIX
> cp /home/fovell/WRFtutorial/make_all_links.csh .
> make_all_links.csh
> cp /home/fovell/WRFtutorial/namelist.* .
[copies namelist.input, namelist.wps]
WRF for real-data run
Hurricane Felix (2007)
[This example uses data that
will not remain online]
WPS overview
• Tasks
– (1) set up a domain (can be reused)
• geogrid.exe
– (2) unpack parent model data (e.g., from GFS,
NAM, etc.)
• ungrib.exe
– (3) prepare unpacked data for WRF
• metgrid.exe
• Controlled by namelist.wps
namelist.wps
&share
wrf_core = 'ARW',
max_dom = 1,
start_date = '2007-09-02_00:00:00','2007-09-02_00:00:00',
end_date
= '2007-09-03_12:00:00','2007-09-03_12:00:00',
interval_seconds = 10800,
io_form_geogrid = 2,
/
• For start_date, end_date need one column for each domain
• interval_seconds is parent model data frequency (here, 3 h)
namelist.wps (cont.)
&geogrid
parent_id
=
1,
1,
parent_grid_ratio =
1,
3,
i_parent_start
=
1, 53,
j_parent_start
=
1, 65,
e_we
= 70, 259,
e_sn
= 40, 199
geog_data_res
= '2m','2m',
dx = 36000,
dy = 36000,
map_proj = 'lambert',
ref_lat
= 15.0
ref_lon = -75.0,
truelat1 = 29.6,
truelat2 = 29.6,
stand_lon = -75.0,
geog_data_path = '/home/fovell/WPS_GEOG/geog'
/
there is more…
geogrid - create domain
> geogrid.exe
* creates geo_em.d01.nc (a NetCDF file)
* look for “Successful completion of geogrid.”
> plotgrids.exe
* creates gmeta
> idt gmeta
* uses NCAR graphics tool to view domain
‘gmeta’ file
> ncdump geo_em.d01.nc | more
netcdf geo_em.d01 {
dimensions:
Time = UNLIMITED ; // (1 currently)
DateStrLen = 19 ;
west_east = 69 ;
south_north = 39 ;
south_north_stag = 40 ;
west_east_stag = 70 ;
land_cat = 24 ;
soil_cat = 16 ;
month = 12 ;
variables:
char Times(Time, DateStrLen) ;
float XLAT_M(Time, south_north, west_east) ;
XLAT_M:FieldType = 104 ;
XLAT_M:MemoryOrder = "XY " ;
XLAT_M:units = "degrees latitude" ;
XLAT_M:description = "Latitude on mass grid" ;
XLAT_M:stagger = "M" ;
Parent model data issues
• Sources include GFS, NAM, NARR
reanalysis data, etc.
• Need a different Vtable (variable
table) for each source
– e.g., Vtable.GFS, Vtable.AWIP (NAM),
Vtable.NARR, etc.
– Look in /home/fovell/WRFtutorial
Accessing parent model data
> link_grib.csh /home/fovell/2007090200/gfs
* links to where parent model for case resides
** data files start with ‘gfs*’
> ln -sf /home/fovell/WRFtutorial/Vtable.GFS Vtable
* specifies appropriate Vtable
> ungrib.exe
* extracts parent model data
* look for “Successful completion of ungrib.”
Next step: metgrid
> metgrid.exe
...hopefully you see ...
“Successful
completion of metgrid.”
...Output looks like...
met_em.d01.2007-09-02_00:00:00.nc
met_em.d01.2007-09-02_03:00:00.nc
met_em.d01.2007-09-02_06:00:00.nc
met_em.d01.2007-09-02_09:00:00.nc
met_em.d01.2007-09-02_12:00:00.nc
met_em.d01.2007-09-02_15:00:00.nc
met_em.d01.2007-09-02_18:00:00.nc
met_em.d01.2007-09-02_21:00:00.nc
met_em.d01.2007-09-03_00:00:00.nc
met_em.d01.2007-09-03_03:00:00.nc
met_em.d01.2007-09-03_06:00:00.nc
met_em.d01.2007-09-03_09:00:00.nc
met_em.d01.2007-09-03_12:00:00.nc
ncdump on a metgrid file
netcdf met_em.d01.2007-09-02_00:00:00 {
dimensions:
Time = UNLIMITED ; // (1 currently)
DateStrLen = 19 ;
west_east = 69 ;
south_north = 39 ;
num_metgrid_levels = 27 ;
num_sm_levels = 4 ;
num_st_levels = 4 ;
south_north_stag = 40 ;
west_east_stag = 70 ;
z-dimension0012 = 12 ;
z-dimension0016 = 16 ;
z-dimension0024 = 24 ;
This data source has 27 vertical levels.
This will vary with source.
WRF model steps
• Tasks
– Run real.exe (to finish creation of WRF
model input data)
– Run wrf.exe
• Both use namelist.input
– Configured separately from namelist.wps
but includes overlapping information
namelist.input
&time_control
run_days
run_hours
run_minutes
run_seconds
start_year
start_month
start_day
start_hour
start_minute
start_second
end_year
end_month
end_day
end_hour
end_minute
end_second
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0,
36,
0,
0,
2007 , 2007 ,
09 , 09 ,
02 , 02 ,
00 , 00 ,
00, 00,
00, 00,
2007 , 2007 ,
09 , 09 ,
03 , 03 ,
12 , 12 ,
00, 00,
00, 00,
For start_*, end_*, one column per domain
namelist.input (cont.)
interval_seconds
input_from_file
history_interval
frames_per_outfile
restart
restart_interval
=
=
=
=
=
=
10800
.true., .true.,
60, 60,
6, 6,
.false.,
5000,
interval_seconds matches namelist.wps
input_from_file should normally be ‘true’ for each domain
history_interval - how frequently (in min) output created
frames_per_outfile - number of writes in each history file
If wish to restart mode, restart = .true.
(and set model start_* data to restart time)
restart_interval = frequency (min) for writing restart files
namelist.input (cont.)
&domains
time_step
time_step_fract_num
time_step_fract_den
max_dom
s_we
e_we
s_sn
e_sn
s_vert
e_vert
num_metgrid_levels
dx
dy
grid_id
parent_id
i_parent_start
j_parent_start
parent_grid_ratio
parent_time_step_ratio
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
150,
0,
1,
1,
1,
70,
1,
40,
1,
31,
27
36000,
36000,
1,
0,
0,
0,
1,
1,
1,
259,
1,
199,
1,
31,
1,
94,
1,
91,
1,
31,
12000,
12000,
2,
1,
53,
65,
3,
3,
333,
333,
3,
2,
30,
30,
3,
3,
namelist.input (cont.)
&physics
mp_physics [Microphysics]
=
ra_lw_physics [Longwave rad]
=
ra_sw_physics [Shortwave rad]
=
radt [Radiation time step; min]
=
sf_sfclay_physics [Surface layer]
=
sf_surface_physics [Surface]
=
bl_pbl_physics [Boundary layer]
=
bldt [Boundary layer time step; min]=
cu_physics [cumulus scheme]
=
cudt
[cumulus time step; min] =
isfflx
=
ifsnow
=
icloud
=
surface_input_source
=
num_soil_layers
=
mp_zero_out
=
1 , 1 ,
1 , 1 ,
1 , 1 ,
10 , 10 ,
1 , 1 ,
1 , 1 ,
1 , 1 ,
0,
0,
1 , 0 ,
5 ,
1,
0,
1,
1,
5 ,
0 ,
Notes on physics
• Need to use SAME microphysics (mp)
scheme in each domain, but can use
different cumulus (cu) schemes
• Some physics combinations work better
than others, some don’t work at all -this is only lightly documented
• bldt = 0 means boundary layer scheme
is called every time step
namelist.input (cont.)
&dynamics
w_damping
diff_opt [subgrid turbulence]
km_opt
[
“
]
diff_6th_opt [numerical smoothing]
diff_6th_factor [
“
]
base_temp
damp_opt
zdamp
dampcoef
khdif
kvdif
=
=
=
=
=
=
=
=
=
=
=
0,
1,
4,
0,
0.12,
290.
0,
5000.,
0.01,
0,
0,
5000.,
0.01,
0,
0,
5000.,
0.01
0,
0,
Only some diff_opt/km_opt combinations make sense,
and choices are resolution-dependent.
More info:
http://www.mmm.ucar.edu/wrf/users/tutorial/tutorial_presentation.htm
http://www.mmm.ucar.edu/wrf/users/tutorial/200707/WRF_Physics_Dudhia.pdf
real.exe
• Has changed a lot since version 2.1.2
• Number of vertical model levels now specified
w/ real.exe
e_vert
num_metgrid_levels
= 31,
= 27
31,
31,
• The num_metgrid_levels comes from parent
model; you set e_vert (number of WRF levels)
here
– Can reset WRF levels by rerunning real.exe
– Can also specify which levels you want
Setting levels in namelist.input
(optional)
• WRF uses “sigma” or “eta” coordinates (1.0 is model
bottom, 0.0 is top)
• Added lines to &domains in namelist.input, presuming
e_vert = 51, requests a model top pressure of 50 mb
(5000 Pa) and concentrates vertical resolution in lower trop
p_top_requested
= 5000
eta_levels = 1.00,0.9969,0.9935,0.9899,0.9861,0.9821,
0.9777,0.9731,0.9682,0.9629,0.9573,0.9513,
0.9450,0.9382,0.9312,0.9240,0.9165,0.9088,
0.9008,0.8925,0.8840,0.8752,0.8661,0.8567,
0.8471,0.8371,0.8261,0.8141,0.8008,0.7863,0.7704,
0.7531,0.7341,0.7135,0.6911,0.6668,0.6406,
0.6123,0.5806,0.5452,0.5060,0.4630,0.4161,
0.3656,0.3119,0.2558,0.1982,0.1339,0.0804,0.0362,0.0000,
Run real.exe
> mpirun -np 2 real.exe
[email protected]'s password:
starting wrf task
0 of
2
starting wrf task
1 of
2
2.624u 1.248s 0:12.63 30.5%
0+0k 0+0io 0pf+0w
> tail rsl.out.0000
--> extrapolating TEMPERATURE near sfc: i,j,psfc, p target
d01 2007-09-03_12:00:00 forcing artificial silty clay loam
LAND CHANGE =
0
WATER CHANGE =
0
d01 2007-09-03_12:00:00 Timing for processing
0 s.
LBC valid between these times 2007-09-03_09:00:00.0000 2007-09-03_
d01 2007-09-03_12:00:00 Timing for output
0 s.
d01 2007-09-03_12:00:00 Timing for loop #
13 =
0 s.
d01 2007-09-03_12:00:00 real_em: SUCCESS COMPLETE REAL_EM INIT
Aside: password-less
execution
• Last slide’s mpirun command asked for
2 cpus (-np 2)
• By default, 2 cpus on same workstation
are accessed
• To avoid being asked for password:
> cd ~/.ssh
> ssh-keygen -t dsa [then hit return 4 times]
Your public key has been saved in /home/wrf/.ssh/id_dsa.pub.
The key fingerprint is:
cc:78:50:1e:77:23:ca:8f:81:3d:f0:d2:a4:8a:2e:a7 [email protected]
> cp id_dsa.pub authorized_keys [if does not already exist]
> cd ../FELIX
Run wrf.exe
• Output of real.exe is wrfbdy_d01 and
wrfinput_d01 (NetCDF files)
– Additional wrfinput files created for nests if
max_dom > 1
• Run the model
> mpirun -np 4 wrf.exe &
• Creates wrfout_d01* files keyed by simulation
date, and rsl.out/rsl.error files for each CPU
requested
FELIX output
• Namelist set up to do 36 h run
• Look for at end of rsl.out.0000 file:
d01 2007-09-03_12:00:00 wrf: SUCCESS COMPLETE WRF
• Output files created:
wrfout_d01_2007-09-02_00:00:00
wrfout_d01_2007-09-02_06:00:00
wrfout_d01_2007-09-02_12:00:00
wrfout_d01_2007-09-02_18:00:00
wrfout_d01_2007-09-03_00:00:00
wrfout_d01_2007-09-03_06:00:00
wrfout_d01_2007-09-03_12:00:00
• This is because history_interval was 60
min and frames_per_outfile was 6
Postprocessing WRF output:
RIP and GrADS
(Vis5D and ARWpost also exist)
RIP
• RIP operates in batch mode, using input
scripts
• RIP can overlay fields, do arbitrary crosssections, calculate trajectories, and create
Vis5D output files
• RIP tasks include
– Unpack model output data (ripdp_wrf)
– Create RIP plotting scripts (rip.in files)
– Execute scripts (rip)
• RIP can create a LOT of output files
RIP procedure
> ripdp_wrf run1 all wrfout_d01*
[this creates a new dataset called ‘run1’
and uses all wrfout_d01 files created]
> rip run1 rip.T2.in
[the rip.T2.in file is a script containing
RIP plotting commands]
[the output file, rip.T2.cgm, is a graphics
metafile]
> You can view the cgm file using idt or ictrans
36 h forecast
(2 m T - color; SLP - contour; 10 m winds - vector)
RIP script
==========================================================================
feld=T2; ptyp=hc; vcor=s; levs=1fb; cint=0.5; cmth=fill;>
arng; cbeg=283; cend=309; cosq=0,violet,12.5,blue,25,green,37.5,>
light.green,50,white,62.5,yellow,75,orange,87.5,red,100,brown
feld=U10,V10; ptyp=hv; vcmx=20.0; colr=black; linw=1; intv=2;
feld=slp; ptyp=hc; vcor=s; levs=1fb; cint=4; nohl;colr=blue;linw=2;nolb
feld=map; ptyp=hb; colr=dark.blue; linw=2;
feld=tic; ptyp=hb
==========================================================================
http://www.mmm.ucar.edu/mm5/documents/ripug_V4.html
GrADS and wrf_to_grads
• GrADS produces beautiful graphics
• Batch scriptable AND interactive
• Interactive: good for overlaying different
datasets, computing difference fields [can
also be done in RIP]
• Doesn’t create huge numbers of intermediate
files like RIP
• Arbitrary cross-sections are very difficult to
construct
GrADS procedure
• Copy control_file from
/home/fovell/WRFtutorial and edit
• Select variables desired and define
wrfout files to be accessed (next slide)
• w2g control_file run1g
• Creates run1g.ctl, run1g.dat
http://grads.iges.org/grads/head.html
control_file
-3
! times to put in GrADS file, negative ignores this
0001-01-01_00:00:00
0001-01-01_00:05:00
0001-01-01_00:10:00
end_of_time_list
! 3D variable list for GrADS file
! indent one space to skip
U
! U Compoment of wind
V
! V Component of wind
UMET
! U Compoment of wind - rotated (diagnostic)
VMET
! V Component of wind - rotated (diagnostic)
W
! W Component of wind
THETA
! Theta
TK
! Temperature in K
TC
! Temperature in C
List of available 2D fields follows
control_file (cont.)
! All list of files to read here
! Indent not to read
! Full path OK
wrfout_d01_2007-09-02_00:00:00
wrfout_d01_2007-09-02_06:00:00
wrfout_d01_2007-09-02_12:00:00
wrfout_d01_2007-09-02_18:00:00
wrfout_d01_2007-09-03_00:00:00
wrfout_d01_2007-09-03_06:00:00
wrfout_d01_2007-09-03_12:00:00
end_of_file_list
! Now we check to see what to do with the data
real
! real (input/output) / ideal / static
1
! 0=no map background in grads, 1=map background in grads
-1
! specify grads vertical grid
! 0=cartesian,
! -1=interp to z from lowest h
! 1 list levels (either height in km, or pressure in mb)
1000.0
950.0
900.0
850.0
800.0
750.0
Running GrADS
> gradsnc -l
[GrADS graphics output window opens]
ga-> open run1g
[ga-> is GrADS environment prompt]
ga-> /home/fovell/WRFtutorial/T2_movie.gs
[executes this GrADS script;
hit return to advance a frame]
ga-> quit
[to exit]
36 h forecast
(2 m T and 10 m winds)
= end =