[Dart-dev] [9448] DART/trunk/observations/GTSPP: Adding a version of the GTSPP converter from BJ Choi

nancy at ucar.edu nancy at ucar.edu
Wed Jan 6 17:01:40 MST 2016


Revision: 9448
Author:   thoar
Date:     2016-01-06 17:01:40 -0700 (Wed, 06 Jan 2016)
Log Message:
-----------
Adding a version of the GTSPP converter from BJ Choi
during the ROMS commit.  This version thins in the vertical.

Noticed an obvious clarification that was useful in the
gtspp_to_obs.f90 - functionality of this one unchanged.

Modified Paths:
--------------
    DART/trunk/observations/GTSPP/gtspp_to_obs.f90
    DART/trunk/observations/GTSPP/work/input.nml
    DART/trunk/observations/GTSPP/work/quickbuild.csh

Added Paths:
-----------
    DART/trunk/observations/GTSPP/thinned_gtspp_to_obs.f90
    DART/trunk/observations/GTSPP/work/mkmf_thinned_gtspp_to_obs
    DART/trunk/observations/GTSPP/work/path_names_thinned_gtspp_to_obs

-------------- next part --------------
Modified: DART/trunk/observations/GTSPP/gtspp_to_obs.f90
===================================================================
--- DART/trunk/observations/GTSPP/gtspp_to_obs.f90	2016-01-06 23:27:48 UTC (rev 9447)
+++ DART/trunk/observations/GTSPP/gtspp_to_obs.f90	2016-01-07 00:01:40 UTC (rev 9448)
@@ -53,9 +53,8 @@
 integer, parameter ::   num_copies = 1,   &   ! number of copies in sequence
                         num_qc     = 1        ! number of QC entries
 
-character (len=129) :: next_infile
-character (len=80)  :: name
-character (len=6)   :: subset
+character (len=256) :: next_infile
+character (len=NF90_MAX_NAME) :: dimname
 integer :: ncid, varid, ndepths, k, nfiles, num_new_obs,  &
            oday, osec,                   &
            iday, isec,               &
@@ -194,7 +193,7 @@
    
    ! get the number of depths
    call nc_check( nf90_inq_dimid(ncid, "depth", varid), 'inq dimid depth')
-   call nc_check( nf90_inquire_dimension(ncid, varid, name, ndepths), 'inq dim depth')
+   call nc_check( nf90_inquire_dimension(ncid, varid, len=ndepths, name=dimname), 'inq dim depth')
    
    ! and read in the depth array
    call nc_check( nf90_inq_varid(ncid, "depth", varid),'inq varid depth')
@@ -240,7 +239,6 @@
 
    call nc_check( nf90_close(ncid) , 'close file')
    
-! debug
    if (debug) then
       print *, 'input file: ', trim(next_infile)
       print *, 'ndepths: ', ndepths

Added: DART/trunk/observations/GTSPP/thinned_gtspp_to_obs.f90
===================================================================
--- DART/trunk/observations/GTSPP/thinned_gtspp_to_obs.f90	                        (rev 0)
+++ DART/trunk/observations/GTSPP/thinned_gtspp_to_obs.f90	2016-01-07 00:01:40 UTC (rev 9448)
@@ -0,0 +1,407 @@
+! 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
+!
+! $Id$
+!
+! bjchoi 2014 May 15
+! Because a GTSPP profile has too many data in vertical direction,
+! we need to reduce the number of data in a single profile.
+! Just select data near the standard (nominal) depths.
+
+program thinned_gtspp_to_obs
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!
+!     thinned_gtspp_to_obs - program that reads a list of NODS GTSPP observation 
+!                    profiles of ocean temperature and salinity in netcdf
+!                    format and writes a DART observation sequence file. 
+!
+!     created 02-sept-2009, based on the GPS reader.   nsc.
+!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+use        types_mod, only : r8, MISSING_R8
+use time_manager_mod, only : time_type, set_calendar_type, GREGORIAN, set_time, &
+                             increment_time, get_time, set_date, operator(-),   &
+                             print_date, operator(+)
+use    utilities_mod, only : initialize_utilities, find_namelist_in_file,       &
+                             check_namelist_read, nmlfileunit, do_output,       &
+                             get_next_filename, error_handler, E_ERR, E_MSG,    &
+                             nc_check, find_textfile_dims, finalize_utilities
+use     location_mod, only : VERTISHEIGHT, set_location
+use obs_sequence_mod, only : obs_sequence_type, obs_type, read_obs_seq,         &
+                             static_init_obs_sequence, init_obs, destroy_obs,   &
+                             write_obs_seq, init_obs_sequence, get_num_obs,     &
+                             insert_obs_in_seq, destroy_obs_sequence,           &
+                             set_copy_meta_data, set_qc_meta_data, set_qc,      & 
+                             set_obs_values, set_obs_def, insert_obs_in_seq
+use      obs_def_mod, only : obs_def_type, set_obs_def_time, set_obs_def_kind,  &
+                             set_obs_def_error_variance, set_obs_def_location,  &
+                             set_obs_def_key
+! FIXME: what actual instrument took these readings? FLOAT_xx is a placeholder
+! for now.  must have obs_def_ocean_mod.f90 in the preprocess input list.
+use     obs_kind_mod, only : KIND_TEMPERATURE, KIND_SALINITY,                   &
+                             FLOAT_TEMPERATURE, FLOAT_SALINITY
+
+use           netcdf
+
+implicit none
+
+! version controlled file description for error handling, do not edit
+character(len=256), parameter :: source   = &
+   "$URL$"
+character(len=32 ), parameter :: revision = "$Revision$"
+character(len=128), parameter :: revdate  = "$Date$"
+
+
+integer, parameter ::   num_copies = 1,   &   ! number of copies in sequence
+                        num_qc     = 1        ! number of QC entries
+
+character (len=256) :: next_infile
+character (len=NF90_MAX_NAME) :: dimname
+integer :: ncid, varid, ndepths, k, nfiles, num_new_obs,  &
+           oday, osec,                   &
+           iday, isec,               &
+           obs_num, io, iunit, filenum, dummy, i_qc, nc_rc
+logical :: file_exist, first_obs, did_obs, from_list = .false.
+logical :: have_temp, have_salt
+real(r8) :: terr, serr,         & 
+            obs_val(1), qc_val(1),  &
+            dtime, glat, glon, d_qc(1)
+
+type(obs_def_type)      :: obs_def
+type(obs_sequence_type) :: obs_seq
+type(obs_type)          :: obs, prev_obs
+type(time_type)         :: obs_time, base_time, delta_time
+
+! initialize some values
+integer, parameter :: nmaxdepths = 5000   !  max number of observation depths
+real(r8) :: obs_depth(nmaxdepths)   = -1.0_r8
+real(r8) :: temperature(nmaxdepths) = MISSING_R8
+real(r8) :: salinity(nmaxdepths)    = MISSING_R8
+integer :: t_qc(nmaxdepths), s_qc(nmaxdepths)
+
+!------------------------------------------------------------------------
+!  Declare namelist parameters
+!------------------------------------------------------------------------
+
+character(len=128) :: gtspp_netcdf_file     = '1234567.nc'
+character(len=128) :: gtspp_netcdf_filelist = 'gtspp_to_obs_filelist'
+character(len=128) :: gtspp_out_file        = 'obs_seq.gtspp'
+integer            :: avg_obs_per_file      = 500
+logical            :: debug                 = .false.
+
+namelist /thinned_gtspp_to_obs_nml/ gtspp_netcdf_file, &
+                                    gtspp_netcdf_filelist, &
+                                    gtspp_out_file, &
+                                    avg_obs_per_file, &
+                                    debug
+
+!pseudo standard depth for a profile data. 5 lines were added by bjchoi
+integer  :: mdepth
+real(r8) :: std_depth(22)
+DATA std_depth(1:22) / 0.0, 15.0, 30.0, 50.0, 75.0, 100.0, 150.0, 200.0, 300.0, & 
+                     400.0, 500.0, 750.0, 1000.0, 1500.0, 2000.0, 2500.0, 3000.0, & 
+                    4000.0, 5000.0, 6000.0, 8000.0, 12000.0 /
+
+
+! start of executable code
+
+obs_num = 1
+d_qc(1) = 0.0_r8
+
+! time stored relative to jan 1st, 1900.
+call set_calendar_type(GREGORIAN)
+base_time = set_date(1900, 1, 1, 0, 0, 0)
+
+!  read the necessary parameters from input.nml
+call initialize_utilities()
+call find_namelist_in_file("input.nml", "thinned_gtspp_to_obs_nml", iunit)
+read(iunit, nml = thinned_gtspp_to_obs_nml, iostat = io)
+
+! Record the namelist values used for the run 
+if (do_output()) write(nmlfileunit, nml=thinned_gtspp_to_obs_nml)
+
+! any needed namelist checks for sanity:
+
+! cannot have both a single filename and a list; the namelist must
+! shut one off.
+if (gtspp_netcdf_file /= '' .and. gtspp_netcdf_filelist /= '') then
+  call error_handler(E_ERR, 'thinned_gtspp_to_obs',                     &
+                     'One of gtspp_netcdf_file or filelist must be NULL', &
+                     source, revision, revdate)
+endif
+if (gtspp_netcdf_filelist /= '') from_list = .true.
+
+! need to know a reasonable max number of obs that could be added here.
+if (from_list) then
+   call find_textfile_dims(gtspp_netcdf_filelist, nfiles, dummy)
+   num_new_obs = avg_obs_per_file * nfiles
+else
+   num_new_obs = avg_obs_per_file
+endif
+
+! FIXME: is this a good idea?  to append to an existing file?
+!  either read existing obs_seq or create a new one
+call static_init_obs_sequence()
+call init_obs(obs, num_copies, num_qc)
+call init_obs(prev_obs, num_copies, num_qc)
+inquire(file=gtspp_out_file, exist=file_exist)
+! for now, disable this.  too easy to make files with duplicate obs in them.
+if ( file_exist ) then
+!if (.false.) then
+
+print *, "found existing obs_seq file, appending to ", trim(gtspp_out_file)
+   call read_obs_seq(gtspp_out_file, 0, 0, num_new_obs, obs_seq)
+
+else
+
+print *, "no existing obs_seq file, creating ", trim(gtspp_out_file)
+print *, "max entries = ", num_new_obs
+  call init_obs_sequence(obs_seq, num_copies, num_qc, num_new_obs)
+  do k = 1, num_copies
+    call set_copy_meta_data(obs_seq, k, 'GTSPP observation')
+  end do
+  do k = 1, num_qc
+    call set_qc_meta_data(obs_seq, k, 'GTSPP QC')
+  end do
+
+end if
+
+did_obs = .false.
+
+! main loop that does either a single file or a list of files
+
+filenum = 1
+fileloop: do      ! until out of files
+
+   ! get the single name, or the next name from a list
+   if (from_list) then 
+      next_infile = get_next_filename(gtspp_netcdf_filelist, filenum)
+   else
+      next_infile = gtspp_netcdf_file
+      if (filenum > 1) next_infile = ''
+   endif
+   if (next_infile == '') exit fileloop
+  
+   have_temp = .false.
+   have_salt = .false.
+
+   !  open the next profile file
+   call nc_check( nf90_open(next_infile, nf90_nowrite, ncid), 'file open', next_infile)
+
+   ! time is stored in the file 2 ways: as real(double) days since 1900/1/1,
+   ! and as 4 and 2 digit strings for year/mon/day/hr/min
+   ! both of these are variables, not attributes
+
+   ! start out with converting the real time.
+   call nc_check( nf90_inq_varid(ncid, "time", varid) ,'inq varid time')
+   call nc_check( nf90_get_var(ncid, varid, dtime)    ,'get var   time')
+
+   ! convert to integer days and seconds, and add on to reference time.
+   iday = int(dtime)
+   isec = int((dtime - iday) * 86400)
+   delta_time = set_time(isec, iday)
+   obs_time = base_time + delta_time
+   call get_time(obs_time,  osec, oday)
+   
+   ! get the number of depths
+   call nc_check( nf90_inq_dimid(ncid, "z", varid), 'inq dimid depth')
+   call nc_check( nf90_inquire_dimension(ncid, varid, len=ndepths, name=dimname), 'inq dim depth')
+   
+   ! and read in the depth array
+   call nc_check( nf90_inq_varid(ncid, "z", varid),'inq varid depth')
+   call nc_check( nf90_get_var(ncid, varid, obs_depth, &
+                  start=(/1/), count=(/ndepths/)),'get var   depth')
+
+   ! get the single lat/lon values
+   call nc_check( nf90_inq_varid(ncid,"longitude",varid) ,'inq varid longitude')
+   call nc_check( nf90_get_var(ncid, varid, glon),        'get var   longitude')
+   call nc_check( nf90_inq_varid(ncid,"latitude",varid) ,'inq varid latitude')
+   call nc_check( nf90_get_var(ncid, varid, glat),       'get var   latitude')
+
+   ! if present, the data values from 'temperature'
+   nc_rc = nf90_inq_varid(ncid,"temperature",varid) 
+   if (nc_rc == nf90_noerr) then
+      have_temp = .true.
+
+      call nc_check( nf90_get_var(ncid, varid, temperature, &
+            start=(/1,1,1,1/), count=(/1,1,ndepths,1/)), 'get var temperature')
+
+      ! for now, use the data qc from netcdf file 't_qc'
+      call nc_check( nf90_inq_varid(ncid,"temperature_quality_flag",varid) ,'inq varid TEMP_qparam')
+      call nc_check( nf90_get_var(ncid, varid, t_qc, &
+            start=(/1/), count=(/ndepths/)),   'get var   TEMP_qparam')
+
+   endif
+
+   ! if present, the data values from 'salinity'
+   nc_rc = nf90_inq_varid(ncid,"salinity",varid)
+   if (nc_rc == nf90_noerr) then
+      have_salt = .true.
+
+      call nc_check( nf90_get_var(ncid, varid, salinity, &
+            start=(/1,1,1,1/), count=(/1,1,ndepths,1/)), 'get var salinity')
+
+      ! for now, use the data qc from netcdf file 's_qc'
+
+      call nc_check( nf90_inq_varid(ncid,"salinity_quality_flag",varid) ,'inq varid PSAL_qparam')
+      call nc_check( nf90_get_var(ncid, varid, s_qc, &
+            start=(/1/), count=(/ndepths/)),   'get var   PSAL_qparam')
+
+   endif
+
+   call nc_check( nf90_close(ncid) , 'close file')
+   
+   if (debug) then
+      print *, 'input file: ', trim(next_infile)
+      print *, 'ndepths: ', ndepths
+      print *, 'has temps, salinity: ', have_temp, have_salt
+      call print_date(obs_time, 'obs time')
+   endif
+   
+ ! FIXME: these have no physical basis; selected to get us running
+ ! but need some domain expertise for guidance.
+   terr = 0.5     ! temp error = fixed at 1 degrees C
+   serr = 0.05    ! salinity error = 1 g/kg, which is 0.001 kg/kg
+
+   first_obs = .true.
+   mdepth = 1
+   
+   obsloop: do k = 1, ndepths
+   
+    ! 5 lines were ADDED by bjchoi 2015.05.15.
+    ! It could be improved better than this.
+    if( obs_depth(k) .GE. std_depth(mdepth) ) then
+       mdepth = mdepth + 1 
+    else
+       t_qc(k) = -1
+       s_qc(k) = -1
+    endif    
+
+     ! check qc here.  if bad, skip the rest of this block
+     i_qc = t_qc(k)
+     if (have_temp .and. i_qc == 1) then
+
+         ! set qc to a good dart val
+         d_qc(1) = 0.0    ! for dart, a QC of 0 is good
+ 
+         ! set location - incoming obs are -180 to 180 in longitude;
+         ! dart wants 0 to 360.
+         if (glon < 0.0_r8) glon = glon + 360.0_r8
+         call set_obs_def_location(obs_def, &
+                           set_location(glon, glat, obs_depth(k),VERTISHEIGHT))
+         call set_obs_def_kind(obs_def, FLOAT_TEMPERATURE)
+         call set_obs_def_time(obs_def, set_time(osec, oday))
+    
+         call set_obs_def_error_variance(obs_def, terr * terr)
+         call set_obs_def_key(obs_def, obs_num)
+         call set_obs_def(obs, obs_def)
+   
+         obs_val(1) = temperature(k)
+         call set_obs_values(obs, obs_val)
+         qc_val(1)  = d_qc(1)
+         call set_qc(obs, qc_val)
+    
+         ! first one, insert with no prev.  otherwise, since all times are the
+         ! same for this column, insert with the prev obs as the starting point.
+         ! (the first insert with no prev means it will search for the right
+         ! time ordered starting point.)
+         if (first_obs) then
+            call insert_obs_in_seq(obs_seq, obs)
+            first_obs = .false.
+         else
+           call insert_obs_in_seq(obs_seq, obs, prev_obs)
+         endif
+         obs_num = obs_num+1
+         prev_obs = obs
+ 
+         if (.not. did_obs) did_obs = .true.
+      endif
+
+
+      ! check qc here.  if bad, skip the rest of this block
+      i_qc = s_qc(k)
+      if (have_salt .and. i_qc == 1) then
+
+         ! set qc to good dart val
+         d_qc(1) = 0.0    ! but for dart, a QC of 0 is good
+ 
+         ! set location - incoming obs are -180 to 180 in longitude;
+         ! dart wants 0 to 360.
+         if (glon < 0.0_r8) glon = glon + 360.0_r8
+         call set_obs_def_location(obs_def, &
+                           set_location(glon, glat, obs_depth(k),VERTISHEIGHT))
+         call set_obs_def_kind(obs_def, FLOAT_SALINITY)
+         call set_obs_def_time(obs_def, set_time(osec, oday))
+    
+         call set_obs_def_error_variance(obs_def, serr * serr)
+         call set_obs_def_key(obs_def, obs_num)
+         call set_obs_def(obs, obs_def)
+   
+         ! incoming obs are g/kg (practical salinity units - psu)
+         ! model works in kg/kg (model salinity units - msu) so convert here.
+         ! obs_val(1) = salinity(k) / 1000.0_r8
+         obs_val(1) = salinity(k)  ! ROMS use psu            
+         call set_obs_values(obs, obs_val)
+         qc_val(1)  = d_qc(1)
+         call set_qc(obs, qc_val)
+    
+         ! first one, insert with no prev.  otherwise, since all times are the
+         ! same for this column, insert with the prev obs as the starting point.
+         ! (the first insert with no prev means it will search for the right
+         ! time ordered starting point.)
+         if (first_obs) then
+            call insert_obs_in_seq(obs_seq, obs)
+            first_obs = .false.
+         else
+           call insert_obs_in_seq(obs_seq, obs, prev_obs)
+         endif
+         obs_num = obs_num+1
+         prev_obs = obs
+ 
+         if (.not. did_obs) did_obs = .true.
+      endif 
+
+   end do obsloop
+
+  filenum = filenum + 1
+
+end do fileloop
+
+! done with main loop.  if we added any obs to the sequence, write it out.
+if (did_obs) then
+print *, 'ready to write, nobs = ', get_num_obs(obs_seq)
+   if (get_num_obs(obs_seq) > 0) &
+      call write_obs_seq(obs_seq, gtspp_out_file)
+
+   ! minor stab at cleanup, in the off chance this will someday get turned
+   ! into a subroutine in a module.  probably not all that needs to be done,
+   ! but a start.
+   call destroy_obs(obs)
+   !call destroy_obs(prev_obs)   ! is this identical to obs?
+   ! get core dumps here, not sure why?
+   if (get_num_obs(obs_seq) > 0) call destroy_obs_sequence(obs_seq)
+endif
+
+call error_handler(E_MSG,'thinned_gtspp_to_obs','Finished successfully.',source,revision,revdate)
+call finalize_utilities()
+
+! END OF MAIN ROUTINE
+
+! contains
+
+! local subroutines/functions follow
+
+! something to set the err var - make it a subroutine so we can muck with it
+
+! subroutine to fill an obs?
+
+end program thinned_gtspp_to_obs
+
+! <next few lines under version control, do not edit>
+! $URL$
+! $Id$
+! $Revision$
+! $Date$


Property changes on: DART/trunk/observations/GTSPP/thinned_gtspp_to_obs.f90
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author HeadURL Id
Added: svn:eol-style
   + native

Modified: DART/trunk/observations/GTSPP/work/input.nml
===================================================================
--- DART/trunk/observations/GTSPP/work/input.nml	2016-01-06 23:27:48 UTC (rev 9447)
+++ DART/trunk/observations/GTSPP/work/input.nml	2016-01-07 00:01:40 UTC (rev 9448)
@@ -1,21 +1,25 @@
 
-
 ! local operator does not do ray-path reconstruction
 ! obs levels are in kilometers
 ! flist contains a list of input filenames to convert into a single
 !  output file
 &gtspp_to_obs_nml
-   gtspp_netcdf_file = '../data/1264095.nc',
-   gtspp_netcdf_filelist = '',
-   gtspp_out_file = 'obs_seq.gtspp',
+   gtspp_netcdf_file = '../data/1264095.nc'
+   gtspp_netcdf_filelist = ''
+   gtspp_out_file = 'obs_seq.gtspp'
    /
 
+&thinned_gtspp_to_obs_nml
+   gtspp_netcdf_file = ''
+   gtspp_netcdf_filelist = '/t1/DART/Data/GTSPP/atlantic/2011/01/filelist_nwa_dart.txt'
+   gtspp_out_file = 'obs_seq.gtspp201101'
+   /
 
 &preprocess_nml
-    input_obs_kind_mod_file = '../../../obs_kind/DEFAULT_obs_kind_mod.F90',
-   output_obs_kind_mod_file = '../../../obs_kind/obs_kind_mod.f90',
-     input_obs_def_mod_file = '../../../obs_def/DEFAULT_obs_def_mod.F90',
-    output_obs_def_mod_file = '../../../obs_def/obs_def_mod.f90',
+    input_obs_kind_mod_file = '../../../obs_kind/DEFAULT_obs_kind_mod.F90'
+   output_obs_kind_mod_file = '../../../obs_kind/obs_kind_mod.f90'
+     input_obs_def_mod_file = '../../../obs_def/DEFAULT_obs_def_mod.F90'
+    output_obs_def_mod_file = '../../../obs_def/obs_def_mod.f90'
    input_files              = '../../../obs_def/obs_def_ocean_mod.f90'
    /
 
@@ -29,7 +33,7 @@
    /
 
 &utilities_nml
-   module_details = .false.,
+   module_details = .false.
    nmlfilename = 'convert.nml'
    /
 
@@ -37,18 +41,8 @@
    write_binary_obs_sequence = .false.
    /
 
-&obs_sequence_tool_nml
-   num_input_files   = 1,
-   filename_seq      = '../obs_seq2007010106', 
-   filename_out      = 'unused',
-   print_only        = .true.,
-   gregorian_cal     = .true.,
-   first_obs_days    = -1,
-   first_obs_seconds = -1,
-   last_obs_days     = -1,
-   last_obs_seconds  = -1,
-   /
-
+! There are many more options for obs_sequence_tool.
+! look at the .html documentation. Some common ones:
 ! obs_types =
 ! keep_types =
 ! min_lat =
@@ -56,3 +50,15 @@
 ! min_lon =
 ! max_lon =
 
+&obs_sequence_tool_nml
+   num_input_files   = 1
+   filename_seq      = '../obs_seq2007010106'
+   filename_out      = 'unused'
+   print_only        = .true.
+   gregorian_cal     = .true.
+   first_obs_days    = -1
+   first_obs_seconds = -1
+   last_obs_days     = -1
+   last_obs_seconds  = -1
+   /
+

Added: DART/trunk/observations/GTSPP/work/mkmf_thinned_gtspp_to_obs
===================================================================
--- DART/trunk/observations/GTSPP/work/mkmf_thinned_gtspp_to_obs	                        (rev 0)
+++ DART/trunk/observations/GTSPP/work/mkmf_thinned_gtspp_to_obs	2016-01-07 00:01:40 UTC (rev 9448)
@@ -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 thinned_gtspp_to_obs -t ../../../mkmf/mkmf.template   \
+ -a "../../.." path_names_thinned_gtspp_to_obs
+
+exit $status
+
+# <next few lines under version control, do not edit>
+# $URL$
+# $Revision$
+# $Date$
+


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

Added: DART/trunk/observations/GTSPP/work/path_names_thinned_gtspp_to_obs
===================================================================
--- DART/trunk/observations/GTSPP/work/path_names_thinned_gtspp_to_obs	                        (rev 0)
+++ DART/trunk/observations/GTSPP/work/path_names_thinned_gtspp_to_obs	2016-01-07 00:01:40 UTC (rev 9448)
@@ -0,0 +1,19 @@
+observations/GTSPP/thinned_gtspp_to_obs.f90
+assim_tools/assim_tools_mod.f90
+adaptive_inflate/adaptive_inflate_mod.f90
+sort/sort_mod.f90
+cov_cutoff/cov_cutoff_mod.f90
+obs_sequence/obs_sequence_mod.f90
+obs_model/obs_model_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
+location/threed_sphere/location_mod.f90
+random_seq/random_seq_mod.f90
+utilities/utilities_mod.f90
+time_manager/time_manager_mod.f90
+reg_factor/reg_factor_mod.f90
+ensemble_manager/ensemble_manager_mod.f90
+mpi_utilities/null_mpi_utilities_mod.f90

Modified: DART/trunk/observations/GTSPP/work/quickbuild.csh
===================================================================
--- DART/trunk/observations/GTSPP/work/quickbuild.csh	2016-01-06 23:27:48 UTC (rev 9447)
+++ DART/trunk/observations/GTSPP/work/quickbuild.csh	2016-01-07 00:01:40 UTC (rev 9448)
@@ -60,6 +60,8 @@
    endsw
 end
 
+\rm -f *.o *.mod
+
 echo "Success: All DART programs compiled."  
 
 exit 0


More information about the Dart-dev mailing list