[Dart-dev] [3808] DART/trunk/observations/quikscat: The program now uses the proper formula for converting uncertainties
nancy at ucar.edu
nancy at ucar.edu
Fri Apr 10 15:41:30 MDT 2009
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/dart-dev/attachments/20090410/068bcd21/attachment.html
-------------- next part --------------
Modified: DART/trunk/observations/quikscat/QuikSCAT.html
===================================================================
--- DART/trunk/observations/quikscat/QuikSCAT.html 2009-04-10 17:45:24 UTC (rev 3807)
+++ DART/trunk/observations/quikscat/QuikSCAT.html 2009-04-10 21:41:29 UTC (rev 3808)
@@ -35,6 +35,7 @@
<A HREF="#Overview">OVERVIEW</A> /
<A HREF="#DataSources">DATA SOURCES</A> /
<A HREF="#Programs">PROGRAMS</A> /
+<A HREF="#Namelist">NAMELIST</A> /
<A HREF="#KnownBugs">KNOWN BUGS</A> /
<A HREF="#FuturePlans">FUTURE PLANS</A>
</DIV>
@@ -50,45 +51,220 @@
<H2>OVERVIEW</H2>
<P>
-QuikSCAT data is from NASA's
+NASA's QuikSCAT mission is described in
<A href="http://winds.jpl.nasa.gov/missions/quikscat/index.cfm">
-Quick Scatterometer satellite</A>.
-It measures near-surface wind speed with a specialized
-microwave radar that penetrates cloud cover.
+http://winds.jpl.nasa.gov/missions/quikscat/</A>.
+"QuikSCAT" refers to the satellite, "SeaWinds" refers to the
+instrument that provides near-surface wind speeds and directions
+over large bodies of water. QuikSCAT has an orbit of about 100 minutes,
+and the SeaWinds microwave radar covers a swath under the satellite.
+The swath is comprised of successive scans (or rows) and each scan
+has many wind-vector-cells (WVCs). For the purpose of this document,
+we will focus only the <b>Level 2B</b> product at 25km resolution.
+If you go to the official JPL data distribution site
+<a href="http://podaac.jpl.nasa.gov/DATA_CATALOG/quikscatinfo.html"
+>http://podaac.jpl.nasa.gov/DATA_CATALOG/quikscatinfo.html</a>
+, we are using the product labelled <b>L2B OWV 25km Swath</b>.
+Each orbit consists of (potentially) 76 WVCs in each of 1624 rows or
+scans. The azimuthal diversity of the radar returns affects the
+error characteristics of the retrieved wind speeds and directions,
+as does rain, interference of land in the radar footprint, and very
+low wind speeds. Hence, not all wind retrievals are created equal.
+<br />
+<br />
+The algorithm that converts the 'sigma naughts' (the measure of radar
+backscatter) into wind speeds and directions has multiple solutions.
+Each candidate solution is called an 'ambiguity', and there are several
+ways of choosing 'the best' ambiguity. Beauty is in the eye of the
+beholder. At present, the routine to convert the original L2B data files
+(one per orbit) in HDF format into the DART observation sequence file
+makes several assumptions:
+<ol>
+<li>All retrievals are labelled with a 10m height, in accordance with
+ the retrieval algorithm.</li>
+<li>Only the highest-ranked (by the MLE method) solution is desired.</li>
+<li>Only the WVCs with a wvc_quality_flag of <b>zero</b> are desired.</li>
+<li>The mission specification of a wind speed rms error of 2 ms
+ (for winds less than 20 m/s) and 10% for windspeeds between
+ 20 and 30 m/s can be extended to all winds with a qc flag of zero.</li>
+<li>The mission specification of an error in direction of 20 degrees rms
+ is applicable to all retrieved directions.</li>
+<li>All retrievals with wind speeds less than 1.0 are not used.</li>
+<li>The above error characterstics can be simplified when deriving the
+ horizontal wind components (i.e. U,V). <b>Note :</b> this may or may
+ not be a good assumption, and efforts to assimilate the speed and
+ direction directly are under way.</li>
+</ol>
</P>
+<!--==================================================================-->
+
+<A NAME="DataSources"></A>
+<BR><HR><BR>
+<H2>DATA SOURCES</H2>
+
<P>
The NASA Jet Propulsion Laboratory (JPL)
<A href="http://winds.jpl.nasa.gov/imagesAnim/quikscat.cfm">
data repository</A> has a collection of animations and data
-sets from this data.
+sets from this instrument. In keeping with NASA tradition,
+these data are in HDF format (specifically, HDF4), so if you want
+to read these files directly, you will need to install the HDF4
+libraries (which can be downloaded from
+<a href="http://www.hdfgroup.org/products/hdf4/"
+>http://www.hdfgroup.org/products/hdf4/</a>)
+<br />
+<br />
+If you go to the official JPL data distribution site
+<a href="http://podaac.jpl.nasa.gov/DATA_CATALOG/quikscatinfo.html"
+>http://podaac.jpl.nasa.gov/DATA_CATALOG/quikscatinfo.html</a>,
+we are using the product labelled <b>L2B OWV 25km Swath</b>. They are
+organized in folders by day ... with each orbit (each revolution)
+in one compressed file. There are 14 revolutions per day.
+The conversion to DART observation sequence format is done on each
+revolution, multiple revolutions may be combined 'after the fact' by
+any <em class="program">obs_sequence_tool</em> in the
+<em class="file">work</em> directory of any model.
</P>
<!--==================================================================-->
-<A NAME="DataSources"></A>
+<A NAME="Programs"></A>
<BR><HR><BR>
-<H2>DATA SOURCES</H2>
+<H2>PROGRAMS</H2>
+<P>There are several programs that are distributed from the JPL www-site,
+<a href="ftp://podaac.jpl.nasa.gov/pub/ocean_wind/quikscat/L2B/sw/"
+>ftp://podaac.jpl.nasa.gov/pub/ocean_wind/quikscat/L2B/sw/</a>;
+we specifically started from the Fortran file
+<a
+href="ftp://podaac.jpl.nasa.gov/pub/ocean_wind/quikscat/L2B/sw/FORTRAN/read_qscat2b.f">read_qscat2b.f</a>
+and modified it to be called as a subroutine to make it more similar to
+the rest of the DART framework. The original
+<em class="file">Makefile</em> and
+<em class="file">read_qscat2b.f</em> are included in the DART
+distribution in the <em class="file">DART/observations/quikscat</em>
+directory. You will have to modify the <em class="file">Makefile</em>
+to build the executable.
+</P>
+
+<h3>convert_L2b.f90</h3>
<P>
-It comes in HDF format, and can be read with the
-program in this directory.
+<em class="program">convert_L2b</em> is the executable that reads the
+HDF files distributed by JPL.
+<em class="file">DART/observations/quikscat/work</em> has the expected
+<em class="file">mkmf_convert_L2b</em> and
+<em class="file">path_names_convert_L2b</em> files and compiles the
+executable in the typical DART fashion - with one exception.
+The location of the HDF (and possible dependencies) installation must
+be conveyed to the <em class="program">mkmf</em> build mechanism. Since
+this information is not required by the rest of DART, it made sense
+(to me) to isolate it in the <em class="file">mkmf_convert_L2b</em>
+script. <b>It will be necessary to modify the <em
+class="file">mkmf_convert_L2b</em> script to
+be able to build <em class="program">convert_L2b</em></b>. In particular,
+you will have to change the two lines specifying the location of the HDF
+(and probably the JPG) libraries. The rest of the script should require
+little, if any, modification.
+<div class="routine">
+set JPGDIR = <em class="input">/contrib/jpeg-6b_gnu-4.1.2-64</em><br />
+set HDFDIR = <em class="input">/contrib/hdf-4.2r4_gnu-4.1.2-64</em><br />
+</div>
+<br />
+There are a lot of observations in every QuikSCAT orbit. Consequently,
+the observation sequence files are pretty large - particularly if you
+use the ASCII format. Using the binary format (i.e.
+<em class="input">obs_sequence_nml:write_binary_obs_sequence = .true.</em>)
+will result in observation sequence files that are about <em>half</em>
+the size of the ASCII format.
+<br />
+<br />
+Since there are about 14 QuikSCAT orbits per day, it may be useful to
+convert individual orbits to an observation sequence file and then
+concatenate multiple observation sequence files into one file per day.
+This may be trivially accomplished with the
+<em class="program">obs_sequence_tool</em> program in any <em
+class="file">model/xxxx/work</em> directory. Be sure to include the
+<div><em class="code">'../../../obs_def/obs_def_QuikSCAT_mod.f90'</em></div> string
+in <em class="code">input.nml&preprocess_nml:input_files</em> when you
+run <em class="program">preprocess</em>.
</P>
+<h3>obs_to_table.f90, plot_wind_vectors.m</h3>
<P>
-
+<em class="file">DART/diagnostics/threed_sphere/obs_to_table.f90</em> is
+a potentially useful tool. You can run the observation sequence files
+through this filter to come up with a 'XYZ'-like file that can be readily
+plotted with
+<em class="file">DART/diagnostics/matlab/plot_wind_vectors.m</em>.
</P>
<!--==================================================================-->
+<!--=================== DESCRIPTION OF A NAMELIST ===================-->
+<!--==================================================================-->
-<A NAME="Programs"></A>
+<A NAME="Namelist"></A>
<BR><HR><BR>
-<H2>PROGRAMS</H2>
+<H2>NAMELIST</H2>
+<P>
+<div class=namelist><pre>
+<em class=call>namelist / convert_L2b_nml / </em> &
+ l2b_file, datadir, outputdir, lon1, lon2, lat1, lat2
+</pre></div>
+</P>
+<H3 class=indent1>Discussion</H3>
+
<P>
-
+This namelist is read in a file called <em class=file>input.nml</em>.<br />
+We adhere to the F90 standard of starting a namelist with an ampersand
+'&' and terminating with a slash '/'.
+<br />
+<br />
+It is possible to restrict the output observation sequence to contain
+data from a region of interest throught the use of the namelist
+parameters. If you need a region that spans the Prime Meridian,
+for example, a region from 300 E to 40 E and 60 S to 30 S (some of
+the South Atlantic), simply specify <em class="input">lon1 = 300, lon2 =
+40, lat1 = -60, lat2 = -30</em>.
</P>
+<TABLE border=0 cellpadding=3 width=100%>
+<TR><TH align=left>Contents </TH>
+ <TH align=left>Type </TH>
+ <TH align=left>Description </TH></TR>
+<TR><!--contents--><TD valign=top>l2b_file </TD>
+ <!-- type --><TD valign=top>character(len=128)</TD>
+ <!--descript--><TD>name of the HDF file to read - NOT including
+ the directory, e.g. QS_S2B44444.20080021548
+ <em class="unit">[default:'']</em></TD></TR>
+<TR><!--contents--><TD valign=top>datadir </TD>
+ <!-- type --><TD valign=top>character(len=128) </TD>
+ <!--descript--><TD>the directory containing the HDF files
+ <em class="unit">[default:'.']</em></TD></TR>
+<TR><!--contents--><TD valign=top>outputdir</TD>
+ <!-- type --><TD valign=top>character(len=128) </TD>
+ <!--descript--><TD>the directory for the output observation
+ sequence files.
+ <em class="unit">[default:'.']</em></TD></TR>
+<TR><!--contents--><TD valign=top>lon1 </TD>
+ <!-- type --><TD valign=top>real(r4) </TD>
+ <!--descript--><TD>the West-most longitude of interest. [0.0, 360]
+ <em class="unit">[default:0.0]</em></TD></TR>
+<TR><!--contents--><TD valign=top>lon2 </TD>
+ <!-- type --><TD valign=top>real(r4) </TD>
+ <!--descript--><TD>the East-most longitude of interest. [0.0, 360]
+ <em class="unit">[default:360.0]</em></TD></TR>
+<TR><!--contents--><TD valign=top>lat1 </TD>
+ <!-- type --><TD valign=top>real(r4) </TD>
+ <!--descript--><TD>the South-most latitude of interest. [-90.0, 90.0]
+ <em class="unit">[default:-90.0]</em></TD></TR>
+<TR><!--contents--><TD valign=top>lat2 </TD>
+ <!-- type --><TD valign=top>real(r8) </TD>
+ <!--descript--><TD>the North-most latitude of interest. [-90.0, 90.0]
+ <em class="unit">[default:90.0</em></TD></TR>
+</TABLE>
+
<!--==================================================================-->
<!-- Describe the bugs. -->
<!--==================================================================-->
@@ -96,7 +272,7 @@
<A NAME="KnownBugs"></A>
<BR><HR><BR>
<H2>KNOWN BUGS</H2>
-<P>
+<P>There are no known bugs at this time.
</P>
<!--==================================================================-->
@@ -107,13 +283,28 @@
<BR><HR><BR>
<H2>FUTURE PLANS</H2>
<P>
+<ol>
+ <li>There is one bit of error-checking that I did not survive the
+ conversion from F77 to F90. I need to restore the check that the
+ HDF file being read is a 'Level 2B' product.</li>
+ <li>There is a lot of error-checking that is not being done. I need
+ to bulletproof the code more.</li>
+ <li>We need namelist options to select something other than the
+ highest-ranked ambiguity.</li>
+ <li>We need namelist options to select more QC flags - not
+ just the ones with the 'perfect' QC value of 0</li>
+ <li>The ability to leave the observations as speed and direction
+ instead of converting them to U,V components. This is a
+ natural implementation of the instrument error
+ characteristics.</li>
+</ol>
</P>
<BR><HR><BR>
<!--==================================================================-->
<TABLE summary="">
-<TR><TD>Contact: </TD><TD> nancy collins </TD></TR>
+<TR><TD>Contact: </TD><TD> Tim Hoar </TD></TR>
<TR><TD>Revision: </TD><TD> $Revision$ </TD></TR>
<TR><TD>Source: </TD><TD> $URL$ </TD></TR>
<TR><TD>Change Date: </TD><TD> $Date$ </TD></TR>
Modified: DART/trunk/observations/quikscat/convert_L2b.f90
===================================================================
--- DART/trunk/observations/quikscat/convert_L2b.f90 2009-04-10 17:45:24 UTC (rev 3807)
+++ DART/trunk/observations/quikscat/convert_L2b.f90 2009-04-10 21:41:29 UTC (rev 3808)
@@ -98,3 +98,4 @@
call timestamp(source,revision,revdate,'end') ! close the log file
end program convert_L2b
+
Added: DART/trunk/observations/quikscat/convert_L2b.nml
===================================================================
--- DART/trunk/observations/quikscat/convert_L2b.nml (rev 0)
+++ DART/trunk/observations/quikscat/convert_L2b.nml 2009-04-10 21:41:29 UTC (rev 3808)
@@ -0,0 +1,8 @@
+&convert_L2b_nml
+ l2b_file = 'QS_S2B44444.20080021548',
+ datadir = '.',
+ outputdir = '.',
+ lon1 = 0.0, lon2 = 360.0,
+ lat1 = -90.0, lat2 = 90.0
+ /
+
Property changes on: DART/trunk/observations/quikscat/convert_L2b.nml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:eol-style
+ native
More information about the Dart-dev
mailing list