[Wrf-users] OBS nudging

Brian Reen reenb at meteo.psu.edu
Wed Sep 7 12:19:20 MDT 2011


Bart,
Regarding the auxinput11_interval_* settings for obs nudging, I think 
the following email written by Al Bourgeois at NCAR will clear things up:

*********************************************************************

There is some redundancy here with the auxiput11_interval and the
obs-nudging obs_ionf switch. All the auxinput11_interval variable really
does is give a frequency at which "wrf alarms" calls subroutine
wrf_fddaobs_in, which in turn calls subroutine in4dob to do the reading
of obs data based on the obs_ionf flag. So the safest thing to do is
simply to force the wrf alarms to call wrf_fddaobs_in every model
timestep. You can do this with the following namelist entry ... this is
what I always use:

   auxinput11_interval       =  1,    1,    1,    1,    1,
   auxinput11_end_h          = 99999,99999,99999,99999,99999,

(Notice I set "auxinput11_interval" here, not "auxinput11_interval_s".
Setting auxinput11_interval =1 means wrf alarms will call wrf_fddaobs_in
on every model iteration.) You can accomplish the same thing with
auxinput11_interval_s, as long as you set it equal to or smaller than
the model timestep in seconds. This will cause wrf alarms to check for
input (that is, to call wrf_fddaobs_in) at a frequency of every model
timestep. For example, with the above setting, if you used obs_ionf=2,
the result would be that wrf_fddaobs_in is called on every model
iteration, but input would only be read (i.e., sub in4dob would only be
called) on every other model iteration. Having wrf alarms check for
input on every iteration is an insignificant amount of overhead, and it
is the safest thing to do so that, regardless of the obs_ionf setting, a
read step is never skipped.

You can tell from the output if you are getting the fddaobs input at the
correct frequency by searching for lines that contain the text "CALL
IN4DOB AT". For example:

% grep "CALL IN4" rsl.out.0000

   ****** CALL IN4DOB AT KTAU = 0 AND XTIME =   0.00:  NSTA =   10 ******
   ****** CALL IN4DOB AT KTAU = 2 AND XTIME =   5.00:  NSTA =   10 ******
   ****** CALL IN4DOB AT KTAU = 4 AND XTIME =  10.00:  NSTA =   10 ******

shows that in4dob is reading obs input every other model iteration
(ktau), at a 5 minute interval. (In this example, obs_ionf = 2,
time_step = 150 (seconds), and auxinput11_interval = 1).


******************************************************

On 8/26/2011 2:38 PM, Bart Brashers wrote:
> I'm replying to my own question here, so others can find the solution.
> Solved.  Tags for searching: hourly OBS nudging, OBSGRID, WRF 3.3.
> Solution first, statement of the problem below.
>
>
>
> SOLUTION:
>
>
>
> In namelist.wps, set (among other settings):
>
>
>
> &share
>
> interval_seconds = 21600
>
>
>
> to match your input GRIB data (every 6 hours for my data).
>
>
>
> Make your obs_filename (OBS:*, little_r format) files each contain only
> 1 hour of data.  This conflicts somewhat with the statement in the WRF
> v3.3 Users Guide
> <http://www.mmm.ucar.edu/wrf/users/docs/user_guide_V3/users_guide_chap7.
> htm#namelist>  , Chapter 7, under OBSGRID Namelist: "Ideally there should
> be an obs_filename for each time period for which an objective analysis
> is desired."  I suppose I should interpret "objective analysis" as
> either the 3D objective analysis or the 2D surface analysis.
>
>
>
> I believe it should say that there should be an obs_filename for each
> intf4d (surface analysis) period.  This is the key.
>
>
>
> In namelist.obsgrid, set (among other settings):
>
>
>
> &record1
>
> interval =  21600
>
> &record2
>
> obs_filename = path/to/OBS
>
> &record7
>
> f4d      = .TRUE.
>
> intf4d   =  3600
>
>
>
> This will produce OBS_DOMAIN101 with 1 hour of data (+/- 30 minutes from
> the start time); OBS_DOMAIN102 with 5 hours of data; OBS_DOMAIN103 with
> 1 hour of data (+/- 30 minutes from start + interval [6 hours]); etc.
>
>
>
> You must concatenate all the OBS_DOMAIN1?? files into a single
> OBS_DOMAIN101 file in the WRF run directory.  The Users Guide does not
> explicitly state this, though the latest tutorial does.
>
>
>
> auxinput11_interval_m is the minimum time interval you would like to
> check for new observations.  If you want to nudge every hour, set this
> to 3600.   Note that this is listed in test/em_real/README.obs_fdda as
> auxinput11_interval_s = 180, (180 seconds) which I believe is a typo.
> They problem meant 180 minutes (3 hours).
>
>
>
> auxinput11_end_h is the time at which you want to WRF stop reading
> OBS_DOMAIN101.
>
>
>
> PROBLEM:
>
>
>
> Following the WRF v3.3 Users Guide, Chapter 7, my obs_filename (OBS:*,
> little_r format) files each contained 6 hours of data (to match interval
> = 21600).
>
>
>
> At each intf4d time interval, OBSGRID opens an obs_filename file with
> the current time-stamp.  It DOES NOT check for the existence of the file
> before it opens the file.
>
>
>
> So if your obs_filename (little_r) files each contain 6 hours of data,
> then at hour +1 it opens (and thus creates) a file with that time-stamp.
> Of course it's empty (newly created) so no data are read, and no data
> are output to the OBS_DOMAIN* file for that hour.  If you started with
> obs_filename files like this:
>
>
>
> -rw-rw-rw- 1 username 650M Aug 25 10:02 OBS:2008-01-29_12
>
> -rw-rw-rw- 1 username 630M Aug 25 10:10 OBS:2008-01-29_18
>
> -rw-rw-rw- 1 username 650M Aug 25 10:16 OBS:2008-01-30_00
>
>
>
> Then after OBSGRID.EXE had run, you'll have files like this:
>
>
>
> -rw-rw-rw- 1 username 650M Aug 25 10:02 OBS:2008-01-29_12
>
> -rw-rw-rw- 1 username    0 Aug 25 10:03 OBS:2008-01-29_13
>
> -rw-rw-rw- 1 username    0 Aug 25 10:05 OBS:2008-01-29_14
>
> -rw-rw-rw- 1 username    0 Aug 25 10:06 OBS:2008-01-29_15
>
> -rw-rw-rw- 1 username    0 Aug 25 10:07 OBS:2008-01-29_16
>
> -rw-rw-rw- 1 username    0 Aug 25 10:08 OBS:2008-01-29_17
>
> -rw-rw-rw- 1 username 630M Aug 25 10:10 OBS:2008-01-29_18
>
> -rw-rw-rw- 1 username    0 Aug 25 10:10 OBS:2008-01-29_19
>
> -rw-rw-rw- 1 username    0 Aug 25 10:12 OBS:2008-01-29_20
>
> -rw-rw-rw- 1 username    0 Aug 25 10:13 OBS:2008-01-29_21
>
> -rw-rw-rw- 1 username    0 Aug 25 10:14 OBS:2008-01-29_22
>
> -rw-rw-rw- 1 username    0 Aug 25 10:15 OBS:2008-01-29_23
>
> -rw-rw-rw- 1 username 650M Aug 25 10:16 OBS:2008-01-30_00
>
>
>
> and your OBS_DOMAIN1?? files will contain only data +/- 30 minutes from
> each interval (each 6 hours).
>
>
>
> Bart
>
>
>
> From: wrf-users-bounces at ucar.edu [mailto:wrf-users-bounces at ucar.edu] On
> Behalf Of Bart Brashers
> Sent: Wednesday, August 24, 2011 5:09 PM
> To: wrf-users at ucar.edu
> Cc: wrfhelp at ucar.edu
> Subject: [Wrf-users] OBS nudging
>
>
>
> I have a few questions about using OBS nudging in WRF v3.3.  I'm using
> the 12km NAM data, which comes in 6 hour intervals.  WPS ran fine, and I
> have met_em files every 6 hours.
>
>
>
> I have processed MADIS data to little_r format, and named the files
> OBS:YYYY-MM-DD_HH.  Each file contains 6 hours of data, which I've
> confirmed via grep (e.g. "grep 200801 OBS:2008-01-29_18 | cut -c 327-336
> | sort | uniq" shows the right time-stamps).
>
>
>
> 1. OBSGRID.EXE creates OBS_DOMAIN101, OBSDOMAIN102, etc.  But each file
> contains only ONE hour's data (the analysis hour +/- 30 minutes).  The
> OBS data for the next 5 hours is not output.  How can I get OBSGRID.EXE
> to create OBS_DOMAIN1* files that contain ALL the available data?  I
> want to nudge every hour, not every 6 hours.
>
>
>
> 2. The most recent notes in the WRF User's Guide
> <http://www.mmm.ucar.edu/wrf/users/wrfv3.1/How_to_run_obs_fdda.html>
> make no mention having to concatenate the OBS_DOMAIN1* output from
> OBSGRID.EXE to OBS_DOMAIN101, but the tutorial notes
> <http://www.mmm.ucar.edu/wrf/OnLineTutorial/Class/cases/obs_nudging1.php
>>   do say so.  Which is correct?  Will WRF not read OBS_DOMAIN102,
> OBS_DOMAIN103, etc.?
>
>
>
> 3. If I want to nudge every hour, do I set auxinput11_interval_m = 60 in
> WRF's namelist?  Or is that supposed to match OBSGRID's record1 interval
> ?
>
>
>
> 4. If I want to keep nudging till the very end of my simulation, can I
> set auxinput11_end_h = 99999?
>
>
>
> The meaning of these two values is pretty unclear in the
> README.namelist, README.obs_fdda, as well as the WRF User's Guide and
> tutorial notes.  If anyone can shed some light, I'd be most
> appreciative.
>
>
>
> Thanks,
>
>
>
> Bart
>
>
>
> ________________________________
>
> This message contains information that may be confidential, privileged
> or otherwise protected by law from disclosure. It is intended for the
> exclusive use of the Addressee(s). Unless you are the addressee or
> authorized agent of the addressee, you may not review, copy, distribute
> or disclose to anyone the message or any information contained within.
> If you have received this message in error, please contact the sender by
> electronic reply to email at environcorp.com and immediately delete all
> copies of the message.
>
>
>
> This message contains information that may be confidential, privileged or otherwise protected by law from disclosure. It is intended for the exclusive use of the Addressee(s). Unless you are the addressee or authorized agent of the addressee, you may not review, copy, distribute or disclose to anyone the message or any information contained within. If you have received this message in error, please contact the sender by electronic reply to email at environcorp.com and immediately delete all copies of the message.
>
>
>
>
> _______________________________________________
> Wrf-users mailing list
> Wrf-users at ucar.edu
> http://mailman.ucar.edu/mailman/listinfo/wrf-users



More information about the Wrf-users mailing list