Your Federal Quarterly Tax Payments are due April 15th Get Help Now >>

WRF demotutorial by yurtgc548


									WRF demo/tutorial

      Robert Fovell
 Background on WRF model
• “Weather Research and Forecasting”
• Co-developed by research and
  operational communities
• Replaces MM5 and Eta models
• Current version
• 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
• 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…
• (WRF
  model users’ site)
  (WRF namelist.input page)
  tml (WRF users guide)
  (Slides from 2004 WRF tutorial at NCAR)
  (Darwin/Mac OS X port)
• (WRFSI home page)
  _data.htm (WRF 3DVAR tutorial)
WRF for real data run

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

Domain 1
       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

        Directory structure
• In ../WRFV2
  – main/       is where executables live
  – arch/       default config stuff
  – frame/      model framework stuff
  – phys/, dyn_em/ model physics, solver
  – external/   mainly I/O, MPI stuff
  – test/       test cases live here
  – run/        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
• ./configure presents option list

• Example: chose option 3, MPI
• ./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
• 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:
  [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 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
  – 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

                               QuickTime™ an d a
                             Video d ecompressor
                        are need ed to see this p icture .

      Color: 2 m temperature; topo contours; 10 m wind vectors
• Created domains 1, 2 for SoCal in WRFSI
• WRFSI created wrf_real_input_em* files for
  both domains
• Need to run real.exe once for each domain
• namelist.input needs to be edited for each
  real.exe run
• Files have to be renamed to “fool” real.exe
• Web page explanation:
    MM5 v. WRF on nesting
• MM5:
  – Need only initialize parent (outer) grid
  – MM5 interpolates to nests, using nest terrain files
    created using terrain
  – 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
• 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
   – 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 file (since
  real.exe thinks it’s domain #1)
• Rename that file as wrfinput_d02 (since it’s
  really for domain #2)
• 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
• This should be scripted somehow, to avoid
• 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 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 d ecompressor
                       are need ed to see this picture.

     Color: 2 m temperature; topo contours; 10 m wind vectors
           Restarting WRF
• In namelist.input, set restart_interval to
  desired restart output file interval
• To restart a simulation
  – Set restart = .true.
  – Set start_* time to reflect restart time
WRF performance on my
          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
  – 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 for the 2D x-z plane
  squall line example
• In …/WRFV2/test/em_squall2d_x, run ideal.exe and
  then wrf.exe
• To change IC for this case, modify
  …/WRFV2/dyn_em/module_initialize_squall2d_x.F and
Ideal run output using
- End -

To top