[Dart-dev] DART/branches Revision: 12030

dart at ucar.edu dart at ucar.edu
Thu Nov 2 15:07:29 MDT 2017


hendric at ucar.edu
2017-11-02 15:07:26 -0600 (Thu, 02 Nov 2017)
140
added code to read grid information for cam and addned
a some new subroutines to the netcdf module to inquire
dimension counts and sizes.





Modified: DART/branches/recam/assimilation_code/modules/utilities/netcdf_utilities_mod.f90
===================================================================
--- DART/branches/recam/assimilation_code/modules/utilities/netcdf_utilities_mod.f90	2017-11-02 16:22:21 UTC (rev 12029)
+++ DART/branches/recam/assimilation_code/modules/utilities/netcdf_utilities_mod.f90	2017-11-02 21:07:26 UTC (rev 12030)
@@ -31,18 +31,20 @@
 implicit none
 private
 
-public :: nc_check,                     &
-          nc_add_global_attribute,      &
-          nc_add_attribute_to_variable, &
-          nc_define_dimension,          &
-          nc_define_integer_variable,   &
-          nc_define_real_variable,      &
-          nc_define_double_variable,    &
-          nc_put_variable,              &
-          nc_get_variable,              &
-          nc_add_global_creation_time,  &
-          nc_redef,                     &
-          nc_enddef,                    &
+public :: nc_check,                       &
+          nc_add_global_attribute,        &
+          nc_add_attribute_to_variable,   &
+          nc_define_dimension,            &
+          nc_define_integer_variable,     &
+          nc_define_real_variable,        &
+          nc_define_double_variable,      &
+          nc_put_variable,                &
+          nc_get_variable,                &
+          nc_add_global_creation_time,    &
+          nc_get_variable_num_dimensions, &
+          nc_get_variable_size,           &
+          nc_redef,                       &
+          nc_enddef,                      &
           nc_sync
 
 
@@ -98,6 +100,11 @@
    module procedure nc_get_real_3d
 end interface
 
+interface nc_get_variable_size
+   module procedure nc_get_variable_size_1d
+   module procedure nc_get_variable_size_Nd
+end interface
+
 ! version controlled file description for error handling, do not edit
 character(len=256), parameter :: source   = &
    "$URL$"
@@ -919,11 +926,105 @@
 
 end subroutine nc_sync
 
+!------------------------------------------------------------------
 !--------------------------------------------------------------------
+! inquire variable info
 !--------------------------------------------------------------------
 
-end module netcdf_utilities_mod
+subroutine nc_get_variable_size_1d(ncid, varname, varsize, context, filename)      
 
+integer,          intent(in)  :: ncid
+character(len=*), intent(in)  :: varname
+integer,          intent(out) :: varsize
+character(len=*), intent(in), optional :: context
+character(len=*), intent(in), optional :: filename
+
+character(len=*), parameter :: routine = 'nc_get_variable_size_1d'
+integer :: ret, varid, dimids(NF90_MAX_DIMS)
+
+ret = nf90_inq_varid(ncid, varname, varid)
+call nc_check(ret, routine, 'inquire variable id for '//trim(varname), context, filename)
+
+ret = nf90_inquire_variable(ncid, varid, dimids=dimids)
+call nc_check(ret, routine, 'inquire dimensions for variable '//trim(varname), context, filename)
+
+ret = nf90_inquire_dimension(ncid, dimids(1), len=varsize)
+call nc_check(ret, routine, 'inquire dimension length for dimension 1', context, filename)
+
+subroutine nc_get_variable_size_1d
+
+!--------------------------------------------------------------------
+
+subroutine nc_get_variable_size_Nd(ncid, varname, varsize, context, filename)      
+
+integer,          intent(in)  :: ncid
+character(len=*), intent(in)  :: varname
+integer,          intent(out) :: varsize(:)
+character(len=*), intent(in), optional :: context
+character(len=*), intent(in), optional :: filename
+
+character(len=*), parameter :: routine = 'nc_get_variable_size_Nd'
+integer :: ret, varid, dimids(NF90_MAX_DIMS)
+
+ret = nf90_inq_varid(ncid, varname, varid)
+call nc_check(ret, routine, 'inquire variable id for '//trim(varname), context, filename)
+
+ret = nf90_inquire_variable(ncid, varid, dimids=dimids)
+call nc_check(ret, routine, 'inquire dimensions for variable '//trim(varname), context, filename)
+
+if (size(varsize) >= 1) then


More information about the Dart-dev mailing list