[Dart-dev] [4173] DART/trunk/observations/SSEC: Latest updates from Ryan to allow different QC algorithms, and i updated the
nancy at ucar.edu
nancy at ucar.edu
Mon Nov 30 14:37:15 MST 2009
Revision: 4173
Author: nancy
Date: 2009-11-30 14:37:15 -0700 (Mon, 30 Nov 2009)
Log Message:
-----------
Latest updates from Ryan to allow different QC algorithms, and i updated the
html to match and add a bit more detail. the doc's still a bit thin, though.
Modified Paths:
--------------
DART/trunk/observations/SSEC/SSEC.html
DART/trunk/observations/SSEC/convert_ssec_satwnd.f90
-------------- next part --------------
Modified: DART/trunk/observations/SSEC/SSEC.html
===================================================================
--- DART/trunk/observations/SSEC/SSEC.html 2009-11-30 21:01:31 UTC (rev 4172)
+++ DART/trunk/observations/SSEC/SSEC.html 2009-11-30 21:37:15 UTC (rev 4173)
@@ -35,6 +35,7 @@
<A HREF="#Overview">OVERVIEW</A> /
<A HREF="#DataSources">DATA SOURCES</A> /
<A HREF="#Programs">PROGRAMS</A> /
+<A HREF="#References">REFERENCES</A> /
<A HREF="#KnownBugs">KNOWN BUGS</A> /
<A HREF="#FuturePlans">FUTURE PLANS</A>
</DIV>
@@ -50,18 +51,13 @@
<H2>OVERVIEW</H2>
<P>
-The Space Science and Engineering Center (SSEC) at University of
-Wisconsin-Madision has an online
-<A href="http://www.ssec.wisc.edu/data">data center</A> with both
-real-time and archival weather satellite data.
+The program in this directory takes satellite wind data from the
+University of Wisconsin-Madison Space Science and Engineering
+Center, and converts it into DART format observation sequence files,
+for use in assimilating with the DART filter program.
</P>
-<P>The last 2 day's worth of data is available from
-<A href="ftp://cyclone.ssec.wisc.edu/pub/fnoc">
-ftp://cyclone.ssec.wisc.edu/pub/fnoc</A>.
-</P>
-
<!--==================================================================-->
<A NAME="DataSources"></A>
@@ -69,10 +65,15 @@
<H2>DATA SOURCES</H2>
<P>
-
+The Space Science and Engineering Center (SSEC) at University of
+Wisconsin-Madison has an online
+<A href="http://www.ssec.wisc.edu/data">data center</A> with both
+real-time and archival weather satellite data.
</P>
-<P>
+<P>The last 2 day's worth of data is available from
+<A href="ftp://cyclone.ssec.wisc.edu/pub/fnoc">
+ftp://cyclone.ssec.wisc.edu/pub/fnoc</A>.
</P>
@@ -83,7 +84,37 @@
<H2>PROGRAMS</H2>
<P>
+Conversion program <em class="code">convert_ssec_satwnd</em> converts the
+ascii data in the input files into a DART observation sequence file.
+Go into the <em class="code">work</em> directory and run
+the <em class="code">quickbuild.csh</em> script to
+compile the necessary files.
+</P><P>
+The program reads standard input for the data time range,
+which types of observations to convert, and then, if quality control
+information is found in the input file, what type of quality
+control algorithm to use when deciding whether the observation
+is of good quality or not. See the references below.
+</P>
+<!--==================================================================-->
+<!-- References. -->
+<!--==================================================================-->
+
+<A NAME="References"></A>
+<BR><HR><BR>
+<H2>REFERENCES</H2>
+<P>
+<UL>
+<LI>
+RF method: Velden, C. S., T. L. Olander, and S. Wanzong, 1998: The impact of multispectral GOES-8 wind information on Atlantic
+tropical cyclone track forecasts in 1995. Part I: Dataset methodology, description, and case analysis. Mon. Wea. Rev., 126, 1202-1218.
+</LI><LI>
+QI method: Holmlund, K., 1998: The utilization of statistical properties of satellite-derived atmospheric motion vectors to derive quality indicators. Wea. Forecasting, 13, 1093-1104.
+</LI><LI>
+Comparison of two methods: Holmlund, K., C.S. Velden, and M. Rohn, 2001: Enhanced Automated Quality Control Applied to High-Density Satellite-Derived Winds. Mon. Wea. Rev., 129, 517-529.
+</LI>
+</UL>
</P>
<!--==================================================================-->
Modified: DART/trunk/observations/SSEC/convert_ssec_satwnd.f90
===================================================================
--- DART/trunk/observations/SSEC/convert_ssec_satwnd.f90 2009-11-30 21:01:31 UTC (rev 4172)
+++ DART/trunk/observations/SSEC/convert_ssec_satwnd.f90 2009-11-30 21:37:15 UTC (rev 4173)
@@ -38,19 +38,21 @@
character (len=6) :: sat
character (len=4) :: band, hourin
-logical :: iruse, visuse, wvuse, swiruse, file_exist, qcinfile
+logical :: iruse, visuse, wvuse, swiruse, file_exist, qifile, eefile, &
+ userfqc, useqiqc, useeeqc
integer :: in_unit, i, days, secs, nused, iyear, imonth, iday, ihour, &
- imin, isec, dsec, dday, dsecobs
-real(r8) :: obs_window, minqc, lat, lon, pres, wdir, wspd, uwnd, vwnd, oerr, &
- latu(nmaxwnd), lonu(nmaxwnd), prsu(nmaxwnd), qc, qcin1, qcin2
+ imin, isec, dsec, dday, dsecobs, qctype
+real(r8) :: obs_window, lat, lon, pres, wdir, wspd, uwnd, vwnd, oerr, &
+ latu(nmaxwnd), lonu(nmaxwnd), prsu(nmaxwnd), qc, qcthresh, &
+ rfqc, qiqc, eeqc
type(obs_sequence_type) :: obs_seq
type(obs_type) :: obs
type(time_type) :: time_anal
-print*,'Enter the analysis time (yyyy-mm-dd_hh:mm:ss), window (hours), and min. qc'
-read*, datestr, obs_window, minqc
+print*,'Enter the analysis time (yyyy-mm-dd_hh:mm:ss), and window (hours)'
+read*, datestr, obs_window
print*,'Do you want to include IR, VISIBLE, WV data, and SW IR? (T/F, 4 times)'
read*, iruse, visuse, wvuse, swiruse
dsecobs = nint(obs_window * 3600.0_r8)
@@ -65,11 +67,43 @@
time_anal = set_date(iyear, imonth, iday, ihour, imin, isec)
call get_time(time_anal, secs, days)
-in_unit = get_unit() ; qcinfile = .false.
+qifile = .false. ; eefile = .false.
+userfqc = .false. ; useqiqc = .false. ; useeeqc = .false.
+
+in_unit = get_unit()
open(unit=in_unit, file = ssec_sat_file, status='old')
read(in_unit,'(a100)') header
-if ( header(75:76) == 'qi' ) qcinfile = .true.
+if ( header(81:82) == 'ee' ) then
+
+ print*,'Enter the QC type (0=none, 1=rf, 2=qi, 3=ee) and threshhold'
+ read*, qctype, qcthresh
+
+ select case ( qctype )
+ case (1) ! Regression Factor QC
+ userfqc = .true.
+ case (2) ! QI format QC
+ useqiqc = .true.
+ case (3)
+ useeeqc = .true.
+ end select
+ eefile = .true.
+
+else if ( header(75:76) == 'qi' ) then
+
+ print*,'Enter the QC type (0=none, 1=rf, 2=qi) and threshhold'
+ read*, qctype, qcthresh
+
+ select case ( qctype )
+ case (1) ! Regression Factor QC
+ userfqc = .true.
+ case (2) ! QI format QC
+ useqiqc = .true.
+ end select
+ qifile = .true.
+
+end if
+
! either read existing obs_seq or create a new one
call static_init_obs_sequence()
call init_obs(obs, num_copies, num_qc)
@@ -95,12 +129,25 @@
nused = 0
obsloop: do
- if ( qcinfile ) then
+ if ( qifile ) then ! QI format file
+
read(in_unit,*,END=200) band, sat, datein, hourin, lat, lon, &
- pres, wspd, wdir, qcin1, qcin2
- if ( qcin2 < minqc ) cycle obsloop
- else
+ pres, wspd, wdir, rfqc, qiqc
+ if ( userfqc .and. rfqc > qcthresh ) cycle obsloop
+ if ( useqiqc .and. qiqc < qcthresh ) cycle obsloop
+
+ else if ( eefile ) then ! EE format file
+
+ read(in_unit,*,END=200) band, sat, datein, hourin, lat, lon, &
+ pres, wspd, wdir, rfqc, qiqc, eeqc
+ if ( userfqc .and. (rfqc > qcthresh) ) cycle obsloop
+ if ( useqiqc .and. (qiqc < qcthresh) ) cycle obsloop
+ if ( useeeqc .and. (eeqc > qcthresh) ) cycle obsloop
+
+ else ! file without QC information
+
read(in_unit,*,END=200) band, sat, datein, hourin, lat, lon, pres, wspd, wdir
+
end if
read(datein(1:4), fmt='(i4)') iyear
@@ -124,11 +171,11 @@
end do
qc = 1.0_r8
- if ( trim(adjustl(band(1:2))) == 'WV' ) then
- oerr = sat_wv_wind_error(pres)
- else
+! if ( trim(adjustl(band(1:2))) == 'WV' ) then
+! oerr = sat_wv_wind_error(pres)
+! else
oerr = sat_wind_error(pres)
- end if
+! end if
! perform sanity checks on observation errors and values
if ( oerr == missing_r8 .or. wdir < 0.0_r8 .or. wdir > 360.0_r8 .or. &
More information about the Dart-dev
mailing list