[Dart-dev] [7232] DART/trunk/observations/NCEP/prep_bufr/src: add the option to output geopotential height observations, in meters,
nancy at ucar.edu
nancy at ucar.edu
Thu Oct 30 13:47:54 MDT 2014
Revision: 7232
Author: nancy
Date: 2014-10-30 13:47:53 -0600 (Thu, 30 Oct 2014)
Log Message:
-----------
add the option to output geopotential height observations, in meters,
if that observation code is specified in the input namelist.
thanks to soyoung ha for the code changes.
Modified Paths:
--------------
DART/trunk/observations/NCEP/prep_bufr/src/prepbufr.f
DART/trunk/observations/NCEP/prep_bufr/src/prepbufr_03Z.f
-------------- next part --------------
Modified: DART/trunk/observations/NCEP/prep_bufr/src/prepbufr.f
===================================================================
--- DART/trunk/observations/NCEP/prep_bufr/src/prepbufr.f 2014-10-29 21:52:06 UTC (rev 7231)
+++ DART/trunk/observations/NCEP/prep_bufr/src/prepbufr.f 2014-10-30 19:47:53 UTC (rev 7232)
@@ -69,12 +69,13 @@
C + 'SPSSMI', 'SYNDAT', 'ERS1DA', 'GOESND', 'QKSWND'/
dimension tdata(8), udata(8), vdata(8), qdata(8), pdata(8)
- integer :: wtype, ptype, qtype, ttype
+ dimension zdata(8)
+ integer :: wtype, ptype, qtype, ttype, ztype
c The pc values are the 'program codes' that tell you what processing
c was done on this observation. As of now, these are unused, but could
c be used for selection or diagnosis.
- integer :: pc_t, pc_q, pc_u, pc_v, pc_p
- integer :: tqm, pqm, qqm, uqm, vqm
+ integer :: pc_t, pc_q, pc_u, pc_v, pc_p, pc_z
+ integer :: tqm, pqm, qqm, uqm, vqm, zqm
logical :: found, uotype, uqcflag, use_this_data_real,
+ use_this_data_int, processed
logical :: debug = .false.
@@ -287,6 +288,13 @@
qdata(8) = hour01
qtype = hdr(6)
+ zdata(2) = hdr(2)
+ zdata(3) = hdr(3)
+ zdata(6) = 0
+ zdata(7) = iprof + 7000000
+ zdata(8) = hour01
+ ztype = hdr(6)
+
udata(2) = hdr(2)
udata(3) = hdr(3)
udata(7) = iprof + 2000000
@@ -430,8 +438,20 @@
if(pqm .eq. 0) poe = poe*0.9
if(pqm .eq. 3) poe = poe*1.2
ppb = evns(1, lv, 1, 1) ! mb
+ !zob = evns(1, lv, 1, 4) ! m
+
+c set up the height observation data, units are m
+c----------------------------------------------------------------------
+
+ zoe = evns(7, lv, 1, 4)
zob = evns(1, lv, 1, 4) ! m
+ zqm = evns(2, lv, 1, 4)
+ pc_z = evns(3, lv, 1, 4)
+ if (pc_z < 0 .or. pc_z > 99) pc_z = 99
+ if(zqm .eq. 0) zoe = zoe*0.9
+ if(zqm .eq. 3) zoe = zoe*1.2
+
c set up the wind observation data, units are m/s
c----------------------------------------------------------------------
@@ -719,7 +739,33 @@
endif
+c write out geopotential height observation of ADPUPA
c----------------------------------------------------------------------
+
+ if (subset(1:6).eq.'ADPUPA') then
+
+ if (use_this_data_int(zqm,qctype_use,inum_qctype) .and.
+ & use_this_data_int(pqm,qctype_use,inum_qctype) .and.
+ & zoe. lt. 1.e9 .and. zob .lt. 1.e9 ) then
+
+ zdata(1) = zoe
+ zdata(4) = ppb
+ zdata(5) = zob
+
+ if (pc_z < 0 .or. pc_z > 99) pc_z = 99
+ write(lunobs, 800) zdata, ztype, zqm, subset(1:6), pc_z
+ processed = .true.
+
+
+ else
+ if ( debug ) print *,
+ & 'skip geopotential height, zoe,zob,zqm,pqm = ',
+ & zoe, zob, zqm, pqm
+ endif ! if use_this_data
+
+ endif
+
+c----------------------------------------------------------------------
if (.not. processed) then
if (debug)print*, 'bot of loop w/o processing, obs was: ',
& subset(1:6), ' lv =', lv
Modified: DART/trunk/observations/NCEP/prep_bufr/src/prepbufr_03Z.f
===================================================================
--- DART/trunk/observations/NCEP/prep_bufr/src/prepbufr_03Z.f 2014-10-29 21:52:06 UTC (rev 7231)
+++ DART/trunk/observations/NCEP/prep_bufr/src/prepbufr_03Z.f 2014-10-30 19:47:53 UTC (rev 7232)
@@ -73,12 +73,13 @@
C + 'SPSSMI', 'SYNDAT', 'ERS1DA', 'GOESND', 'QKSWND'/
dimension tdata(8), udata(8), vdata(8), qdata(8), pdata(8)
- integer :: wtype, ptype, qtype, ttype
+ dimension zdata(8)
+ integer :: wtype, ptype, qtype, ttype, ztype
c The pc values are the 'program codes' that tell you what processing
c was done on this observation. As of now, these are unused, but could
c be used for selection or diagnosis.
- integer :: pc_t, pc_q, pc_u, pc_v, pc_p
- integer :: tqm, pqm, qqm, uqm, vqm
+ integer :: pc_t, pc_q, pc_u, pc_v, pc_p, pc_z
+ integer :: tqm, pqm, qqm, uqm, vqm, zqm
logical :: found, uotype, uqcflag, use_this_data_real,
+ use_this_data_int, processed
logical :: debug = .false.
@@ -291,6 +292,13 @@
qdata(8) = hour01
qtype = hdr(6)
+ zdata(2) = hdr(2)
+ zdata(3) = hdr(3)
+ zdata(6) = 0
+ zdata(7) = iprof + 7000000
+ zdata(8) = hour01
+ ztype = hdr(6)
+
udata(2) = hdr(2)
udata(3) = hdr(3)
udata(7) = iprof + 2000000
@@ -434,8 +442,20 @@
if(pqm .eq. 0) poe = poe*0.9
if(pqm .eq. 3) poe = poe*1.2
ppb = evns(1, lv, 1, 1) ! mb
+ !zob = evns(1, lv, 1, 4) ! m
+
+c set up the height observation data, units are m
+c----------------------------------------------------------------------
+
+ zoe = evns(7, lv, 1, 4)
zob = evns(1, lv, 1, 4) ! m
+ zqm = evns(2, lv, 1, 4)
+ pc_z = evns(3, lv, 1, 4)
+ if (pc_z < 0 .or. pc_z > 99) pc_z = 99
+ if(zqm .eq. 0) zoe = zoe*0.9
+ if(zqm .eq. 3) zoe = zoe*1.2
+
c set up the wind observation data, units are m/s
c----------------------------------------------------------------------
@@ -738,7 +758,33 @@
endif
+c write out geopotential height observation of ADPUPA
c----------------------------------------------------------------------
+
+ if (subset(1:6).eq.'ADPUPA') then
+
+ if (use_this_data_int(zqm,qctype_use,inum_qctype) .and.
+ & use_this_data_int(pqm,qctype_use,inum_qctype) .and.
+ & zoe. lt. 1.e9 .and. zob .lt. 1.e9 ) then
+
+ zdata(1) = zoe
+ zdata(4) = ppb
+ zdata(5) = zob
+
+ if (pc_z < 0 .or. pc_z > 99) pc_z = 99
+ write(lunobs, 800) zdata, ztype, zqm, subset(1:6), pc_z
+ processed = .true.
+
+
+ else
+ if ( debug ) print *,
+ & 'skip geopotential height, zoe,zob,zqm,pqm = ',
+ & zoe, zob, zqm, pqm
+ endif ! if use_this_data
+
+ endif
+
+c----------------------------------------------------------------------
if (.not. processed) then
if (debug)print*, 'bot of loop w/o processing, obs was: ',
& subset(1:6), ' lv =', lv
More information about the Dart-dev
mailing list