[Dart-dev] DART/branches Revision: 11938

dart at ucar.edu dart at ucar.edu
Mon Sep 18 17:42:18 MDT 2017


thoar at ucar.edu
2017-09-18 17:42:17 -0600 (Mon, 18 Sep 2017)
1256
Getting closer.

with the default 1 observation on VERTISSURFACE, generates an error
 ERROR FROM:
  routine: deallocate_available_values
  message: Deallocation Error::available_target_values
  source file: $URL: https://svn-dares-dart.cgd.ucar.edu/DART/branches/coamps/models/coamps_nest/coamps_interp_mod.f90 $

with two observations (one an identity ob, one on vertislevel) it runs but gives bad values for obs_seq.out

I am having trouble updating an HDF5 file with the netCDF 4.4.1 fortran modules.
Supposedly using 'nccopy -k 4 coamps.hdf5  coamps_updateable.hdf5' results in an HDF5 file you
can modify with the netcdf module ... hasn't been my experience so far - the variable in 
question EXISTS in the 'coamps_updateable.hdf5'.

 ERROR FROM:
  routine: nc_put_real_3d
  message: put values for uuwind_sig_028030_000010_1a0201x0204_2013011000_00000000_analfld: NetCDF: HDF error
  message: ... copy_netCDF_to_hdf
  source file: $URL: https://svn-dares-dart.cgd.ucar.edu/DART/branches/coamps/assimilation_code/modules/utilities/netcdf_utilities_mod.f90 $

And even then, I'm not sure COAMPS would be able read it back in.

Given the way the rest of coamps seems to be written, there is probably a coamps_hdf_mod.f90  that we
might be able to use.




Modified: DART/branches/coamps/assimilation_code/location/threed_sphere/location_mod.f90
===================================================================
--- DART/branches/coamps/assimilation_code/location/threed_sphere/location_mod.f90	2017-09-18 22:53:48 UTC (rev 11937)
+++ DART/branches/coamps/assimilation_code/location/threed_sphere/location_mod.f90	2017-09-18 23:42:17 UTC (rev 11938)
@@ -1095,7 +1095,7 @@
    case ("SCALE_HEIGHT")
       is_vertical = (VERTISSCALEHEIGHT == loc%which_vert)
    case default
-      write(msgstring, *) 'unrecognized key for vertical type: ', which_vert
+      write(msgstring, *) 'unrecognized key for vertical type: ', which_vert, loc%which_vert
       call error_handler(E_ERR, 'is_vertical', msgstring, source, revision, revdate)
 end select
 

Modified: DART/branches/coamps/assimilation_code/modules/assimilation/assim_tools_mod.f90
===================================================================
--- DART/branches/coamps/assimilation_code/modules/assimilation/assim_tools_mod.f90	2017-09-18 22:53:48 UTC (rev 11937)
+++ DART/branches/coamps/assimilation_code/modules/assimilation/assim_tools_mod.f90	2017-09-18 23:42:17 UTC (rev 11938)
@@ -102,7 +102,7 @@
 ! (make it a local variable so we don't keep making subroutine calls)
 logical                :: is_doing_vertical_conversion = .false.
 
-character(len = 255)   :: msgstring, msgstring2, msgstring3
+character(len=512)     :: msgstring, msgstring2, msgstring3
 
 ! Need to read in table for off-line based sampling correction and store it
 integer                :: sec_table_size

Modified: DART/branches/coamps/assimilation_code/modules/utilities/netcdf_utilities_mod.f90
===================================================================
--- DART/branches/coamps/assimilation_code/modules/utilities/netcdf_utilities_mod.f90	2017-09-18 22:53:48 UTC (rev 11937)
+++ DART/branches/coamps/assimilation_code/modules/utilities/netcdf_utilities_mod.f90	2017-09-18 23:42:17 UTC (rev 11938)
@@ -853,7 +853,7 @@
 !> Optionally returns the type of variable, the number of dimensions, 
 !> the dimension names and lengths, the number of attributes (but not the attribute values (yet))
 
-subroutine nc_get_variable_info(ncid, varname, xtype, ndims, dimlens, dimnames, nAtts, &
+subroutine nc_get_variable_info(ncid, varname, xtype, ndims, dimlens, dimnames, natts, &
                                 context, filename)
 
 integer,          intent(in)            :: ncid
@@ -862,11 +862,11 @@
 integer,          intent(out), optional :: ndims
 integer,          intent(out), optional :: dimlens(:)
 character(len=*), intent(out), optional :: dimnames(:)
-integer,          intent(out), optional :: nAtts
+integer,          intent(out), optional :: natts
 character(len=*), intent(in) , optional :: context
 character(len=*), intent(in) , optional :: filename
 
-character(len=*), parameter :: routine = 'nc_get_variable_shape'
+character(len=*), parameter :: routine = 'nc_get_variable_info'
 integer :: ret, varid, dimid, ii
 
 integer :: myxtype
@@ -873,21 +873,22 @@
 integer :: myndims
 integer :: mydimids(NF90_MAX_VAR_DIMS)
 integer :: mydimlens(NF90_MAX_VAR_DIMS)
-integer :: mynAtts
+integer :: mynatts
 character(len=NF90_MAX_NAME) :: mydimnames(NF90_MAX_VAR_DIMS)
 
+
 ret = nf90_inq_varid(ncid, varname, varid)
 call nc_check(ret, routine, 'inq_varid for '//trim(varname), context, filename)
 
 ret = nf90_inquire_variable(ncid, varid, xtype=myxtype, ndims=myndims, &
-                            dimids=mydimids, nAtts=mynAtts) 
+                            dimids=mydimids, natts=mynatts) 
 call nc_check(ret, routine, 'inquire_variable for '//trim(varname), context, filename)
 
 if (present(dimlens) .or. present(dimnames)) then  ! more work to do 
 
    !>@todo do we want to make sure dimlens, dimnames are long enough
-   dimlens  = 0
-   dimnames = ''
+   if (present(dimlens))  dimlens  = 0
+   if (present(dimnames)) dimnames = 'null'
 
    do ii = 1,myndims
 
@@ -902,7 +903,7 @@
 
 if (present(   xtype)) xtype    = myxtype
 if (present(   ndims)) ndims    = myndims
-if (present(   nAtts)) nAtts    = mynAtts
+if (present(   natts)) natts    = mynatts
 if (present( dimlens)) dimlens(1:ndims)  = mydimlens(1:ndims)
 if (present(dimnames)) dimnames(1:ndims) = mydimnames(1:ndims)
 

Modified: DART/branches/coamps/models/coamps_nest/coamps_interp_mod.f90
===================================================================
--- DART/branches/coamps/models/coamps_nest/coamps_interp_mod.f90	2017-09-18 22:53:48 UTC (rev 11937)
+++ DART/branches/coamps/models/coamps_nest/coamps_interp_mod.f90	2017-09-18 23:42:17 UTC (rev 11938)
@@ -322,18 +322,22 @@
 
         case default
            
+          is_success = .true.  ! unless proven otherwise


More information about the Dart-dev mailing list