gtdata_netcdf_internal.f90 File Reference

Go to the source code of this file.

Modules

module  gtdata_netcdf_internal
 

Functions/Subroutines

integer function, public gtdata_netcdf_internal::vtable_add (var, entry)
 
subroutine internal_build_dimids (ent, stat)
 
integer function, public gtdata_netcdf_internal::vtable_delete (var)
 
integer function, public gtdata_netcdf_internal::vtable_lookup (var, entry)
 
integer function, public gtdata_netcdf_internal::vtable_set_attrid (var, attrid)
 

Variables

type(gd_nc_variable_entry), dimension(:), allocatable, target, save gtdata_netcdf_internal::gdnctab
 
integer, parameter gtdata_netcdf_internal::gdnctab_init_size = 16
 

Function/Subroutine Documentation

◆ internal_build_dimids()

subroutine vtable_add::internal_build_dimids ( type(gd_nc_variable_entry), intent(inout)  ent,
integer, intent(out)  stat 
)
private

Definition at line 114 of file gtdata_netcdf_internal.f90.

Referenced by gtdata_netcdf_internal::vtable_add().

114 !! use netcdf, only: &
115 !! & NF90_NOERR, NF90_ENOMEM, NF90_INQUIRE_VARIABLE
116  type(gd_nc_variable_entry), intent(inout):: ent
117  integer, intent(out):: stat
118  integer:: ndims
119  if (ent%varid > 0) then
120  stat = nf90_inquire_variable(ent%fileid, ent%varid, ndims = ndims)
121  if (stat /= nf90_noerr) return
122  if ((ent%dimid > 0) .and. (ndims /= 1)) goto 100
123  if (ndims == 0) then
124  nullify(ent%dimids)
125  stat = nf90_noerr
126  return
127  endif
128  allocate(ent%dimids(ndims), stat=stat)
129  if (stat /= 0) then
130  stat = nf90_enomem
131  return
132  endif
133  stat = nf90_inquire_variable(ent%fileid, ent%varid, dimids = ent%dimids)
134  if (stat /= nf90_noerr) return
135  if ((ent%dimid > 0) .and. (ent%dimids(1) /= ent%dimid)) then
136  deallocate(ent%dimids)
137  goto 100
138  endif
139  else
140  allocate(ent%dimids(1), stat=stat)
141  if (stat /= 0) then
142  stat = nf90_enomem
143  return
144  endif
145  ent%dimids(1) = ent%dimid
146  endif
147  stat = nf90_noerr
148  return
149 
150 100 continue
151  ent%varid = 0
152  allocate(ent%dimids(1))
153  ent%dimids(1) = ent%dimid
Here is the caller graph for this function: