[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