@@ -9,7 +9,7 @@ MODULE m_ncio
9
9
NF90_DOUBLE, NF90_FLOAT, NF90_INT, NF90_SHORT, NF90_BYTE, &
10
10
NF90_UNLIMITED, &
11
11
NF90_Open, NF90_Close, &
12
- NF90_inquire, NF90_Inq_Varid, NF90_Inquire_Variable, &
12
+ NF90_inquire, NF90_Inq_Ncid, NF90_Inq_Varid, NF90_Inquire_Variable, &
13
13
NF90_Inq_DimID, NF90_Inquire_Dimension, &
14
14
NF90_Get_Var, NF90_Put_Var, &
15
15
NF90_Create, NF90_Def_dim, NF90_Def_Var, NF90_Enddef, NF90_reDef, &
@@ -22,6 +22,9 @@ MODULE m_ncio
22
22
! open/close file
23
23
PUBLIC :: nc_get_fid, nc_close_fid
24
24
25
+ ! get group id
26
+ PUBLIC :: nc_get_gid
27
+
25
28
! Create new file/dim/var
26
29
PUBLIC :: nc_create_file, nc_create_dim, nc_create_var
27
30
@@ -42,9 +45,11 @@ MODULE m_ncio
42
45
PUBLIC :: nc_fndvar, nc_fnddim
43
46
44
47
! read ND vars
48
+ PUBLIC :: nc_rdvar
45
49
PUBLIC :: nc_rdvar1d, nc_rdvar2d, nc_rdvar3d, nc_rdvar4 d
46
50
47
51
! write ND vars
52
+ PUBLIC :: nc_wrtvar
48
53
PUBLIC :: nc_wrtvar1d, nc_wrtvar2d, nc_wrtvar3d, nc_wrtvar4 d
49
54
50
55
! low-level Read 1D
@@ -82,6 +87,17 @@ MODULE m_ncio
82
87
MODULE PROCEDURE nc_rdatt_r4 , nc_rdatt_r8
83
88
END INTERFACE
84
89
90
+ INTERFACE nc_rdvar
91
+ MODULE PROCEDURE nc_rdvar1d_i1, nc_rdvar1d_i2, nc_rdvar1d_i4
92
+ MODULE PROCEDURE nc_rdvar1d_r4 , nc_rdvar1d_r8
93
+ MODULE PROCEDURE nc_rdvar2d_i1, nc_rdvar2d_i2, nc_rdvar2d_i4
94
+ MODULE PROCEDURE nc_rdvar2d_r4 , nc_rdvar2d_r8
95
+ MODULE PROCEDURE nc_rdvar3d_i1, nc_rdvar3d_i2, nc_rdvar3d_i4
96
+ MODULE PROCEDURE nc_rdvar3d_r4 , nc_rdvar3d_r8
97
+ MODULE PROCEDURE nc_rdvar4 d_i1, nc_rdvar4 d_i2, nc_rdvar4 d_i4
98
+ MODULE PROCEDURE nc_rdvar4 d_r4 , nc_rdvar4 d_r8
99
+ END INTERFACE
100
+
85
101
INTERFACE nc_rdvar1d
86
102
MODULE PROCEDURE nc_rdvar1d_i1, nc_rdvar1d_i2, nc_rdvar1d_i4
87
103
MODULE PROCEDURE nc_rdvar1d_r4 , nc_rdvar1d_r8
@@ -102,6 +118,17 @@ MODULE m_ncio
102
118
MODULE PROCEDURE nc_rdvar4 d_r4 , nc_rdvar4 d_r8
103
119
END INTERFACE
104
120
121
+ INTERFACE nc_wrtvar
122
+ MODULE PROCEDURE nc_wrtvar1d_i1, nc_wrtvar1d_i2, nc_wrtvar1d_i4
123
+ MODULE PROCEDURE nc_wrtvar1d_r4 , nc_wrtvar1d_r8
124
+ MODULE PROCEDURE nc_wrtvar2d_i1, nc_wrtvar2d_i2, nc_wrtvar2d_i4
125
+ MODULE PROCEDURE nc_wrtvar2d_r4 , nc_wrtvar2d_r8
126
+ MODULE PROCEDURE nc_wrtvar3d_i1, nc_wrtvar3d_i2, nc_wrtvar3d_i4
127
+ MODULE PROCEDURE nc_wrtvar3d_r4 , nc_wrtvar3d_r8
128
+ MODULE PROCEDURE nc_wrtvar4 d_i1, nc_wrtvar4 d_i2, nc_wrtvar4 d_i4
129
+ MODULE PROCEDURE nc_wrtvar4 d_r4 , nc_wrtvar4 d_r8
130
+ END INTERFACE
131
+
105
132
INTERFACE nc_wrtvar1d
106
133
MODULE PROCEDURE nc_wrtvar1d_i1, nc_wrtvar1d_i2, nc_wrtvar1d_i4
107
134
MODULE PROCEDURE nc_wrtvar1d_r4 , nc_wrtvar1d_r8
@@ -144,6 +171,7 @@ MODULE m_ncio
144
171
INTEGER (i1) :: gendim = 8
145
172
INTEGER (i1) :: genvar = 9
146
173
INTEGER (i1) :: endgen = 10
174
+ INTEGER (i1) :: gid = 11
147
175
INTEGER (i1) :: undef = 127 ! max positive for signed 8-byte int
148
176
END TYPE
149
177
TYPE (t_errcode),SAVE ,PRIVATE :: errcode
@@ -246,6 +274,24 @@ SUBROUTINE nc_close_fid(fid)
246
274
247
275
END SUBROUTINE nc_close_fid
248
276
277
+ !- -------------------------------------------------------------------------------
278
+ ! group operations
279
+ !- -------------------------------------------------------------------------------
280
+ SUBROUTINE nc_get_gid (fid , gname , gid )
281
+ IMPLICIT NONE
282
+
283
+ INTEGER (i4),INTENT (IN ) :: fid
284
+ CHARACTER (* ),INTENT (IN ) :: gname
285
+ INTEGER (i4),INTENT (OUT ) :: gid
286
+ INTEGER (i4) :: istat
287
+
288
+ istat = nf90_inq_ncid(fid, trim (gname), gid)
289
+ if (istat /= NF90_NOERR) then
290
+ write (lout_log,* ) " [err] nc_close_fid::Fail to get group id =" ,fid, " for var:" , trim (gname)
291
+ call mystop(errcode% gid)
292
+ end if
293
+
294
+ END SUBROUTINE nc_get_gid
249
295
250
296
!- -------------------------------------------------------------------------------
251
297
! create vars
0 commit comments