Transcript WRF demo/tutorial - University of California, Los Angeles
WRF demo/tutorial 12-13-2004 Robert Fovell
Background on WRF model • “Weather Research and Forecasting” • Co-developed by research and operational communities • Replaces MM5 and Eta models • Current version 2.0.3.1
• Platforms (for model): Linux, IBM/AIX, SGI, Cray, Darwin… and Sun (hideous)
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 topography than Eta • GUI-driven domain configuration, initialization • Fortran 95 (MM5 was F77) • NetCDF output
Further advantages • Allows real data and idealized simulations in same framework • Plug-in architecture (different groups will supply WRF “cores”) • What I’m calling WRF is really the “Advanced Research WRF” (ARW) core
WRF disadvantages • Bleeding edge • Smaller range of physics choices overall • No radiation upper bdry condition [yet] • Software design cumbersome, obtuse [opinion may change with experience] • Nesting is very serious pain [that will change]
Overview • WRF Standard Initialization (WRFSI) – Set up domain – Prepare data for model run – MM5 equiv: terrain, pregrid, regridder • WRF model – Initialize model (MM5’s interpf) – Run model • WRF post-processing • WRF 3DVAR (not covered today)
Web stuff… • • • • • • • http://www.mmm.ucar.edu/wrf/users/user_main.html
model users’ site) (WRF http://www.mmm.ucar.edu/wrf/users/wrfv2/wrf-namelist.html
(WRF namelist.input page) http://www.mmm.ucar.edu/wrf/users/docs/user_guide/contents.h
tml (WRF users guide) http://www.mmm.ucar.edu/wrf/users/tutorial/tutorial-2004.htm
(Slides from 2004 WRF tutorial at NCAR) http://www.atmos.ucla.edu/~fovell/WRF/WRF_ports.html
(Darwin/Mac OS X port) http://www.wrf-model.org/si/ (WRFSI home page) http://www.mmm.ucar.edu/wrf/WG4/tutorial/wrf3dvar_download_ data.htm
(WRF 3DVAR tutorial)
WRF for real data run Example: 24-26 October 2003 (Simi fire)
Directory structure • …/WRFV2/ – Parent directory • …/WRFV2/wrfsi – WRFSI location • …/WRFV2/wrfsi/domains/SoCal – Domain setup “SoCal” location • …/WRFV2/test/em_real – Where real data run will be made
WRFSI …/WRFV2/wrfsi/wrf_tools
Domain 1 terrain
Output from WRFSI • …/WRFV2/wrfsi/domains/SoCal/siprd • IC, BC files for D1, IC file for D2 • Move or link into …/WRFV2/test/em_real
WRF model …/WRFV2/
Directory structure • In ../WRFV2 – main/ – test/ – run/ is where executables live – arch/ – frame/ default config stuff model framework stuff – phys/, dyn_em/ – external/ model physics, solver mainly I/O, MPI stuff test cases live here can run model from here, too
Preparing to run • Configure – ./configure – Select platform, compiler, & whether single threaded, OpenMP or MPI • Compile – ./compile em_real – Creates
real.exe
and
wrf.exe
in ../WRFV2/main – Creates links to real.exe, wrf.exe in ../WRFV2/test/em_real
Configuring • ./configure presents option list • Example: chose option 3, MPI
Compiling • ./compile presents options • Example: chose
compile em_real
– Eulerian mass-coordinate real-data model
Final initialization step • Move to .../WRFV2/test/em_real • Edit namelist.input
– Lots to do here… • Execute ./real.exe
– Creates wrfinput_d01, wrfbdy_d01 files – Run for each nest separately [ouch] • Model executable is wrf.exe
Editing namelist.input
• Web resource – http://www.mmm.ucar.edu/wrf/users/wrfv2/ wrf-namelist.html
• Namelist sections [partial list] – &time_control – &domains – &physics – &dynamics
Setup for single domain run Columns provided for 3 domains (parent & 2 nests) but if max_dom =1 extra columns ignored
Setup for single domain run time_step ~ 6*DX (3*DX for MM5)… unless convective; Change max_dom when ready to activate nest
Setup for single domain run Here I have my MOAD dimensions (80x67) and nest dimensions (61x37) entered. Third column ignored since I only created 2 domains
Setup for single domain run s_we = start index for west-east direction, always 1.
e_we = end index west east, that’s your dimension
Setup for single domain run Make sure dx, dy set correctly -- the model does NOT check GUI-created inputs!
Setup for single domain run Columns provided for 3 domains (parent & 2 nests) but if max_dom =1 extra columns ignored
Setup for single domain run Here, subgrid mixing and computational diffusion is deactivated; model’s odd order advection is diffusive
Run real.exe & wrf.exe
• ./real.exe
– Look for real_em: SUCCESS COMPLETE REAL_EM INIT message • mpirun -np 2 wrf.exe & – MPI version creates rsl.out.000* and rsl.error.000* files – tail -f rsl.out.0000
– Look for wrf: SUCCESS COMPLETE WRF
Files created by WRF run • Named like: wrfout_d01_2003-10-24_12:00:00 [d01 = domain 1; file started 12Z 24 October 2003] • Files can be HUGE (NetCDF inefficient) - to split output files, namelist entry
frames_per_outfile
in &time_control
WRF postprocessing • RIP (just like MM5) • WRF2GrADS converter • WRF2VIS5D converter • Software that can handle NetCDF
RIP • RIP version 4 required • Real data runs only • ripdp_wrf
expname
all wrfout* – Will unpack every wrfout* files in local directory and all variables and call extracted files “expname” – Replace “all” with “basic” for less output • RIP4 unpacker for MM5 is now ripdp_mm5
expname
MMOUT*
Animation using RIP • Part of Domain 1 shown for 24Oct2003 case QuickTime™ and a Video decompressor are needed to see this picture.
Color: 2 m temperature; topo contours; 10 m wind vectors
Nesting • Created domains 1, 2 for SoCal in WRFSI • WRFSI created wrf_real_input_em* files for both domains • • Need to run
real.exe
namelist.input
real.exe run once for each domain needs to be edited for each • Files have to be renamed to “fool” real.exe
• Web page explanation: http://www.mmm.ucar.edu/wrf/users/wrfv2/runwrf.html
MM5 v. WRF on nesting • MM5: – Need only initialize parent (outer) grid – MM5 interpolates to nests, using nest terrain files created using
terrain
• WRF – If let model interpolate to nests, higher res topo files are NOT used, unlike MM5 – So, you need to init each domain separately with real.exe, and that takes fooling real.exe…
Fooling real.exe - 2 domain example • Start with domain 2 first • Edit namelist.input, putting nest information in first column – Previously, that info was for parent grid • Rename wrf_real_input_em.d02* IC file as wrf_real_input_d01* [after saving “real” d01 file!!!!] – Here, it’s wrf_real_input_em.d02.2003-10-24_12:00:00 being renamed as wrf_real_input_em.d01.2003-10-24_12:00:00 • Then…
Fooling real.exe - 2 domain example (cont.) • This creates a
wrfinput_d01
real.exe thinks it’s domain #1) file (since • Rename that file as really for domain #2)
wrfinput_d02
(since it’s • Restore original domain #1 IC file – Here, it’s wrf_real_input_em.d01.2003-10-24_12:00:00 • Re-edit namelist.input, making sure domain #1 info in 1st column, domain #2 in 2nd… • Run real.exe again – Creates
wrfbdy_d01
,
wrfinput_d01
Nesting initialization, step by step • This should be scripted somehow, to avoid mistakes • Create your namelist.input, with parent and nest domain info, start and stop times, etc… – Set
max_dom
= 2 – Set
input_from_file
= .true., .true.
• ICs for both domains will be read in from files • Those filenames will be wrfinput_d01, wrfinput_d02
Nesting initialization, step by step (cont.) • Rename original d01 IC file as • Copy d02 IC file with d01 IC file original name • Copy namelist.input as namelist.input.real
• Edit namelist.input
– This is your temporary namelist.input file – Set stop time = start time [only want IC] – Replace parent domain info in column #1 with nest info from column #2
Nesting initialization, step by step (cont.) • Temporary namelist.input’s &time_control
Nesting initialization, step by step (cont.) • Temporary namelist.input’s &domains • Run real.exe
• Rename wrfinput_d01 as wrfinput_d02
Nesting initialization, step by step (cont.) • Clean up: – Move namelist.input.real to namelist.input
– Move wrf_real_input_em.d01.2003-10-24_12:00:00.real
wrf_real_input_em.d01.2003-10-24_12:00:00 back to • Run real.exe again, this time creating wrfinput_d01 and wrfbdy_d01 • Now you have – wrfinput files for d01 and d02 – wrfbdy file for d01 – namelist.input file controlling both domains • Run the model!
Animation of nest • Domain 2 shown for 24Oct2003 case QuickTime™ and a Video decompressor are needed to see this picture.
Color: 2 m temperature; topo contours; 10 m wind vectors
Restarting WRF • In namelist.input, set
restart_interval
desired restart output file interval to (minutes) • To restart a simulation – Set
restart
= .true.
– Set
start_*
time to reflect restart time
WRF performance on my machines
Compile flag notes • On PCs, Intel beats PGF handily – But use
-mp
flag for accuracy, consistency as number of CPUs varied • This flag does NOT refer to multiprocessing w/ Intel compiler – Don’t use
-xW
[vectorization] flag w/o checking (my results so far always wrong) • On Macs, IBM xlf is a great compiler – But use
-qfloat=nomaf
flag for accuracy – My tests: virtually identical results between optimized and non-optimized when
nomaf
used
WRF for idealized cases • • Ready-made examples include 2D squall lines and 3D supercells
compile em_squall2d_x
squall line example for the 2D x-z plane • In …/WRFV2/test/em_squall2d_x , run
ideal.exe
then
wrf.exe
• To change IC for this case, modify …/WRFV2/dyn_em/module_initialize_squall2d_x.F
recompile and and
Ideal run output using WRF2GrADS
- End -