84
85
87
88
89
90 integer, intent(in) :: ng, model
91
92
93
94 integer, parameter :: Natt = 25
95
96 integer :: Mstatedim, NCVdim, SworkDdim, SworkLdim
97 integer :: char1dim, char2dim, iaitrdim, iaupddim, iaup2dim
98 integer :: iparamdim, ipntrdim, laitrdim, laup2dim, raitrdim
99 integer :: raup2dim
100 integer :: i, j, status, varid
101 integer :: DimIDs(nDimID), vardim(2)
102
103 real(r8) :: Aval(6)
104
105 character (len=256) :: ncname
106 character (len=MaxLen) :: Vinfo(Natt)
107
108 character (len=*), parameter :: MyFile = &
109 & __FILE__//", def_gst_nf90"
110
111 sourcefile=myfile
112
113
114
115
116
117 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
118 ncname=gst(ng)%name
119
120 IF (master) THEN
121 IF (.not.lrstgst) THEN
122 WRITE (stdout,10) ng, trim(ncname)
123 ELSE
124 WRITE (stdout,20) ng, trim(ncname)
125 END IF
126 END IF
127
128
129
130
131
132 define : IF (.not.lrstgst) THEN
134 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
135 IF (master) WRITE (stdout,30) trim(ncname)
136 RETURN
137 END IF
138
139
140
141
142
143 status=def_dim(ng, model, gst(ng)%ncid, ncname, 'Mstate', &
144 & mstate(ng), mstatedim)
145 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
146
147 status=def_dim(ng, model, gst(ng)%ncid, ncname, 'NCV', &
148 & ncv, ncvdim)
149 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
150
151 status=def_dim(ng, model, gst(ng)%ncid, ncname, 'LworkD', &
152 & 3*mstate(ng), sworkddim)
153 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
154
155 status=def_dim(ng, model, gst(ng)%ncid, ncname, 'LworkL', &
156 & lworkl, sworkldim)
157 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
158
159 status=def_dim(ng, model, gst(ng)%ncid, ncname, 'iparam', &
160 & SIZE(iparam), iparamdim)
161 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
162
163 status=def_dim(ng, model, gst(ng)%ncid, ncname, 'ipntr', &
164 & SIZE(ipntr), ipntrdim)
165 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
166
167 status=def_dim(ng, model, gst(ng)%ncid, ncname, 'iaupd', &
168 & SIZE(iaupd), iaupddim)
169 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
170
171 status=def_dim(ng, model, gst(ng)%ncid, ncname, 'laitr', &
172 & SIZE(laitr), laitrdim)
173 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
174
175 status=def_dim(ng, model, gst(ng)%ncid, ncname, 'iaitr', &
176 & SIZE(iaitr), iaitrdim)
177 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
178
179 status=def_dim(ng, model, gst(ng)%ncid, ncname, 'raitr', &
180 & SIZE(raitr), raitrdim)
181 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
182
183 status=def_dim(ng, model, gst(ng)%ncid, ncname, 'laup2', &
184 & SIZE(laup2), laup2dim)
185 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
186
187 status=def_dim(ng, model, gst(ng)%ncid, ncname, 'iaup2', &
188 & SIZE(iaup2), iaup2dim)
189 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
190
191 status=def_dim(ng, model, gst(ng)%ncid, ncname, 'raup2', &
192 & SIZE(raup2), raup2dim)
193 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
194
195 status=def_dim(ng, model, gst(ng)%ncid, ncname, 'char2', &
196 & 2, char2dim)
197 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
198
199
200
201
202
203 CALL def_info (ng, model, gst(ng)%ncid, ncname, dimids)
204 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
205
206
207
208
209
210
211
212 DO i=1,natt
213 DO j=1,len(vinfo(1))
214 vinfo(i)(j:j)=' '
215 END DO
216 END DO
217 DO i=1,6
218 aval(i)=0.0_r8
219 END DO
220
221
222
223 vinfo( 1)='NEV'
224 vinfo( 2)='number of eigenvalues to compute'
225 status=def_var(ng, model, gst(ng)%ncid, varid, nf90_int, &
226 & 1, (/0/), aval, vinfo, ncname, &
227 & setparaccess = .false.)
228 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
229
230
231
232 vinfo( 1)='NCV'
233 vinfo( 2)='number of Lanczos vectors to compute'
234 status=def_var(ng, model, gst(ng)%ncid, varid, nf90_int, &
235 & 1, (/0/), aval, vinfo, ncname, &
236 & setparaccess = .false.)
237 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
238
239
240
241 vinfo( 1)='Mstate'
242 vinfo( 2)='total size of eigenvalue problem'
243 status=def_var(ng, model, gst(ng)%ncid, varid, nf90_int, &
244 & 1, (/0/), aval, vinfo, ncname, &
245 & setparaccess = .false.)
246 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
247
248
249
250 vinfo( 1)='iter'
251 vinfo( 2)='iteration number'
252 status=def_var(ng, model, gst(ng)%ncid, varid, nf90_int, &
253 & 1, (/0/), aval, vinfo, ncname, &
254 & setparaccess = .false.)
255 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
256
257
258
259 vinfo( 1)='ido'
260 vinfo( 2)='reverse communications flag'
261 status=def_var(ng, model, gst(ng)%ncid, varid, nf90_int, &
262 & 1, (/0/), aval, vinfo, ncname, &
263 & setparaccess = .false.)
264 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
265
266
267
268 vinfo( 1)='info'
269 vinfo( 2)='information and error flag'
270 status=def_var(ng, model, gst(ng)%ncid, varid, nf90_int, &
271 & 1, (/0/), aval, vinfo, ncname, &
272 & setparaccess = .false.)
273 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
274
275
276
277 vinfo( 1)='bmat'
278 vinfo( 2)='eigenvalue problem type'
279 status=def_var(ng, model, gst(ng)%ncid, varid, nf90_char, &
280 & 1, (/0/), aval, vinfo, ncname, &
281 & setparaccess = .false.)
282 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
283
284
285
286 vinfo( 1)='which'
287 vinfo( 2)='Ritz eigenvalues to compute'
288 status=def_var(ng, model, gst(ng)%ncid, varid, nf90_char, &
289 & 1, (/char2dim/), aval, vinfo, ncname, &
290 & setparaccess = .false.)
291 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
292
293
294
295 vinfo( 1)='howmany'
296 vinfo( 2)='form of basis function'
297 status=def_var(ng, model, gst(ng)%ncid, varid, nf90_char, &
298 & 1, (/0/), aval, vinfo, ncname, &
299 & setparaccess = .false.)
300 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
301
302
303
304 vinfo( 1)='Ritz_tol'
305 vinfo( 2)='relative accuracy of computed Ritz values'
306 status=def_var(ng, model, gst(ng)%ncid, varid,
nf_frst, &
307 & 1, (/0/), aval, vinfo, ncname, &
308 & setparaccess = .false.)
309 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
310
311
312
313 vinfo( 1)='iparam'
314 vinfo( 2)='eigenproblem parameters'
315 status=def_var(ng, model, gst(ng)%ncid, varid, nf90_int, &
316 & 1, (/iparamdim/), aval, vinfo, ncname, &
317 & setparaccess = .false.)
318 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
319
320
321
322 vinfo( 1)='ipntr'
323 vinfo( 2)='pointers to mark starting location in work arrays'
324 status=def_var(ng, model, gst(ng)%ncid,varid, nf90_int, &
325 & 1, (/ipntrdim/), aval, vinfo, ncname, &
326 & setparaccess = .false.)
327 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
328
329
330
331 vinfo( 1)='iaupd'
332 vinfo( 2)='ARPACK internal integer parameters to _aupd routines'
333 status=def_var(ng, model, gst(ng)%ncid, varid, nf90_int, &
334 & 1, (/iaupddim/), aval, vinfo, ncname, &
335 & setparaccess = .false.)
336 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
337
338
339
340 vinfo( 1)='iaitr'
341 vinfo( 2)='ARPACK internal integer parameters to _aitr routines'
342 status=def_var(ng, model, gst(ng)%ncid, varid, nf90_int, &
343 & 1, (/iaitrdim/), aval, vinfo, ncname, &
344 & setparaccess = .false.)
345 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
346
347
348
349 vinfo( 1)='iaup2'
350 vinfo( 2)='ARPACK internal integer parameters to _aup2 routines'
351 status=def_var(ng, model, gst(ng)%ncid, varid, nf90_int, &
352 & 1, (/iaup2dim/), aval, vinfo, ncname, &
353 & setparaccess = .false.)
354 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
355
356
357
358 vinfo( 1)='laitr'
359 vinfo( 2)='ARPACK internal logical parameters to _aitr routines'
360 vinfo( 9)='.FALSE.'
361 vinfo(10)='.TRUE.'
362 status=def_var(ng, model, gst(ng)%ncid, varid, nf90_int, &
363 & 1, (/laitrdim/), aval, vinfo, ncname, &
364 & setparaccess = .false.)
365 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
366
367
368
369 vinfo( 1)='laup2'
370 vinfo( 2)='ARPACK internal logical parameters to _aup2 routines'
371 vinfo( 9)='.FALSE.'
372 vinfo(10)='.TRUE.'
373 status=def_var(ng, model, gst(ng)%ncid, varid, nf90_int, &
374 & 1, (/laup2dim/), aval, vinfo, ncname, &
375 & setparaccess = .false.)
376 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
377
378
379
380 vinfo( 1)='raitr'
381 vinfo( 2)='ARPACK internal real parameters to _aitr routines'
382 status=def_var(ng, model, gst(ng)%ncid, varid,
nf_frst, &
383 & 1, (/raitrdim/), aval, vinfo, ncname, &
384 & setparaccess = .false.)
385 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
386
387
388
389 vinfo( 1)='raup2'
390 vinfo( 2)='ARPACK internal real parameters to _aup2 routines'
391 status=def_var(ng, model, gst(ng)%ncid, varid,
nf_frst, &
392 & 1, (/raup2dim/), aval, vinfo, ncname, &
393 & setparaccess = .false.)
394 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
395
396
397
398 vinfo( 1)='Bvec'
399 vinfo( 2)='Lanczos/Arnoldi basis vectors'
400 vardim(1)=mstatedim
401 vardim(2)=ncvdim
402 status=def_var(ng, model, gst(ng)%ncid, varid,
nf_frst, &
403 & 2, vardim, aval, vinfo, ncname)
404 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
405
406
407
408 vinfo( 1)='resid'
409 vinfo( 2)='eigenproblem residual vector'
410 status=def_var(ng, model, gst(ng)%ncid, varid,
nf_frst, &
411 & 1, (/mstatedim/), aval, vinfo, ncname)
412 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
413
414
415
416 vinfo( 1)='SworkD'
417 vinfo( 2)='reverse communications state array'
418 status=def_var(ng, model, gst(ng)%ncid, varid,
nf_frst, &
419 & 1, (/sworkddim/), aval, vinfo, ncname)
420 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
421
422
423
424 vinfo( 1)='SworkL'
425 vinfo( 2)='eigenproblem work array'
426 status=def_var(ng, model, gst(ng)%ncid, varid,
nf_frst, &
427 & 1, (/sworkldim/), aval, vinfo, ncname)
428 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
429
430
431
432
433
435 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
436
437 END IF define
438
439 10 FORMAT (/,2x,'DEF_GST_NF90 - creating checkpointing file,', &
440 & t56,'Grid ',i2.2,': ',a)
441 20 FORMAT (/,2x,'DEF_GST_NF90 - inquiring checkpointing file,', &
442 & t56,'Grid ',i2.2,': ',a)
443 30 FORMAT (/,' DEF_GST_NF90 - unable to create checkpointing', &
444 & ' NetCDF file: ',a)
445
446 RETURN
subroutine, public netcdf_enddef(ng, model, ncname, ncid)
subroutine, public netcdf_create(ng, model, ncname, ncid)
integer, parameter nf_frst