[Dart-dev] [3426] DART/trunk/ncep_obs/prep_bufr/src: Corrects a serious bug in the 03Z version; restores code that adds 24 hours to

nancy at ucar.edu nancy at ucar.edu
Wed Jun 11 16:13:55 MDT 2008


An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/dart-dev/attachments/20080611/872c2465/attachment.html
-------------- next part --------------
Modified: DART/trunk/ncep_obs/prep_bufr/src/prepbufr.f
===================================================================
--- DART/trunk/ncep_obs/prep_bufr/src/prepbufr.f	2008-06-09 14:32:17 UTC (rev 3425)
+++ DART/trunk/ncep_obs/prep_bufr/src/prepbufr.f	2008-06-11 22:13:55 UTC (rev 3426)
@@ -55,9 +55,14 @@
      +              56,   57,   58,   59,   60,
      +              61,   62,   63,   64,   65  /
       CHARACTER*6     filo ( NFILO )
+C     original list:
      +          / 'ADPUPA', 'AIRCAR', 'AIRCFT', 'SATWND', 'PROFLR',
      +            'VADWND', 'SATBOG', 'SATEMP', 'ADPSFC', 'SFCSHP',
      +            'SFCBOG', 'SPSSMI', 'SYNDAT', 'ERS1DA', 'GOESND'  /
+C    updated list if you want to handle quikscat winds.
+C     +          / 'ADPUPA', 'AIRCAR', 'AIRCFT', 'SATWND', 'PROFLR',
+C     +            'VADWND', 'SATEMP', 'ADPSFC', 'SFCSHP', 'SFCBOG',
+C     +            'SPSSMI', 'SYNDAT', 'ERS1DA', 'GOESND', 'QKSWND'/
 
       dimension tdata(8), udata(8), vdata(8), qdata(8), pdata(8)
       integer :: wtype, ptype, qtype, ttype
@@ -193,9 +198,7 @@
       END DO
 
 c    check the observation time, skip if outside obs. window
-c    THE ONLY DIFFERENCE BETWEEN THE 03Z VERSION AND THE ORIGINAL
-c    IS THE TEST FOR hour01 .gt. obs_win (03Z file) vs 
-c    abs(time0) .gt. obs_win (plain version) in 4 (four) PLACES BELOW.
+c    the prepbufr_03Z.f version tests hour01, this one tests abs(time0)
 c----------------------------------------------------------------------
       IF ( ( .not. found ) .and. ( ierrpb .eq. 0 ) )  THEN
         if ( debug ) print*, 'record found w/no label match, val was: ',

Modified: DART/trunk/ncep_obs/prep_bufr/src/prepbufr_03Z.f
===================================================================
--- DART/trunk/ncep_obs/prep_bufr/src/prepbufr_03Z.f	2008-06-09 14:32:17 UTC (rev 3425)
+++ DART/trunk/ncep_obs/prep_bufr/src/prepbufr_03Z.f	2008-06-11 22:13:55 UTC (rev 3426)
@@ -55,9 +55,14 @@
      +              56,   57,   58,   59,   60,
      +              61,   62,   63,   64,   65  /
       CHARACTER*6     filo ( NFILO )
+C     original list:
      +          / 'ADPUPA', 'AIRCAR', 'AIRCFT', 'SATWND', 'PROFLR',
      +            'VADWND', 'SATBOG', 'SATEMP', 'ADPSFC', 'SFCSHP',
      +            'SFCBOG', 'SPSSMI', 'SYNDAT', 'ERS1DA', 'GOESND'  /
+C    updated list if you want to handle quikscat winds.
+C     +          / 'ADPUPA', 'AIRCAR', 'AIRCFT', 'SATWND', 'PROFLR',
+C     +            'VADWND', 'SATEMP', 'ADPSFC', 'SFCSHP', 'SFCBOG',
+C     +            'SPSSMI', 'SYNDAT', 'ERS1DA', 'GOESND', 'QKSWND'/
 
       dimension tdata(8), udata(8), vdata(8), qdata(8), pdata(8)
       integer :: wtype, ptype, qtype, ttype
@@ -193,9 +198,7 @@
       END DO
 
 c    check the observation time, skip if outside obs. window
-c    THE ONLY DIFFERENCE BETWEEN THE 03Z VERSION AND THE ORIGINAL
-c    IS THE TEST FOR hour01 .gt. obs_win (03Z file) vs 
-c    abs(time0) .gt. obs_win (plain version) in 4 (four) PLACES BELOW.
+c    the prepbufr.f version tests abs(time0), this one tests hour01
 c----------------------------------------------------------------------
       IF ( ( .not. found ) .and. ( ierrpb .eq. 0 ) )  THEN
         if ( debug ) print*, 'record found w/no label match, val was: ',
@@ -401,6 +404,21 @@
         if(vqm .eq. 0) voe = voe*0.9
         if(vqm .eq. 3) voe = voe*1.2
 
+c----------------------------------------------------------------------
+c    this version of the code only selects observations at 3Z, and
+c    adds 24 hours to the time.  this is the critical difference
+c    between this file and prepbufr.f.  it is intended to be run only
+c    on bufr files marked 06Z (which contain data from 3Z to 9Z) to
+c    allow obs_seq files from 03:01Z to 03:00Z+1day to be created.
+
+        if( abs(hour01 - 3.0) .gt. 0.001)  go to 200 
+        tdata(8) = hour01 + 24.0
+        pdata(8) = hour01 + 24.0
+        qdata(8) = hour01 + 24.0
+        udata(8) = hour01 + 24.0          !! time
+        vdata(8) = hour01 + 24.0
+
+
 c    write out temperature observation from ADPUPA, AIRCAR, AIRCFT
 c----------------------------------------------------------------------
         if (subset(1:6).eq.'ADPUPA' .or. subset(1:6).eq.'AIRCAR' .or.


More information about the Dart-dev mailing list