[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