[Dart-dev] [8762] DART/trunk/observations/MADIS: updates to the madis converters.

nancy at ucar.edu nancy at ucar.edu
Wed Oct 7 15:51:29 MDT 2015


Revision: 8762
Author:   nancy
Date:     2015-10-07 15:51:29 -0600 (Wed, 07 Oct 2015)
Log Message:
-----------
updates to the madis converters.  bug fix for the
rawin converter - for height obs on significant levels
it was incorrectly discarding obs.  it was also not using
the right qc field for heights.  

for the rest of the madis converters, sort the obs by time 
first before adding them to the output obs_seq file.
they run much faster this way, and almost all the converters
already read in all the data first before looping over it
so there's no increase in memory usage.

the updates to the path_names_* files are because they need
the sort module now.  also make obs_seq_to_netcdf which can 
be useful for diagnostics.

the "sig level by height" bug fix is already on the lanai 
release for the rawin converter.

Modified Paths:
--------------
    DART/trunk/observations/MADIS/convert_madis_acars.f90
    DART/trunk/observations/MADIS/convert_madis_marine.f90
    DART/trunk/observations/MADIS/convert_madis_mesonet.f90
    DART/trunk/observations/MADIS/convert_madis_metar.f90
    DART/trunk/observations/MADIS/convert_madis_profiler.f90
    DART/trunk/observations/MADIS/convert_madis_rawin.f90
    DART/trunk/observations/MADIS/convert_madis_satwnd.f90
    DART/trunk/observations/MADIS/work/path_names_convert_madis_marine
    DART/trunk/observations/MADIS/work/path_names_convert_madis_metar
    DART/trunk/observations/MADIS/work/path_names_convert_madis_profiler
    DART/trunk/observations/MADIS/work/path_names_convert_madis_rawin

Added Paths:
-----------
    DART/trunk/observations/MADIS/work/mkmf_obs_seq_to_netcdf
    DART/trunk/observations/MADIS/work/path_names_obs_seq_to_netcdf

-------------- next part --------------
Modified: DART/trunk/observations/MADIS/convert_madis_acars.f90
===================================================================
--- DART/trunk/observations/MADIS/convert_madis_acars.f90	2015-10-07 21:04:34 UTC (rev 8761)
+++ DART/trunk/observations/MADIS/convert_madis_acars.f90	2015-10-07 21:51:29 UTC (rev 8762)
@@ -74,11 +74,11 @@
 real(r8) :: palt_miss, tair_miss, relh_miss, tdew_miss, wdir_miss, wspd_miss, uwnd, &
             vwnd, qobs, qsat, oerr, pres, qc, qerr
 
-integer,  allocatable :: tobs(:), tobu(:)
+integer,  allocatable :: tobs(:), tused(:)
 real(r8), allocatable :: lat(:), lon(:), palt(:), tair(:), relh(:), tdew(:), &
-                         wdir(:), wspd(:), latu(:), lonu(:), palu(:)
+                         wdir(:), wspd(:)
 integer,  allocatable :: qc_palt(:), qc_tair(:), qc_relh(:), qc_tdew(:), qc_wdir(:), qc_wspd(:)
-integer,  allocatable :: indu(:), sorted_indu(:)
+integer,  allocatable :: used(:), sorted_used(:)
 
 type(obs_sequence_type) :: obs_seq
 type(obs_type)          :: obs, prev_obs
@@ -104,10 +104,8 @@
 allocate(palt(nobs))  ;  allocate(tobs(nobs))
 allocate(tair(nobs))  ;  allocate(relh(nobs))
 allocate(wdir(nobs))  ;  allocate(wspd(nobs))
-allocate(latu(nobs))  ;  allocate(lonu(nobs))
-allocate(palu(nobs))  ;  allocate(tdew(nobs))
-allocate(tobu(nobs))
-allocate(indu(nobs))  ;  allocate(sorted_indu(nobs))
+allocate(tdew(nobs))  ;  allocate(tused(nobs))
+allocate(used(nobs))  ;  allocate(sorted_used(nobs))
 
 nvars = 3
 if (include_specific_humidity) nvars = nvars + 1
@@ -188,27 +186,25 @@
 
   ! Check for duplicate observations
   do i = 1, nused
-    if ( lon(n)  == lonu(i) .and. &
-         lat(n)  == latu(i) .and. &
-         tobs(n) == tobu(i) .and. & 
-         palt(n) == palu(i) ) cycle obsloop1
+    if ( lon(n)  == lon(used(i)) .and. &
+         lat(n)  == lat(used(i)) .and. &
+         tobs(n) == tobs(used(i)) .and. & 
+         palt(n) == palt(used(i)) ) cycle obsloop1
   end do
 
   nused = nused + 1
-  indu(nused) = n
-  latu(nused) =  lat(n)
-  lonu(nused) =  lon(n)
-  palu(nused) = palt(n)
-  tobu(nused) = tobs(n)
+  used(nused) = n
+  tused(nused) = tobs(n)
 
 end do obsloop1
 
-call index_sort(tobu, sorted_indu, nused)
+! sort obs by time
+call index_sort(tused, sorted_used, nused)
 
 obsloop2: do i = 1, nused
 
   ! get the next unique observation in sorted time order
-  n = indu(sorted_indu(i))
+  n = used(sorted_used(i))
 
   ! compute time of observation
   time_obs = increment_time(comp_day0, tobs(n))

Modified: DART/trunk/observations/MADIS/convert_madis_marine.f90
===================================================================
--- DART/trunk/observations/MADIS/convert_madis_marine.f90	2015-10-07 21:04:34 UTC (rev 8761)
+++ DART/trunk/observations/MADIS/convert_madis_marine.f90	2015-10-07 21:51:29 UTC (rev 8762)
@@ -51,6 +51,7 @@
                                  MARINE_SFC_TEMPERATURE, MARINE_SFC_SPECIFIC_HUMIDITY,     &
                                  MARINE_SFC_ALTIMETER, MARINE_SFC_DEWPOINT,   &
                                  MARINE_SFC_RELATIVE_HUMIDITY
+use             sort_mod,  only : index_sort
 use obs_def_altimeter_mod, only : compute_altimeter
 use     obs_utilities_mod, only : getvar_real, get_or_fill_QC, add_obs_to_seq, &
                                   create_3d_obs, getvar_int, getdimlen, set_missing_name
@@ -81,9 +82,9 @@
 real(r8) :: sfcp_miss, tair_miss, tdew_miss, wdir_miss, wspd_miss, uwnd, &
             vwnd, altim, palt, oerr, qobs, qerr, qsat, rh, slp_miss, elev_miss, qc
 
-integer,  allocatable :: tobs(:), plid(:), tobu(:)
+integer,  allocatable :: tobs(:), plid(:), tused(:), used(:), sorted_used(:)
 real(r8), allocatable :: lat(:), lon(:), elev(:), sfcp(:), tair(:), slp(:), & 
-                         tdew(:), wdir(:), wspd(:), latu(:), lonu(:)
+                         tdew(:), wdir(:), wspd(:)
 integer,  allocatable :: qc_sfcp(:), qc_slp(:), qc_tair(:), qc_tdew(:), qc_wdir(:), qc_wspd(:)
 
 type(obs_sequence_type) :: obs_seq
@@ -107,12 +108,12 @@
 call set_missing_name("missing_value")
 
 allocate( lat(nobs))  ;  allocate( lon(nobs))
-allocate(latu(nobs))  ;  allocate(lonu(nobs))
 allocate(elev(nobs))  ;  allocate(plid(nobs))
 allocate(sfcp(nobs))  ;  allocate(slp(nobs))
 allocate(tair(nobs))  ;  allocate(tdew(nobs))
 allocate(wdir(nobs))  ;  allocate(wspd(nobs))
-allocate(tobs(nobs))  ;  allocate(tobu(nobs))
+allocate(tobs(nobs))  ;  allocate(tused(nobs))
+allocate(used(nobs))  ;  allocate(sorted_used(nobs))
 
 nvars = 4
 if (include_specific_humidity) nvars = nvars + 1
@@ -184,25 +185,39 @@
 qc = 1.0_r8
 
 nused = 0
-obsloop: do n = 1, nobs
+obsloop1: do n = 1, nobs
 
-  ! compute time of observation
-  time_obs = increment_time(comp_day0, tobs(n))
-
   ! check the lat/lon values to see if they are ok
-  if ( lat(n) >  90.0_r8 .or. lat(n) <  -90.0_r8 ) cycle obsloop
-  if ( lon(n) > 180.0_r8 .or. lon(n) < -180.0_r8 ) cycle obsloop
+  if ( lat(n) >  90.0_r8 .or. lat(n) <  -90.0_r8 ) cycle obsloop1
+  if ( lon(n) > 180.0_r8 .or. lon(n) < -180.0_r8 ) cycle obsloop1
 
   ! change lon from -180 to 180 into 0-360
   if ( lon(n) < 0.0_r8 )  lon(n) = lon(n) + 360.0_r8
 
   ! Check for duplicate observations
   do i = 1, nused
-    if ( lon(n) == lonu(i) .and. &
-         lat(n) == latu(i) .and. &
-        tobs(n) == tobu(i) ) cycle obsloop
+    if ( lon(n) == lon(used(i)) .and. &
+         lat(n) == lat(used(i)) .and. &
+        tobs(n) == tobs(used(i)) ) cycle obsloop1
   end do
 
+  nused = nused + 1
+  used(nused) = n
+  tused(nused) = tobs(n)
+
+enddo obsloop1
+
+! sort indices only by time
+call index_sort(tused, sorted_used, nused)
+
+obsloop2: do i = 1, nused
+
+  ! get the next unique observation in sorted time order
+  n = used(sorted_used(i))
+
+  ! compute time of observation
+  time_obs = increment_time(comp_day0, tobs(n))
+
   if ( elev(n) /= elev_miss ) then
     palt = pres_alt_to_pres(elev(n)) * 0.01_r8
   else
@@ -381,13 +396,8 @@
 
 100 continue
 
-  nused = nused + 1
-  latu(nused) =  lat(n)
-  lonu(nused) =  lon(n)
-  tobu(nused) = tobs(n)
+end do obsloop2
 
-end do obsloop
-
 ! if we added any obs to the sequence, write it now.
 if ( get_num_obs(obs_seq) > 0 )  call write_obs_seq(obs_seq, marine_out_file)
 

Modified: DART/trunk/observations/MADIS/convert_madis_mesonet.f90
===================================================================
--- DART/trunk/observations/MADIS/convert_madis_mesonet.f90	2015-10-07 21:04:34 UTC (rev 8761)
+++ DART/trunk/observations/MADIS/convert_madis_mesonet.f90	2015-10-07 21:51:29 UTC (rev 8762)
@@ -79,9 +79,9 @@
 real(r8) :: alti_miss, tair_miss, tdew_miss, wdir_miss, wspd_miss, uwnd, &
             vwnd, palt, qobs, qsat, rh, oerr, pres, qerr, qc
 
-integer,  allocatable :: tobs(:), tobu(:), indu(:), sorted_indu(:)
+integer,  allocatable :: tobs(:), tused(:), used(:), sorted_used(:)
 real(r8), allocatable :: lat(:), lon(:), elev(:), alti(:), tair(:), & 
-                         tdew(:), wdir(:), wspd(:), latu(:), lonu(:)
+                         tdew(:), wdir(:), wspd(:)
 integer,  allocatable :: qc_alti(:), qc_tair(:), qc_tdew(:), qc_wdir(:), qc_wspd(:)
   
 type(obs_sequence_type) :: obs_seq
@@ -108,12 +108,11 @@
 call set_missing_name("missing_value")
 
 allocate( lat(nobs))  ;  allocate( lon(nobs))
-allocate(latu(nobs))  ;  allocate(lonu(nobs))
 allocate(elev(nobs))  ;  allocate(alti(nobs))
 allocate(tair(nobs))  ;  allocate(tdew(nobs))
 allocate(wdir(nobs))  ;  allocate(wspd(nobs))
-allocate(tobs(nobs))  ;  allocate(tobu(nobs))
-allocate(indu(nobs))  ;  allocate(sorted_indu(nobs))
+allocate(tobs(nobs))  ;  allocate(tused(nobs))
+allocate(used(nobs))  ;  allocate(sorted_used(nobs))
 
 nvars = 4
 if (include_specific_humidity) nvars = nvars + 1
@@ -194,27 +193,26 @@
 
   ! check for duplicate observations
   do i=1, nused
-    if ( lon(n) == lonu(i) .and. &
-         lat(n) == latu(i) .and. &
-        tobs(n) == tobu(i) ) cycle obsloop1
+    if ( lon(n) == lon(used(i)) .and. &
+         lat(n) == lat(used(i)) .and. &
+        tobs(n) == tobs(used(i)) ) cycle obsloop1
   enddo
 
   nused = nused + 1
-  indu(nused) =  n
-  latu(nused) =  lat(n)
-  lonu(nused) =  lon(n)
-  tobu(nused) = tobs(n)
+  used(nused) =  n
+  tused(nused) = tobs(n)
 
 enddo obsloop1
 
 ! sort into time order
-call index_sort(tobu, sorted_indu, nused)
+call index_sort(tused, sorted_used, nused)
 
-
 obsloop2: do i = 1, nused
 
-  n = indu(sorted_indu(i))
+  ! get the next unique observation in sorted time order
+  n = used(sorted_used(i))
 
+
   ! compute time of observation
   time_obs = increment_time(comp_day0, tobs(n))
 
@@ -283,7 +281,7 @@
     ! more than a degree larger, skip it completely.  if it is
     ! less, set them equal and continue.
     if (tdew(n) > tair(n)) then
-       if (tdew(n) > tair(n) + 1.0_r8) goto 100
+       if (tdew(n) > tair(n) + 1.0_r8) cycle obsloop2
        tdew(n) = tair(n)
     endif
 
@@ -353,8 +351,6 @@
 
   endif  ! quality control/missing check on tair, tdew
 
-100 continue
-
 end do obsloop2
 
 ! if we added any obs to the sequence, write it now.

Modified: DART/trunk/observations/MADIS/convert_madis_metar.f90
===================================================================
--- DART/trunk/observations/MADIS/convert_madis_metar.f90	2015-10-07 21:04:34 UTC (rev 8761)
+++ DART/trunk/observations/MADIS/convert_madis_metar.f90	2015-10-07 21:51:29 UTC (rev 8762)
@@ -50,6 +50,7 @@
                               METAR_TEMPERATURE_2_METER, METAR_SPECIFIC_HUMIDITY_2_METER, & 
                               METAR_DEWPOINT_2_METER, METAR_RELATIVE_HUMIDITY_2_METER, &
                               METAR_ALTIMETER                
+use             sort_mod,  only : index_sort
 use  obs_utilities_mod, only : getvar_real, get_or_fill_QC, add_obs_to_seq, &
                                create_3d_obs, getvar_int, getdimlen, set_missing_name
 
@@ -82,9 +83,9 @@
 real(r8) :: alti_miss, tair_miss, tdew_miss, wdir_miss, wspd_miss, uwnd, &
             vwnd, palt, qobs, qsat, rh, oerr, pres, qerr, qc
 
-integer,  allocatable :: tobs(:), tobu(:)
+integer,  allocatable :: tobs(:), tused(:), used(:), sorted_used(:)
 real(r8), allocatable :: lat(:), lon(:), elev(:), alti(:), tair(:), & 
-                         tdew(:), wdir(:), wspd(:), latu(:), lonu(:)
+                         tdew(:), wdir(:), wspd(:)
 integer,  allocatable :: qc_alti(:), qc_tair(:), qc_tdew(:), qc_wdir(:), qc_wspd(:)
 
 type(obs_sequence_type) :: obs_seq
@@ -108,11 +109,11 @@
 call set_missing_name("missing_value")
 
 allocate( lat(nobs))  ;  allocate( lon(nobs))
-allocate(latu(nobs))  ;  allocate(lonu(nobs))
 allocate(elev(nobs))  ;  allocate(alti(nobs))
 allocate(tair(nobs))  ;  allocate(tdew(nobs))
 allocate(wdir(nobs))  ;  allocate(wspd(nobs))
-allocate(tobs(nobs))  ;  allocate(tobu(nobs))
+allocate(tobs(nobs))  ;  allocate(tused(nobs))
+allocate(used(nobs))  ;  allocate(sorted_used(nobs))
 
 nvars = 4
 if (include_specific_humidity) nvars = nvars + 1
@@ -177,28 +178,42 @@
 qc = 1.0_r8
 
 nused = 0
-obsloop: do n = 1, nobs
+obsloop1: do n = 1, nobs
 
   ! check to make sure this observation has not been used
   call getvar_char(ncid, "reportType", n, rtype)
-  if ( rtype /= 'METAR' .and. exclude_special )  cycle obsloop
+  if ( rtype /= 'METAR' .and. exclude_special )  cycle obsloop1
 
-  ! compute time of observation
-  time_obs = increment_time(comp_day0, tobs(n))
-
   ! check the lat/lon values to see if they are ok
-  if ( lat(n) >  90.0_r8 .or. lat(n) <  -90.0_r8 ) cycle obsloop
-  if ( lon(n) > 180.0_r8 .or. lon(n) < -180.0_r8 ) cycle obsloop
+  if ( lat(n) >  90.0_r8 .or. lat(n) <  -90.0_r8 ) cycle obsloop1
+  if ( lon(n) > 180.0_r8 .or. lon(n) < -180.0_r8 ) cycle obsloop1
 
   if ( lon(n) < 0.0_r8 )  lon(n) = lon(n) + 360.0_r8
 
   ! Check for duplicate observations
   do i = 1, nused
-    if ( lon(n) == lonu(i) .and. &
-         lat(n) == latu(i) .and. &
-        tobs(n) == tobu(i) ) cycle obsloop
+    if ( lon(n) == lon(used(i)) .and. &
+         lat(n) == lat(used(i)) .and. &
+        tobs(n) == tobs(used(i)) ) cycle obsloop1
   end do
 
+  nused = nused + 1
+  used(nused) = n
+  tused(nused) = tobs(n)
+
+enddo obsloop1
+
+! sort obs by time
+call index_sort(tused, sorted_used, nused)
+
+obsloop2: do i = 1, nused
+
+  ! get the next unique observation in sorted time order
+  n = used(sorted_used(i))
+
+  ! compute time of observation
+  time_obs = increment_time(comp_day0, tobs(n))
+
   palt = pres_alt_to_pres(elev(n)) * 0.01_r8
 
   ! extract actual time of observation in file into oday, osec.
@@ -264,7 +279,7 @@
     ! more than a degree larger, skip it completely.  if it is
     ! less, set them equal and continue.
     if (tdew(n) > tair(n)) then
-       if (tdew(n) > tair(n) + 1.0_r8) goto 100
+       if (tdew(n) > tair(n) + 1.0_r8) cycle obsloop2
        tdew(n) = tair(n)
     endif
 
@@ -334,15 +349,8 @@
 
   endif  ! quality control/missing check on tair, tdew
 
-100 continue
+end do obsloop2
 
-  nused = nused + 1
-  latu(nused) =  lat(n)
-  lonu(nused) =  lon(n)
-  tobu(nused) = tobs(n)
-
-end do obsloop
-
 ! need to wait to close file because in the loop it queries the
 ! report types.
 call nc_check( nf90_close(ncid) , &

Modified: DART/trunk/observations/MADIS/convert_madis_profiler.f90
===================================================================
--- DART/trunk/observations/MADIS/convert_madis_profiler.f90	2015-10-07 21:04:34 UTC (rev 8761)
+++ DART/trunk/observations/MADIS/convert_madis_profiler.f90	2015-10-07 21:51:29 UTC (rev 8762)
@@ -39,6 +39,7 @@
                               set_copy_meta_data, set_qc_meta_data
 use       obs_err_mod, only : prof_wind_error
 use      obs_kind_mod, only : PROFILER_U_WIND_COMPONENT, PROFILER_V_WIND_COMPONENT
+use          sort_mod, only : index_sort
 use obs_utilities_mod, only : getvar_real, get_or_fill_QC, add_obs_to_seq, &
                               create_3d_obs, getvar_int, getdimlen, getvar_real_2d, &
                               getvar_int_2d, query_varname
@@ -131,7 +132,7 @@
 
 call getvar_real_2d(ncid, "levels",      levs           ) ! height above station in meters
 call getvar_real_2d(ncid, "uComponent",  uwnd, uwnd_miss) ! e-w component
-call getvar_real_2d(ncid, "vComponent",  vwnd, uwnd_miss) ! n-s component
+call getvar_real_2d(ncid, "vComponent",  vwnd, vwnd_miss) ! n-s component
 
 ! if user says to use them, read in QCs if present
 if (use_input_qc) then

Modified: DART/trunk/observations/MADIS/convert_madis_rawin.f90
===================================================================
--- DART/trunk/observations/MADIS/convert_madis_rawin.f90	2015-10-07 21:04:34 UTC (rev 8761)
+++ DART/trunk/observations/MADIS/convert_madis_rawin.f90	2015-10-07 21:51:29 UTC (rev 8762)
@@ -59,6 +59,7 @@
                                   RADIOSONDE_RELATIVE_HUMIDITY,     &
                                   RADIOSONDE_DEWPOINT,              &
                                   RADIOSONDE_SURFACE_ALTIMETER 
+use             sort_mod,  only : index_sort
 use     obs_utilities_mod, only : add_obs_to_seq, create_3d_obs, &
                                   getdimlen, getvar_int, set_missing_name
 
@@ -72,18 +73,18 @@
 integer, parameter :: num_copies = 1,   &   ! number of copies in sequence
                       num_qc     = 1        ! number of QC entries
 
-integer :: oday, osec, nman, nsig, nsound, nused, io, iunit, & 
+integer :: oday, osec, nsig, nsound, nused, io, iunit, & 
            nmaxml, nmaxsw, nmaxst, maxobs, nvars_man, nvars_sigt, k, n, i, ncid
 
-integer, allocatable :: obscnt(:)
+integer, allocatable :: obscnt(:), used(:), sorted_used(:), tused(:), nman(:)
+real(r8), allocatable :: lon(:), lat(:), elev(:), otime(:)
 
 logical :: fexist, first_obs
 
-real(r8) :: otime, lat, lon, elev, uwnd, vwnd, qobs, qsat, dptk, oerr, &
+real(r8) :: uwnd, vwnd, qobs, qsat, dptk, oerr, &
             pres_miss, wdir_miss, wspd_miss, tair_miss, tdew_miss, prespa, & 
             qc, altim, rh, qerr, hght_miss
 real(r8), parameter   :: HGHT_THRESHOLD = 40000.0_r8   
-real(r8), allocatable :: latu(:), lonu(:)
 
 real(r8), allocatable :: pres(:), wdir(:), wspd(:), tair(:), tdew(:), hght(:)
 integer,  allocatable :: qc_pres(:), qc_wdir(:), qc_wspd(:), qc_tair(:), qc_tdew(:), qc_hght(:)
@@ -163,13 +164,15 @@
 call set_missing_name("missing_value")
 
 allocate(obscnt(nsound))  
-allocate(latu(nsound))  ; allocate(lonu(nsound))
+allocate(lon(nsound), lat(nsound), elev(nsound), otime(nsound))
+allocate(nman(nsound), used(nsound), sorted_used(nsound), tused(nsound))
+
 nmaxml = 0  ;  nmaxsw = 0  ;  nmaxst = 0
 
 call getvar_int(ncid, "numMand", obscnt)
 do n = 1, nsound 
   if ( obscnt(n) > nmaxml .and. obscnt(n) < 25 )  nmaxml = obscnt(n)
-end do
+enddo
 
 if ( do_significant_level_winds ) then
   if ( wind_use_vert_pressure ) then
@@ -179,14 +182,14 @@
   endif
   do n = 1, nsound
     if ( obscnt(n) > nmaxsw .and. obscnt(n) < 150 )  nmaxsw = obscnt(n)
-  end do
+  enddo
 endif
 
 if ( do_significant_level_temps ) then
   call getvar_int(ncid, "numSigT", obscnt)
   do n = 1, nsound
     if ( obscnt(n) > nmaxst .and. obscnt(n) < 150 )  nmaxst = obscnt(n)
-  end do
+  enddo
 endif
 
 nvars_man = 4
@@ -224,10 +227,10 @@
   call init_obs_sequence(obs_seq, num_copies, num_qc, maxobs)
   do n = 1, num_copies
     call set_copy_meta_data(obs_seq, n, 'MADIS observation')
-  end do
+  enddo
   do n = 1, num_qc
     call set_qc_meta_data(obs_seq, n, 'Data QC')
-  end do
+  enddo
 
 endif
 
@@ -236,73 +239,86 @@
 qc = 1.0_r8
 
 nused = 0
-sondeloop : do n = 1, nsound !  loop over all soundings in the file 
+sondeloop1 : do n = 1, nsound !  loop over all soundings in the file 
 
-  call getvar_real_1d_1val(ncid, "staLat",  n, lat  )
-  call getvar_real_1d_1val(ncid, "staLon",  n, lon  )
-  call getvar_real_1d_1val(ncid, "staElev", n, elev )
-  call getvar_int_1d_1val (ncid, "numMand", n, nman )
-  call getvar_real_1d_1val(ncid, "synTime", n, otime)  !! , time_miss)
+  call getvar_real_1d_1val(ncid, "staLat",  n, lat(n)  )
+  call getvar_real_1d_1val(ncid, "staLon",  n, lon(n)  )
+  call getvar_real_1d_1val(ncid, "staElev", n, elev(n) )
+  call getvar_int_1d_1val (ncid, "numMand", n, nman(n) )
+  call getvar_real_1d_1val(ncid, "synTime", n, otime(n))  !! , time_miss)
   ! the original code had a line to get the fill value here but it
   ! was commented out.  is there one?  do we need it?
 
-  if (nman < 0 .or. nman > nmaxml) cycle sondeloop
+  if (nman(n) < 0 .or. nman(n) > nmaxml) cycle sondeloop1
 
-  if ( otime < 0.0_r8 ) cycle sondeloop
+  if ( otime(n) < 0.0_r8 ) cycle sondeloop1
 
-  ! compute time of observation
-  time_obs = increment_time(comp_day0, nint(otime))
-
   ! check the lat/lon values to see if they are ok
-  if ( lat >  90.0_r8 .or. lat <  -90.0_r8 ) cycle sondeloop
-  if ( lon > 180.0_r8 .or. lon < -180.0_r8 ) cycle sondeloop
+  if ( lat(n) >  90.0_r8 .or. lat(n) <  -90.0_r8 ) cycle sondeloop1
+  if ( lon(n) > 180.0_r8 .or. lon(n) < -180.0_r8 ) cycle sondeloop1
 
-  ! change lon from -180 to 180 into 0-360
-  if (lon < 0.0_r8) lon = lon + 360.0_r8
-
   ! Check for duplicate observations
   do i = 1, nused
-    if ( lon == lonu(i) .and. &
-         lat == latu(i) ) cycle sondeloop
-  end do
+    if ( lon(n) == lon(used(i)) .and. &
+         lat(n) == lat(used(i)) ) cycle sondeloop1
+  enddo
 
+  nused = nused + 1
+  used(nused) = n
+  tused(nused) = nint(otime(n))
 
+enddo sondeloop1
+
+! sort by obs time
+call index_sort(tused, sorted_used, nused)
+
+sondeloop2: do i = 1, nused
+
+  ! get the next unique observation in sorted time order
+  n = used(sorted_used(i))
+
+  ! change lon from -180 to 180 into 0-360
+  if (lon(n) < 0.0_r8) lon(n) = lon(n) + 360.0_r8
+
+  ! compute time of observation
+  time_obs = increment_time(comp_day0, nint(otime(n)))
+
   ! extract actual time of observation in file into oday, osec.
   call get_time(time_obs, osec, oday)
 
-  if (nman > 0) then
-    allocate(pres(nman))  ;  allocate(tair(nman))  ;  allocate(tdew(nman))
-    allocate(wdir(nman))  ;  allocate(wspd(nman))
+  if (nman(n) > 0) then
+    allocate(pres(nman(n)))  ;  allocate(tair(nman(n)))  ;  allocate(tdew(nman(n)))
+    allocate(wdir(nman(n)))  ;  allocate(wspd(nman(n)))
   
-    allocate(qc_pres(nman))  ;  allocate(qc_tair(nman))  ;  allocate(qc_tdew(nman))
-    allocate(qc_wdir(nman))  ;  allocate(qc_wspd(nman))
+    allocate(qc_pres(nman(n)))  ;  allocate(qc_tair(nman(n)))  ;  allocate(qc_tdew(nman(n)))
+    allocate(qc_wdir(nman(n)))  ;  allocate(qc_wspd(nman(n)))
   
-    call getvar_real_2d(ncid, "prMan", n, nman, pres, pres_miss)
-    call getvar_real_2d(ncid, "tpMan", n, nman, tair, tair_miss)
-    call getvar_real_2d(ncid, "tdMan", n, nman, tdew, tdew_miss)
-    call getvar_real_2d(ncid, "wdMan", n, nman, wdir, wdir_miss)
-    call getvar_real_2d(ncid, "wsMan", n, nman, wspd, wspd_miss)
+    call getvar_real_2d(ncid, "prMan", n, nman(n), pres, pres_miss)
+    call getvar_real_2d(ncid, "tpMan", n, nman(n), tair, tair_miss)
+    call getvar_real_2d(ncid, "tdMan", n, nman(n), tdew, tdew_miss)
+    call getvar_real_2d(ncid, "wdMan", n, nman(n), wdir, wdir_miss)
+    call getvar_real_2d(ncid, "wsMan", n, nman(n), wspd, wspd_miss)
   
     ! if user says to use QC, read them in or fill if not there
     if (use_input_qc) then
-       call get_or_fill_QC_2d(ncid, "prManQCR", n, nman, qc_pres)
-       call get_or_fill_QC_2d(ncid, "tpManQCR", n, nman, qc_tair)
-       call get_or_fill_QC_2d(ncid, "tdManQCR", n, nman, qc_tdew)
-       call get_or_fill_QC_2d(ncid, "wdManQCR", n, nman, qc_wdir)
-       call get_or_fill_QC_2d(ncid, "wsManQCR", n, nman, qc_wspd)
+       call get_or_fill_QC_2d(ncid, "prManQCR", n, nman(n), qc_pres)
+       call get_or_fill_QC_2d(ncid, "tpManQCR", n, nman(n), qc_tair)
+       call get_or_fill_QC_2d(ncid, "tdManQCR", n, nman(n), qc_tdew)
+       call get_or_fill_QC_2d(ncid, "wdManQCR", n, nman(n), qc_wdir)
+       call get_or_fill_QC_2d(ncid, "wsManQCR", n, nman(n), qc_wspd)
     else
        qc_pres = 0
        qc_tair = 0 ;  qc_tdew = 0
        qc_wdir = 0 ;  qc_wspd = 0
     endif
   
-    if ( pres(1) /= pres_miss .and. qc_pres(1) == 0 .and. elev < 9999.0) then
+    if ( pres(1) /= pres_miss .and. qc_pres(1) == 0 .and. elev(n) < 9999.0) then
   
-      altim = compute_altimeter(pres(1), elev)
-      oerr  = rawin_pres_error(pres_alt_to_pres(elev) * 0.01_r8)
+      altim = compute_altimeter(pres(1), elev(n))
+      oerr  = rawin_pres_error(pres_alt_to_pres(elev(n)) * 0.01_r8)
       if ( altim >= 890.0_r8 .and. altim <= 1100.0_r8 .and. oerr /= missing_r8 ) then
   
-        call create_3d_obs(lat, lon, elev, VERTISSURFACE, altim, &
+        call create_3d_obs(lat(n), lon(n), elev(n), VERTISSURFACE, altim, &
                            RADIOSONDE_SURFACE_ALTIMETER, oerr, oday, osec, qc, obs)
         call add_obs_to_seq(obs_seq, obs, time_obs, prev_obs, prev_time, first_obs)
   
@@ -310,7 +326,7 @@
   
     endif
   
-    do k = 2, nman   ! obtain the mandatory level data
+    do k = 2, nman(n)   ! obtain the mandatory level data
   
       prespa = pres(k) * 100.0_r8
   
@@ -322,11 +338,11 @@
         if ( abs(uwnd) <= 150.0_r8 .and. & 
              abs(vwnd) <= 150.0_r8 .and. oerr /= missing_r8 ) then
   
-          call create_3d_obs(lat, lon, prespa, VERTISPRESSURE, uwnd, &
+          call create_3d_obs(lat(n), lon(n), prespa, VERTISPRESSURE, uwnd, &
                              RADIOSONDE_U_WIND_COMPONENT, oerr, oday, osec, qc, obs)
           call add_obs_to_seq(obs_seq, obs, time_obs, prev_obs, prev_time, first_obs)
    
-          call create_3d_obs(lat, lon, prespa, VERTISPRESSURE, vwnd, &
+          call create_3d_obs(lat(n), lon(n), prespa, VERTISPRESSURE, vwnd, &
                              RADIOSONDE_V_WIND_COMPONENT, oerr, oday, osec, qc, obs)
           call add_obs_to_seq(obs_seq, obs, time_obs, prev_obs, prev_time, first_obs)
   
@@ -340,7 +356,7 @@
         if ( tair(k) >= 180.0_r8 .and. &
              tair(k) <= 330.0_r8 .and. oerr /= missing_r8 ) then
   
-          call create_3d_obs(lat, lon, prespa, VERTISPRESSURE, tair(k), &
+          call create_3d_obs(lat(n), lon(n), prespa, VERTISPRESSURE, tair(k), &
                              RADIOSONDE_TEMPERATURE, oerr, oday, osec, qc, obs)
           call add_obs_to_seq(obs_seq, obs, time_obs, prev_obs, prev_time, first_obs)
   
@@ -379,7 +395,7 @@
           if ( qobs >  0.0_r8  .and. &
                qobs <= 0.07_r8 .and. qerr /= missing_r8 ) then
     
-            call create_3d_obs(lat, lon, prespa, VERTISPRESSURE, qobs, &
+            call create_3d_obs(lat(n), lon(n), prespa, VERTISPRESSURE, qobs, &
                                RADIOSONDE_SPECIFIC_HUMIDITY, oerr, oday, osec, qc, obs)
             call add_obs_to_seq(obs_seq, obs, time_obs, prev_obs, prev_time, first_obs)
     
@@ -399,7 +415,7 @@
           if ( rh >  0.0_r8 .and. &
                rh <= 1.5_r8 .and. oerr /= missing_r8 ) then
   
-            call create_3d_obs(lat, lon, prespa, VERTISPRESSURE, rh, &
+            call create_3d_obs(lat(n), lon(n), prespa, VERTISPRESSURE, rh, &
                                RADIOSONDE_RELATIVE_HUMIDITY, oerr, oday, osec, qc, obs)
             call add_obs_to_seq(obs_seq, obs, time_obs, prev_obs, prev_time, first_obs)
           endif
@@ -414,7 +430,7 @@
           if ( rh >  0.0_r8 .and. &
                rh <= 1.5_r8 .and. oerr /= missing_r8 ) then
   
-            call create_3d_obs(lat, lon, prespa, VERTISPRESSURE, dptk, &
+            call create_3d_obs(lat(n), lon(n), prespa, VERTISPRESSURE, dptk, &
                                RADIOSONDE_DEWPOINT, oerr, oday, osec, qc, obs)
             call add_obs_to_seq(obs_seq, obs, time_obs, prev_obs, prev_time, first_obs)
   
@@ -426,7 +442,7 @@
   
 100 continue
 
-    end do
+    enddo
 
     deallocate(pres, wdir, wspd, tair, tdew, qc_pres, qc_wdir, qc_wspd, qc_tair, qc_tdew)
   endif
@@ -465,7 +481,7 @@
         if ( tair(k) >= 180.0_r8 .and. &
              tair(k) <= 330.0_r8 .and. oerr /= missing_r8 ) then
 
-          call create_3d_obs(lat, lon, prespa, VERTISPRESSURE, tair(k), &
+          call create_3d_obs(lat(n), lon(n), prespa, VERTISPRESSURE, tair(k), &
                              RADIOSONDE_TEMPERATURE, oerr, oday, osec, qc, obs)
           call add_obs_to_seq(obs_seq, obs, time_obs, prev_obs, prev_time, first_obs)
   
@@ -503,7 +519,7 @@
           if ( qobs >  0.0_r8  .and. &
                qobs <= 0.07_r8 .and. qerr /= missing_r8 ) then
   
-            call create_3d_obs(lat, lon, prespa, VERTISPRESSURE, qobs, &
+            call create_3d_obs(lat(n), lon(n), prespa, VERTISPRESSURE, qobs, &
                                RADIOSONDE_SPECIFIC_HUMIDITY, oerr, oday, osec, qc, obs)
             call add_obs_to_seq(obs_seq, obs, time_obs, prev_obs, prev_time, first_obs)
   
@@ -523,7 +539,7 @@
           if ( rh >  0.0_r8 .and. &
                rh <= 1.5_r8 .and. oerr /= missing_r8 ) then
 
-            call create_3d_obs(lat, lon, prespa, VERTISPRESSURE, rh, &
+            call create_3d_obs(lat(n), lon(n), prespa, VERTISPRESSURE, rh, &
                                RADIOSONDE_RELATIVE_HUMIDITY, oerr, oday, osec, qc, obs)
             call add_obs_to_seq(obs_seq, obs, time_obs, prev_obs, prev_time, first_obs)
   
@@ -539,7 +555,7 @@
           if ( rh >  0.0_r8 .and. &
                rh <= 1.5_r8 .and. oerr /= missing_r8 ) then
 
-            call create_3d_obs(lat, lon, prespa, VERTISPRESSURE, dptk, &
+            call create_3d_obs(lat(n), lon(n), prespa, VERTISPRESSURE, dptk, &
                                RADIOSONDE_DEWPOINT, oerr, oday, osec, qc, obs)
             call add_obs_to_seq(obs_seq, obs, time_obs, prev_obs, prev_time, first_obs)
   
@@ -551,7 +567,7 @@
 
 200 continue
 
-    end do
+    enddo
     deallocate(pres, tair, tdew, qc_pres, qc_tair, qc_tdew)
 
   endif
@@ -569,12 +585,12 @@
     allocate(qc_pres(nsig))  ;  allocate(qc_wdir(nsig))  ;  allocate(qc_wspd(nsig))
 
     !  read significant level data
-    call getvar_real_2d(ncid, "prSigW", n, nsig, pres, pres_miss)
+    call getvar_real_2d(ncid,   "prSigW", n, nsig, pres, pres_miss)
     call getvar_real_2d(ncid, "wdSigPrW", n, nsig, wdir, wdir_miss)
     call getvar_real_2d(ncid, "wsSigPrW", n, nsig, wspd, wspd_miss)
 
     if (use_input_qc) then
-       call get_or_fill_QC_2d(ncid, "prSigWQCR", n, nsig, qc_pres)
+       call get_or_fill_QC_2d(ncid,   "prSigWQCR", n, nsig, qc_pres)
        call get_or_fill_QC_2d(ncid, "wdSigPrWQCR", n, nsig, qc_wdir)
        call get_or_fill_QC_2d(ncid, "wsSigPrWQCR", n, nsig, qc_wspd)
     else
@@ -600,11 +616,11 @@
         if ( abs(uwnd) <= 150.0_r8 .and. &
              abs(vwnd) <= 150.0_r8 .and. oerr /= missing_r8 ) then
 
-          call create_3d_obs(lat, lon, prespa, VERTISPRESSURE, uwnd, &
+          call create_3d_obs(lat(n), lon(n), prespa, VERTISPRESSURE, uwnd, &
                              RADIOSONDE_U_WIND_COMPONENT, oerr, oday, osec, qc, obs)
           call add_obs_to_seq(obs_seq, obs, time_obs, prev_obs, prev_time, first_obs)
 
-          call create_3d_obs(lat, lon, prespa, VERTISPRESSURE, vwnd, &
+          call create_3d_obs(lat(n), lon(n), prespa, VERTISPRESSURE, vwnd, &
                              RADIOSONDE_V_WIND_COMPONENT, oerr, oday, osec, qc, obs)
           call add_obs_to_seq(obs_seq, obs, time_obs, prev_obs, prev_time, first_obs)
 
@@ -612,7 +628,7 @@
 
       endif
 
-    end do
+    enddo
 
     deallocate(pres, wdir, wspd, qc_pres, qc_wdir, qc_wspd)
 
@@ -636,15 +652,16 @@
     call getvar_real_2d(ncid, "wsSigW", n, nsig, wspd, wspd_miss)
 
     if (use_input_qc) then
-       call get_or_fill_QC_2d(ncid, "htSigWQCR", n, nsig, qc_wdir)
+       call get_or_fill_QC_2d(ncid, "htSigWQCR", n, nsig, qc_hght)
        call get_or_fill_QC_2d(ncid, "wdSigWQCR", n, nsig, qc_wdir)
        call get_or_fill_QC_2d(ncid, "wsSigWQCR", n, nsig, qc_wspd)
     else
+       qc_hght = 0
        qc_wdir = 0
        qc_wspd = 0
     endif
 
-    do k = 1, nsig
+    levelloop: do k = 1, nsig
 
       !  add data to the observation sequence here.
       if ( wdir(k) /= wdir_miss .and. qc_wdir(k) == 0 .and. &
@@ -653,10 +670,12 @@
 
          ! make sure elevation is a reasonable value if height comes
          ! in as zero and use it instead of 0.0
-         if (hght(k) == 0.0 .and. elev < 9999.0) then
-            hght(k) = elev
-         else
-            cycle
+         if (hght(k) == 0.0) then
+            if (elev(n) < 9999.0) then
+               hght(k) = elev(n)
+            else
+               cycle levelloop
+            endif
          endif
 
         call wind_dirspd_to_uv(wdir(k), wspd(k), uwnd, vwnd)
@@ -666,29 +685,24 @@
         if ( abs(uwnd) <= 150.0_r8 .and. & 
              abs(vwnd) <= 150.0_r8 .and. oerr /= missing_r8 ) then
 
-          call create_3d_obs(lat, lon, hght(k), VERTISHEIGHT, uwnd, &
+          call create_3d_obs(lat(n), lon(n), hght(k), VERTISHEIGHT, uwnd, &
                              RADIOSONDE_U_WIND_COMPONENT, oerr, oday, osec, qc, obs)
           call add_obs_to_seq(obs_seq, obs, time_obs, prev_obs, prev_time, first_obs)
 
-          call create_3d_obs(lat, lon, hght(k), VERTISHEIGHT, vwnd, &
+          call create_3d_obs(lat(n), lon(n), hght(k), VERTISHEIGHT, vwnd, &
                              RADIOSONDE_V_WIND_COMPONENT, oerr, oday, osec, qc, obs)
           call add_obs_to_seq(obs_seq, obs, time_obs, prev_obs, prev_time, first_obs)
-
         endif
-
       endif
 
-    end do
+    enddo levelloop
+
     deallocate(hght, wdir, wspd, qc_hght, qc_wdir, qc_wspd)
 
   endif
 
-  nused = nused + 1
-  latu(nused) = lat
-  lonu(nused) = lon
+enddo sondeloop2
 
-enddo sondeloop
-
 ! have to close at end of loop, unlike other versions of the madis converters
 call nc_check( nf90_close(ncid), &
                'convert_madis_rawin', 'closing file '//trim(rawin_in_file))

Modified: DART/trunk/observations/MADIS/convert_madis_satwnd.f90
===================================================================
--- DART/trunk/observations/MADIS/convert_madis_satwnd.f90	2015-10-07 21:04:34 UTC (rev 8761)
+++ DART/trunk/observations/MADIS/convert_madis_satwnd.f90	2015-10-07 21:51:29 UTC (rev 8762)
@@ -77,12 +77,11 @@
 ! end FIXME
 
 
-real(r8), allocatable :: lat(:), lon(:), latu(:), lonu(:), &
-                          pres(:), prsu(:), tobs(:), &
-                          wdir(:), wspd(:)
-integer,  allocatable :: band(:), bndu(:)
+real(r8), allocatable :: lat(:), lon(:), pres(:),  &
+                         tobs(:), wdir(:), wspd(:)
+integer,  allocatable :: band(:), tused(:)
 integer,  allocatable :: qc_wdir(:), qc_wspd(:)
-integer,  allocatable :: indu(:), sorted_indu(:), tobu(:)
+integer,  allocatable :: used(:), sorted_used(:)
 
 type(obs_sequence_type) :: obs_seq
 type(obs_type)          :: obs, prev_obs
@@ -118,14 +117,10 @@
 
 call getdimlen(ncid, "recNum", nobs)
 
-allocate( lat(nobs))  ;  allocate( lon(nobs))
-allocate(latu(nobs))  ;  allocate(lonu(nobs))
-allocate(pres(nobs))  ;  allocate(prsu(nobs))
-allocate(tobs(nobs))  ;  allocate(tobu(nobs))
-allocate(band(nobs))  ;  allocate(bndu(nobs))
-allocate(wdir(nobs))  ;  allocate(wspd(nobs))
-allocate(indu(nobs))  ;  allocate(sorted_indu(nobs))
-allocate(qc_wdir(nobs)) ;  allocate(qc_wspd(nobs))
+allocate(lat(nobs), lon(nobs), pres(nobs), tobs(nobs))
+allocate(band(nobs), wdir(nobs), wspd(nobs))
+allocate(tused(nobs), used(nobs), sorted_used(nobs))
+allocate(qc_wdir(nobs), qc_wspd(nobs))
 
 ! read in the data arrays
 call getvar_real(ncid, "obLat",       lat            ) ! latitude
@@ -185,11 +180,11 @@
 
   ! Check for duplicate observations
   do i = 1, nused
-    if ( lon(n) == lonu(i) .and. &
-         lat(n) == latu(i) .and. &
-        pres(n) == prsu(i) .and. &
-        band(n) == bndu(i) .and. &
-        nint(tobs(n)) == tobu(i) ) cycle obsloop1
+    if ( lon(n) ==  lon(used(i)) .and. &
+         lat(n) ==  lat(used(i)) .and. &
+        pres(n) == pres(used(i)) .and. &
+        band(n) == band(used(i)) .and. &
+        tobs(n) == tobs(used(i)) ) cycle obsloop1
   end do
 
   ! if selecting only certain bands, cycle if not wanted
@@ -200,22 +195,22 @@
          (band(n) == 3  .or.  band(n) == 5  .or. band(n) == 7)) cycle obsloop1
   endif
 
+  ! the 'used' array are the index numbers of used obs
+  ! the 'tused' array are the times of those obs so we can
+  ! sort them later by time.
   nused = nused + 1
-  indu(nused) = n
-  latu(nused) =  lat(n)
-  lonu(nused) =  lon(n)
-  prsu(nused) = pres(n)
-  bndu(nused) = band(n)
-  tobu(nused) = nint(tobs(n))
+  used(nused) = n
+  tused(nused) = tobs(n)
 
 end do obsloop1
 
-call index_sort(tobu, sorted_indu, nused)
+! sort by time
+call index_sort(tused, sorted_used, nused)
 
 obsloop2: do i = 1, nused
 
   ! get the next unique observation in sorted time order
-  n = indu(sorted_indu(i))
+  n = used(sorted_used(i))
 
   ! compute time of observation
   time_obs = increment_time(comp_day0, nint(tobs(n)))

Added: DART/trunk/observations/MADIS/work/mkmf_obs_seq_to_netcdf
===================================================================
--- DART/trunk/observations/MADIS/work/mkmf_obs_seq_to_netcdf	                        (rev 0)
+++ DART/trunk/observations/MADIS/work/mkmf_obs_seq_to_netcdf	2015-10-07 21:51:29 UTC (rev 8762)
@@ -0,0 +1,18 @@
+#!/bin/csh
+#
+# DART software - Copyright 2004 - 2013 UCAR. This open source software is
+# provided by UCAR, "as is", without charge, subject to all terms of use at
+# http://www.image.ucar.edu/DAReS/DART/DART_download
+#
+# DART $Id$
+
+../../../mkmf/mkmf -p obs_seq_to_netcdf -t ../../../mkmf/mkmf.template   \
+ -a "../../.." path_names_obs_seq_to_netcdf
+
+exit $status
+
+# <next few lines under version control, do not edit>
+# $URL$
+# $Revision$
+# $Date$
+


Property changes on: DART/trunk/observations/MADIS/work/mkmf_obs_seq_to_netcdf
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author HeadURL Id
Added: svn:eol-style
   + native

Modified: DART/trunk/observations/MADIS/work/path_names_convert_madis_marine
===================================================================
--- DART/trunk/observations/MADIS/work/path_names_convert_madis_marine	2015-10-07 21:04:34 UTC (rev 8761)
+++ DART/trunk/observations/MADIS/work/path_names_convert_madis_marine	2015-10-07 21:51:29 UTC (rev 8762)
@@ -1,16 +1,17 @@
+assim_model/assim_model_mod.f90
+common/types_mod.f90
+location/threed_sphere/location_mod.f90
+models/template/model_mod.f90
+mpi_utilities/null_mpi_utilities_mod.f90
+obs_def/obs_def_mod.f90
+obs_kind/obs_kind_mod.f90
+obs_sequence/obs_sequence_mod.f90
 observations/MADIS/convert_madis_marine.f90
+observations/MADIS/meteor_mod.f90
+observations/obs_error/dewpoint_obs_err_mod.f90
 observations/obs_error/ncep_obs_err_mod.f90
-observations/obs_error/dewpoint_obs_err_mod.f90
-observations/MADIS/meteor_mod.f90
 observations/utilities/obs_utilities_mod.f90
-location/threed_sphere/location_mod.f90
-obs_sequence/obs_sequence_mod.f90
-obs_kind/obs_kind_mod.f90
-obs_def/obs_def_mod.f90
-assim_model/assim_model_mod.f90
-models/template/model_mod.f90
-common/types_mod.f90
 random_seq/random_seq_mod.f90
+sort/sort_mod.f90
+time_manager/time_manager_mod.f90
 utilities/utilities_mod.f90
-time_manager/time_manager_mod.f90
-mpi_utilities/null_mpi_utilities_mod.f90

Modified: DART/trunk/observations/MADIS/work/path_names_convert_madis_metar
===================================================================
--- DART/trunk/observations/MADIS/work/path_names_convert_madis_metar	2015-10-07 21:04:34 UTC (rev 8761)
+++ DART/trunk/observations/MADIS/work/path_names_convert_madis_metar	2015-10-07 21:51:29 UTC (rev 8762)
@@ -1,16 +1,17 @@
+assim_model/assim_model_mod.f90
+common/types_mod.f90
+location/threed_sphere/location_mod.f90
+models/template/model_mod.f90
+mpi_utilities/null_mpi_utilities_mod.f90
+obs_def/obs_def_mod.f90
+obs_kind/obs_kind_mod.f90
+obs_sequence/obs_sequence_mod.f90
 observations/MADIS/convert_madis_metar.f90
+observations/MADIS/meteor_mod.f90
+observations/obs_error/dewpoint_obs_err_mod.f90
 observations/obs_error/ncep_obs_err_mod.f90
-observations/obs_error/dewpoint_obs_err_mod.f90
-observations/MADIS/meteor_mod.f90
 observations/utilities/obs_utilities_mod.f90
-location/threed_sphere/location_mod.f90
-obs_sequence/obs_sequence_mod.f90
-obs_kind/obs_kind_mod.f90
-obs_def/obs_def_mod.f90
-assim_model/assim_model_mod.f90
-models/template/model_mod.f90
-common/types_mod.f90
 random_seq/random_seq_mod.f90
+sort/sort_mod.f90
+time_manager/time_manager_mod.f90
 utilities/utilities_mod.f90
-time_manager/time_manager_mod.f90
-mpi_utilities/null_mpi_utilities_mod.f90

Modified: DART/trunk/observations/MADIS/work/path_names_convert_madis_profiler
===================================================================
--- DART/trunk/observations/MADIS/work/path_names_convert_madis_profiler	2015-10-07 21:04:34 UTC (rev 8761)
+++ DART/trunk/observations/MADIS/work/path_names_convert_madis_profiler	2015-10-07 21:51:29 UTC (rev 8762)
@@ -1,16 +1,17 @@
+assim_model/assim_model_mod.f90
+common/types_mod.f90
+location/threed_sphere/location_mod.f90
+models/template/model_mod.f90
+mpi_utilities/null_mpi_utilities_mod.f90
+obs_def/obs_def_mod.f90
+obs_kind/obs_kind_mod.f90
+obs_sequence/obs_sequence_mod.f90
 observations/MADIS/convert_madis_profiler.f90
+observations/MADIS/meteor_mod.f90
+observations/obs_error/dewpoint_obs_err_mod.f90
 observations/obs_error/ncep_obs_err_mod.f90
-observations/obs_error/dewpoint_obs_err_mod.f90
-observations/MADIS/meteor_mod.f90
 observations/utilities/obs_utilities_mod.f90
-location/threed_sphere/location_mod.f90
-obs_sequence/obs_sequence_mod.f90
-obs_kind/obs_kind_mod.f90
-obs_def/obs_def_mod.f90
-assim_model/assim_model_mod.f90
-models/template/model_mod.f90
-common/types_mod.f90
 random_seq/random_seq_mod.f90
+sort/sort_mod.f90
+time_manager/time_manager_mod.f90
 utilities/utilities_mod.f90
-time_manager/time_manager_mod.f90
-mpi_utilities/null_mpi_utilities_mod.f90

Modified: DART/trunk/observations/MADIS/work/path_names_convert_madis_rawin
===================================================================
--- DART/trunk/observations/MADIS/work/path_names_convert_madis_rawin	2015-10-07 21:04:34 UTC (rev 8761)
+++ DART/trunk/observations/MADIS/work/path_names_convert_madis_rawin	2015-10-07 21:51:29 UTC (rev 8762)
@@ -1,16 +1,17 @@
+assim_model/assim_model_mod.f90
+common/types_mod.f90
+location/threed_sphere/location_mod.f90
+models/template/model_mod.f90
+mpi_utilities/null_mpi_utilities_mod.f90
+obs_def/obs_def_mod.f90
+obs_kind/obs_kind_mod.f90
+obs_sequence/obs_sequence_mod.f90
 observations/MADIS/convert_madis_rawin.f90
+observations/MADIS/meteor_mod.f90
+observations/obs_error/dewpoint_obs_err_mod.f90
 observations/obs_error/ncep_obs_err_mod.f90
-observations/obs_error/dewpoint_obs_err_mod.f90
-observations/MADIS/meteor_mod.f90

@@ Diff output truncated at 40000 characters. @@


More information about the Dart-dev mailing list