@@ -42,13 +42,24 @@ module nc4fortran
4242! > generic procedures mapped over type / rank
4343generic, public :: write = > &
4444 nc_write_scalar_r32, nc_write_scalar_r64, nc_write_scalar_i32, nc_write_scalar_i64, nc_write_scalar_char, &
45- nc_write_1d, nc_write_2d, nc_write_3d, &
46- nc_write_4d, nc_write_5d, nc_write_6d, nc_write_7d
45+ nc_write_1d_r32, nc_write_1d_r64, nc_write_1d_i32, nc_write_1d_i64, &
46+ nc_write_2d_r32, nc_write_2d_r64, nc_write_2d_i32, nc_write_2d_i64, &
47+ nc_write_3d_r32, nc_write_3d_r64, nc_write_3d_i32, nc_write_3d_i64, &
48+ nc_write_4d_r32, nc_write_4d_r64, nc_write_4d_i32, nc_write_4d_i64, &
49+ nc_write_5d_r32, nc_write_5d_r64, nc_write_5d_i32, nc_write_5d_i64, &
50+ nc_write_6d_r32, nc_write_6d_r64, nc_write_6d_i32, nc_write_6d_i64, &
51+ nc_write_7d_r32, nc_write_7d_r64, nc_write_7d_i32, nc_write_7d_i64
4752
4853generic, public :: read = > nc_read_scalar, nc_read_1d, nc_read_2d, nc_read_3d, nc_read_4d, nc_read_5d, nc_read_6d, nc_read_7d
4954
5055procedure , private :: nc_write_scalar_r32, nc_write_scalar_r64, nc_write_scalar_i32, nc_write_scalar_i64, nc_write_scalar_char, &
51- nc_write_1d, nc_write_2d, nc_write_3d, nc_write_4d, nc_write_5d, nc_write_6d, nc_write_7d, &
56+ nc_write_1d_r32, nc_write_1d_r64, nc_write_1d_i32, nc_write_1d_i64, &
57+ nc_write_2d_r32, nc_write_2d_r64, nc_write_2d_i32, nc_write_2d_i64, &
58+ nc_write_3d_r32, nc_write_3d_r64, nc_write_3d_i32, nc_write_3d_i64, &
59+ nc_write_4d_r32, nc_write_4d_r64, nc_write_4d_i32, nc_write_4d_i64, &
60+ nc_write_5d_r32, nc_write_5d_r64, nc_write_5d_i32, nc_write_5d_i64, &
61+ nc_write_6d_r32, nc_write_6d_r64, nc_write_6d_i32, nc_write_6d_i64, &
62+ nc_write_7d_r32, nc_write_7d_r64, nc_write_7d_i32, nc_write_7d_i64, &
5263 nc_read_scalar, nc_read_1d, nc_read_2d, nc_read_3d, nc_read_4d, nc_read_5d, nc_read_6d, nc_read_7d, &
5364 def_dims
5465
@@ -107,61 +118,233 @@ module subroutine nc_write_scalar_i64(self, dname, value, ierr)
107118integer , intent (out ), optional :: ierr
108119end subroutine nc_write_scalar_i64
109120
110- module subroutine nc_write_1d (self , dname , value , dims , ierr )
121+ module subroutine nc_write_1d_r32 (self , dname , value , dims , ierr )
111122class(netcdf_file), intent (in ) :: self
112123character (* ), intent (in ) :: dname
113- class( * ), intent (in ) :: value(:)
124+ real (real32 ), intent (in ) :: value(:)
114125character (* ), intent (in ), optional :: dims(:)
115126integer , intent (out ), optional :: ierr
116- end subroutine nc_write_1d
127+ end subroutine nc_write_1d_r32
117128
118- module subroutine nc_write_2d (self , dname , value , dims , ierr )
129+ module subroutine nc_write_1d_r64 (self , dname , value , dims , ierr )
119130class(netcdf_file), intent (in ) :: self
120131character (* ), intent (in ) :: dname
121- class( * ), intent (in ) :: value(:, :)
132+ real (real64 ), intent (in ) :: value(:)
122133character (* ), intent (in ), optional :: dims(:)
123134integer , intent (out ), optional :: ierr
124- end subroutine nc_write_2d
135+ end subroutine nc_write_1d_r64
125136
126- module subroutine nc_write_3d (self , dname , value , dims , ierr )
137+ module subroutine nc_write_1d_i32 (self , dname , value , dims , ierr )
127138class(netcdf_file), intent (in ) :: self
128139character (* ), intent (in ) :: dname
129- class( * ), intent (in ) :: value(:,:, :)
140+ integer (int32 ), intent (in ) :: value(:)
130141character (* ), intent (in ), optional :: dims(:)
131142integer , intent (out ), optional :: ierr
132- end subroutine nc_write_3d
143+ end subroutine nc_write_1d_i32
133144
134- module subroutine nc_write_4d (self , dname , value , dims , ierr )
145+ module subroutine nc_write_1d_i64 (self , dname , value , dims , ierr )
135146class(netcdf_file), intent (in ) :: self
136147character (* ), intent (in ) :: dname
137- class( * ), intent (in ) :: value(:,:,:, :)
148+ integer (int64 ), intent (in ) :: value(:)
138149character (* ), intent (in ), optional :: dims(:)
139150integer , intent (out ), optional :: ierr
140- end subroutine nc_write_4d
151+ end subroutine nc_write_1d_i64
141152
142- module subroutine nc_write_5d (self , dname , value , dims , ierr )
153+ module subroutine nc_write_2d_r32 (self , dname , value , dims , ierr )
143154class(netcdf_file), intent (in ) :: self
144155character (* ), intent (in ) :: dname
145- class( * ), intent (in ) :: value(:,:,:, :,:)
156+ real (real32 ), intent (in ) :: value(:,:)
146157character (* ), intent (in ), optional :: dims(:)
147158integer , intent (out ), optional :: ierr
148- end subroutine nc_write_5d
159+ end subroutine nc_write_2d_r32
149160
150- module subroutine nc_write_6d (self , dname , value , dims , ierr )
161+ module subroutine nc_write_2d_r64 (self , dname , value , dims , ierr )
151162class(netcdf_file), intent (in ) :: self
152163character (* ), intent (in ) :: dname
153- class( * ), intent (in ) :: value(:,:,:,:, :,:)
164+ real (real64 ), intent (in ) :: value(:,:)
154165character (* ), intent (in ), optional :: dims(:)
155166integer , intent (out ), optional :: ierr
156- end subroutine nc_write_6d
167+ end subroutine nc_write_2d_r64
157168
158- module subroutine nc_write_7d (self , dname , value , dims , ierr )
169+ module subroutine nc_write_2d_i32 (self , dname , value , dims , ierr )
159170class(netcdf_file), intent (in ) :: self
160171character (* ), intent (in ) :: dname
161- class( * ), intent (in ) :: value(:,:,:,:,:, :,:)
172+ integer (int32 ), intent (in ) :: value(:,:)
162173character (* ), intent (in ), optional :: dims(:)
163174integer , intent (out ), optional :: ierr
164- end subroutine nc_write_7d
175+ end subroutine nc_write_2d_i32
176+
177+ module subroutine nc_write_2d_i64 (self , dname , value , dims , ierr )
178+ class(netcdf_file), intent (in ) :: self
179+ character (* ), intent (in ) :: dname
180+ integer (int64), intent (in ) :: value(:,:)
181+ character (* ), intent (in ), optional :: dims(:)
182+ integer , intent (out ), optional :: ierr
183+ end subroutine nc_write_2d_i64
184+
185+ module subroutine nc_write_3d_r32 (self , dname , value , dims , ierr )
186+ class(netcdf_file), intent (in ) :: self
187+ character (* ), intent (in ) :: dname
188+ real (real32), intent (in ) :: value(:,:,:)
189+ character (* ), intent (in ), optional :: dims(:)
190+ integer , intent (out ), optional :: ierr
191+ end subroutine nc_write_3d_r32
192+
193+ module subroutine nc_write_3d_r64 (self , dname , value , dims , ierr )
194+ class(netcdf_file), intent (in ) :: self
195+ character (* ), intent (in ) :: dname
196+ real (real64), intent (in ) :: value(:,:,:)
197+ character (* ), intent (in ), optional :: dims(:)
198+ integer , intent (out ), optional :: ierr
199+ end subroutine nc_write_3d_r64
200+
201+ module subroutine nc_write_3d_i32 (self , dname , value , dims , ierr )
202+ class(netcdf_file), intent (in ) :: self
203+ character (* ), intent (in ) :: dname
204+ integer (int32), intent (in ) :: value(:,:,:)
205+ character (* ), intent (in ), optional :: dims(:)
206+ integer , intent (out ), optional :: ierr
207+ end subroutine nc_write_3d_i32
208+
209+ module subroutine nc_write_3d_i64 (self , dname , value , dims , ierr )
210+ class(netcdf_file), intent (in ) :: self
211+ character (* ), intent (in ) :: dname
212+ integer (int64), intent (in ) :: value(:,:,:)
213+ character (* ), intent (in ), optional :: dims(:)
214+ integer , intent (out ), optional :: ierr
215+ end subroutine nc_write_3d_i64
216+
217+ module subroutine nc_write_4d_r32 (self , dname , value , dims , ierr )
218+ class(netcdf_file), intent (in ) :: self
219+ character (* ), intent (in ) :: dname
220+ real (real32), intent (in ) :: value(:,:,:,:)
221+ character (* ), intent (in ), optional :: dims(:)
222+ integer , intent (out ), optional :: ierr
223+ end subroutine nc_write_4d_r32
224+
225+ module subroutine nc_write_4d_r64 (self , dname , value , dims , ierr )
226+ class(netcdf_file), intent (in ) :: self
227+ character (* ), intent (in ) :: dname
228+ real (real64), intent (in ) :: value(:,:,:,:)
229+ character (* ), intent (in ), optional :: dims(:)
230+ integer , intent (out ), optional :: ierr
231+ end subroutine nc_write_4d_r64
232+
233+ module subroutine nc_write_4d_i32 (self , dname , value , dims , ierr )
234+ class(netcdf_file), intent (in ) :: self
235+ character (* ), intent (in ) :: dname
236+ integer (int32), intent (in ) :: value(:,:,:,:)
237+ character (* ), intent (in ), optional :: dims(:)
238+ integer , intent (out ), optional :: ierr
239+ end subroutine nc_write_4d_i32
240+
241+ module subroutine nc_write_4d_i64 (self , dname , value , dims , ierr )
242+ class(netcdf_file), intent (in ) :: self
243+ character (* ), intent (in ) :: dname
244+ integer (int64), intent (in ) :: value(:,:,:,:)
245+ character (* ), intent (in ), optional :: dims(:)
246+ integer , intent (out ), optional :: ierr
247+ end subroutine nc_write_4d_i64
248+
249+
250+ module subroutine nc_write_5d_r32 (self , dname , value , dims , ierr )
251+ class(netcdf_file), intent (in ) :: self
252+ character (* ), intent (in ) :: dname
253+ real (real32), intent (in ) :: value(:,:,:,:,:)
254+ character (* ), intent (in ), optional :: dims(:)
255+ integer , intent (out ), optional :: ierr
256+ end subroutine nc_write_5d_r32
257+
258+ module subroutine nc_write_5d_r64 (self , dname , value , dims , ierr )
259+ class(netcdf_file), intent (in ) :: self
260+ character (* ), intent (in ) :: dname
261+ real (real64), intent (in ) :: value(:,:,:,:,:)
262+ character (* ), intent (in ), optional :: dims(:)
263+ integer , intent (out ), optional :: ierr
264+ end subroutine nc_write_5d_r64
265+
266+ module subroutine nc_write_5d_i32 (self , dname , value , dims , ierr )
267+ class(netcdf_file), intent (in ) :: self
268+ character (* ), intent (in ) :: dname
269+ integer (int32), intent (in ) :: value(:,:,:,:,:)
270+ character (* ), intent (in ), optional :: dims(:)
271+ integer , intent (out ), optional :: ierr
272+ end subroutine nc_write_5d_i32
273+
274+ module subroutine nc_write_5d_i64 (self , dname , value , dims , ierr )
275+ class(netcdf_file), intent (in ) :: self
276+ character (* ), intent (in ) :: dname
277+ integer (int64), intent (in ) :: value(:,:,:,:,:)
278+ character (* ), intent (in ), optional :: dims(:)
279+ integer , intent (out ), optional :: ierr
280+ end subroutine nc_write_5d_i64
281+
282+
283+ module subroutine nc_write_6d_r32 (self , dname , value , dims , ierr )
284+ class(netcdf_file), intent (in ) :: self
285+ character (* ), intent (in ) :: dname
286+ real (real32), intent (in ) :: value(:,:,:,:,:,:)
287+ character (* ), intent (in ), optional :: dims(:)
288+ integer , intent (out ), optional :: ierr
289+ end subroutine nc_write_6d_r32
290+
291+ module subroutine nc_write_6d_r64 (self , dname , value , dims , ierr )
292+ class(netcdf_file), intent (in ) :: self
293+ character (* ), intent (in ) :: dname
294+ real (real64), intent (in ) :: value(:,:,:,:,:,:)
295+ character (* ), intent (in ), optional :: dims(:)
296+ integer , intent (out ), optional :: ierr
297+ end subroutine nc_write_6d_r64
298+
299+ module subroutine nc_write_6d_i32 (self , dname , value , dims , ierr )
300+ class(netcdf_file), intent (in ) :: self
301+ character (* ), intent (in ) :: dname
302+ integer (int32), intent (in ) :: value(:,:,:,:,:,:)
303+ character (* ), intent (in ), optional :: dims(:)
304+ integer , intent (out ), optional :: ierr
305+ end subroutine nc_write_6d_i32
306+
307+ module subroutine nc_write_6d_i64 (self , dname , value , dims , ierr )
308+ class(netcdf_file), intent (in ) :: self
309+ character (* ), intent (in ) :: dname
310+ integer (int64), intent (in ) :: value(:,:,:,:,:,:)
311+ character (* ), intent (in ), optional :: dims(:)
312+ integer , intent (out ), optional :: ierr
313+ end subroutine nc_write_6d_i64
314+
315+
316+ module subroutine nc_write_7d_r32 (self , dname , value , dims , ierr )
317+ class(netcdf_file), intent (in ) :: self
318+ character (* ), intent (in ) :: dname
319+ real (real32), intent (in ) :: value(:,:,:,:,:,:,:)
320+ character (* ), intent (in ), optional :: dims(:)
321+ integer , intent (out ), optional :: ierr
322+ end subroutine nc_write_7d_r32
323+
324+ module subroutine nc_write_7d_r64 (self , dname , value , dims , ierr )
325+ class(netcdf_file), intent (in ) :: self
326+ character (* ), intent (in ) :: dname
327+ real (real64), intent (in ) :: value(:,:,:,:,:,:,:)
328+ character (* ), intent (in ), optional :: dims(:)
329+ integer , intent (out ), optional :: ierr
330+ end subroutine nc_write_7d_r64
331+
332+ module subroutine nc_write_7d_i32 (self , dname , value , dims , ierr )
333+ class(netcdf_file), intent (in ) :: self
334+ character (* ), intent (in ) :: dname
335+ integer (int32), intent (in ) :: value(:,:,:,:,:,:,:)
336+ character (* ), intent (in ), optional :: dims(:)
337+ integer , intent (out ), optional :: ierr
338+ end subroutine nc_write_7d_i32
339+
340+ module subroutine nc_write_7d_i64 (self , dname , value , dims , ierr )
341+ class(netcdf_file), intent (in ) :: self
342+ character (* ), intent (in ) :: dname
343+ integer (int64), intent (in ) :: value(:,:,:,:,:,:,:)
344+ character (* ), intent (in ), optional :: dims(:)
345+ integer , intent (out ), optional :: ierr
346+ end subroutine nc_write_7d_i64
347+
165348end interface
166349
167350
0 commit comments