[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> &#38;
+    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
+'&#38;' 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