Proposed 2004 Changes to Precipitation Assimilation

Last updated:26 May 2004


Note: recommend Sections 1, 2, 4 and 5 for general interest.  Fellow next-Eta-bundle developers will want to check out Sections 3 and 8.  Sections 6 and 7 are mostly notes to myself. 


1. Why changes are needed


NCEP’s precipitation assimilation is essentially a 'nudging' approach, where the model's temperature and moisture fields are adjusted to be more consistent with observed precipitation field, and the model precipitation field during the assimilation period (closely tracking that in the observation) is used to drive the soil moisture field. 


This approach was originally designed to work with simple cloud microphysics whose response to small 'nudges' was relatively linear.  In Nov 2001, the precipitation assimilation underwent extensive changes to work in tandem with a much more sophisticated cloud and precipitation package (  Under the new system, the grid‑scale adjustment undergoes an iterative process to give the model a chance to adapt to the adjustment more smoothly.  This cloud physics/precipitation assimilation pairing is highly complex and difficult to adapt to further changes to model cloud physics or additional hydrometeor‑related observations. 


2. Details of the changes


We are ‘scaling back’ (being less aggressive with) the precipitation assimilation by retaining the part that reduces latent heat and moisture fields when the model precipitation is greater than observed precipitation (Pmod > Pobs), while eliminate/simplify the part where latent heat and moisture fields are increased/created (when Pmod < Pobs), since we can perform the former adjustment with far more confidence than we do with the latter (especially in the case when Pobs > 0 but  = Pmod 0).  Under the 'scaled back' system, the model precipitation during EDAS will not be as close to observations as before.  We can avoid any negative impact on soil moisture by using the hourly observed precipitation (partitioned to physics time steps) as the driver to model soil moisture field instead.  To keep track of how much precipitation is fed into the soil, we keep a separate array to hold the cumulative “EDAS soil moisture-driving precipitation” (ESMDP), which, at each physics time step, is incremented by the observed precipitation allocated to this time step if precipitation assimilation is done, and by the model precipitation if otherwise. The 3-hour accumulation of ESMDP is also used (instead of 3-hourly EDAS precipitation) to compile a precipitation budget-history file used in bias-adjustment of hourly precipitation input for EDAS (  Currently ESMDP is outputted directly from subroutine ADJPPT.F at the end of the 3-hour EDAS segment.  Sometime before operational implementation, we plan to add ESMDP to the normal model output files, possibly using one of the open slots under GRIB table 130.


3. What source code and scripts have been changed


8 files in /nfsuser/g01/wx22yl/newdrib/sorc.yl have been changed:




CHKSNOW.F  (changed ihr calculation to prevent array overflow; a write to unit 6 instead of unit 98, to make output easier to read)

INIT.F (array PPTSUM, i.e. the aforementioned ESMDP, is initially set to zero)

SURFCE.F (use observed precipitation to drive the soil moisture field, if precipitation assimilation is done at this time step)

makefile (deleted ADJPPT3.o; added “IPLIB =  -lip_4” for the call to makgrd in ADJPPT.F.  Should delete IPLIB in the future when the ESMDP/PPTSUM becomes a regular field to be outputted in eta Post. 


Note: at this time the “EDAS soil moisture-driving precipitation” (ESMDP) is being outputted by ADJPPT.F into a GRIB file linked to unit 97 (pptsum.$tmmark).  In the future, when ESMDP is being outputted as regular field along with the others, ADJPPT.F should be changed to remove this part of GRIB packing.


The following scripts in /nfsuser/g01/emcsrc/mesopara/eta32/etaz/scripts have been changed:

1)  The 24h precipitation totals that are feed into the soil are now computed from the 8 3-hourly pptsum.$tmmark files, rather than from 3-hourly EDAS precip files extracted from the regular E-grid output. 

2)  add “ln -s -f pptsum.$tmmark      fort.97” for call to eta_etafcst for EDAS runs.  Also, remember to save pptsum files to $COMEDAS


To start a first cycle using an existing cumulative precipitation budget file (say from ETAV):  run a script similar to /emc2/etapll/restart32.etaz.  Assuming that the first run is a 12Z cycle (TM00).  Note that input argument, yyyymmddhh, for this script is the current cycle (TM00), rather than TM12 as in Eric’s standard scripts.  In addition to the standard copying-over of restrt03.tm03, nhb3260, biascr.tm03 and pcpbudget_history, we also extract EDAS precip from the control run’s TM36, TM24 and TM12 cycles (and call them pptsum.$tmmark).  Also copy over the previous 3 cycles’ sratio files.  Be sure to run restart32.etaz (or its equivalent) before the control run’s 12Z cycle starts, since the control run’s 12Z cycle would update the file pcpbudget_history.


Note that and restart32.etaz will both need to be changed when ESMDP becomes a standard output item.


4. Example and preliminary projection for impact


An example for a 3-hourly EDAS segment is shown below.  Each plot is a 3-hourly accumulation for

a)      precipitation input to EDAS

b)      EDAS precipitation from the control run

c)      EDAS precipitation from the run with new precipitation assimilation

d)      EDAS soil moisture-driving precipitation (“ESMDP”) for the run with new precipitation assimilation


We can expect that, in general, the new precipitation assimilation will do better than the old one at reduce spurious model rain fall, but will not do a good job when/where model rainfall falls short of the observed amount. The atmosphere will be drier since the adjustments are one-sided.  Rainfall being fed into the soil model will be improved.


5. Current status


The last bug was found and fixed on 5 May 2004.  32km parallel run started on 12Z 5 May 2004, using the ETAZ slot.  The control run to compare against is ETAV.  Initially the ETAZ parallel started on 12Z 29 Apr 2004. 



6. Miscellaneous info


Executable: /nfsuser/g01/wx22yl/newdrib/sorc/eta_etafcst

ETAZ scripts: /nfsuser/g01/emcsrc/mesopara/eta32/etaz/scripts

General 32km ETA parallel page:

ETAZ vs. ETAV page:

Near-surface and upper-air statistics:



7. Miscellaneous log/note

2004042912: Started testing in ETAZ parallel (later re-started at the 2004050312 cycle).


20040430: SURFCE.F – changes to soil moisture driver (obs’d precipitation when/where precipitation assimilation is done) should only apply to’tm00’.  This did not affect the previous 3 runs (12Z 29 – 12Z 30 April 2004) since the ETAZ executable is used for the EDAS portion only.


20040503: Start archiving avgbudsum.yyyymmdd  pptsum.tmxx in EDAS.3DVAR.$CYCLE.TAR for both ETAZ and ETAV.  Effective on 12Z


2004050312: Restarted ETAZ from ETAV at the 2004050312 cycle (EDAS run only.  Skipped Eta run because it was getting late in the day).  Fixed bug in SURFCE.F where incorrect precipitation was fed into the soil.  Earlier parallel runs (2004042912-2004050312) showed that ETAZ’s soil were drier than ETAV’s.


2004050512: restarted ETAZ from ETAV.  There was an error in the ETAZ script, incorrect GFS boundary condition was used.


2004050600: for some reason there are no EGRDSF files for this EDAS cycle, but otherwise the files (both ETA and EDAS) look normal.


8. How to incorporate this change into another parallel run


1) Combine codes in /nfsuser/g01/wx22yl/newdrib/sorc.yl with your code

2) Combine /nfsuser/g01/wx22yl/newdrib/sorc.yl/makefile with your makefile

3) Combine /nfsuser/g01/emcsrc/mesopara/eta32/etaz/scripts/, with your version.

4) Run your equivalent of /emc2/etapll/restart32.etaz. 


Please read Section 3 for further information/notes concerning these changes.


The above assumes that “EDAS soil moisture-driving precipitation” (ESMDP) has not been incorporated into the standard model output yet.  When that happens, the above will need to change.