[Dart-dev] [7233] DART/trunk/observations/NCEP/ascii_to_obs: add option to create geopotential height observation types.
nancy at ucar.edu
nancy at ucar.edu
Thu Oct 30 15:02:23 MDT 2014
Revision: 7233
Author: nancy
Date: 2014-10-30 15:02:23 -0600 (Thu, 30 Oct 2014)
Log Message:
-----------
add option to create geopotential height observation types.
also add option to create surface pressure obs instead of
altimeter obs. this option is controlled by a global variable
which is intentionally NOT in the namelist. there are questions
about whether assimilating surface pressure introduces problems
(which is why surface pressure obs are currently turned into
altimeter obs by the converter).
Modified Paths:
--------------
DART/trunk/observations/NCEP/ascii_to_obs/create_real_obs.f90
DART/trunk/observations/NCEP/ascii_to_obs/real_obs_mod.f90
-------------- next part --------------
Modified: DART/trunk/observations/NCEP/ascii_to_obs/create_real_obs.f90
===================================================================
--- DART/trunk/observations/NCEP/ascii_to_obs/create_real_obs.f90 2014-10-30 19:47:53 UTC (rev 7232)
+++ DART/trunk/observations/NCEP/ascii_to_obs/create_real_obs.f90 2014-10-30 21:02:23 UTC (rev 7233)
@@ -49,7 +49,7 @@
logical :: obs_U = .false., obs_V = .false., obs_T = .false. , &
obs_PS = .false., obs_QV = .false., daily_file = .true., &
- obs_time = .true.
+ obs_time = .true., obs_Z = .false.
real(r8) :: lon1 = 0.0_r8, & ! lower longitude bound
lon2 = 360.0_r8, & ! upper longitude bound
@@ -58,11 +58,12 @@
logical :: include_specific_humidity = .true., &
include_relative_humidity = .false., &
- include_dewpoint = .false.
+ include_dewpoint = .false., &
+ include_surface_pressure = .false.
namelist /ncepobs_nml/ year, month, day, tot_days, max_num, select_obs, &
ObsBase, ADPUPA, AIRCAR, AIRCFT, SATEMP, SFCSHP, ADPSFC, SATWND, &
- obs_U, obs_V, obs_T, obs_PS, obs_QV, daily_file, lon1, lon2, &
+ obs_U, obs_V, obs_T, obs_PS, obs_QV, obs_Z, daily_file, lon1, lon2, &
lat1, lat2, obs_time, include_specific_humidity, &
include_relative_humidity, include_dewpoint
@@ -77,7 +78,7 @@
! SATWND: Satellite derived wind reports
! ----------------------------------------------------------------------
! Select variables of U, V, T, QV, PS using the logicals:
-! obs_U obs_V obs_PS obs_T obs_QV
+! obs_U obs_V obs_PS obs_T obs_QV obs_Z
! ----------------------------------------------------------------------
! start of executable program code
@@ -127,9 +128,9 @@
seq = real_obs_sequence(year, month, day1, hour1, max_num, select_obs, &
ObsBase, ADPUPA, AIRCAR, AIRCFT, SATEMP, SFCSHP, ADPSFC, SATWND, &
- obs_U, obs_V, obs_T, obs_PS, obs_QV, include_specific_humidity, &
- include_relative_humidity, include_dewpoint, bin_beg(kkk), &
- bin_end(kkk), lon1, lon2, lat1, lat2, obs_time)
+ obs_U, obs_V, obs_T, obs_PS, obs_QV, obs_Z, include_specific_humidity, &
+ include_relative_humidity, include_dewpoint, include_surface_pressure, &
+ bin_beg(kkk), bin_end(kkk), lon1, lon2, lat1, lat2, obs_time)
! output the daily sequence to a file
if(.not. daily_file) output_name = 'obs_seq'//obsdate//obstime(kkk)
Modified: DART/trunk/observations/NCEP/ascii_to_obs/real_obs_mod.f90
===================================================================
--- DART/trunk/observations/NCEP/ascii_to_obs/real_obs_mod.f90 2014-10-30 19:47:53 UTC (rev 7232)
+++ DART/trunk/observations/NCEP/ascii_to_obs/real_obs_mod.f90 2014-10-30 21:02:23 UTC (rev 7233)
@@ -26,7 +26,7 @@
KIND_TEMPERATURE, KIND_SPECIFIC_HUMIDITY, KIND_RELATIVE_HUMIDITY, &
KIND_DEWPOINT, KIND_PRESSURE, KIND_VERTICAL_VELOCITY, &
KIND_RAINWATER_MIXING_RATIO, KIND_DENSITY, KIND_VELOCITY, &
- KIND_1D_INTEGRAL, KIND_RADAR_REFLECTIVITY
+ KIND_1D_INTEGRAL, KIND_RADAR_REFLECTIVITY, KIND_GEOPOTENTIAL_HEIGHT
use obs_utilities_mod, only : add_obs_to_seq, create_3d_obs
@@ -34,6 +34,7 @@
use obs_kind_mod, only : RADIOSONDE_U_WIND_COMPONENT
use obs_kind_mod, only : RADIOSONDE_V_WIND_COMPONENT
+use obs_kind_mod, only : RADIOSONDE_GEOPOTENTIAL_HGT
use obs_kind_mod, only : RADIOSONDE_SURFACE_PRESSURE
use obs_kind_mod, only : RADIOSONDE_TEMPERATURE
use obs_kind_mod, only : RADIOSONDE_SPECIFIC_HUMIDITY
@@ -58,6 +59,7 @@
use obs_kind_mod, only : MARINE_SFC_RELATIVE_HUMIDITY
use obs_kind_mod, only : MARINE_SFC_DEWPOINT
use obs_kind_mod, only : MARINE_SFC_ALTIMETER
+use obs_kind_mod, only : MARINE_SFC_PRESSURE
use obs_kind_mod, only : LAND_SFC_U_WIND_COMPONENT
use obs_kind_mod, only : LAND_SFC_V_WIND_COMPONENT
use obs_kind_mod, only : LAND_SFC_TEMPERATURE
@@ -65,6 +67,7 @@
use obs_kind_mod, only : LAND_SFC_RELATIVE_HUMIDITY
use obs_kind_mod, only : LAND_SFC_DEWPOINT
use obs_kind_mod, only : LAND_SFC_ALTIMETER
+use obs_kind_mod, only : LAND_SFC_PRESSURE
use obs_kind_mod, only : RADIOSONDE_SURFACE_ALTIMETER
use obs_kind_mod, only : SAT_U_WIND_COMPONENT
use obs_kind_mod, only : SAT_V_WIND_COMPONENT
@@ -97,18 +100,18 @@
function real_obs_sequence (year, month, day, hourt, max_num, select_obs, &
ObsBase, ADDUPA, AIRCAR, AIRCFT, SATEMP, SFCSHP, ADPSFC, SATWND, &
- obs_U, obs_V, obs_T, obs_PS, obs_QV, inc_specific_humidity, &
- inc_relative_humidity, inc_dewpoint, bin_beg, bin_end, &
- lon1, lon2, lat1, lat2, obs_time)
+ obs_U, obs_V, obs_T, obs_PS, obs_QV, obs_Z, inc_specific_humidity,&
+ inc_relative_humidity, inc_dewpoint, inc_surface_pressure, &
+ bin_beg, bin_end, lon1, lon2, lat1, lat2, obs_time)
!------------------------------------------------------------------------------
! this function is to prepare NCEP decoded BUFR data to DART sequence format
!
integer, intent(in) :: year, month, day, max_num, select_obs
character(len = *), intent(in) :: ObsBase, hourt
logical, intent(in) :: ADDUPA, AIRCAR, AIRCFT, SATEMP, SFCSHP, ADPSFC, SATWND
-logical, intent(in) :: obs_U, obs_V, obs_T, obs_PS, obs_QV, obs_time
+logical, intent(in) :: obs_U, obs_V, obs_T, obs_PS, obs_QV, obs_Z, obs_time
logical, intent(in) :: inc_specific_humidity, inc_relative_humidity, &
- inc_dewpoint
+ inc_dewpoint, inc_surface_pressure
real(r8), intent(in) :: lon1, lon2, lat1, lat2
type(obs_sequence_type) :: real_obs_sequence
@@ -316,10 +319,16 @@
if(obs_prof == 3) then
obs_kind_gen = KIND_SURFACE_PRESSURE
+ if ( zob2 == 0.0_r8 .and. inc_surface_pressure ) then
+ if(obstype == 120 ) obs_kind = RADIOSONDE_SURFACE_PRESSURE
+ if(obstype == 180 .or. obstype == 182) obs_kind = MARINE_SFC_PRESSURE
+ if(obstype == 181 ) obs_kind = LAND_SFC_PRESSURE
+ else
if(obstype == 120 ) obs_kind = RADIOSONDE_SURFACE_ALTIMETER
if(obstype == 180 .or. obstype == 182) obs_kind = MARINE_SFC_ALTIMETER
if(obstype == 181 ) obs_kind = LAND_SFC_ALTIMETER
endif
+ endif
if(obs_prof == 2) then
obs_kind_gen = KIND_U_WIND_COMPONENT
@@ -349,6 +358,11 @@
if(obstype == 281 .or. obstype == 284) obs_kind = LAND_SFC_V_WIND_COMPONENT
endif
+ if(obs_prof == 7) then
+ obs_kind_gen = KIND_GEOPOTENTIAL_HEIGHT
+ if(obstype == 120 .or. obstype == 220) obs_kind = RADIOSONDE_GEOPOTENTIAL_HGT
+ endif
+
if (obs_kind < 0) then
! the "real" fix if the record type is not found might actually be to
! accept all record types within valid ranges, and depend on the first
@@ -391,6 +405,7 @@
(obs_V .and. (obs_kind_gen == KIND_V_WIND_COMPONENT )) .or. &
(obs_PS .and. (obs_kind_gen == KIND_SURFACE_PRESSURE)) .or. &
(obs_QV .and. (obs_kind_gen == KIND_SPECIFIC_HUMIDITY)) .or. &
+ (obs_Z .and. (obs_kind_gen == KIND_GEOPOTENTIAL_HEIGHT)) .or. &
(inc_relative_humidity .and. (obs_kind_gen == KIND_RELATIVE_HUMIDITY)) .or. &
(inc_dewpoint .and. (obs_kind_gen == KIND_DEWPOINT)) ) then
pass = .false.
More information about the Dart-dev
mailing list