ROMS
Loading...
Searching...
No Matches
def_quick_mod Module Reference

Functions/Subroutines

subroutine, public def_quick (ng, ldef)
 
subroutine, private def_quick_nf90 (ng, model, ldef)
 
subroutine, private def_quick_pio (ng, model, ldef)
 

Function/Subroutine Documentation

◆ def_quick()

subroutine, public def_quick_mod::def_quick ( integer, intent(in) ng,
logical, intent(in) ldef )

Definition at line 73 of file def_quick.F.

74!***********************************************************************
75!
76! Imported variable declarations.
77!
78 logical, intent(in) :: ldef
79!
80 integer, intent(in) :: ng
81!
82! Local variable declarations.
83!
84 character (len=*), parameter :: MyFile = &
85 & __FILE__
86!
87!-----------------------------------------------------------------------
88! Create a new history file according to IO type.
89!-----------------------------------------------------------------------
90!
91 SELECT CASE (qck(ng)%IOtype)
92 CASE (io_nf90)
93 CALL def_quick_nf90 (ng, inlm, ldef)
94
95#if defined PIO_LIB && defined DISTRIBUTE
96 CASE (io_pio)
97 CALL def_quick_pio (ng, inlm, ldef)
98#endif
99 CASE DEFAULT
100 IF (master) WRITE (stdout,10) qck(ng)%IOtype
101 exit_flag=3
102 END SELECT
103 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
104!
105 10 FORMAT (' DEF_QUICK - Illegal output file type, io_type = ',i0, &
106 & /,13x,'Check KeyWord ''OUT_LIB'' in ''roms.in''.')
107!
108 RETURN

References def_quick_nf90(), def_quick_pio(), mod_scalars::exit_flag, strings_mod::founderror(), mod_param::inlm, mod_ncparam::io_nf90, mod_ncparam::io_pio, mod_parallel::master, mod_scalars::noerror, mod_iounits::qck, and mod_iounits::stdout.

Referenced by output().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ def_quick_nf90()

subroutine, private def_quick_mod::def_quick_nf90 ( integer, intent(in) ng,
integer, intent(in) model,
logical, intent(in) ldef )
private

Definition at line 112 of file def_quick.F.

113!***********************************************************************
114!
115 USE mod_netcdf
116!
117! Imported variable declarations.
118!
119 logical, intent(in) :: ldef
120 integer, intent(in) :: ng, model
121!
122! Local variable declarations.
123!
124 logical :: got_var(NV)
125!
126 integer, parameter :: Natt = 25
127
128 integer :: i, j, ifield, itrc, nvd3, nvd4, varid
129 integer :: recdim, status
130#ifdef ADJUST_BOUNDARY
131 integer :: IorJdim
132#endif
133 integer :: DimIDs(nDimID)
134 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
135
136#ifdef SOLVE3D
137# ifdef SEDIMENT
138 integer :: b3dgrd(4)
139# endif
140 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
141#endif
142#ifdef WET_DRY
143 integer :: sp2dgrd(3)
144#endif
145!
146 real(r8) :: Aval(6)
147!
148 character (len=256) :: ncname
149 character (len=MaxLen) :: Vinfo(Natt)
150
151 character (len=*), parameter :: MyFile = &
152 & __FILE__//", def_quick_nf90"
153!
154 sourcefile=myfile
155!
156!-----------------------------------------------------------------------
157! Set and report file name.
158!-----------------------------------------------------------------------
159!
160 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
161 ncname=qck(ng)%name
162!
163 IF (master) THEN
164 IF (ldef) THEN
165 WRITE (stdout,10) ng, trim(ncname)
166 ELSE
167 WRITE (stdout,20) ng, trim(ncname)
168 END IF
169 END IF
170!
171!=======================================================================
172! Create a new quicksave file.
173!=======================================================================
174!
175 define : IF (ldef) THEN
176 CALL netcdf_create (ng, model, trim(ncname), qck(ng)%ncid)
177 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
178 IF (master) WRITE (stdout,30) trim(ncname)
179 RETURN
180 END IF
181!
182!-----------------------------------------------------------------------
183! Define file dimensions.
184!-----------------------------------------------------------------------
185!
186 dimids=0
187!
188 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'xi_rho', &
189 & iobounds(ng)%xi_rho, dimids( 1))
190 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
191
192 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'xi_u', &
193 & iobounds(ng)%xi_u, dimids( 2))
194 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
195
196 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'xi_v', &
197 & iobounds(ng)%xi_v, dimids( 3))
198 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
199
200 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'xi_psi', &
201 & iobounds(ng)%xi_psi, dimids( 4))
202 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
203
204 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'eta_rho', &
205 & iobounds(ng)%eta_rho, dimids( 5))
206 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
207
208 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'eta_u', &
209 & iobounds(ng)%eta_u, dimids( 6))
210 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
211
212 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'eta_v', &
213 & iobounds(ng)%eta_v, dimids( 7))
214 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
215
216 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'eta_psi', &
217 & iobounds(ng)%eta_psi, dimids( 8))
218 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
219
220#ifdef ADJUST_BOUNDARY
221 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'IorJ', &
222 & iobounds(ng)%IorJ, iorjdim)
223 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
224#endif
225
226#if defined WRITE_WATER && defined MASKING
227 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'xy_rho', &
228 & iobounds(ng)%xy_rho, dimids(17))
229 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
230
231 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'xy_u', &
232 & iobounds(ng)%xy_u, dimids(18))
233 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
234
235 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'xy_v', &
236 & iobounds(ng)%xy_v, dimids(19))
237 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
238#endif
239
240#ifdef SOLVE3D
241# if defined WRITE_WATER && defined MASKING
242 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'xyz_rho', &
243 & iobounds(ng)%xy_rho*n(ng), dimids(20))
244 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
245
246 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'xyz_u', &
247 & iobounds(ng)%xy_u*n(ng), dimids(21))
248 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
249
250 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'xyz_v', &
251 & iobounds(ng)%xy_v*n(ng), dimids(22))
252 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
253
254 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'xyz_w', &
255 & iobounds(ng)%xy_rho*(n(ng)+1), dimids(23))
256 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
257# endif
258
259 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'N', &
260 & n(ng), dimids( 9))
261 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
262
263 status=def_dim(ng, model, qck(ng)%ncid, ncname, 's_rho', &
264 & n(ng), dimids( 9))
265 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
266
267 status=def_dim(ng, model, qck(ng)%ncid, ncname, 's_w', &
268 & n(ng)+1, dimids(10))
269 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
270
271 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'tracer', &
272 & nt(ng), dimids(11))
273 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
274
275# ifdef SEDIMENT
276 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'NST', &
277 & nst, dimids(32))
278 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
279
280 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'Nbed', &
281 & nbed, dimids(16))
282 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
283
284# if defined WRITE_WATER && defined MASKING
285 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'xybed', &
286 & iobounds(ng)%xy_rho*nbed, dimids(24))
287 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
288# endif
289# endif
290
291# ifdef ECOSIM
292 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'Nbands', &
293 & nbands, dimids(33))
294 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
295
296 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'Nphy', &
297 & nphy, dimids(25))
298 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
299
300 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'Nbac', &
301 & nbac, dimids(26))
302 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
303
304 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'Ndom', &
305 & ndom, dimids(27))
306 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
307
308 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'Nfec', &
309 & nfec, dimids(28))
310 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
311# endif
312#endif
313
314 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'boundary', &
315 & 4, dimids(14))
316 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
317
318#ifdef FOUR_DVAR
319 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'Nstate', &
320 & nstatevar(ng), dimids(29))
321 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
322#endif
323
324#ifdef ADJUST_BOUNDARY
325 status=def_dim(ng, model, qck(ng)%ncid, ncname, 'obc_adjust', &
326 & nbrec(ng), dimids(31))
327 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
328#endif
329
330 status=def_dim(ng, model, qck(ng)%ncid, ncname, &
331 & trim(adjustl(vname(5,idtime))), &
332 & nf90_unlimited, dimids(12))
333 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
334
335 recdim=dimids(12)
336!
337! Set number of dimensions for output variables.
338!
339#if defined WRITE_WATER && defined MASKING
340 nvd3=2
341 nvd4=2
342#else
343 nvd3=3
344 nvd4=4
345#endif
346!
347! Define dimension vectors for staggered tracer type variables.
348!
349#if defined WRITE_WATER && defined MASKING
350 t2dgrd(1)=dimids(17)
351 t2dgrd(2)=dimids(12)
352# ifdef SOLVE3D
353 t3dgrd(1)=dimids(20)
354 t3dgrd(2)=dimids(12)
355# endif
356#else
357 t2dgrd(1)=dimids( 1)
358 t2dgrd(2)=dimids( 5)
359 t2dgrd(3)=dimids(12)
360# ifdef SOLVE3D
361 t3dgrd(1)=dimids( 1)
362 t3dgrd(2)=dimids( 5)
363 t3dgrd(3)=dimids( 9)
364 t3dgrd(4)=dimids(12)
365# endif
366#endif
367#ifdef WET_DRY
368!
369! Define dimension vectors for staggered type variables at PSI-points.
370!
371 sp2dgrd(1)=dimids( 4)
372 sp2dgrd(2)=dimids( 8)
373 sp2dgrd(3)=dimids(12)
374#endif
375!
376! Define dimension vectors for staggered u-momentum type variables.
377!
378#if defined WRITE_WATER && defined MASKING
379 u2dgrd(1)=dimids(18)
380 u2dgrd(2)=dimids(12)
381# ifdef SOLVE3D
382 u3dgrd(1)=dimids(21)
383 u3dgrd(2)=dimids(12)
384# endif
385#else
386 u2dgrd(1)=dimids( 2)
387 u2dgrd(2)=dimids( 6)
388 u2dgrd(3)=dimids(12)
389# ifdef SOLVE3D
390 u3dgrd(1)=dimids( 2)
391 u3dgrd(2)=dimids( 6)
392 u3dgrd(3)=dimids( 9)
393 u3dgrd(4)=dimids(12)
394# endif
395#endif
396!
397! Define dimension vectors for staggered v-momentum type variables.
398!
399#if defined WRITE_WATER && defined MASKING
400 v2dgrd(1)=dimids(19)
401 v2dgrd(2)=dimids(12)
402# ifdef SOLVE3D
403 v3dgrd(1)=dimids(22)
404 v3dgrd(2)=dimids(12)
405# endif
406#else
407 v2dgrd(1)=dimids( 3)
408 v2dgrd(2)=dimids( 7)
409 v2dgrd(3)=dimids(12)
410# ifdef SOLVE3D
411 v3dgrd(1)=dimids( 3)
412 v3dgrd(2)=dimids( 7)
413 v3dgrd(3)=dimids( 9)
414 v3dgrd(4)=dimids(12)
415# endif
416#endif
417#ifdef SOLVE3D
418!
419! Define dimension vector for staggered w-momentum type variables.
420!
421# if defined WRITE_WATER && defined MASKING
422 w3dgrd(1)=dimids(23)
423 w3dgrd(2)=dimids(12)
424# else
425 w3dgrd(1)=dimids( 1)
426 w3dgrd(2)=dimids( 5)
427 w3dgrd(3)=dimids(10)
428 w3dgrd(4)=dimids(12)
429# endif
430# ifdef SEDIMENT
431!
432! Define dimension vector for sediment bed layer type variables.
433!
434# if defined WRITE_WATER && defined MASKING
435 b3dgrd(1)=dimids(24)
436 b3dgrd(2)=dimids(12)
437# else
438 b3dgrd(1)=dimids( 1)
439 b3dgrd(2)=dimids( 5)
440 b3dgrd(3)=dimids(16)
441 b3dgrd(4)=dimids(12)
442# endif
443# endif
444#endif
445!
446! Initialize unlimited time record dimension.
447!
448 qck(ng)%Rindex=0
449!
450! Initialize local information variable arrays.
451!
452 DO i=1,natt
453 DO j=1,len(vinfo(1))
454 vinfo(i)(j:j)=' '
455 END DO
456 END DO
457 DO i=1,6
458 aval(i)=0.0_r8
459 END DO
460!
461!-----------------------------------------------------------------------
462! Define time-recordless information variables.
463!-----------------------------------------------------------------------
464!
465 CALL def_info (ng, model, qck(ng)%ncid, ncname, dimids)
466 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
467!
468!-----------------------------------------------------------------------
469! Define time-varying variables.
470!-----------------------------------------------------------------------
471!
472! Define model time.
473!
474 vinfo( 1)=vname(1,idtime)
475 vinfo( 2)=vname(2,idtime)
476 WRITE (vinfo( 3),'(a,a)') 'seconds since ', trim(rclock%string)
477 vinfo( 4)=trim(rclock%calendar)
478 vinfo(14)=vname(4,idtime)
479 vinfo(21)=vname(6,idtime)
480 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idtime), &
481 & nf_tout, 1, (/recdim/), aval, vinfo, ncname, &
482 & setparaccess = .true.)
483 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
484
485#ifdef WET_DRY
486!
487! Define wet/dry mask on PSI-points.
488!
489 vinfo( 1)=vname(1,idpwet)
490 vinfo( 2)=vname(2,idpwet)
491 vinfo( 3)=vname(3,idpwet)
492 vinfo( 9)='land'
493 vinfo(10)='water'
494 vinfo(14)=vname(4,idpwet)
495 vinfo(16)=vname(1,idtime)
496 vinfo(21)=vname(6,idpwet)
497 vinfo(22)='coordinates'
498 aval(5)=real(iinfo(1,idpwet,ng),r8)
499 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idpwet), &
500 & nf_fout, nvd3, sp2dgrd, aval, vinfo, ncname, &
501 & setfillval = .false.)
502 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
503!
504! Define wet/dry mask on RHO-points.
505!
506 vinfo( 1)=vname(1,idrwet)
507 vinfo( 2)=vname(2,idrwet)
508 vinfo( 3)=vname(3,idrwet)
509 vinfo( 9)='land'
510 vinfo(10)='water'
511 vinfo(14)=vname(4,idrwet)
512 vinfo(16)=vname(1,idtime)
513 vinfo(21)=vname(6,idrwet)
514 vinfo(22)='coordinates'
515 aval(5)=real(iinfo(1,idrwet,ng),r8)
516 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idrwet), &
517 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
518 & setfillval = .false.)
519 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
520!
521! Define wet/dry mask on U-points.
522!
523 vinfo( 1)=vname(1,iduwet)
524 vinfo( 2)=vname(2,iduwet)
525 vinfo( 3)=vname(3,iduwet)
526 vinfo( 9)='land'
527 vinfo(10)='water'
528 vinfo(14)=vname(4,iduwet)
529 vinfo(16)=vname(1,idtime)
530 vinfo(21)=vname(6,iduwet)
531 vinfo(22)='coordinates'
532 aval(5)=real(iinfo(1,iduwet,ng),r8)
533 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(iduwet), &
534 & nf_fout, nvd3, u2dgrd, aval, vinfo, ncname, &
535 & setfillval = .false.)
536 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
537!
538! Define wet/dry mask on V-points.
539!
540 vinfo( 1)=vname(1,idvwet)
541 vinfo( 2)=vname(2,idvwet)
542 vinfo( 3)=vname(3,idvwet)
543 vinfo(14)=vname(4,idvwet)
544 vinfo(16)=vname(1,idtime)
545 vinfo( 9)='land'
546 vinfo(10)='water'
547 vinfo(21)=vname(6,idvwet)
548 vinfo(22)='coordinates'
549 aval(5)=real(iinfo(1,idvwet,ng),r8)
550 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idvwet), &
551 & nf_fout, nvd3, v2dgrd, aval, vinfo, ncname, &
552 & setfillval = .false.)
553 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
554#endif
555#ifdef SOLVE3D
556!
557! Define time-varying depth of RHO-points.
558!
559 IF (qout(idpthr,ng)) THEN
560 vinfo( 1)=vname(1,idpthr)
561 WRITE (vinfo( 2),40) trim(vname(2,idpthr))
562 vinfo( 3)=vname(3,idpthr)
563 vinfo(14)=vname(4,idpthr)
564 vinfo(16)=vname(1,idtime)
565# if defined WRITE_WATER && defined MASKING
566 vinfo(20)='mask_rho'
567# endif
568 vinfo(21)=vname(6,idpthr)
569 vinfo(22)='coordinates'
570 aval(5)=real(iinfo(1,idpthr,ng),r8)
571 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idpthr), &
572 & nf_fout, nvd4, t3dgrd, aval, vinfo, ncname, &
573 & setfillval = .false.)
574 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
575 END IF
576!
577! Define time-varying depth of U-points.
578!
579 IF (qout(idpthu,ng)) THEN
580 vinfo( 1)=vname(1,idpthu)
581 WRITE (vinfo( 2),40) trim(vname(2,idpthu))
582 vinfo( 3)=vname(3,idpthu)
583 vinfo(14)=vname(4,idpthu)
584 vinfo(16)=vname(1,idtime)
585# if defined WRITE_WATER && defined MASKING
586 vinfo(20)='mask_u'
587# endif
588 vinfo(21)=vname(6,idpthu)
589 vinfo(22)='coordinates'
590 aval(5)=real(iinfo(1,idpthu,ng),r8)
591 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idpthu), &
592 & nf_fout, nvd4, u3dgrd, aval, vinfo, ncname, &
593 & setfillval = .false.)
594 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
595 END IF
596!
597! Define time-varying depth of V-points.
598!
599 IF (qout(idpthv,ng)) THEN
600 vinfo( 1)=vname(1,idpthv)
601 WRITE (vinfo( 2),40) trim(vname(2,idpthv))
602 vinfo( 3)=vname(3,idpthv)
603 vinfo(14)=vname(4,idpthv)
604 vinfo(16)=vname(1,idtime)
605# if defined WRITE_WATER && defined MASKING
606 vinfo(20)='mask_v'
607# endif
608 vinfo(21)=vname(6,idpthv)
609 vinfo(22)='coordinates'
610 aval(5)=real(iinfo(1,idpthv,ng),r8)
611 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idpthv), &
612 & nf_fout, nvd4, v3dgrd, aval, vinfo, ncname, &
613 & setfillval = .false.)
614 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
615 END IF
616!
617! Define time-varying depth of W-points.
618!
619 IF (qout(idpthw,ng)) THEN
620 vinfo( 1)=vname(1,idpthw)
621 WRITE (vinfo( 2),40) trim(vname(2,idpthw))
622 vinfo( 3)=vname(3,idpthw)
623 vinfo(14)=vname(4,idpthw)
624 vinfo(16)=vname(1,idtime)
625# if defined WRITE_WATER && defined MASKING
626 vinfo(20)='mask_rho'
627# endif
628 vinfo(21)=vname(6,idpthw)
629 vinfo(22)='coordinates'
630 aval(5)=real(iinfo(1,idpthw,ng),r8)
631 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idpthw), &
632 & nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
633 & setfillval = .false.)
634 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
635 END IF
636#endif
637!
638! Define free-surface.
639!
640 IF (qout(idfsur,ng)) THEN
641 vinfo( 1)=vname(1,idfsur)
642 vinfo( 2)=vname(2,idfsur)
643 vinfo( 3)=vname(3,idfsur)
644 vinfo(14)=vname(4,idfsur)
645 vinfo(16)=vname(1,idtime)
646#if defined WRITE_WATER && defined MASKING
647 vinfo(20)='mask_rho'
648#endif
649 vinfo(21)=vname(6,idfsur)
650 vinfo(22)='coordinates'
651 aval(5)=real(iinfo(1,idfsur,ng),r8)
652 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idfsur), &
653#ifdef WET_DRY
654 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
655 & setfillval = .false.)
656#else
657 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
658#endif
659 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
660 END IF
661!
662! Define 2D U-momentum component.
663!
664 IF (qout(idubar,ng)) THEN
665 vinfo( 1)=vname(1,idubar)
666 vinfo( 2)=vname(2,idubar)
667 vinfo( 3)=vname(3,idubar)
668 vinfo(14)=vname(4,idubar)
669 vinfo(16)=vname(1,idtime)
670#if defined WRITE_WATER && defined MASKING
671 vinfo(20)='mask_u'
672#endif
673 vinfo(21)=vname(6,idubar)
674 vinfo(22)='coordinates'
675 aval(5)=real(iinfo(1,idubar,ng),r8)
676 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idubar), &
677 & nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
678 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
679 END IF
680!
681! Define 2D V-momentum component.
682!
683 IF (qout(idvbar,ng)) THEN
684 vinfo( 1)=vname(1,idvbar)
685 vinfo( 2)=vname(2,idvbar)
686 vinfo( 3)=vname(3,idvbar)
687 vinfo(14)=vname(4,idvbar)
688 vinfo(16)=vname(1,idtime)
689#if defined WRITE_WATER && defined MASKING
690 vinfo(20)='mask_v'
691#endif
692 vinfo(21)=vname(6,idvbar)
693 vinfo(22)='coordinates'
694 aval(5)=real(iinfo(1,idvbar,ng),r8)
695 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idvbar), &
696 & nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
697 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
698 END IF
699!
700! Define 2D Eastward momentum component at RHO-points.
701!
702 IF (qout(idu2de,ng)) THEN
703 vinfo( 1)=vname(1,idu2de)
704 vinfo( 2)=vname(2,idu2de)
705 vinfo( 3)=vname(3,idu2de)
706 vinfo(14)=vname(4,idu2de)
707 vinfo(16)=vname(1,idtime)
708#if defined WRITE_WATER && defined MASKING
709 vinfo(20)='mask_rho'
710#endif
711 vinfo(21)=vname(6,idu2de)
712 vinfo(22)='coordinates'
713 aval(5)=real(iinfo(1,idu2de,ng),r8)
714 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idu2de), &
715 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
716 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
717 END IF
718!
719! Define 2D Northward momentum component at RHO-points.
720!
721 IF (qout(idv2dn,ng)) THEN
722 vinfo( 1)=vname(1,idv2dn)
723 vinfo( 2)=vname(2,idv2dn)
724 vinfo( 3)=vname(3,idv2dn)
725 vinfo(14)=vname(4,idv2dn)
726 vinfo(16)=vname(1,idtime)
727#if defined WRITE_WATER && defined MASKING
728 vinfo(20)='mask_rho'
729#endif
730 vinfo(21)=vname(6,idv2dn)
731 vinfo(22)='coordinates'
732 aval(5)=real(iinfo(1,idv2dn,ng),r8)
733 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idv2dn), &
734 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
735 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
736 END IF
737
738#ifdef SOLVE3D
739!
740! Define 3D U-momentum component.
741!
742 IF (qout(iduvel,ng)) THEN
743 vinfo( 1)=vname(1,iduvel)
744 vinfo( 2)=vname(2,iduvel)
745 vinfo( 3)=vname(3,iduvel)
746 vinfo(14)=vname(4,iduvel)
747 vinfo(16)=vname(1,idtime)
748# if defined WRITE_WATER && defined MASKING
749 vinfo(20)='mask_u'
750# endif
751 vinfo(21)=vname(6,iduvel)
752 vinfo(22)='coordinates'
753 aval(5)=real(iinfo(1,iduvel,ng),r8)
754 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(iduvel), &
755 & nf_fout, nvd4, u3dgrd, aval, vinfo, ncname)
756 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
757 END IF
758!
759! Define 3D V-momentum component.
760!
761 IF (qout(idvvel,ng)) THEN
762 vinfo( 1)=vname(1,idvvel)
763 vinfo( 2)=vname(2,idvvel)
764 vinfo( 3)=vname(3,idvvel)
765 vinfo(14)=vname(4,idvvel)
766 vinfo(16)=vname(1,idtime)
767# if defined WRITE_WATER && defined MASKING
768 vinfo(20)='mask_v'
769# endif
770 vinfo(21)=vname(6,idvvel)
771 vinfo(22)='coordinates'
772 aval(5)=real(iinfo(1,idvvel,ng),r8)
773 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idvvel), &
774 & nf_fout, nvd4, v3dgrd, aval, vinfo, ncname)
775 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
776 END IF
777!
778! Define model surface U-momentum component.
779!
780 IF (qout(idusur,ng)) THEN
781 vinfo( 1)=vname(1,idusur)
782 vinfo( 2)=vname(2,idusur)
783 vinfo( 3)=vname(3,idusur)
784 vinfo(14)=vname(4,idusur)
785 vinfo(16)=vname(1,idtime)
786# if defined WRITE_WATER && defined MASKING
787 vinfo(20)='mask_u'
788# endif
789 vinfo(21)=vname(6,idusur)
790 vinfo(22)='coordinates'
791 aval(5)=real(iinfo(1,idusur,ng),r8)
792 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idusur), &
793 & nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
794 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
795 END IF
796!
797! Define model surface V-momentum component.
798!
799 IF (qout(idvsur,ng)) THEN
800 vinfo( 1)=vname(1,idvsur)
801 vinfo( 2)=vname(2,idvsur)
802 vinfo( 3)=vname(3,idvsur)
803 vinfo(14)=vname(4,idvsur)
804 vinfo(16)=vname(1,idtime)
805# if defined WRITE_WATER && defined MASKING
806 vinfo(20)='mask_v'
807# endif
808 vinfo(21)=vname(6,idvsur)
809 vinfo(22)='coordinates'
810 aval(5)=real(iinfo(1,idvsur,ng),r8)
811 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idvsur), &
812 & nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
813 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
814 END IF
815!
816! Define 3D Eastward momentum component at RHO-points.
817!
818 IF (qout(idu3de,ng)) THEN
819 vinfo( 1)=vname(1,idu3de)
820 vinfo( 2)=vname(2,idu3de)
821 vinfo( 3)=vname(3,idu3de)
822 vinfo(14)=vname(4,idu3de)
823 vinfo(16)=vname(1,idtime)
824# if defined WRITE_WATER && defined MASKING
825 vinfo(20)='mask_rho'
826# endif
827 vinfo(21)=vname(6,idu3de)
828 vinfo(22)='coordinates'
829 aval(5)=real(iinfo(1,idu3de,ng),r8)
830 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idu3de), &
831 & nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
832 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
833 END IF
834!
835! Define 3D Northward momentum component at RHO-points.
836!
837 IF (qout(idv3dn,ng)) THEN
838 vinfo( 1)=vname(1,idv3dn)
839 vinfo( 2)=vname(2,idv3dn)
840 vinfo( 3)=vname(3,idv3dn)
841 vinfo(14)=vname(4,idv3dn)
842 vinfo(16)=vname(1,idtime)
843# if defined WRITE_WATER && defined MASKING
844 vinfo(20)='mask_rho'
845# endif
846 vinfo(21)=vname(6,idv3dn)
847 vinfo(22)='coordinates'
848 aval(5)=real(iinfo(1,idv3dn,ng),r8)
849 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idv3dn), &
850 & nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
851 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
852 END IF
853!
854! Define model surface Eastward momentum component at RHO-points.
855!
856 IF (qout(idusue,ng)) THEN
857 vinfo( 1)=vname(1,idusue)
858 vinfo( 2)=vname(2,idusue)
859 vinfo( 3)=vname(3,idusue)
860 vinfo(14)=vname(4,idusue)
861 vinfo(16)=vname(1,idtime)
862# if defined WRITE_WATER && defined MASKING
863 vinfo(20)='mask_rho'
864# endif
865 vinfo(21)=vname(6,idusue)
866 vinfo(22)='coordinates'
867 aval(5)=real(iinfo(1,idusue,ng),r8)
868 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idusue), &
869 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
870 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
871 END IF
872!
873! Define model surface Northward momentum component at RHO-points.
874!
875 IF (qout(idvsun,ng)) THEN
876 vinfo( 1)=vname(1,idvsun)
877 vinfo( 2)=vname(2,idvsun)
878 vinfo( 3)=vname(3,idvsun)
879 vinfo(14)=vname(4,idvsun)
880 vinfo(16)=vname(1,idtime)
881# if defined WRITE_WATER && defined MASKING
882 vinfo(20)='mask_rho'
883# endif
884 vinfo(21)=vname(6,idvsun)
885 vinfo(22)='coordinates'
886 aval(5)=real(iinfo(1,idvsun,ng),r8)
887 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idvsun), &
888 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
889 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
890 END IF
891!
892! Define 3D momentum component in the S-direction.
893!
894 IF (qout(idwvel,ng)) THEN
895 vinfo( 1)=vname(1,idwvel)
896 vinfo( 2)=vname(2,idwvel)
897 vinfo( 3)=vname(3,idwvel)
898 vinfo(14)=vname(4,idwvel)
899 vinfo(16)=vname(1,idtime)
900# if defined WRITE_WATER && defined MASKING
901 vinfo(20)='mask_rho'
902# endif
903 vinfo(21)=vname(6,idwvel)
904 vinfo(22)='coordinates'
905 aval(5)=real(iinfo(1,idwvel,ng),r8)
906 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idwvel), &
907 & nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
908 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
909 END IF
910!
911! Define S-coordinate vertical "omega" momentum component.
912!
913 IF (qout(idovel,ng)) THEN
914 vinfo( 1)=vname(1,idovel)
915 vinfo( 2)=vname(2,idovel)
916 vinfo( 3)='meter second-1'
917 vinfo(14)=vname(4,idovel)
918 vinfo(16)=vname(1,idtime)
919# if defined WRITE_WATER && defined MASKING
920 vinfo(20)='mask_rho'
921# endif
922 vinfo(21)=vname(6,idovel)
923 vinfo(22)='coordinates'
924 aval(5)=real(iinfo(1,idovel,ng),r8)
925 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idovel), &
926 & nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
927 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
928 END IF
929!
930! Define tracer type variables.
931!
932 DO itrc=1,nt(ng)
933 IF (qout(idtvar(itrc),ng)) THEN
934 vinfo( 1)=vname(1,idtvar(itrc))
935 vinfo( 2)=vname(2,idtvar(itrc))
936 vinfo( 3)=vname(3,idtvar(itrc))
937 vinfo(14)=vname(4,idtvar(itrc))
938 vinfo(16)=vname(1,idtime)
939# ifdef SEDIMENT
940 DO i=1,nst
941 IF (itrc.eq.idsed(i)) THEN
942 WRITE (vinfo(19),50) 1000.0_r8*sd50(i,ng)
943 END IF
944 END DO
945# endif
946# if defined WRITE_WATER && defined MASKING
947 vinfo(20)='mask_rho'
948# endif
949 vinfo(21)=vname(6,idtvar(itrc))
950 vinfo(22)='coordinates'
951 aval(5)=real(iinfo(1,idtvar(itrc),ng),r8)
952 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Tid(itrc), &
953 & nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
954 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
955 END IF
956 END DO
957!
958! Define surface tracer type variables.
959!
960 DO itrc=1,nt(ng)
961 IF (qout(idsurt(itrc),ng)) THEN
962 vinfo( 1)=vname(1,idsurt(itrc))
963 vinfo( 2)=vname(2,idsurt(itrc))
964 vinfo( 3)=vname(3,idsurt(itrc))
965 vinfo(14)=vname(4,idsurt(itrc))
966 vinfo(16)=vname(1,idtime)
967# ifdef SEDIMENT
968 DO i=1,nst
969 IF (itrc.eq.idsed(i)) THEN
970 WRITE (vinfo(19),50) 1000.0_r8*sd50(i,ng)
971 END IF
972 END DO
973# endif
974# if defined WRITE_WATER && defined MASKING
975 vinfo(20)='mask_rho'
976# endif
977 vinfo(21)=vname(6,idsurt(itrc))
978 vinfo(22)='coordinates'
979 aval(5)=real(r2dvar,r8)
980 status=def_var(ng, model, qck(ng)%ncid, &
981 & qck(ng)%Vid(idsurt(itrc)), &
982 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
983 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
984 END IF
985 END DO
986!
987! Define density anomaly.
988!
989 IF (qout(iddano,ng)) THEN
990 vinfo( 1)=vname(1,iddano)
991 vinfo( 2)=vname(2,iddano)
992 vinfo( 3)=vname(3,iddano)
993 vinfo(14)=vname(4,iddano)
994 vinfo(16)=vname(1,idtime)
995# if defined WRITE_WATER && defined MASKING
996 vinfo(20)='mask_rho'
997# endif
998 vinfo(21)=vname(6,iddano)
999 vinfo(22)='coordinates'
1000 aval(5)=real(iinfo(1,iddano,ng),r8)
1001 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(iddano), &
1002 & nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1003 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1004 END IF
1005
1006# ifdef LMD_SKPP
1007!
1008! Define depth of surface boundary layer.
1009!
1010 IF (qout(idhsbl,ng)) THEN
1011 vinfo( 1)=vname(1,idhsbl)
1012 vinfo( 2)=vname(2,idhsbl)
1013 vinfo( 3)=vname(3,idhsbl)
1014 vinfo(14)=vname(4,idhsbl)
1015 vinfo(16)=vname(1,idtime)
1016# if defined WRITE_WATER && defined MASKING
1017 vinfo(20)='mask_rho'
1018# endif
1019 vinfo(21)=vname(6,idhsbl)
1020 vinfo(22)='coordinates'
1021 aval(5)=real(iinfo(1,idhsbl,ng),r8)
1022 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idhsbl), &
1023 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1024 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1025 END IF
1026# endif
1027# ifdef LMD_BKPP
1028!
1029! Define depth of bottom boundary layer.
1030!
1031 IF (qout(idhbbl,ng)) THEN
1032 vinfo( 1)=vname(1,idhbbl)
1033 vinfo( 2)=vname(2,idhbbl)
1034 vinfo( 3)=vname(3,idhbbl)
1035 vinfo(14)=vname(4,idhbbl)
1036 vinfo(16)=vname(1,idtime)
1037# if defined WRITE_WATER && defined MASKING
1038 vinfo(20)='mask_rho'
1039# endif
1040 vinfo(21)=vname(6,idhbbl)
1041 vinfo(22)='coordinates'
1042 aval(5)=real(iinfo(1,idhbbl,ng),r8)
1043 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idhbbl), &
1044 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1045 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1046 END IF
1047# endif
1048!
1049! Define vertical viscosity coefficient.
1050!
1051 IF (qout(idvvis,ng)) THEN
1052 vinfo( 1)=vname(1,idvvis)
1053 vinfo( 2)=vname(2,idvvis)
1054 vinfo( 3)=vname(3,idvvis)
1055 vinfo(14)=vname(4,idvvis)
1056 vinfo(16)=vname(1,idtime)
1057# if defined WRITE_WATER && defined MASKING
1058 vinfo(20)='mask_rho'
1059# endif
1060 vinfo(21)=vname(6,idvvis)
1061 vinfo(22)='coordinates'
1062 aval(5)=real(iinfo(1,idvvis,ng),r8)
1063 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idvvis), &
1064 & nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1065 & setfillval = .false.)
1066 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1067 END IF
1068!
1069! Define vertical diffusion coefficient for potential temperature.
1070!
1071 IF (qout(idtdif,ng)) THEN
1072 vinfo( 1)=vname(1,idtdif)
1073 vinfo( 2)=vname(2,idtdif)
1074 vinfo( 3)=vname(3,idtdif)
1075 vinfo(14)=vname(4,idtdif)
1076 vinfo(16)=vname(1,idtime)
1077# if defined WRITE_WATER && defined MASKING
1078 vinfo(20)='mask_rho'
1079# endif
1080 vinfo(21)=vname(6,idtdif)
1081 vinfo(22)='coordinates'
1082 aval(5)=real(iinfo(1,idtdif,ng),r8)
1083 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idtdif), &
1084 & nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1085 & setfillval = .false.)
1086 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1087 END IF
1088
1089# ifdef SALINITY
1090!
1091! Define vertical diffusion coefficient for salinity.
1092!
1093 IF (qout(idsdif,ng)) THEN
1094 vinfo( 1)=vname(1,idsdif)
1095 vinfo( 2)=vname(2,idsdif)
1096 vinfo( 3)=vname(3,idsdif)
1097 vinfo(14)=vname(4,idsdif)
1098 vinfo(16)=vname(1,idtime)
1099# if defined WRITE_WATER && defined MASKING
1100 vinfo(20)='mask_rho'
1101# endif
1102 vinfo(21)=vname(6,idsdif)
1103 vinfo(22)='coordinates'
1104 aval(5)=real(iinfo(1,idsdif,ng),r8)
1105 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idsdif), &
1106 & nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1107 & setfillval = .false.)
1108 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1109 END IF
1110# endif
1111# if defined GLS_MIXING || defined MY25_MIXING
1112!
1113! Define turbulent kinetic energy.
1114!
1115 IF (qout(idmtke,ng)) THEN
1116 vinfo( 1)=vname(1,idmtke)
1117 vinfo( 2)=vname(2,idmtke)
1118 vinfo( 3)=vname(3,idmtke)
1119 vinfo(14)=vname(4,idmtke)
1120 vinfo(16)=vname(1,idtime)
1121# if defined WRITE_WATER && defined MASKING
1122 vinfo(20)='mask_rho'
1123# endif
1124 vinfo(21)=vname(6,idmtke)
1125 vinfo(22)='coordinates'
1126 aval(5)=real(iinfo(1,idmtke,ng),r8)
1127 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idmtke), &
1128 & nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1129 & setfillval = .false.)
1130 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1131 END IF
1132!
1133! Define turbulent kinetic energy time length scale.
1134!
1135 IF (qout(idmtls,ng)) THEN
1136 vinfo( 1)=vname(1,idmtls)
1137 vinfo( 2)=vname(2,idmtls)
1138 vinfo( 3)=vname(3,idmtls)
1139 vinfo(14)=vname(4,idmtls)
1140 vinfo(16)=vname(1,idtime)
1141# if defined WRITE_WATER && defined MASKING
1142 vinfo(20)='mask_rho'
1143# endif
1144 vinfo(21)=vname(6,idmtls)
1145 vinfo(22)='coordinates'
1146 aval(5)=real(iinfo(1,idmtls,ng),r8)
1147 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idmtls), &
1148 & nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1149 & setfillval = .false.)
1150 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1151 END IF
1152# endif
1153# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
1154!
1155! Define surface air pressure.
1156!
1157 IF (qout(idpair,ng)) THEN
1158 vinfo( 1)=vname(1,idpair)
1159 vinfo( 2)=vname(2,idpair)
1160 vinfo( 3)=vname(3,idpair)
1161 vinfo(14)=vname(4,idpair)
1162 vinfo(16)=vname(1,idtime)
1163# if defined WRITE_WATER && defined MASKING
1164 vinfo(20)='mask_rho'
1165# endif
1166 vinfo(21)=vname(6,idpair)
1167 vinfo(22)='coordinates'
1168 aval(5)=real(iinfo(1,idpair,ng),r8)
1169 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idpair), &
1170 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1171 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1172 END IF
1173# endif
1174# if defined BULK_FLUXES || defined ECOSIM
1175!
1176! Define surface winds.
1177!
1178 IF (qout(iduair,ng)) THEN
1179 vinfo( 1)=vname(1,iduair)
1180 vinfo( 2)=vname(2,iduair)
1181 vinfo( 3)=vname(3,iduair)
1182 vinfo(14)=vname(4,iduair)
1183 vinfo(16)=vname(1,idtime)
1184# if defined WRITE_WATER && defined MASKING
1185 vinfo(20)='mask_rho'
1186# endif
1187 vinfo(21)=vname(6,iduair)
1188 vinfo(22)='coordinates'
1189 aval(5)=real(iinfo(1,iduair,ng),r8)
1190 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(iduair), &
1191 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1192 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1193 END IF
1194!
1195 IF (qout(idvair,ng)) THEN
1196 vinfo( 1)=vname(1,idvair)
1197 vinfo( 2)=vname(2,idvair)
1198 vinfo( 3)=vname(3,idvair)
1199 vinfo(14)=vname(4,idvair)
1200 vinfo(16)=vname(1,idtime)
1201# if defined WRITE_WATER && defined MASKING
1202 vinfo(20)='mask_rho'
1203# endif
1204 vinfo(21)=vname(6,idvair)
1205 vinfo(22)='coordinates'
1206 aval(5)=real(iinfo(1,idvair,ng),r8)
1207 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idvair), &
1208 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1209 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1210 END IF
1211!
1212! Define Eastward/Northward surface winds at RHO-points.
1213!
1214 IF (qout(iduaie,ng)) THEN
1215 vinfo( 1)=vname(1,iduaie)
1216 vinfo( 2)=vname(2,iduaie)
1217 vinfo( 3)=vname(3,iduaie)
1218 vinfo(14)=vname(4,iduaie)
1219 vinfo(16)=vname(1,idtime)
1220# if defined WRITE_WATER && defined MASKING
1221 vinfo(20)='mask_rho'
1222# endif
1223 vinfo(21)=vname(6,iduaie)
1224 vinfo(22)='coordinates'
1225 aval(5)=real(iinfo(1,iduaie,ng),r8)
1226 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(iduaie), &
1227 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1228 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1229 END IF
1230!
1231 IF (qout(idvain,ng)) THEN
1232 vinfo( 1)=vname(1,idvain)
1233 vinfo( 2)=vname(2,idvain)
1234 vinfo( 3)=vname(3,idvain)
1235 vinfo(14)=vname(4,idvain)
1236 vinfo(16)=vname(1,idtime)
1237# if defined WRITE_WATER && defined MASKING
1238 vinfo(20)='mask_rho'
1239# endif
1240 vinfo(21)=vname(6,idvain)
1241 vinfo(22)='coordinates'
1242 aval(5)=real(iinfo(1,idvain,ng),r8)
1243 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idvain), &
1244 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1245 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1246 END IF
1247# endif
1248!
1249! Define surface active tracer fluxes.
1250!
1251 DO itrc=1,nat
1252 IF (qout(idtsur(itrc),ng)) THEN
1253 vinfo( 1)=vname(1,idtsur(itrc))
1254 vinfo( 2)=vname(2,idtsur(itrc))
1255 vinfo( 3)=vname(3,idtsur(itrc))
1256 IF (itrc.eq.itemp) THEN
1257 vinfo(11)='upward flux, cooling'
1258 vinfo(12)='downward flux, heating'
1259 ELSE IF (itrc.eq.isalt) THEN
1260 vinfo(11)='upward flux, freshening (net precipitation)'
1261 vinfo(12)='downward flux, salting (net evaporation)'
1262 END IF
1263 vinfo(14)=vname(4,idtsur(itrc))
1264 vinfo(16)=vname(1,idtime)
1265# if defined WRITE_WATER && defined MASKING
1266 vinfo(20)='mask_rho'
1267# endif
1268 vinfo(21)=vname(6,idtsur(itrc))
1269 vinfo(22)='coordinates'
1270 aval(5)=real(iinfo(1,idtsur(itrc),ng),r8)
1271 status=def_var(ng, model, qck(ng)%ncid, &
1272 & qck(ng)%Vid(idtsur(itrc)), nf_fout, &
1273 & nvd3, t2dgrd, aval, vinfo, ncname)
1274 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1275 END IF
1276 END DO
1277
1278# if defined BULK_FLUXES || defined FRC_COUPLING
1279!
1280! Define latent heat flux.
1281!
1282 IF (qout(idlhea,ng)) THEN
1283 vinfo( 1)=vname(1,idlhea)
1284 vinfo( 2)=vname(2,idlhea)
1285 vinfo( 3)=vname(3,idlhea)
1286 vinfo(11)='upward flux, cooling'
1287 vinfo(12)='downward flux, heating'
1288 vinfo(14)=vname(4,idlhea)
1289 vinfo(16)=vname(1,idtime)
1290# if defined WRITE_WATER && defined MASKING
1291 vinfo(20)='mask_rho'
1292# endif
1293 vinfo(21)=vname(6,idlhea)
1294 vinfo(22)='coordinates'
1295 aval(5)=real(iinfo(1,idlhea,ng),r8)
1296 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idlhea), &
1297 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1298 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1299 END IF
1300!
1301! Define sensible heat flux.
1302!
1303 IF (qout(idshea,ng)) THEN
1304 vinfo( 1)=vname(1,idshea)
1305 vinfo( 2)=vname(2,idshea)
1306 vinfo( 3)=vname(3,idshea)
1307 vinfo(11)='upward flux, cooling'
1308 vinfo(12)='downward flux, heating'
1309 vinfo(14)=vname(4,idshea)
1310 vinfo(16)=vname(1,idtime)
1311# if defined WRITE_WATER && defined MASKING
1312 vinfo(20)='mask_rho'
1313# endif
1314 vinfo(21)=vname(6,idshea)
1315 vinfo(22)='coordinates'
1316 aval(5)=real(iinfo(1,idshea,ng),r8)
1317 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idshea), &
1318 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1319 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1320 END IF
1321!
1322! Define net longwave radiation flux.
1323!
1324 IF (qout(idlrad,ng)) THEN
1325 vinfo( 1)=vname(1,idlrad)
1326 vinfo( 2)=vname(2,idlrad)
1327 vinfo( 3)=vname(3,idlrad)
1328 vinfo(11)='upward flux, cooling'
1329 vinfo(12)='downward flux, heating'
1330 vinfo(14)=vname(4,idlrad)
1331 vinfo(16)=vname(1,idtime)
1332# if defined WRITE_WATER && defined MASKING
1333 vinfo(20)='mask_rho'
1334# endif
1335 vinfo(21)=vname(6,idlrad)
1336 vinfo(22)='coordinates'
1337 aval(5)=real(iinfo(1,idlrad,ng),r8)
1338 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idlrad), &
1339 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1340 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1341 END IF
1342# endif
1343
1344# if defined BULK_FLUXES
1345!
1346! Define atmospheric air temperature.
1347!
1348 IF (qout(idtair,ng)) THEN
1349 vinfo( 1)=vname(1,idtair)
1350 vinfo( 2)=vname(2,idtair)
1351 vinfo( 3)=vname(3,idtair)
1352 vinfo(14)=vname(4,idtair)
1353 vinfo(16)=vname(1,idtime)
1354# if defined WRITE_WATER && defined MASKING
1355 vinfo(20)='mask_rho'
1356# endif
1357 vinfo(21)=vname(6,idtair)
1358 vinfo(22)='coordinates'
1359 aval(5)=real(iinfo(1,idtair,ng),r8)
1360 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idtair), &
1361 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1362 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1363 END IF
1364
1365# ifdef EMINUSP
1366!
1367! Define evaporation rate.
1368!
1369 IF (qout(idevap,ng)) THEN
1370 vinfo( 1)=vname(1,idevap)
1371 vinfo( 2)=vname(2,idevap)
1372 vinfo( 3)=vname(3,idevap)
1373 vinfo(11)='downward flux, freshening (condensation)'
1374 vinfo(12)='upward flux, salting (evaporation)'
1375 vinfo(14)=vname(4,idevap)
1376 vinfo(16)=vname(1,idtime)
1377# if defined WRITE_WATER && defined MASKING
1378 vinfo(20)='mask_rho'
1379# endif
1380 vinfo(21)=vname(6,idevap)
1381 vinfo(22)='coordinates'
1382 aval(5)=real(iinfo(1,idevap,ng),r8)
1383 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idevap), &
1384 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1385 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1386 END IF
1387!
1388! Define precipitation rate.
1389!
1390 IF (qout(idrain,ng)) THEN
1391 vinfo( 1)=vname(1,idrain)
1392 vinfo( 2)=vname(2,idrain)
1393 vinfo( 3)=vname(3,idrain)
1394 vinfo(11)='upward flux, salting (NOT POSSIBLE)'
1395 vinfo(12)='downward flux, freshening (precipitation)'
1396 vinfo(14)=vname(4,idrain)
1397 vinfo(16)=vname(1,idtime)
1398# if defined WRITE_WATER && defined MASKING
1399 vinfo(20)='mask_rho'
1400# endif
1401 vinfo(21)=vname(6,idrain)
1402 vinfo(22)='coordinates'
1403 aval(5)=real(iinfo(1,idrain,ng),r8)
1404 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idrain), &
1405 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1406 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1407 END IF
1408# endif
1409# endif
1410!
1411! Define E-P flux.
1412!
1413 IF (qout(idempf,ng)) THEN
1414 vinfo( 1)=vname(1,idempf)
1415 vinfo( 2)=vname(2,idempf)
1416 vinfo( 3)=vname(3,idempf)
1417 vinfo(11)='upward flux, freshening (net precipitation)'
1418 vinfo(12)='downward flux, salting (net evaporation)'
1419 vinfo(14)=vname(4,idempf)
1420 vinfo(16)=vname(1,idtime)
1421# if defined WRITE_WATER && defined MASKING
1422 vinfo(20)='mask_rho'
1423# endif
1424 vinfo(21)=vname(6,idempf)
1425 vinfo(22)='coordinates'
1426 aval(5)=real(iinfo(1,idempf,ng),r8)
1427 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idempf), &
1428 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1429 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1430 END IF
1431
1432# ifdef SHORTWAVE
1433!
1434! Define net shortwave radiation flux.
1435!
1436 IF (qout(idsrad,ng)) THEN
1437 vinfo( 1)=vname(1,idsrad)
1438 vinfo( 2)=vname(2,idsrad)
1439 vinfo( 3)=vname(3,idsrad)
1440 vinfo(11)='upward flux, cooling'
1441 vinfo(12)='downward flux, heating'
1442 vinfo(14)=vname(4,idsrad)
1443 vinfo(16)=vname(1,idtime)
1444# if defined WRITE_WATER && defined MASKING
1445 vinfo(20)='mask_rho'
1446# endif
1447 vinfo(21)=vname(6,idsrad)
1448 vinfo(22)='coordinates'
1449 aval(5)=real(iinfo(1,idsrad,ng),r8)
1450 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idsrad), &
1451 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1452 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1453 END IF
1454# endif
1455#endif
1456!
1457! Define surface U-momentum stress.
1458!
1459 IF (qout(idusms,ng)) THEN
1460 vinfo( 1)=vname(1,idusms)
1461 vinfo( 2)=vname(2,idusms)
1462 vinfo( 3)=vname(3,idusms)
1463 vinfo(14)=vname(4,idusms)
1464 vinfo(16)=vname(1,idtime)
1465#if defined WRITE_WATER && defined MASKING
1466 vinfo(20)='mask_u'
1467#endif
1468 vinfo(21)=vname(6,idusms)
1469 vinfo(22)='coordinates'
1470 aval(5)=real(iinfo(1,idusms,ng),r8)
1471 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idusms), &
1472 & nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
1473 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1474 END IF
1475!
1476! Define surface V-momentum stress.
1477!
1478 IF (qout(idvsms,ng)) THEN
1479 vinfo( 1)=vname(1,idvsms)
1480 vinfo( 2)=vname(2,idvsms)
1481 vinfo( 3)=vname(3,idvsms)
1482 vinfo(14)=vname(4,idvsms)
1483 vinfo(16)=vname(1,idtime)
1484#if defined WRITE_WATER && defined MASKING
1485 vinfo(20)='mask_v'
1486#endif
1487 vinfo(21)=vname(6,idvsms)
1488 vinfo(22)='coordinates'
1489 aval(5)=real(iinfo(1,idvsms,ng),r8)
1490 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idvsms), &
1491 & nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
1492 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1493 END IF
1494!
1495! Define bottom U-momentum stress.
1496!
1497 IF (qout(idubms,ng)) THEN
1498 vinfo( 1)=vname(1,idubms)
1499 vinfo( 2)=vname(2,idubms)
1500 vinfo( 3)=vname(3,idubms)
1501 vinfo(14)=vname(4,idubms)
1502 vinfo(16)=vname(1,idtime)
1503#if defined WRITE_WATER && defined MASKING
1504 vinfo(20)='mask_u'
1505#endif
1506 vinfo(21)=vname(6,idubms)
1507 vinfo(22)='coordinates'
1508 aval(5)=real(iinfo(1,idubms,ng),r8)
1509 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idubms), &
1510 & nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
1511 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1512 END IF
1513!
1514! Define bottom V-momentum stress.
1515!
1516 IF (qout(idvbms,ng)) THEN
1517 vinfo( 1)=vname(1,idvbms)
1518 vinfo( 2)=vname(2,idvbms)
1519 vinfo( 3)=vname(3,idvbms)
1520 vinfo(14)=vname(4,idvbms)
1521 vinfo(16)=vname(1,idtime)
1522#if defined WRITE_WATER && defined MASKING
1523 vinfo(20)='mask_v'
1524#endif
1525 vinfo(21)=vname(6,idvbms)
1526 vinfo(22)='coordinates'
1527 aval(5)=real(iinfo(1,idvbms,ng),r8)
1528 status=def_var(ng, model, qck(ng)%ncid, qck(ng)%Vid(idvbms), &
1529 & nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
1530 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1531 END IF
1532
1533#if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
1534!
1535!-----------------------------------------------------------------------
1536! Define the bottom boundary layer model or waves variables.
1537!-----------------------------------------------------------------------
1538!
1539 CALL bbl_def_nf90 (ng, model, ldef, qout, qck, &
1540 & t2dgrd, u2dgrd, v2dgrd)
1541 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1542#endif
1543
1544#if defined ICE_MODEL && defined SOLVE3D
1545!
1546!-----------------------------------------------------------------------
1547! Define the sea-ice model variables.
1548!-----------------------------------------------------------------------
1549!
1550 CALL ice_def_nf90 (ng, model, ldef, qout, qck, &
1551 & t2dgrd, u2dgrd, v2dgrd)
1552 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1553#endif
1554
1555#if defined SEDIMENT && defined SOLVE3D
1556!
1557!-----------------------------------------------------------------------
1558! Define the sediment model variables.
1559!-----------------------------------------------------------------------
1560!
1561 CALL sediment_def_nf90 (ng, model, ldef, qout, qck, &
1562 & t2dgrd, u2dgrd, v2dgrd, &
1563 & b3dgrd)
1564 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1565#endif
1566
1567#if defined WEC_VF && defined SOLVE3D
1568!
1569!-----------------------------------------------------------------------
1570! Define the Waves Effect on Currents variables.
1571!-----------------------------------------------------------------------
1572!
1573 CALL wec_def_nf90 (ng, model, ldef, qout, qck, &
1574 & t2dgrd, u2dgrd, v2dgrd, &
1575 & t3dgrd, u3dgrd, v3dgrd, w3dgrd)
1576 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1577#endif
1578!
1579!-----------------------------------------------------------------------
1580! Leave definition mode.
1581!-----------------------------------------------------------------------
1582!
1583 CALL netcdf_enddef (ng, model, ncname, qck(ng)%ncid)
1584 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1585!
1586!-----------------------------------------------------------------------
1587! Write out time-recordless, information variables.
1588!-----------------------------------------------------------------------
1589!
1590 CALL wrt_info (ng, model, qck(ng)%ncid, ncname)
1591 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1592 END IF define
1593!
1594!=======================================================================
1595! Open an existing quicksave file, check its contents, and prepare
1596! for appending data.
1597!=======================================================================
1598!
1599 query : IF (.not.ldef) THEN
1600 ncname=qck(ng)%name
1601!
1602! Open quicksave file for read/write.
1603!
1604 CALL netcdf_open (ng, model, ncname, 1, qck(ng)%ncid)
1605 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
1606 WRITE (stdout,60) trim(ncname)
1607 RETURN
1608 END IF
1609!
1610! Inquire about the dimensions and check for consistency.
1611!
1612 CALL netcdf_check_dim (ng, model, ncname, &
1613 & ncid = qck(ng)%ncid)
1614 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1615!
1616! Inquire about the variables.
1617!
1618 CALL netcdf_inq_var (ng, model, ncname, &
1619 & ncid = qck(ng)%ncid)
1620 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1621!
1622! Initialize logical switches.
1623!
1624 DO i=1,nv
1625 got_var(i)=.false.
1626 END DO
1627!
1628! Scan variable list from input NetCDF and activate switches for
1629! quicksave variables. Get variable IDs.
1630!
1631 DO i=1,n_var
1632 IF (trim(var_name(i)).eq.trim(vname(1,idtime))) THEN
1633 got_var(idtime)=.true.
1634 qck(ng)%Vid(idtime)=var_id(i)
1635#if defined WET_DRY
1636 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpwet))) THEN
1637 got_var(idpwet)=.true.
1638 qck(ng)%Vid(idpwet)=var_id(i)
1639 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrwet))) THEN
1640 got_var(idrwet)=.true.
1641 qck(ng)%Vid(idrwet)=var_id(i)
1642 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduwet))) THEN
1643 got_var(iduwet)=.true.
1644 qck(ng)%Vid(iduwet)=var_id(i)
1645 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvwet))) THEN
1646 got_var(idvwet)=.true.
1647 qck(ng)%Vid(idvwet)=var_id(i)
1648#endif
1649#ifdef SOLVE3D
1650 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpthr))) THEN
1651 got_var(idpthr)=.true.
1652 qck(ng)%Vid(idpthr)=var_id(i)
1653 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpthu))) THEN
1654 got_var(idpthu)=.true.
1655 qck(ng)%Vid(idpthu)=var_id(i)
1656 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpthv))) THEN
1657 got_var(idpthv)=.true.
1658 qck(ng)%Vid(idpthv)=var_id(i)
1659 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpthw))) THEN
1660 got_var(idpthw)=.true.
1661 qck(ng)%Vid(idpthw)=var_id(i)
1662#endif
1663 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idfsur))) THEN
1664 got_var(idfsur)=.true.
1665 qck(ng)%Vid(idfsur)=var_id(i)
1666 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubar))) THEN
1667 got_var(idubar)=.true.
1668 qck(ng)%Vid(idubar)=var_id(i)
1669 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbar))) THEN
1670 got_var(idvbar)=.true.
1671 qck(ng)%Vid(idvbar)=var_id(i)
1672 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu2de))) THEN
1673 got_var(idu2de)=.true.
1674 qck(ng)%Vid(idu2de)=var_id(i)
1675 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv2dn))) THEN
1676 got_var(idv2dn)=.true.
1677 qck(ng)%Vid(idv2dn)=var_id(i)
1678#ifdef SOLVE3D
1679 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduvel))) THEN
1680 got_var(iduvel)=.true.
1681 qck(ng)%Vid(iduvel)=var_id(i)
1682 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvel))) THEN
1683 got_var(idvvel)=.true.
1684 qck(ng)%Vid(idvvel)=var_id(i)
1685 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idusur))) THEN
1686 got_var(idusur)=.true.
1687 qck(ng)%Vid(idusur)=var_id(i)
1688 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvsur))) THEN
1689 got_var(idvsur)=.true.
1690 qck(ng)%Vid(idvsur)=var_id(i)
1691 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu3de))) THEN
1692 got_var(idu3de)=.true.
1693 qck(ng)%Vid(idu3de)=var_id(i)
1694 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv3dn))) THEN
1695 got_var(idv3dn)=.true.
1696 qck(ng)%Vid(idv3dn)=var_id(i)
1697 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idusue))) THEN
1698 got_var(idusue)=.true.
1699 qck(ng)%Vid(idusue)=var_id(i)
1700 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvsun))) THEN
1701 got_var(idvsun)=.true.
1702 qck(ng)%Vid(idvsun)=var_id(i)
1703 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idwvel))) THEN
1704 got_var(idwvel)=.true.
1705 qck(ng)%Vid(idwvel)=var_id(i)
1706 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idovel))) THEN
1707 got_var(idovel)=.true.
1708 qck(ng)%Vid(idovel)=var_id(i)
1709 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iddano))) THEN
1710 got_var(iddano)=.true.
1711 qck(ng)%Vid(iddano)=var_id(i)
1712# ifdef LMD_SKPP
1713 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhsbl))) THEN
1714 got_var(idhsbl)=.true.
1715 qck(ng)%Vid(idhsbl)=var_id(i)
1716# endif
1717# ifdef LMD_BKPP
1718 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhbbl))) THEN
1719 got_var(idhbbl)=.true.
1720 qck(ng)%Vid(idhbbl)=var_id(i)
1721# endif
1722 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvis))) THEN
1723 got_var(idvvis)=.true.
1724 qck(ng)%Vid(idvvis)=var_id(i)
1725 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idtdif))) THEN
1726 got_var(idtdif)=.true.
1727 qck(ng)%Vid(idtdif)=var_id(i)
1728 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsdif))) THEN
1729 got_var(idsdif)=.true.
1730 qck(ng)%Vid(idsdif)=var_id(i)
1731# if defined GLS_MIXING || defined MY25_MIXING
1732 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idmtke))) THEN
1733 got_var(idmtke)=.true.
1734 qck(ng)%Vid(idmtke)=var_id(i)
1735 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idmtls))) THEN
1736 got_var(idmtls)=.true.
1737 qck(ng)%Vid(idmtls)=var_id(i)
1738# endif
1739# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
1740 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpair))) THEN
1741 got_var(idpair)=.true.
1742 qck(ng)%Vid(idpair)=var_id(i)
1743# endif
1744# if defined BULK_FLUXES || defined ECOSIM
1745 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduair))) THEN
1746 got_var(iduair)=.true.
1747 qck(ng)%Vid(iduair)=var_id(i)
1748 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvair))) THEN
1749 got_var(idvair)=.true.
1750 qck(ng)%Vid(idvair)=var_id(i)
1751 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduaie))) THEN
1752 got_var(iduaie)=.true.
1753 qck(ng)%Vid(iduaie)=var_id(i)
1754 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvain))) THEN
1755 got_var(idvain)=.true.
1756 qck(ng)%Vid(idvain)=var_id(i)
1757# endif
1758# if defined BULK_FLUXES || defined FRC_COUPLING
1759 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idlhea))) THEN
1760 got_var(idlhea)=.true.
1761 qck(ng)%Vid(idlhea)=var_id(i)
1762 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idshea))) THEN
1763 got_var(idshea)=.true.
1764 qck(ng)%Vid(idshea)=var_id(i)
1765 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idlrad))) THEN
1766 got_var(idlrad)=.true.
1767 qck(ng)%Vid(idlrad)=var_id(i)
1768# endif
1769# ifdef BULK_FLUXES
1770 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idtair))) THEN
1771 got_var(idtair)=.true.
1772 qck(ng)%Vid(idtair)=var_id(i)
1773# ifdef EMINUSP
1774 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idevap))) THEN
1775 got_var(idevap)=.true.
1776 qck(ng)%Vid(idevap)=var_id(i)
1777 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrain))) THEN
1778 got_var(idrain)=.true.
1779 qck(ng)%Vid(idrain)=var_id(i)
1780# endif
1781# endif
1782 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idempf))) THEN
1783 got_var(idempf)=.true.
1784 qck(ng)%Vid(idempf)=var_id(i)
1785# ifdef SHORTWAVE
1786 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsrad))) THEN
1787 got_var(idsrad)=.true.
1788 qck(ng)%Vid(idsrad)=var_id(i)
1789# endif
1790#endif
1791 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idusms))) THEN
1792 got_var(idusms)=.true.
1793 qck(ng)%Vid(idusms)=var_id(i)
1794 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvsms))) THEN
1795 got_var(idvsms)=.true.
1796 qck(ng)%Vid(idvsms)=var_id(i)
1797 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubms))) THEN
1798 got_var(idubms)=.true.
1799 qck(ng)%Vid(idubms)=var_id(i)
1800 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbms))) THEN
1801 got_var(idvbms)=.true.
1802 qck(ng)%Vid(idvbms)=var_id(i)
1803 END IF
1804#ifdef SOLVE3D
1805 DO itrc=1,nt(ng)
1806 IF (trim(var_name(i)).eq.trim(vname(1,idtvar(itrc)))) THEN
1807 got_var(idtvar(itrc))=.true.
1808 qck(ng)%Tid(itrc)=var_id(i)
1809 ELSE IF (trim(var_name(i)).eq. &
1810 & trim(vname(1,idsurt(itrc)))) THEN
1811 got_var(idsurt(itrc))=.true.
1812 qck(ng)%Vid(idsurt(itrc))=var_id(i)
1813 END IF
1814 END DO
1815 DO itrc=1,nat
1816 IF (trim(var_name(i)).eq.trim(vname(1,idtsur(itrc)))) THEN
1817 got_var(idtsur(itrc))=.true.
1818 qck(ng)%Vid(idtsur(itrc))=var_id(i)
1819 END IF
1820 END DO
1821#endif
1822 END DO
1823!
1824! Check if quicksave variables are available in input NetCDF
1825! file.
1826!
1827 IF (.not.got_var(idtime)) THEN
1828 IF (master) WRITE (stdout,70) trim(vname(1,idtime)), &
1829 & trim(ncname)
1830 exit_flag=3
1831 RETURN
1832 END IF
1833#if defined WET_DRY
1834 IF (.not.got_var(idpwet)) THEN
1835 IF (master) WRITE (stdout,70) trim(vname(1,idpwet)), &
1836 & trim(ncname)
1837 exit_flag=3
1838 RETURN
1839 END IF
1840 IF (.not.got_var(idrwet)) THEN
1841 IF (master) WRITE (stdout,70) trim(vname(1,idrwet)), &
1842 & trim(ncname)
1843 exit_flag=3
1844 RETURN
1845 END IF
1846 IF (.not.got_var(iduwet)) THEN
1847 IF (master) WRITE (stdout,70) trim(vname(1,iduwet)), &
1848 & trim(ncname)
1849 exit_flag=3
1850 RETURN
1851 END IF
1852 IF (.not.got_var(idvwet)) THEN
1853 IF (master) WRITE (stdout,70) trim(vname(1,idvwet)), &
1854 & trim(ncname)
1855 exit_flag=3
1856 RETURN
1857 END IF
1858#endif
1859#ifdef SOLVE3D
1860 IF (.not.got_var(idpthr).and.qout(idpthr,ng)) THEN
1861 IF (master) WRITE (stdout,70) trim(vname(1,idpthr)), &
1862 & trim(ncname)
1863 exit_flag=3
1864 RETURN
1865 END IF
1866 IF (.not.got_var(idpthu).and.qout(idpthu,ng)) THEN
1867 IF (master) WRITE (stdout,70) trim(vname(1,idpthu)), &
1868 & trim(ncname)
1869 exit_flag=3
1870 RETURN
1871 END IF
1872 IF (.not.got_var(idpthv).and.qout(idpthv,ng)) THEN
1873 IF (master) WRITE (stdout,70) trim(vname(1,idpthv)), &
1874 & trim(ncname)
1875 exit_flag=3
1876 RETURN
1877 END IF
1878 IF (.not.got_var(idpthw).and.qout(idpthw,ng)) THEN
1879 IF (master) WRITE (stdout,70) trim(vname(1,idpthw)), &
1880 & trim(ncname)
1881 exit_flag=3
1882 RETURN
1883 END IF
1884#endif
1885 IF (.not.got_var(idfsur).and.qout(idfsur,ng)) THEN
1886 IF (master) WRITE (stdout,70) trim(vname(1,idfsur)), &
1887 & trim(ncname)
1888 exit_flag=3
1889 RETURN
1890 END IF
1891 IF (.not.got_var(idubar).and.qout(idubar,ng)) THEN
1892 IF (master) WRITE (stdout,70) trim(vname(1,idubar)), &
1893 & trim(ncname)
1894 exit_flag=3
1895 RETURN
1896 END IF
1897 IF (.not.got_var(idvbar).and.qout(idvbar,ng)) THEN
1898 IF (master) WRITE (stdout,70) trim(vname(1,idvbar)), &
1899 & trim(ncname)
1900 exit_flag=3
1901 RETURN
1902 END IF
1903 IF (.not.got_var(idu2de).and.qout(idu2de,ng)) THEN
1904 IF (master) WRITE (stdout,70) trim(vname(1,idu2de)), &
1905 & trim(ncname)
1906 exit_flag=3
1907 RETURN
1908 END IF
1909 IF (.not.got_var(idv2dn).and.qout(idv2dn,ng)) THEN
1910 IF (master) WRITE (stdout,70) trim(vname(1,idv2dn)), &
1911 & trim(ncname)
1912 exit_flag=3
1913 RETURN
1914 END IF
1915#ifdef SOLVE3D
1916 IF (.not.got_var(iduvel).and.qout(iduvel,ng)) THEN
1917 IF (master) WRITE (stdout,70) trim(vname(1,iduvel)), &
1918 & trim(ncname)
1919 exit_flag=3
1920 RETURN
1921 END IF
1922 IF (.not.got_var(idvvel).and.qout(idvvel,ng)) THEN
1923 IF (master) WRITE (stdout,70) trim(vname(1,idvvel)), &
1924 & trim(ncname)
1925 exit_flag=3
1926 RETURN
1927 END IF
1928 IF (.not.got_var(idusur).and.qout(idusur,ng)) THEN
1929 IF (master) WRITE (stdout,70) trim(vname(1,idusur)), &
1930 & trim(ncname)
1931 exit_flag=3
1932 RETURN
1933 END IF
1934 IF (.not.got_var(idvsur).and.qout(idvsur,ng)) THEN
1935 IF (master) WRITE (stdout,70) trim(vname(1,idvsur)), &
1936 & trim(ncname)
1937 exit_flag=3
1938 RETURN
1939 END IF
1940 IF (.not.got_var(idu3de).and.qout(idu3de,ng)) THEN
1941 IF (master) WRITE (stdout,70) trim(vname(1,idu3de)), &
1942 & trim(ncname)
1943 exit_flag=3
1944 RETURN
1945 END IF
1946 IF (.not.got_var(idv3dn).and.qout(idv3dn,ng)) THEN
1947 IF (master) WRITE (stdout,70) trim(vname(1,idv3dn)), &
1948 & trim(ncname)
1949 exit_flag=3
1950 RETURN
1951 END IF
1952 IF (.not.got_var(idusue).and.qout(idusue,ng)) THEN
1953 IF (master) WRITE (stdout,70) trim(vname(1,idusue)), &
1954 & trim(ncname)
1955 exit_flag=3
1956 RETURN
1957 END IF
1958 IF (.not.got_var(idvsun).and.qout(idvsun,ng)) THEN
1959 IF (master) WRITE (stdout,70) trim(vname(1,idvsun)), &
1960 & trim(ncname)
1961 exit_flag=3
1962 RETURN
1963 END IF
1964 IF (.not.got_var(idwvel).and.qout(idwvel,ng)) THEN
1965 IF (master) WRITE (stdout,70) trim(vname(1,idwvel)), &
1966 & trim(ncname)
1967 exit_flag=3
1968 RETURN
1969 END IF
1970 IF (.not.got_var(idovel).and.qout(idovel,ng)) THEN
1971 IF (master) WRITE (stdout,70) trim(vname(1,idovel)), &
1972 & trim(ncname)
1973 exit_flag=3
1974 RETURN
1975 END IF
1976 IF (.not.got_var(iddano).and.qout(iddano,ng)) THEN
1977 IF (master) WRITE (stdout,70) trim(vname(1,iddano)), &
1978 & trim(ncname)
1979 exit_flag=3
1980 RETURN
1981 END IF
1982# ifdef LMD_SKPP
1983 IF (.not.got_var(idhsbl).and.qout(idhsbl,ng)) THEN
1984 IF (master) WRITE (stdout,70) trim(vname(1,idhsbl)), &
1985 & trim(ncname)
1986 exit_flag=3
1987 RETURN
1988 END IF
1989# endif
1990# ifdef LMD_BKPP
1991 IF (.not.got_var(idhbbl).and.qout(idhbbl,ng)) THEN
1992 IF (master) WRITE (stdout,70) trim(vname(1,idhbbl)), &
1993 & trim(ncname)
1994 exit_flag=3
1995 RETURN
1996 END IF
1997# endif
1998 IF (.not.got_var(idvvis).and.qout(idvvis,ng)) THEN
1999 IF (master) WRITE (stdout,70) trim(vname(1,idvvis)), &
2000 & trim(ncname)
2001 exit_flag=3
2002 RETURN
2003 END IF
2004 IF (.not.got_var(idtdif).and.qout(idtdif,ng)) THEN
2005 IF (master) WRITE (stdout,70) trim(vname(1,idtdif)), &
2006 & trim(ncname)
2007 exit_flag=3
2008 RETURN
2009 END IF
2010# ifdef SALINITY
2011 IF (.not.got_var(idsdif).and.qout(idsdif,ng)) THEN
2012 IF (master) WRITE (stdout,70) trim(vname(1,idsdif)), &
2013 & trim(ncname)
2014 exit_flag=3
2015 RETURN
2016 END IF
2017# endif
2018# if defined GLS_MIXING || defined MY25_MIXING
2019 IF (.not.got_var(idmtke).and.qout(idmtke,ng)) THEN
2020 IF (master) WRITE (stdout,70) trim(vname(1,idmtke)), &
2021 & trim(ncname)
2022 exit_flag=3
2023 RETURN
2024 END IF
2025 IF (.not.got_var(idmtls).and.qout(idmtls,ng)) THEN
2026 IF (master) WRITE (stdout,70) trim(vname(1,idmtls)), &
2027 & trim(ncname)
2028 exit_flag=3
2029 RETURN
2030 END IF
2031# endif
2032# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
2033 IF (.not.got_var(idpair).and.qout(idpair,ng)) THEN
2034 IF (master) WRITE (stdout,70) trim(vname(1,idpair)), &
2035 & trim(ncname)
2036 exit_flag=3
2037 RETURN
2038 END IF
2039# endif
2040# if defined BULK_FLUXES || defined ECOSIM
2041 IF (.not.got_var(iduair).and.qout(iduair,ng)) THEN
2042 IF (master) WRITE (stdout,70) trim(vname(1,iduair)), &
2043 & trim(ncname)
2044 exit_flag=3
2045 RETURN
2046 END IF
2047 IF (.not.got_var(idvair).and.qout(idvair,ng)) THEN
2048 IF (master) WRITE (stdout,70) trim(vname(1,idvair)), &
2049 & trim(ncname)
2050 exit_flag=3
2051 RETURN
2052 END IF
2053 IF (.not.got_var(iduaie).and.qout(iduaie,ng)) THEN
2054 IF (master) WRITE (stdout,70) trim(vname(1,iduaie)), &
2055 & trim(ncname)
2056 exit_flag=3
2057 RETURN
2058 END IF
2059 IF (.not.got_var(idvain).and.qout(idvain,ng)) THEN
2060 IF (master) WRITE (stdout,70) trim(vname(1,idvain)), &
2061 & trim(ncname)
2062 exit_flag=3
2063 RETURN
2064 END IF
2065# endif
2066# if defined BULK_FLUXES || defined FRC_COUPLING
2067 IF (.not.got_var(idlhea).and.qout(idlhea,ng)) THEN
2068 IF (master) WRITE (stdout,70) trim(vname(1,idlhea)), &
2069 & trim(ncname)
2070 exit_flag=3
2071 RETURN
2072 END IF
2073 IF (.not.got_var(idshea).and.qout(idshea,ng)) THEN
2074 IF (master) WRITE (stdout,70) trim(vname(1,idshea)), &
2075 & trim(ncname)
2076 exit_flag=3
2077 RETURN
2078 END IF
2079 IF (.not.got_var(idlrad).and.qout(idlrad,ng)) THEN
2080 IF (master) WRITE (stdout,70) trim(vname(1,idlrad)), &
2081 & trim(ncname)
2082 exit_flag=3
2083 RETURN
2084 END IF
2085# endif
2086# ifdef BULK_FLUXES
2087 IF (.not.got_var(idtair).and.qout(idtair,ng)) THEN
2088 IF (master) WRITE (stdout,70) trim(vname(1,idtair)), &
2089 & trim(ncname)
2090 exit_flag=3
2091 RETURN
2092 END IF
2093# ifdef EMINUSP
2094 IF (.not.got_var(idevap).and.qout(idevap,ng)) THEN
2095 IF (master) WRITE (stdout,70) trim(vname(1,idevap)), &
2096 & trim(ncname)
2097 exit_flag=3
2098 RETURN
2099 END IF
2100 IF (.not.got_var(idrain).and.qout(idrain,ng)) THEN
2101 IF (master) WRITE (stdout,70) trim(vname(1,idrain)), &
2102 & trim(ncname)
2103 exit_flag=3
2104 RETURN
2105 END IF
2106# endif
2107# endif
2108 IF (.not.got_var(idempf).and.qout(idempf,ng)) THEN
2109 IF (master) WRITE (stdout,70) trim(vname(1,idempf)), &
2110 & trim(ncname)
2111 exit_flag=3
2112 RETURN
2113 END IF
2114# ifdef SHORTWAVE
2115 IF (.not.got_var(idsrad).and.qout(idsrad,ng)) THEN
2116 IF (master) WRITE (stdout,70) trim(vname(1,idsrad)), &
2117 & trim(ncname)
2118 exit_flag=3
2119 RETURN
2120 END IF
2121# endif
2122#endif
2123 IF (.not.got_var(idusms).and.qout(idusms,ng)) THEN
2124 IF (master) WRITE (stdout,70) trim(vname(1,idusms)), &
2125 & trim(ncname)
2126 exit_flag=3
2127 RETURN
2128 END IF
2129 IF (.not.got_var(idvsms).and.qout(idvsms,ng)) THEN
2130 IF (master) WRITE (stdout,70) trim(vname(1,idvsms)), &
2131 & trim(ncname)
2132 exit_flag=3
2133 RETURN
2134 END IF
2135 IF (.not.got_var(idubms).and.qout(idubms,ng)) THEN
2136 IF (master) WRITE (stdout,70) trim(vname(1,idubms)), &
2137 & trim(ncname)
2138 exit_flag=3
2139 RETURN
2140 END IF
2141 IF (.not.got_var(idvbms).and.qout(idvbms,ng)) THEN
2142 IF (master) WRITE (stdout,70) trim(vname(1,idvbms)), &
2143 & trim(ncname)
2144 exit_flag=3
2145 RETURN
2146 END IF
2147#ifdef SOLVE3D
2148 DO itrc=1,nt(ng)
2149 IF (.not.got_var(idtvar(itrc)).and.qout(idtvar(itrc),ng)) THEN
2150 IF (master) WRITE (stdout,70) trim(vname(1,idtvar(itrc))), &
2151 & trim(ncname)
2152 exit_flag=3
2153 RETURN
2154 END IF
2155 IF (.not.got_var(idsurt(itrc)).and.qout(idsurt(itrc),ng)) THEN
2156 IF (master) WRITE (stdout,70) trim(vname(1,idsurt(itrc))), &
2157 & trim(ncname)
2158 exit_flag=3
2159 RETURN
2160 END IF
2161 END DO
2162 DO itrc=1,nat
2163 IF (.not.got_var(idtsur(itrc)).and.qout(idtsur(itrc),ng)) THEN
2164 IF (master) WRITE (stdout,70) trim(vname(1,idtsur(itrc))), &
2165 & trim(ncname)
2166 exit_flag=3
2167 RETURN
2168 END IF
2169 END DO
2170#endif
2171
2172#if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
2173!
2174! Scan bottom boundary layer model and waves variables from input
2175! NetCDF and activate switches for quicksave variables. Get variable IDs.
2176!
2177 CALL bbl_def_nf90 (ng, model, ldef, qout, qck)
2178 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2179#endif
2180
2181#if defined ICE_MODEL && defined SOLVE3D
2182!
2183! Scan sea-ice variables from input NetCDF and activate switches for
2184! quicksave variables. Get variable IDs.
2185!
2186 CALL ice_def_nf90 (ng, model, ldef, qout, qck)
2187#endif
2188
2189#if defined SEDIMENT && defined SOLVE3D
2190!
2191! Scan sediment model variables from input NetCDF and activate
2192! switches for quicksave variables. Get variable IDs.
2193!
2194 CALL sediment_def_nf90 (ng, model, ldef, qout, qck)
2195 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2196#endif
2197
2198#if defined WEC_VF && defined SOLVE3D
2199!
2200! Scan Waves Effect on Currents variables from input NetCDF and
2201! activate switches for quicksave variables. Get variable IDs.
2202!
2203 CALL wec_def_nf90 (ng, model, ldef, qout, qck)
2204 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2205#endif
2206!
2207! Set unlimited time record dimension to the appropriate value.
2208!
2209 IF (ndefqck(ng).gt.0) THEN
2210 qck(ng)%Rindex=((ntstart(ng)-1)- &
2211 & ndefqck(ng)*((ntstart(ng)-1)/ndefqck(ng)))/ &
2212 & nqck(ng)
2213 ELSE
2214 qck(ng)%Rindex=(ntstart(ng)-1)/nqck(ng)
2215 END IF
2216 qck(ng)%Rindex=min(qck(ng)%Rindex,rec_size)
2217 END IF query
2218!
2219 10 FORMAT (2x,'DEF_QUICK_NF90 - creating quicksave file,',t56, &
2220 & 'Grid ',i2.2,': ',a)
2221 20 FORMAT (2x,'DEF_QUICK_NF90 - inquiring quicksave file,',t56, &
2222 & 'Grid ',i2.2,': ',a)
2223 30 FORMAT (/,' DEF_QUICK_NF90 - unable to create quicksave NetCDF', &
2224 & ' file:', 1x,a)
2225 40 FORMAT ('time dependent',1x,a)
2226 50 FORMAT (1pe11.4,1x,'millimeter')
2227 60 FORMAT (/,' DEF_QUICK_NF90 - unable to open quicksave NetCDF', &
2228 & ' file: ',a)
2229 70 FORMAT (/,' DEF_QUICK_NF90 - unable to find variable: ',a,2x, &
2230 & ' in quicksave NetCDF file: ',a)
2231!
2232 RETURN
integer, parameter nf_tout
Definition mod_netcdf.F:207
subroutine, public netcdf_check_dim(ng, model, ncname, ncid)
Definition mod_netcdf.F:538
subroutine, public netcdf_open(ng, model, ncname, omode, ncid)
integer, parameter nf_fout
Definition mod_netcdf.F:188
subroutine, public netcdf_enddef(ng, model, ncname, ncid)
character(len=100), dimension(mvars) var_name
Definition mod_netcdf.F:169
integer, dimension(mvars) var_id
Definition mod_netcdf.F:160
integer n_var
Definition mod_netcdf.F:152
integer rec_size
Definition mod_netcdf.F:156
subroutine, public netcdf_create(ng, model, ncname, ncid)
subroutine, public netcdf_inq_var(ng, model, ncname, ncid, myvarname, searchvar, varid, nvardim, nvaratt)

References bbl_output_mod::bbl_def_nf90(), mod_scalars::exit_flag, strings_mod::founderror(), mod_ncparam::iddano, mod_ncparam::idempf, mod_ncparam::idevap, mod_ncparam::idfsur, mod_ncparam::idhbbl, mod_ncparam::idhsbl, mod_ncparam::idlhea, mod_ncparam::idlrad, mod_ncparam::idmtke, mod_ncparam::idmtls, mod_ncparam::idovel, mod_ncparam::idpair, mod_ncparam::idpthr, mod_ncparam::idpthu, mod_ncparam::idpthv, mod_ncparam::idpthw, mod_ncparam::idpwet, mod_ncparam::idrain, mod_ncparam::idrwet, mod_ncparam::idsdif, mod_sediment::idsed, mod_ncparam::idshea, mod_ncparam::idsrad, mod_ncparam::idsurt, mod_ncparam::idtair, mod_ncparam::idtdif, mod_ncparam::idtime, mod_ncparam::idtsur, mod_ncparam::idtvar, mod_ncparam::idu2de, mod_ncparam::idu3de, mod_ncparam::iduaie, mod_ncparam::iduair, mod_ncparam::idubar, mod_ncparam::idubms, mod_ncparam::idusms, mod_ncparam::idusue, mod_ncparam::idusur, mod_ncparam::iduvel, mod_ncparam::iduwet, mod_ncparam::idv2dn, mod_ncparam::idv3dn, mod_ncparam::idvain, mod_ncparam::idvair, mod_ncparam::idvbar, mod_ncparam::idvbms, mod_ncparam::idvsms, mod_ncparam::idvsun, mod_ncparam::idvsur, mod_ncparam::idvvel, mod_ncparam::idvvis, mod_ncparam::idvwet, mod_ncparam::idwvel, mod_ncparam::iinfo, mod_param::iobounds, mod_scalars::isalt, mod_scalars::itemp, mod_parallel::master, mod_param::n, mod_netcdf::n_var, mod_param::nat, mod_biology::nbac, mod_biology::nbands, mod_param::nbed, mod_scalars::nbrec, mod_scalars::ndefqck, mod_biology::ndom, mod_netcdf::netcdf_check_dim(), mod_netcdf::netcdf_create(), mod_netcdf::netcdf_enddef(), mod_netcdf::netcdf_inq_var(), mod_netcdf::netcdf_open(), mod_netcdf::nf_fout, mod_netcdf::nf_tout, mod_biology::nfec, mod_scalars::noerror, mod_biology::nphy, mod_scalars::nqck, mod_param::nst, mod_fourdvar::nstatevar, mod_param::nt, mod_scalars::ntstart, mod_ncparam::nv, mod_iounits::qck, mod_ncparam::qout, mod_param::r2dvar, mod_scalars::rclock, mod_netcdf::rec_size, mod_sediment::sd50, sediment_output_mod::sediment_def_nf90(), mod_iounits::sourcefile, mod_iounits::stdout, mod_netcdf::var_id, mod_netcdf::var_name, and mod_ncparam::vname.

Referenced by def_quick().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ def_quick_pio()

subroutine, private def_quick_mod::def_quick_pio ( integer, intent(in) ng,
integer, intent(in) model,
logical, intent(in) ldef )
private

Definition at line 2238 of file def_quick.F.

2239!***********************************************************************
2240!
2241 USE mod_pio_netcdf
2242!
2243! Imported variable declarations.
2244!
2245 logical, intent(in) :: ldef
2246 integer, intent(in) :: ng, model
2247!
2248! Local variable declarations.
2249!
2250 logical :: got_var(NV)
2251!
2252 integer, parameter :: Natt = 25
2253
2254 integer :: i, j, ifield, itrc, nvd3, nvd4, varid
2255 integer :: recdim, status
2256# ifdef ADJUST_BOUNDARY
2257 integer :: IorJdim
2258# endif
2259 integer :: DimIDs(nDimID)
2260 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
2261
2262# ifdef SOLVE3D
2263# ifdef SEDIMENT
2264 integer :: b3dgrd(4)
2265# endif
2266 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
2267# endif
2268# ifdef WET_DRY
2269 integer :: sp2dgrd(3)
2270# endif
2271!
2272 real(r8) :: Aval(6)
2273!
2274 character (len=256) :: ncname
2275 character (len=MaxLen) :: Vinfo(Natt)
2276
2277 character (len=*), parameter :: MyFile = &
2278 & __FILE__//", def_quick_pio"
2279!
2280 sourcefile=myfile
2281!
2282!-----------------------------------------------------------------------
2283! Set and report file name.
2284!-----------------------------------------------------------------------
2285!
2286 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2287 ncname=qck(ng)%name
2288!
2289 IF (master) THEN
2290 IF (ldef) THEN
2291 WRITE (stdout,10) ng, trim(ncname)
2292 ELSE
2293 WRITE (stdout,20) ng, trim(ncname)
2294 END IF
2295 END IF
2296!
2297!=======================================================================
2298! Create a new quicksave file.
2299!=======================================================================
2300!
2301 define : IF (ldef) THEN
2302 CALL pio_netcdf_create (ng, model, trim(ncname), qck(ng)%pioFile)
2303 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
2304 IF (master) WRITE (stdout,30) trim(ncname)
2305 RETURN
2306 END IF
2307!
2308!-----------------------------------------------------------------------
2309! Define file dimensions.
2310!-----------------------------------------------------------------------
2311!
2312 dimids=0
2313!
2314 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'xi_rho', &
2315 & iobounds(ng)%xi_rho, dimids( 1))
2316 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2317
2318 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'xi_u', &
2319 & iobounds(ng)%xi_u, dimids( 2))
2320 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2321
2322 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'xi_v', &
2323 & iobounds(ng)%xi_v, dimids( 3))
2324 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2325
2326 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'xi_psi', &
2327 & iobounds(ng)%xi_psi, dimids( 4))
2328 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2329
2330 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'eta_rho', &
2331 & iobounds(ng)%eta_rho, dimids( 5))
2332 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2333
2334 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'eta_u', &
2335 & iobounds(ng)%eta_u, dimids( 6))
2336 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2337
2338 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'eta_v', &
2339 & iobounds(ng)%eta_v, dimids( 7))
2340 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2341
2342 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'eta_psi', &
2343 & iobounds(ng)%eta_psi, dimids( 8))
2344 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2345
2346# ifdef ADJUST_BOUNDARY
2347 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'IorJ', &
2348 & iobounds(ng)%IorJ, iorjdim)
2349 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2350# endif
2351
2352# if defined WRITE_WATER && defined MASKING
2353 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'xy_rho', &
2354 & iobounds(ng)%xy_rho, dimids(17))
2355 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2356
2357 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'xy_u', &
2358 & iobounds(ng)%xy_u, dimids(18))
2359 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2360
2361 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'xy_v', &
2362 & iobounds(ng)%xy_v, dimids(19))
2363 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2364# endif
2365
2366# ifdef SOLVE3D
2367# if defined WRITE_WATER && defined MASKING
2368 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'xyz_rho', &
2369 & iobounds(ng)%xy_rho*n(ng), dimids(20))
2370 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2371
2372 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'xyz_u', &
2373 & iobounds(ng)%xy_u*n(ng), dimids(21))
2374 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2375
2376 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'xyz_v', &
2377 & iobounds(ng)%xy_v*n(ng), dimids(22))
2378 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2379
2380 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'xyz_w', &
2381 & iobounds(ng)%xy_rho*(n(ng)+1), dimids(23))
2382 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2383# endif
2384
2385 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'N', &
2386 & n(ng), dimids( 9))
2387 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2388
2389 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 's_rho', &
2390 & n(ng), dimids( 9))
2391 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2392
2393 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 's_w', &
2394 & n(ng)+1, dimids(10))
2395 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2396
2397 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'tracer', &
2398 & nt(ng), dimids(11))
2399 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2400
2401# ifdef SEDIMENT
2402 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'NST', &
2403 & nst, dimids(32))
2404 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2405
2406 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'Nbed', &
2407 & nbed, dimids(16))
2408 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2409
2410# if defined WRITE_WATER && defined MASKING
2411 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'xybed', &
2412 & iobounds(ng)%xy_rho*nbed, dimids(24))
2413 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2414# endif
2415# endif
2416
2417# ifdef ECOSIM
2418 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'Nbands', &
2419 & nbands, dimids(33))
2420 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2421
2422 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'Nphy', &
2423 & nphy, dimids(25))
2424 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2425
2426 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'Nbac', &
2427 & nbac, dimids(26))
2428 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2429
2430 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'Ndom', &
2431 & ndom, dimids(27))
2432 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2433
2434 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'Nfec', &
2435 & nfec, dimids(28))
2436 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2437# endif
2438# endif
2439
2440 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'boundary', &
2441 & 4, dimids(14))
2442 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2443
2444# ifdef FOUR_DVAR
2445 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'Nstate', &
2446 & nstatevar(ng), dimids(29))
2447 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2448# endif
2449
2450# ifdef ADJUST_BOUNDARY
2451 status=def_dim(ng, model, qck(ng)%pioFile, ncname, 'obc_adjust',&
2452 & nbrec(ng), dimids(31))
2453 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2454# endif
2455
2456 status=def_dim(ng, model, qck(ng)%pioFile, ncname, &
2457 & trim(adjustl(vname(5,idtime))), &
2458 & pio_unlimited, dimids(12))
2459 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2460
2461 recdim=dimids(12)
2462!
2463! Set number of dimensions for output variables.
2464!
2465# if defined WRITE_WATER && defined MASKING
2466 nvd3=2
2467 nvd4=2
2468# else
2469 nvd3=3
2470 nvd4=4
2471# endif
2472!
2473! Define dimension vectors for staggered tracer type variables.
2474!
2475# if defined WRITE_WATER && defined MASKING
2476 t2dgrd(1)=dimids(17)
2477 t2dgrd(2)=dimids(12)
2478# ifdef SOLVE3D
2479 t3dgrd(1)=dimids(20)
2480 t3dgrd(2)=dimids(12)
2481# endif
2482# else
2483 t2dgrd(1)=dimids( 1)
2484 t2dgrd(2)=dimids( 5)
2485 t2dgrd(3)=dimids(12)
2486# ifdef SOLVE3D
2487 t3dgrd(1)=dimids( 1)
2488 t3dgrd(2)=dimids( 5)
2489 t3dgrd(3)=dimids( 9)
2490 t3dgrd(4)=dimids(12)
2491# endif
2492# endif
2493# ifdef WET_DRY
2494!
2495! Define dimension vectors for staggered type variables at PSI-points.
2496!
2497 sp2dgrd(1)=dimids( 4)
2498 sp2dgrd(2)=dimids( 8)
2499 sp2dgrd(3)=dimids(12)
2500# endif
2501!
2502! Define dimension vectors for staggered u-momentum type variables.
2503!
2504# if defined WRITE_WATER && defined MASKING
2505 u2dgrd(1)=dimids(18)
2506 u2dgrd(2)=dimids(12)
2507# ifdef SOLVE3D
2508 u3dgrd(1)=dimids(21)
2509 u3dgrd(2)=dimids(12)
2510# endif
2511# else
2512 u2dgrd(1)=dimids( 2)
2513 u2dgrd(2)=dimids( 6)
2514 u2dgrd(3)=dimids(12)
2515# ifdef SOLVE3D
2516 u3dgrd(1)=dimids( 2)
2517 u3dgrd(2)=dimids( 6)
2518 u3dgrd(3)=dimids( 9)
2519 u3dgrd(4)=dimids(12)
2520# endif
2521# endif
2522!
2523! Define dimension vectors for staggered v-momentum type variables.
2524!
2525# if defined WRITE_WATER && defined MASKING
2526 v2dgrd(1)=dimids(19)
2527 v2dgrd(2)=dimids(12)
2528# ifdef SOLVE3D
2529 v3dgrd(1)=dimids(22)
2530 v3dgrd(2)=dimids(12)
2531# endif
2532# else
2533 v2dgrd(1)=dimids( 3)
2534 v2dgrd(2)=dimids( 7)
2535 v2dgrd(3)=dimids(12)
2536# ifdef SOLVE3D
2537 v3dgrd(1)=dimids( 3)
2538 v3dgrd(2)=dimids( 7)
2539 v3dgrd(3)=dimids( 9)
2540 v3dgrd(4)=dimids(12)
2541# endif
2542# endif
2543# ifdef SOLVE3D
2544!
2545! Define dimension vector for staggered w-momentum type variables.
2546!
2547# if defined WRITE_WATER && defined MASKING
2548 w3dgrd(1)=dimids(23)
2549 w3dgrd(2)=dimids(12)
2550# else
2551 w3dgrd(1)=dimids( 1)
2552 w3dgrd(2)=dimids( 5)
2553 w3dgrd(3)=dimids(10)
2554 w3dgrd(4)=dimids(12)
2555# endif
2556# ifdef SEDIMENT
2557!
2558! Define dimension vector for sediment bed layer type variables.
2559!
2560# if defined WRITE_WATER && defined MASKING
2561 b3dgrd(1)=dimids(24)
2562 b3dgrd(2)=dimids(12)
2563# else
2564 b3dgrd(1)=dimids( 1)
2565 b3dgrd(2)=dimids( 5)
2566 b3dgrd(3)=dimids(16)
2567 b3dgrd(4)=dimids(12)
2568# endif
2569# endif
2570# endif
2571!
2572! Initialize unlimited time record dimension.
2573!
2574 qck(ng)%Rindex=0
2575!
2576! Initialize local information variable arrays.
2577!
2578 DO i=1,natt
2579 DO j=1,len(vinfo(1))
2580 vinfo(i)(j:j)=' '
2581 END DO
2582 END DO
2583 DO i=1,6
2584 aval(i)=0.0_r8
2585 END DO
2586!
2587!-----------------------------------------------------------------------
2588! Define time-recordless information variables.
2589!-----------------------------------------------------------------------
2590!
2591 CALL def_info (ng, model, qck(ng)%pioFile, ncname, dimids)
2592 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2593!
2594!-----------------------------------------------------------------------
2595! Define time-varying variables.
2596!-----------------------------------------------------------------------
2597!
2598! Define model time.
2599!
2600 vinfo( 1)=vname(1,idtime)
2601 vinfo( 2)=vname(2,idtime)
2602 WRITE (vinfo( 3),'(a,a)') 'seconds since ', trim(rclock%string)
2603 vinfo( 4)=trim(rclock%calendar)
2604 vinfo(14)=vname(4,idtime)
2605 vinfo(21)=vname(6,idtime)
2606 qck(ng)%pioVar(idtime)%dkind=pio_tout
2607 qck(ng)%pioVar(idtime)%gtype=0
2608!
2609 status=def_var(ng, model, qck(ng)%pioFile, &
2610 & qck(ng)%pioVar(idtime)%vd, &
2611 & pio_tout, 1, (/recdim/), aval, vinfo, ncname, &
2612 & setparaccess = .true.)
2613 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2614
2615# ifdef WET_DRY
2616!
2617! Define wet/dry mask on PSI-points.
2618!
2619 vinfo( 1)=vname(1,idpwet)
2620 vinfo( 2)=vname(2,idpwet)
2621 vinfo( 3)=vname(3,idpwet)
2622 vinfo( 9)='land'
2623 vinfo(10)='water'
2624 vinfo(14)=vname(4,idpwet)
2625 vinfo(16)=vname(1,idtime)
2626 vinfo(21)=vname(6,idpwet)
2627 vinfo(22)='coordinates'
2628 aval(5)=real(iinfo(1,idpwet,ng),r8)
2629 qck(ng)%pioVar(idpwet)%dkind=pio_fout
2630 qck(ng)%pioVar(idpwet)%gtype=p2dvar
2631!
2632 status=def_var(ng, model, qck(ng)%pioFile, &
2633 & qck(ng)%pioVar(idpwet)%vd, &
2634 & pio_fout, nvd3, sp2dgrd, aval, vinfo, ncname, &
2635 & setfillval = .false.)
2636 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2637!
2638! Define wet/dry mask on RHO-points.
2639!
2640 vinfo( 1)=vname(1,idrwet)
2641 vinfo( 2)=vname(2,idrwet)
2642 vinfo( 3)=vname(3,idrwet)
2643 vinfo( 9)='land'
2644 vinfo(10)='water'
2645 vinfo(14)=vname(4,idrwet)
2646 vinfo(16)=vname(1,idtime)
2647 vinfo(21)=vname(6,idrwet)
2648 vinfo(22)='coordinates'
2649 aval(5)=real(iinfo(1,idrwet,ng),r8)
2650 qck(ng)%pioVar(idrwet)%dkind=pio_fout
2651 qck(ng)%pioVar(idrwet)%gtype=r2dvar
2652!
2653 status=def_var(ng, model, qck(ng)%pioFile, &
2654 & qck(ng)%pioVar(idrwet)%vd, &
2655 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
2656 & setfillval = .false.)
2657 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2658!
2659! Define wet/dry mask on U-points.
2660!
2661 vinfo( 1)=vname(1,iduwet)
2662 vinfo( 2)=vname(2,iduwet)
2663 vinfo( 3)=vname(3,iduwet)
2664 vinfo( 9)='land'
2665 vinfo(10)='water'
2666 vinfo(14)=vname(4,iduwet)
2667 vinfo(16)=vname(1,idtime)
2668 vinfo(21)=vname(6,iduwet)
2669 vinfo(22)='coordinates'
2670 aval(5)=real(iinfo(1,iduwet,ng),r8)
2671 qck(ng)%pioVar(iduwet)%dkind=pio_fout
2672 qck(ng)%pioVar(iduwet)%gtype=u2dvar
2673!
2674 status=def_var(ng, model, qck(ng)%pioFile, &
2675 & qck(ng)%pioVar(iduwet)%vd, &
2676 & pio_fout, nvd3, u2dgrd, aval, vinfo, ncname, &
2677 & setfillval = .false.)
2678 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2679!
2680! Define wet/dry mask on V-points.
2681!
2682 vinfo( 1)=vname(1,idvwet)
2683 vinfo( 2)=vname(2,idvwet)
2684 vinfo( 3)=vname(3,idvwet)
2685 vinfo(14)=vname(4,idvwet)
2686 vinfo(16)=vname(1,idtime)
2687 vinfo( 9)='land'
2688 vinfo(10)='water'
2689 vinfo(21)=vname(6,idvwet)
2690 vinfo(22)='coordinates'
2691 aval(5)=real(iinfo(1,idvwet,ng),r8)
2692 qck(ng)%pioVar(idvwet)%dkind=pio_fout
2693 qck(ng)%pioVar(idvwet)%gtype=v2dvar
2694!
2695 status=def_var(ng, model, qck(ng)%pioFile, &
2696 & qck(ng)%pioVar(idvwet)%vd, &
2697 & pio_fout, nvd3, v2dgrd, aval, vinfo, ncname, &
2698 & setfillval = .false.)
2699 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2700# endif
2701# ifdef SOLVE3D
2702!
2703! Define time-varying depth of RHO-points.
2704!
2705 IF (qout(idpthr,ng)) THEN
2706 vinfo( 1)=vname(1,idpthr)
2707 WRITE (vinfo( 2),40) trim(vname(2,idpthr))
2708 vinfo( 3)=vname(3,idpthr)
2709 vinfo(14)=vname(4,idpthr)
2710 vinfo(16)=vname(1,idtime)
2711# if defined WRITE_WATER && defined MASKING
2712 vinfo(20)='mask_rho'
2713# endif
2714 vinfo(21)=vname(6,idpthr)
2715 vinfo(22)='coordinates'
2716 aval(5)=real(iinfo(1,idpthr,ng),r8)
2717 qck(ng)%pioVar(idpthr)%dkind=pio_fout
2718 qck(ng)%pioVar(idpthr)%gtype=r3dvar
2719!
2720 status=def_var(ng, model, qck(ng)%pioFile, &
2721 & qck(ng)%pioVar(idpthr)%vd, &
2722 & pio_fout, nvd4, t3dgrd, aval, vinfo, ncname, &
2723 & setfillval = .false.)
2724 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2725 END IF
2726!
2727! Define time-varying depth of U-points.
2728!
2729 IF (qout(idpthu,ng)) THEN
2730 vinfo( 1)=vname(1,idpthu)
2731 WRITE (vinfo( 2),40) trim(vname(2,idpthu))
2732 vinfo( 3)=vname(3,idpthu)
2733 vinfo(14)=vname(4,idpthu)
2734 vinfo(16)=vname(1,idtime)
2735# if defined WRITE_WATER && defined MASKING
2736 vinfo(20)='mask_u'
2737# endif
2738 vinfo(21)=vname(6,idpthu)
2739 vinfo(22)='coordinates'
2740 aval(5)=real(iinfo(1,idpthu,ng),r8)
2741 qck(ng)%pioVar(idpthu)%dkind=pio_fout
2742 qck(ng)%pioVar(idpthu)%gtype=u3dvar
2743!
2744 status=def_var(ng, model, qck(ng)%pioFile, &
2745 & qck(ng)%pioVar(idpthu)%vd, &
2746 & pio_fout, nvd4, u3dgrd, aval, vinfo, ncname, &
2747 & setfillval = .false.)
2748 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2749 END IF
2750!
2751! Define time-varying depth of V-points.
2752!
2753 IF (qout(idpthv,ng)) THEN
2754 vinfo( 1)=vname(1,idpthv)
2755 WRITE (vinfo( 2),40) trim(vname(2,idpthv))
2756 vinfo( 3)=vname(3,idpthv)
2757 vinfo(14)=vname(4,idpthv)
2758 vinfo(16)=vname(1,idtime)
2759# if defined WRITE_WATER && defined MASKING
2760 vinfo(20)='mask_v'
2761# endif
2762 vinfo(21)=vname(6,idpthv)
2763 vinfo(22)='coordinates'
2764 aval(5)=real(iinfo(1,idpthv,ng),r8)
2765 qck(ng)%pioVar(idpthv)%dkind=pio_fout
2766 qck(ng)%pioVar(idpthv)%gtype=v3dvar
2767!
2768 status=def_var(ng, model, qck(ng)%pioFile, &
2769 & qck(ng)%pioVar(idpthv)%vd, &
2770 & pio_fout, nvd4, v3dgrd, aval, vinfo, ncname, &
2771 & setfillval = .false.)
2772 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2773 END IF
2774!
2775! Define time-varying depth of W-points.
2776!
2777 IF (qout(idpthw,ng)) THEN
2778 vinfo( 1)=vname(1,idpthw)
2779 WRITE (vinfo( 2),40) trim(vname(2,idpthw))
2780 vinfo( 3)=vname(3,idpthw)
2781 vinfo(14)=vname(4,idpthw)
2782 vinfo(16)=vname(1,idtime)
2783# if defined WRITE_WATER && defined MASKING
2784 vinfo(20)='mask_rho'
2785# endif
2786 vinfo(21)=vname(6,idpthw)
2787 vinfo(22)='coordinates'
2788 aval(5)=real(iinfo(1,idpthw,ng),r8)
2789 qck(ng)%pioVar(idpthw)%dkind=pio_fout
2790 qck(ng)%pioVar(idpthw)%gtype=w3dvar
2791!
2792 status=def_var(ng, model, qck(ng)%pioFile, &
2793 & qck(ng)%pioVar(idpthw)%vd, &
2794 & pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
2795 & setfillval = .false.)
2796 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2797 END IF
2798# endif
2799!
2800! Define free-surface.
2801!
2802 IF (qout(idfsur,ng)) THEN
2803 vinfo( 1)=vname(1,idfsur)
2804 vinfo( 2)=vname(2,idfsur)
2805 vinfo( 3)=vname(3,idfsur)
2806 vinfo(14)=vname(4,idfsur)
2807 vinfo(16)=vname(1,idtime)
2808# if defined WRITE_WATER && defined MASKING
2809 vinfo(20)='mask_rho'
2810# endif
2811 vinfo(21)=vname(6,idfsur)
2812 vinfo(22)='coordinates'
2813 aval(5)=real(iinfo(1,idfsur,ng),r8)
2814 qck(ng)%pioVar(idfsur)%dkind=pio_fout
2815 qck(ng)%pioVar(idfsur)%gtype=r2dvar
2816!
2817 status=def_var(ng, model, qck(ng)%pioFile, &
2818 & qck(ng)%pioVar(idfsur)%vd, &
2819# ifdef WET_DRY
2820 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
2821 & setfillval = .false.)
2822# else
2823 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
2824# endif
2825 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2826 END IF
2827!
2828! Define 2D U-momentum component.
2829!
2830 IF (qout(idubar,ng)) THEN
2831 vinfo( 1)=vname(1,idubar)
2832 vinfo( 2)=vname(2,idubar)
2833 vinfo( 3)=vname(3,idubar)
2834 vinfo(14)=vname(4,idubar)
2835 vinfo(16)=vname(1,idtime)
2836# if defined WRITE_WATER && defined MASKING
2837 vinfo(20)='mask_u'
2838# endif
2839 vinfo(21)=vname(6,idubar)
2840 vinfo(22)='coordinates'
2841 aval(5)=real(iinfo(1,idubar,ng),r8)
2842 qck(ng)%pioVar(idubar)%dkind=pio_fout
2843 qck(ng)%pioVar(idubar)%gtype=u2dvar
2844!
2845 status=def_var(ng, model, qck(ng)%pioFile, &
2846 & qck(ng)%pioVar(idubar)%vd, &
2847 & pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
2848 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2849 END IF
2850!
2851! Define 2D V-momentum component.
2852!
2853 IF (qout(idvbar,ng)) THEN
2854 vinfo( 1)=vname(1,idvbar)
2855 vinfo( 2)=vname(2,idvbar)
2856 vinfo( 3)=vname(3,idvbar)
2857 vinfo(14)=vname(4,idvbar)
2858 vinfo(16)=vname(1,idtime)
2859# if defined WRITE_WATER && defined MASKING
2860 vinfo(20)='mask_v'
2861# endif
2862 vinfo(21)=vname(6,idvbar)
2863 vinfo(22)='coordinates'
2864 aval(5)=real(iinfo(1,idvbar,ng),r8)
2865 qck(ng)%pioVar(idvbar)%dkind=pio_fout
2866 qck(ng)%pioVar(idvbar)%gtype=v2dvar
2867!
2868 status=def_var(ng, model, qck(ng)%pioFile, &
2869 & qck(ng)%pioVar(idvbar)%vd, &
2870 & pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
2871 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2872 END IF
2873!
2874! Define 2D Eastward momentum component at RHO-points.
2875!
2876 IF (qout(idu2de,ng)) THEN
2877 vinfo( 1)=vname(1,idu2de)
2878 vinfo( 2)=vname(2,idu2de)
2879 vinfo( 3)=vname(3,idu2de)
2880 vinfo(14)=vname(4,idu2de)
2881 vinfo(16)=vname(1,idtime)
2882# if defined WRITE_WATER && defined MASKING
2883 vinfo(20)='mask_rho'
2884# endif
2885 vinfo(21)=vname(6,idu2de)
2886 vinfo(22)='coordinates'
2887 aval(5)=real(iinfo(1,idu2de,ng),r8)
2888 qck(ng)%pioVar(idu2de)%dkind=pio_fout
2889 qck(ng)%pioVar(idu2de)%gtype=r2dvar
2890!
2891 status=def_var(ng, model, qck(ng)%pioFile, &
2892 & qck(ng)%pioVar(idu2de)%vd, &
2893 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
2894 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2895 END IF
2896!
2897! Define 2D Northward momentum component at RHO-points.
2898!
2899 IF (qout(idv2dn,ng)) THEN
2900 vinfo( 1)=vname(1,idv2dn)
2901 vinfo( 2)=vname(2,idv2dn)
2902 vinfo( 3)=vname(3,idv2dn)
2903 vinfo(14)=vname(4,idv2dn)
2904 vinfo(16)=vname(1,idtime)
2905# if defined WRITE_WATER && defined MASKING
2906 vinfo(20)='mask_rho'
2907# endif
2908 vinfo(21)=vname(6,idv2dn)
2909 vinfo(22)='coordinates'
2910 aval(5)=real(iinfo(1,idv2dn,ng),r8)
2911 qck(ng)%pioVar(idv2dn)%dkind=pio_fout
2912 qck(ng)%pioVar(idv2dn)%gtype=r2dvar
2913!
2914 status=def_var(ng, model, qck(ng)%pioFile, &
2915 & qck(ng)%pioVar(idv2dn)%vd, &
2916 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
2917 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2918 END IF
2919
2920# ifdef SOLVE3D
2921!
2922! Define 3D U-momentum component.
2923!
2924 IF (qout(iduvel,ng)) THEN
2925 vinfo( 1)=vname(1,iduvel)
2926 vinfo( 2)=vname(2,iduvel)
2927 vinfo( 3)=vname(3,iduvel)
2928 vinfo(14)=vname(4,iduvel)
2929 vinfo(16)=vname(1,idtime)
2930# if defined WRITE_WATER && defined MASKING
2931 vinfo(20)='mask_u'
2932# endif
2933 vinfo(21)=vname(6,iduvel)
2934 vinfo(22)='coordinates'
2935 aval(5)=real(iinfo(1,iduvel,ng),r8)
2936 qck(ng)%pioVar(iduvel)%dkind=pio_fout
2937 qck(ng)%pioVar(iduvel)%gtype=u3dvar
2938!
2939 status=def_var(ng, model, qck(ng)%pioFile, &
2940 & qck(ng)%pioVar(iduvel)%vd, &
2941 & pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
2942 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2943 END IF
2944!
2945! Define 3D V-momentum component.
2946!
2947 IF (qout(idvvel,ng)) THEN
2948 vinfo( 1)=vname(1,idvvel)
2949 vinfo( 2)=vname(2,idvvel)
2950 vinfo( 3)=vname(3,idvvel)
2951 vinfo(14)=vname(4,idvvel)
2952 vinfo(16)=vname(1,idtime)
2953# if defined WRITE_WATER && defined MASKING
2954 vinfo(20)='mask_v'
2955# endif
2956 vinfo(21)=vname(6,idvvel)
2957 vinfo(22)='coordinates'
2958 aval(5)=real(iinfo(1,idvvel,ng),r8)
2959 qck(ng)%pioVar(idvvel)%dkind=pio_fout
2960 qck(ng)%pioVar(idvvel)%gtype=v3dvar
2961!
2962 status=def_var(ng, model, qck(ng)%pioFile, &
2963 & qck(ng)%pioVar(idvvel)%vd, &
2964 & pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
2965 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2966 END IF
2967!
2968! Define model surface U-momentum component.
2969!
2970 IF (qout(idusur,ng)) THEN
2971 vinfo( 1)=vname(1,idusur)
2972 vinfo( 2)=vname(2,idusur)
2973 vinfo( 3)=vname(3,idusur)
2974 vinfo(14)=vname(4,idusur)
2975 vinfo(16)=vname(1,idtime)
2976# if defined WRITE_WATER && defined MASKING
2977 vinfo(20)='mask_u'
2978# endif
2979 vinfo(21)=vname(6,idusur)
2980 vinfo(22)='coordinates'
2981 aval(5)=real(iinfo(1,idusur,ng),r8)
2982 qck(ng)%pioVar(idusur)%dkind=pio_fout
2983 qck(ng)%pioVar(idusur)%gtype=u2dvar
2984!
2985 status=def_var(ng, model, qck(ng)%pioFile, &
2986 & qck(ng)%pioVar(idusur)%vd, &
2987 & pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
2988 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2989 END IF
2990!
2991! Define model surface V-momentum component.
2992!
2993 IF (qout(idvsur,ng)) THEN
2994 vinfo( 1)=vname(1,idvsur)
2995 vinfo( 2)=vname(2,idvsur)
2996 vinfo( 3)=vname(3,idvsur)
2997 vinfo(14)=vname(4,idvsur)
2998 vinfo(16)=vname(1,idtime)
2999# if defined WRITE_WATER && defined MASKING
3000 vinfo(20)='mask_v'
3001# endif
3002 vinfo(21)=vname(6,idvsur)
3003 vinfo(22)='coordinates'
3004 aval(5)=real(iinfo(1,idvsur,ng),r8)
3005 qck(ng)%pioVar(idvsur)%dkind=pio_fout
3006 qck(ng)%pioVar(idvsur)%gtype=v2dvar
3007!
3008 status=def_var(ng, model, qck(ng)%pioFile, &
3009 & qck(ng)%pioVar(idvsur)%vd, &
3010 & pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3011 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3012 END IF
3013!
3014! Define 3D Eastward momentum component at RHO-points.
3015!
3016 IF (qout(idu3de,ng)) THEN
3017 vinfo( 1)=vname(1,idu3de)
3018 vinfo( 2)=vname(2,idu3de)
3019 vinfo( 3)=vname(3,idu3de)
3020 vinfo(14)=vname(4,idu3de)
3021 vinfo(16)=vname(1,idtime)
3022# if defined WRITE_WATER && defined MASKING
3023 vinfo(20)='mask_rho'
3024# endif
3025 vinfo(21)=vname(6,idu3de)
3026 vinfo(22)='coordinates'
3027 aval(5)=real(iinfo(1,idu3de,ng),r8)
3028 qck(ng)%pioVar(idu3de)%dkind=pio_fout
3029 qck(ng)%pioVar(idu3de)%gtype=r3dvar
3030!
3031 status=def_var(ng, model, qck(ng)%pioFile, &
3032 & qck(ng)%pioVar(idu3de)%vd, &
3033 & pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3034 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3035 END IF
3036!
3037! Define 3D Northward momentum component at RHO-points.
3038!
3039 IF (qout(idv3dn,ng)) THEN
3040 vinfo( 1)=vname(1,idv3dn)
3041 vinfo( 2)=vname(2,idv3dn)
3042 vinfo( 3)=vname(3,idv3dn)
3043 vinfo(14)=vname(4,idv3dn)
3044 vinfo(16)=vname(1,idtime)
3045# if defined WRITE_WATER && defined MASKING
3046 vinfo(20)='mask_rho'
3047# endif
3048 vinfo(21)=vname(6,idv3dn)
3049 vinfo(22)='coordinates'
3050 aval(5)=real(iinfo(1,idv3dn,ng),r8)
3051 qck(ng)%pioVar(idv3dn)%dkind=pio_fout
3052 qck(ng)%pioVar(idv3dn)%gtype=r3dvar
3053!
3054 status=def_var(ng, model, qck(ng)%pioFile, &
3055 & qck(ng)%pioVar(idv3dn)%vd, &
3056 & pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3057 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3058 END IF
3059!
3060! Define model surface Eastward momentum component at RHO-points.
3061!
3062 IF (qout(idusue,ng)) THEN
3063 vinfo( 1)=vname(1,idusue)
3064 vinfo( 2)=vname(2,idusue)
3065 vinfo( 3)=vname(3,idusue)
3066 vinfo(14)=vname(4,idusue)
3067 vinfo(16)=vname(1,idtime)
3068# if defined WRITE_WATER && defined MASKING
3069 vinfo(20)='mask_rho'
3070# endif
3071 vinfo(21)=vname(6,idusue)
3072 vinfo(22)='coordinates'
3073 aval(5)=real(iinfo(1,idusue,ng),r8)
3074 qck(ng)%pioVar(idusue)%dkind=pio_fout
3075 qck(ng)%pioVar(idusue)%gtype=r2dvar
3076!
3077 status=def_var(ng, model, qck(ng)%pioFile, &
3078 & qck(ng)%pioVar(idusue)%vd, &
3079 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3080 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3081 END IF
3082!
3083! Define model surface Northward momentum component at RHO-points.
3084!
3085 IF (qout(idvsun,ng)) THEN
3086 vinfo( 1)=vname(1,idvsun)
3087 vinfo( 2)=vname(2,idvsun)
3088 vinfo( 3)=vname(3,idvsun)
3089 vinfo(14)=vname(4,idvsun)
3090 vinfo(16)=vname(1,idtime)
3091# if defined WRITE_WATER && defined MASKING
3092 vinfo(20)='mask_rho'
3093# endif
3094 vinfo(21)=vname(6,idvsun)
3095 vinfo(22)='coordinates'
3096 aval(5)=real(iinfo(1,idvsun,ng),r8)
3097 qck(ng)%pioVar(idvsun)%dkind=pio_fout
3098 qck(ng)%pioVar(idvsun)%gtype=r2dvar
3099!
3100 status=def_var(ng, model, qck(ng)%pioFile, &
3101 & qck(ng)%pioVar(idvsun)%vd, &
3102 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3103 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3104 END IF
3105!
3106! Define 3D momentum component in the S-direction.
3107!
3108 IF (qout(idwvel,ng)) THEN
3109 vinfo( 1)=vname(1,idwvel)
3110 vinfo( 2)=vname(2,idwvel)
3111 vinfo( 3)=vname(3,idwvel)
3112 vinfo(14)=vname(4,idwvel)
3113 vinfo(16)=vname(1,idtime)
3114# if defined WRITE_WATER && defined MASKING
3115 vinfo(20)='mask_rho'
3116# endif
3117 vinfo(21)=vname(6,idwvel)
3118 vinfo(22)='coordinates'
3119 aval(5)=real(iinfo(1,idwvel,ng),r8)
3120 qck(ng)%pioVar(idwvel)%dkind=pio_fout
3121 qck(ng)%pioVar(idwvel)%gtype=w3dvar
3122!
3123 status=def_var(ng, model, qck(ng)%pioFile, &
3124 & qck(ng)%pioVar(idwvel)%vd, &
3125 & pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
3126 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3127 END IF
3128!
3129! Define S-coordinate vertical "omega" momentum component.
3130!
3131 IF (qout(idovel,ng)) THEN
3132 vinfo( 1)=vname(1,idovel)
3133 vinfo( 2)=vname(2,idovel)
3134 vinfo( 3)='meter second-1'
3135 vinfo(14)=vname(4,idovel)
3136 vinfo(16)=vname(1,idtime)
3137# if defined WRITE_WATER && defined MASKING
3138 vinfo(20)='mask_rho'
3139# endif
3140 vinfo(21)=vname(6,idovel)
3141 vinfo(22)='coordinates'
3142 aval(5)=real(iinfo(1,idovel,ng),r8)
3143 qck(ng)%pioVar(idovel)%dkind=pio_fout
3144 qck(ng)%pioVar(idovel)%gtype=w3dvar
3145!
3146 status=def_var(ng, model, qck(ng)%pioFile, &
3147 & qck(ng)%pioVar(idovel)%vd, &
3148 & pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
3149 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3150 END IF
3151!
3152! Define tracer type variables.
3153!
3154 DO itrc=1,nt(ng)
3155 IF (qout(idtvar(itrc),ng)) THEN
3156 vinfo( 1)=vname(1,idtvar(itrc))
3157 vinfo( 2)=vname(2,idtvar(itrc))
3158 vinfo( 3)=vname(3,idtvar(itrc))
3159 vinfo(14)=vname(4,idtvar(itrc))
3160 vinfo(16)=vname(1,idtime)
3161# ifdef SEDIMENT
3162 DO i=1,nst
3163 IF (itrc.eq.idsed(i)) THEN
3164 WRITE (vinfo(19),50) 1000.0_r8*sd50(i,ng)
3165 END IF
3166 END DO
3167# endif
3168# if defined WRITE_WATER && defined MASKING
3169 vinfo(20)='mask_rho'
3170# endif
3171 vinfo(21)=vname(6,idtvar(itrc))
3172 vinfo(22)='coordinates'
3173 aval(5)=real(r3dvar,r8)
3174 qck(ng)%pioTrc(itrc)%dkind=pio_fout
3175 qck(ng)%pioTrc(itrc)%gtype=r3dvar
3176!
3177 status=def_var(ng, model, qck(ng)%pioFile, &
3178 & qck(ng)%pioTrc(itrc)%vd, &
3179 & pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3180 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3181 END IF
3182 END DO
3183!
3184! Define surface tracer type variables.
3185!
3186 DO itrc=1,nt(ng)
3187 IF (qout(idsurt(itrc),ng)) THEN
3188 vinfo( 1)=vname(1,idsurt(itrc))
3189 vinfo( 2)=vname(2,idsurt(itrc))
3190 vinfo( 3)=vname(3,idsurt(itrc))
3191 vinfo(14)=vname(4,idsurt(itrc))
3192 vinfo(16)=vname(1,idtime)
3193# ifdef SEDIMENT
3194 DO i=1,nst
3195 IF (itrc.eq.idsed(i)) THEN
3196 WRITE (vinfo(19),50) 1000.0_r8*sd50(i,ng)
3197 END IF
3198 END DO
3199# endif
3200# if defined WRITE_WATER && defined MASKING
3201 vinfo(20)='mask_rho'
3202# endif
3203 vinfo(21)=vname(6,idsurt(itrc))
3204 vinfo(22)='coordinates'
3205 aval(5)=real(r2dvar,r8)
3206 qck(ng)%pioVar(idsurt(itrc))%dkind=pio_fout
3207 qck(ng)%pioVar(idsurt(itrc))%gtype=r2dvar
3208!
3209 status=def_var(ng, model, qck(ng)%pioFile, &
3210 & qck(ng)%pioVar(idsurt(itrc))%vd, &
3211 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3212 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3213 END IF
3214 END DO
3215!
3216! Define density anomaly.
3217!
3218 IF (qout(iddano,ng)) THEN
3219 vinfo( 1)=vname(1,iddano)
3220 vinfo( 2)=vname(2,iddano)
3221 vinfo( 3)=vname(3,iddano)
3222 vinfo(14)=vname(4,iddano)
3223 vinfo(16)=vname(1,idtime)
3224# if defined WRITE_WATER && defined MASKING
3225 vinfo(20)='mask_rho'
3226# endif
3227 vinfo(21)=vname(6,iddano)
3228 vinfo(22)='coordinates'
3229 aval(5)=real(iinfo(1,iddano,ng),r8)
3230 qck(ng)%pioVar(iddano)%dkind=pio_fout
3231 qck(ng)%pioVar(iddano)%gtype=r3dvar
3232!
3233 status=def_var(ng, model, qck(ng)%pioFile, &
3234 & qck(ng)%pioVar(iddano)%vd, &
3235 & pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3236 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3237 END IF
3238
3239# ifdef LMD_SKPP
3240!
3241! Define depth of surface boundary layer.
3242!
3243 IF (qout(idhsbl,ng)) THEN
3244 vinfo( 1)=vname(1,idhsbl)
3245 vinfo( 2)=vname(2,idhsbl)
3246 vinfo( 3)=vname(3,idhsbl)
3247 vinfo(14)=vname(4,idhsbl)
3248 vinfo(16)=vname(1,idtime)
3249# if defined WRITE_WATER && defined MASKING
3250 vinfo(20)='mask_rho'
3251# endif
3252 vinfo(21)=vname(6,idhsbl)
3253 vinfo(22)='coordinates'
3254 aval(5)=real(iinfo(1,idhsbl,ng),r8)
3255 qck(ng)%pioVar(idhsbl)%dkind=pio_fout
3256 qck(ng)%pioVar(idhsbl)%gtype=r2dvar
3257!
3258 status=def_var(ng, model, qck(ng)%pioFile, &
3259 & qck(ng)%pioVar(idhsbl)%vd, &
3260 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3261 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3262 END IF
3263# endif
3264# ifdef LMD_BKPP
3265!
3266! Define depth of bottom boundary layer.
3267!
3268 IF (qout(idhbbl,ng)) THEN
3269 vinfo( 1)=vname(1,idhbbl)
3270 vinfo( 2)=vname(2,idhbbl)
3271 vinfo( 3)=vname(3,idhbbl)
3272 vinfo(14)=vname(4,idhbbl)
3273 vinfo(16)=vname(1,idtime)
3274# if defined WRITE_WATER && defined MASKING
3275 vinfo(20)='mask_rho'
3276# endif
3277 vinfo(21)=vname(6,idhbbl)
3278 vinfo(22)='coordinates'
3279 aval(5)=real(iinfo(1,idhbbl,ng),r8)
3280 qck(ng)%pioVar(idhbbl)%dkind=pio_fout
3281 qck(ng)%pioVar(idhbbl)%gtype=r2dvar
3282!
3283 status=def_var(ng, model, qck(ng)%pioFile, &
3284 & qck(ng)%pioVar(idhbbl)%vd, &
3285 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3286 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3287 END IF
3288# endif
3289!
3290! Define vertical viscosity coefficient.
3291!
3292 IF (qout(idvvis,ng)) THEN
3293 vinfo( 1)=vname(1,idvvis)
3294 vinfo( 2)=vname(2,idvvis)
3295 vinfo( 3)=vname(3,idvvis)
3296 vinfo(14)=vname(4,idvvis)
3297 vinfo(16)=vname(1,idtime)
3298# if defined WRITE_WATER && defined MASKING
3299 vinfo(20)='mask_rho'
3300# endif
3301 vinfo(21)=vname(6,idvvis)
3302 vinfo(22)='coordinates'
3303 aval(5)=real(iinfo(1,idvvis,ng),r8)
3304 qck(ng)%pioVar(idvvis)%dkind=pio_fout
3305 qck(ng)%pioVar(idvvis)%gtype=w3dvar
3306!
3307 status=def_var(ng, model, qck(ng)%pioFile, &
3308 & qck(ng)%pioVar(idvvis)%vd, &
3309 & pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
3310 & setfillval = .false.)
3311 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3312 END IF
3313!
3314! Define vertical diffusion coefficient for potential temperature.
3315!
3316 IF (qout(idtdif,ng)) THEN
3317 vinfo( 1)=vname(1,idtdif)
3318 vinfo( 2)=vname(2,idtdif)
3319 vinfo( 3)=vname(3,idtdif)
3320 vinfo(14)=vname(4,idtdif)
3321 vinfo(16)=vname(1,idtime)
3322# if defined WRITE_WATER && defined MASKING
3323 vinfo(20)='mask_rho'
3324# endif
3325 vinfo(21)=vname(6,idtdif)
3326 vinfo(22)='coordinates'
3327 aval(5)=real(iinfo(1,idtdif,ng),r8)
3328 qck(ng)%pioVar(idtdif)%dkind=pio_fout
3329 qck(ng)%pioVar(idtdif)%gtype=w3dvar
3330!
3331 status=def_var(ng, model, qck(ng)%pioFile, &
3332 & qck(ng)%pioVar(idtdif)%vd, &
3333 & pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
3334 & setfillval = .false.)
3335 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3336 END IF
3337
3338# ifdef SALINITY
3339!
3340! Define vertical diffusion coefficient for salinity.
3341!
3342 IF (qout(idsdif,ng)) THEN
3343 vinfo( 1)=vname(1,idsdif)
3344 vinfo( 2)=vname(2,idsdif)
3345 vinfo( 3)=vname(3,idsdif)
3346 vinfo(14)=vname(4,idsdif)
3347 vinfo(16)=vname(1,idtime)
3348# if defined WRITE_WATER && defined MASKING
3349 vinfo(20)='mask_rho'
3350# endif
3351 vinfo(21)=vname(6,idsdif)
3352 vinfo(22)='coordinates'
3353 aval(5)=real(iinfo(1,idsdif,ng),r8)
3354 qck(ng)%pioVar(idsdif)%dkind=pio_fout
3355 qck(ng)%pioVar(idsdif)%gtype=w3dvar
3356!
3357 status=def_var(ng, model, qck(ng)%pioFile, &
3358 & qck(ng)%pioVar(idsdif)%vd, &
3359 & pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
3360 & setfillval = .false.)
3361 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3362 END IF
3363# endif
3364# if defined GLS_MIXING || defined MY25_MIXING
3365!
3366! Define turbulent kinetic energy.
3367!
3368 IF (qout(idmtke,ng)) THEN
3369 vinfo( 1)=vname(1,idmtke)
3370 vinfo( 2)=vname(2,idmtke)
3371 vinfo( 3)=vname(3,idmtke)
3372 vinfo(14)=vname(4,idmtke)
3373 vinfo(16)=vname(1,idtime)
3374# if defined WRITE_WATER && defined MASKING
3375 vinfo(20)='mask_rho'
3376# endif
3377 vinfo(21)=vname(6,idmtke)
3378 vinfo(22)='coordinates'
3379 aval(5)=real(iinfo(1,idmtke,ng),r8)
3380 qck(ng)%pioVar(idmtke)%dkind=pio_fout
3381 qck(ng)%pioVar(idmtke)%gtype=w3dvar
3382!
3383 status=def_var(ng, model, qck(ng)%pioFile, &
3384 & qck(ng)%pioVar(idmtke)%vd, &
3385 & pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
3386 & setfillval = .false.)
3387 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3388 END IF
3389!
3390! Define turbulent kinetic energy time length scale.
3391!
3392 IF (qout(idmtls,ng)) THEN
3393 vinfo( 1)=vname(1,idmtls)
3394 vinfo( 2)=vname(2,idmtls)
3395 vinfo( 3)=vname(3,idmtls)
3396 vinfo(14)=vname(4,idmtls)
3397 vinfo(16)=vname(1,idtime)
3398# if defined WRITE_WATER && defined MASKING
3399 vinfo(20)='mask_rho'
3400# endif
3401 vinfo(21)=vname(6,idmtls)
3402 vinfo(22)='coordinates'
3403 aval(5)=real(iinfo(1,idmtls,ng),r8)
3404 qck(ng)%pioVar(idmtls)%dkind=pio_fout
3405 qck(ng)%pioVar(idmtls)%gtype=w3dvar
3406!
3407 status=def_var(ng, model, qck(ng)%pioFile, &
3408 & qck(ng)%pioVar(idmtls)%vd, &
3409 & pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
3410 & setfillval = .false.)
3411 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3412 END IF
3413# endif
3414# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
3415!
3416! Define surface air pressure.
3417!
3418 IF (qout(idpair,ng)) THEN
3419 vinfo( 1)=vname(1,idpair)
3420 vinfo( 2)=vname(2,idpair)
3421 vinfo( 3)=vname(3,idpair)
3422 vinfo(14)=vname(4,idpair)
3423 vinfo(16)=vname(1,idtime)
3424# if defined WRITE_WATER && defined MASKING
3425 vinfo(20)='mask_rho'
3426# endif
3427 vinfo(21)=vname(6,idpair)
3428 vinfo(22)='coordinates'
3429 aval(5)=real(iinfo(1,idpair,ng),r8)
3430 qck(ng)%pioVar(idpair)%dkind=pio_fout
3431 qck(ng)%pioVar(idpair)%gtype=r2dvar
3432!
3433 status=def_var(ng, model, qck(ng)%pioFile, &
3434 & qck(ng)%pioVar(idpair)%vd, &
3435 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3436 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3437 END IF
3438# endif
3439# if defined BULK_FLUXES || defined ECOSIM
3440!
3441! Define surface winds.
3442!
3443 IF (qout(iduair,ng)) THEN
3444 vinfo( 1)=vname(1,iduair)
3445 vinfo( 2)=vname(2,iduair)
3446 vinfo( 3)=vname(3,iduair)
3447 vinfo(14)=vname(4,iduair)
3448 vinfo(16)=vname(1,idtime)
3449# if defined WRITE_WATER && defined MASKING
3450 vinfo(20)='mask_rho'
3451# endif
3452 vinfo(21)=vname(6,iduair)
3453 vinfo(22)='coordinates'
3454 aval(5)=real(iinfo(1,iduair,ng),r8)
3455 qck(ng)%pioVar(iduair)%dkind=pio_fout
3456 qck(ng)%pioVar(iduair)%gtype=r2dvar
3457!
3458 status=def_var(ng, model, qck(ng)%pioFile, &
3459 & qck(ng)%pioVar(iduair)%vd, &
3460 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3461 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3462 END IF
3463!
3464 IF (qout(idvair,ng)) THEN
3465 vinfo( 1)=vname(1,idvair)
3466 vinfo( 2)=vname(2,idvair)
3467 vinfo( 3)=vname(3,idvair)
3468 vinfo(14)=vname(4,idvair)
3469 vinfo(16)=vname(1,idtime)
3470# if defined WRITE_WATER && defined MASKING
3471 vinfo(20)='mask_rho'
3472# endif
3473 vinfo(21)=vname(6,idvair)
3474 vinfo(22)='coordinates'
3475 aval(5)=real(iinfo(1,idvair,ng),r8)
3476 qck(ng)%pioVar(idvair)%dkind=pio_fout
3477 qck(ng)%pioVar(idvair)%gtype=r2dvar
3478!
3479 status=def_var(ng, model, qck(ng)%pioFile, &
3480 & qck(ng)%pioVar(idvair)%vd, &
3481 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3482 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3483 END IF
3484!
3485! Define Eastward/Northward surface winds at RHO-points.
3486!
3487 IF (qout(iduaie,ng)) THEN
3488 vinfo( 1)=vname(1,iduaie)
3489 vinfo( 2)=vname(2,iduaie)
3490 vinfo( 3)=vname(3,iduaie)
3491 vinfo(14)=vname(4,iduaie)
3492 vinfo(16)=vname(1,idtime)
3493# if defined WRITE_WATER && defined MASKING
3494 vinfo(20)='mask_rho'
3495# endif
3496 vinfo(21)=vname(6,iduaie)
3497 vinfo(22)='coordinates'
3498 aval(5)=real(iinfo(1,iduaie,ng),r8)
3499 qck(ng)%pioVar(iduaie)%dkind=pio_fout
3500 qck(ng)%pioVar(iduaie)%gtype=r2dvar
3501!
3502 status=def_var(ng, model, qck(ng)%pioFile, &
3503 & qck(ng)%pioVar(iduaie)%vd, &
3504 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3505 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3506 END IF
3507!
3508 IF (qout(idvain,ng)) THEN
3509 vinfo( 1)=vname(1,idvain)
3510 vinfo( 2)=vname(2,idvain)
3511 vinfo( 3)=vname(3,idvain)
3512 vinfo(14)=vname(4,idvain)
3513 vinfo(16)=vname(1,idtime)
3514# if defined WRITE_WATER && defined MASKING
3515 vinfo(20)='mask_rho'
3516# endif
3517 vinfo(21)=vname(6,idvain)
3518 vinfo(22)='coordinates'
3519 aval(5)=real(iinfo(1,idvain,ng),r8)
3520 qck(ng)%pioVar(idvain)%dkind=pio_fout
3521 qck(ng)%pioVar(idvain)%gtype=r2dvar
3522!
3523 status=def_var(ng, model, qck(ng)%pioFile, &
3524 & qck(ng)%pioVar(idvain)%vd, &
3525 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3526 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3527 END IF
3528# endif
3529!
3530! Define surface active tracer fluxes.
3531!
3532 DO itrc=1,nat
3533 IF (qout(idtsur(itrc),ng)) THEN
3534 vinfo( 1)=vname(1,idtsur(itrc))
3535 vinfo( 2)=vname(2,idtsur(itrc))
3536 vinfo( 3)=vname(3,idtsur(itrc))
3537 IF (itrc.eq.itemp) THEN
3538 vinfo(11)='upward flux, cooling'
3539 vinfo(12)='downward flux, heating'
3540 ELSE IF (itrc.eq.isalt) THEN
3541 vinfo(11)='upward flux, freshening (net precipitation)'
3542 vinfo(12)='downward flux, salting (net evaporation)'
3543 END IF
3544 vinfo(14)=vname(4,idtsur(itrc))
3545 vinfo(16)=vname(1,idtime)
3546# if defined WRITE_WATER && defined MASKING
3547 vinfo(20)='mask_rho'
3548# endif
3549 vinfo(21)=vname(6,idtsur(itrc))
3550 vinfo(22)='coordinates'
3551 aval(5)=real(iinfo(1,idtsur(itrc),ng),r8)
3552 qck(ng)%pioVar(idtsur(itrc))%dkind=pio_fout
3553 qck(ng)%pioVar(idtsur(itrc))%gtype=r2dvar
3554!
3555 status=def_var(ng, model, qck(ng)%pioFile, &
3556 & qck(ng)%pioVar(idtsur(itrc))%vd, &
3557 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3558 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3559 END IF
3560 END DO
3561
3562# if defined BULK_FLUXES || defined FRC_COUPLING
3563!
3564! Define latent heat flux.
3565!
3566 IF (qout(idlhea,ng)) THEN
3567 vinfo( 1)=vname(1,idlhea)
3568 vinfo( 2)=vname(2,idlhea)
3569 vinfo( 3)=vname(3,idlhea)
3570 vinfo(11)='upward flux, cooling'
3571 vinfo(12)='downward flux, heating'
3572 vinfo(14)=vname(4,idlhea)
3573 vinfo(16)=vname(1,idtime)
3574# if defined WRITE_WATER && defined MASKING
3575 vinfo(20)='mask_rho'
3576# endif
3577 vinfo(21)=vname(6,idlhea)
3578 vinfo(22)='coordinates'
3579 aval(5)=real(iinfo(1,idlhea,ng),r8)
3580 qck(ng)%pioVar(idlhea)%dkind=pio_fout
3581 qck(ng)%pioVar(idlhea)%gtype=r2dvar
3582!
3583 status=def_var(ng, model, qck(ng)%pioFile, &
3584 & qck(ng)%pioVar(idlhea)%vd, &
3585 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3586 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3587 END IF
3588!
3589! Define sensible heat flux.
3590!
3591 IF (qout(idshea,ng)) THEN
3592 vinfo( 1)=vname(1,idshea)
3593 vinfo( 2)=vname(2,idshea)
3594 vinfo( 3)=vname(3,idshea)
3595 vinfo(11)='upward flux, cooling'
3596 vinfo(12)='downward flux, heating'
3597 vinfo(14)=vname(4,idshea)
3598 vinfo(16)=vname(1,idtime)
3599# if defined WRITE_WATER && defined MASKING
3600 vinfo(20)='mask_rho'
3601# endif
3602 vinfo(21)=vname(6,idshea)
3603 vinfo(22)='coordinates'
3604 aval(5)=real(iinfo(1,idshea,ng),r8)
3605 qck(ng)%pioVar(idshea)%dkind=pio_fout
3606 qck(ng)%pioVar(idshea)%gtype=r2dvar
3607!
3608 status=def_var(ng, model, qck(ng)%pioFile, &
3609 & qck(ng)%pioVar(idshea)%vd, &
3610 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3611 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3612 END IF
3613!
3614! Define net longwave radiation flux.
3615!
3616 IF (qout(idlrad,ng)) THEN
3617 vinfo( 1)=vname(1,idlrad)
3618 vinfo( 2)=vname(2,idlrad)
3619 vinfo( 3)=vname(3,idlrad)
3620 vinfo(11)='upward flux, cooling'
3621 vinfo(12)='downward flux, heating'
3622 vinfo(14)=vname(4,idlrad)
3623 vinfo(16)=vname(1,idtime)
3624# if defined WRITE_WATER && defined MASKING
3625 vinfo(20)='mask_rho'
3626# endif
3627 vinfo(21)=vname(6,idlrad)
3628 vinfo(22)='coordinates'
3629 aval(5)=real(iinfo(1,idlrad,ng),r8)
3630 qck(ng)%pioVar(idlrad)%dkind=pio_fout
3631 qck(ng)%pioVar(idlrad)%gtype=r2dvar
3632!
3633 status=def_var(ng, model, qck(ng)%pioFile, &
3634 & qck(ng)%pioVar(idlrad)%vd, &
3635 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3636 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3637 END IF
3638# endif
3639
3640# if defined BULK_FLUXES
3641!
3642! Define atmospheric air temperature.
3643!
3644 IF (qout(idtair,ng)) THEN
3645 vinfo( 1)=vname(1,idtair)
3646 vinfo( 2)=vname(2,idtair)
3647 vinfo( 3)=vname(3,idtair)
3648 vinfo(14)=vname(4,idtair)
3649 vinfo(16)=vname(1,idtime)
3650# if defined WRITE_WATER && defined MASKING
3651 vinfo(20)='mask_rho'
3652# endif
3653 vinfo(21)=vname(6,idtair)
3654 vinfo(22)='coordinates'
3655 aval(5)=real(iinfo(1,idtair,ng),r8)
3656 qck(ng)%pioVar(idtair)%dkind=pio_fout
3657 qck(ng)%pioVar(idtair)%gtype=r2dvar
3658!
3659 status=def_var(ng, model, qck(ng)%pioFile, &
3660 & qck(ng)%pioVar(idtair)%vd, &
3661 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3662 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3663 END IF
3664
3665# ifdef EMINUSP
3666!
3667! Define evaporation rate.
3668!
3669 IF (qout(idevap,ng)) THEN
3670 vinfo( 1)=vname(1,idevap)
3671 vinfo( 2)=vname(2,idevap)
3672 vinfo( 3)=vname(3,idevap)
3673 vinfo(11)='downward flux, freshening (condensation)'
3674 vinfo(12)='upward flux, salting (evaporation)'
3675 vinfo(14)=vname(4,idevap)
3676 vinfo(16)=vname(1,idtime)
3677# if defined WRITE_WATER && defined MASKING
3678 vinfo(20)='mask_rho'
3679# endif
3680 vinfo(21)=vname(6,idevap)
3681 vinfo(22)='coordinates'
3682 aval(5)=real(iinfo(1,idevap,ng),r8)
3683 qck(ng)%pioVar(idevap)%dkind=pio_fout
3684 qck(ng)%pioVar(idevap)%gtype=r2dvar
3685!
3686 status=def_var(ng, model, qck(ng)%pioFile, &
3687 & qck(ng)%pioVar(idevap)%vd, &
3688 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3689 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3690 END IF
3691!
3692! Define precipitation rate.
3693!
3694 IF (qout(idrain,ng)) THEN
3695 vinfo( 1)=vname(1,idrain)
3696 vinfo( 2)=vname(2,idrain)
3697 vinfo( 3)=vname(3,idrain)
3698 vinfo(11)='upward flux, salting (NOT POSSIBLE)'
3699 vinfo(12)='downward flux, freshening (precipitation)'
3700 vinfo(14)=vname(4,idrain)
3701 vinfo(16)=vname(1,idtime)
3702# if defined WRITE_WATER && defined MASKING
3703 vinfo(20)='mask_rho'
3704# endif
3705 vinfo(21)=vname(6,idrain)
3706 vinfo(22)='coordinates'
3707 aval(5)=real(iinfo(1,idrain,ng),r8)
3708 qck(ng)%pioVar(idrain)%dkind=pio_fout
3709 qck(ng)%pioVar(idrain)%gtype=r2dvar
3710!
3711 status=def_var(ng, model, qck(ng)%pioFile, &
3712 & qck(ng)%pioVar(idrain)%vd, &
3713 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3714 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3715 END IF
3716# endif
3717# endif
3718!
3719! Define E-P flux.
3720!
3721 IF (qout(idempf,ng)) THEN
3722 vinfo( 1)=vname(1,idempf)
3723 vinfo( 2)=vname(2,idempf)
3724 vinfo( 3)=vname(3,idempf)
3725 vinfo(11)='upward flux, freshening (net precipitation)'
3726 vinfo(12)='downward flux, salting (net evaporation)'
3727 vinfo(14)=vname(4,idempf)
3728 vinfo(16)=vname(1,idtime)
3729# if defined WRITE_WATER && defined MASKING
3730 vinfo(20)='mask_rho'
3731# endif
3732 vinfo(21)=vname(6,idempf)
3733 vinfo(22)='coordinates'
3734 aval(5)=real(iinfo(1,idempf,ng),r8)
3735 qck(ng)%pioVar(idempf)%dkind=pio_fout
3736 qck(ng)%pioVar(idempf)%gtype=r2dvar
3737!
3738 status=def_var(ng, model, qck(ng)%pioFile, &
3739 & qck(ng)%pioVar(idempf)%vd, &
3740 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3741 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3742 END IF
3743
3744# ifdef SHORTWAVE
3745!
3746! Define net shortwave radiation flux.
3747!
3748 IF (qout(idsrad,ng)) THEN
3749 vinfo( 1)=vname(1,idsrad)
3750 vinfo( 2)=vname(2,idsrad)
3751 vinfo( 3)=vname(3,idsrad)
3752 vinfo(11)='upward flux, cooling'
3753 vinfo(12)='downward flux, heating'
3754 vinfo(14)=vname(4,idsrad)
3755 vinfo(16)=vname(1,idtime)
3756# if defined WRITE_WATER && defined MASKING
3757 vinfo(20)='mask_rho'
3758# endif
3759 vinfo(21)=vname(6,idsrad)
3760 vinfo(22)='coordinates'
3761 aval(5)=real(iinfo(1,idsrad,ng),r8)
3762 qck(ng)%pioVar(idsrad)%dkind=pio_fout
3763 qck(ng)%pioVar(idsrad)%gtype=r2dvar
3764!
3765 status=def_var(ng, model, qck(ng)%pioFile, &
3766 & qck(ng)%pioVar(idsrad)%vd, &
3767 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3768 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3769 END IF
3770# endif
3771# endif
3772!
3773! Define surface U-momentum stress.
3774!
3775 IF (qout(idusms,ng)) THEN
3776 vinfo( 1)=vname(1,idusms)
3777 vinfo( 2)=vname(2,idusms)
3778 vinfo( 3)=vname(3,idusms)
3779 vinfo(14)=vname(4,idusms)
3780 vinfo(16)=vname(1,idtime)
3781# if defined WRITE_WATER && defined MASKING
3782 vinfo(20)='mask_u'
3783# endif
3784 vinfo(21)=vname(6,idusms)
3785 vinfo(22)='coordinates'
3786 aval(5)=real(iinfo(1,idusms,ng),r8)
3787 qck(ng)%pioVar(idusms)%dkind=pio_fout
3788 qck(ng)%pioVar(idusms)%gtype=u2dvar
3789!
3790 status=def_var(ng, model, qck(ng)%pioFile, &
3791 & qck(ng)%pioVar(idusms)%vd, &
3792 & pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3793 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3794 END IF
3795!
3796! Define surface V-momentum stress.
3797!
3798 IF (qout(idvsms,ng)) THEN
3799 vinfo( 1)=vname(1,idvsms)
3800 vinfo( 2)=vname(2,idvsms)
3801 vinfo( 3)=vname(3,idvsms)
3802 vinfo(14)=vname(4,idvsms)
3803 vinfo(16)=vname(1,idtime)
3804# if defined WRITE_WATER && defined MASKING
3805 vinfo(20)='mask_v'
3806# endif
3807 vinfo(21)=vname(6,idvsms)
3808 vinfo(22)='coordinates'
3809 aval(5)=real(iinfo(1,idvsms,ng),r8)
3810 qck(ng)%pioVar(idvsms)%dkind=pio_fout
3811 qck(ng)%pioVar(idvsms)%gtype=v2dvar
3812!
3813 status=def_var(ng, model, qck(ng)%pioFile, &
3814 & qck(ng)%pioVar(idvsms)%vd, &
3815 & pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3816 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3817 END IF
3818!
3819! Define bottom U-momentum stress.
3820!
3821 IF (qout(idubms,ng)) THEN
3822 vinfo( 1)=vname(1,idubms)
3823 vinfo( 2)=vname(2,idubms)
3824 vinfo( 3)=vname(3,idubms)
3825 vinfo(14)=vname(4,idubms)
3826 vinfo(16)=vname(1,idtime)
3827# if defined WRITE_WATER && defined MASKING
3828 vinfo(20)='mask_u'
3829# endif
3830 vinfo(21)=vname(6,idubms)
3831 vinfo(22)='coordinates'
3832 aval(5)=real(iinfo(1,idubms,ng),r8)
3833 qck(ng)%pioVar(idubms)%dkind=pio_fout
3834 qck(ng)%pioVar(idubms)%gtype=u2dvar
3835!
3836 status=def_var(ng, model, qck(ng)%pioFile, &
3837 & qck(ng)%pioVar(idubms)%vd, &
3838 & pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3839 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3840 END IF
3841!
3842! Define bottom V-momentum stress.
3843!
3844 IF (qout(idvbms,ng)) THEN
3845 vinfo( 1)=vname(1,idvbms)
3846 vinfo( 2)=vname(2,idvbms)
3847 vinfo( 3)=vname(3,idvbms)
3848 vinfo(14)=vname(4,idvbms)
3849 vinfo(16)=vname(1,idtime)
3850# if defined WRITE_WATER && defined MASKING
3851 vinfo(20)='mask_v'
3852# endif
3853 vinfo(21)=vname(6,idvbms)
3854 vinfo(22)='coordinates'
3855 aval(5)=real(iinfo(1,idvbms,ng),r8)
3856 qck(ng)%pioVar(idvbms)%dkind=pio_fout
3857 qck(ng)%pioVar(idvbms)%gtype=v2dvar
3858!
3859 status=def_var(ng, model, qck(ng)%pioFile, &
3860 & qck(ng)%pioVar(idvbms)%vd, &
3861 & pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3862 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3863 END IF
3864
3865# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
3866!
3867!-----------------------------------------------------------------------
3868! Define the bottom boundary layer model or waves variables.
3869!-----------------------------------------------------------------------
3870!
3871 CALL bbl_def_pio (ng, model, ldef, qout, qck, &
3872 & t2dgrd, u2dgrd, v2dgrd)
3873 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3874# endif
3875
3876# if defined ICE_MODEL && defined SOLVE3D
3877!
3878!-----------------------------------------------------------------------
3879! Define the sea-ice model variables.
3880!-----------------------------------------------------------------------
3881!
3882 CALL ice_def_pio (ng, model, ldef, qout, qck, &
3883 & t2dgrd, u2dgrd, v2dgrd)
3884 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3885# endif
3886
3887# if defined SEDIMENT && defined SOLVE3D
3888!
3889!-----------------------------------------------------------------------
3890! Define the sediment model variables.
3891!-----------------------------------------------------------------------
3892!
3893 CALL sediment_def_pio (ng, model, ldef, qout, qck, &
3894 & t2dgrd, u2dgrd, v2dgrd)
3895 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3896# endif
3897
3898# if defined WEC_VF && defined SOLVE3D
3899!
3900!-----------------------------------------------------------------------
3901! Define the Waves Effect on Currents variables.
3902!-----------------------------------------------------------------------
3903!
3904 CALL wec_def_pio (ng, model, ldef, qout, qck, &
3905 & t2dgrd, u2dgrd, v2dgrd, &
3906 & t3dgrd, u3dgrd, v3dgrd, w3dgrd)
3907 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3908# endif
3909!
3910!-----------------------------------------------------------------------
3911! Leave definition mode.
3912!-----------------------------------------------------------------------
3913!
3914 CALL pio_netcdf_enddef (ng, model, ncname, qck(ng)%pioFile)
3915 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3916!
3917!-----------------------------------------------------------------------
3918! Write out time-recordless, information variables.
3919!-----------------------------------------------------------------------
3920!
3921 CALL wrt_info (ng, model, qck(ng)%pioFile, ncname)
3922 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3923 END IF define
3924!
3925!=======================================================================
3926! Open an existing quicksave file, check its contents, and prepare
3927! for appending data.
3928!=======================================================================
3929!
3930 query : IF (.not.ldef) THEN
3931 ncname=qck(ng)%name
3932!
3933! Open quicksave file for read/write.
3934!
3935 CALL pio_netcdf_open (ng, model, ncname, 1, qck(ng)%pioFile)
3936 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
3937 WRITE (stdout,60) trim(ncname)
3938 RETURN
3939 END IF
3940!
3941! Inquire about the dimensions and check for consistency.
3942!
3943 CALL pio_netcdf_check_dim (ng, model, ncname, &
3944 & piofile = qck(ng)%pioFile)
3945 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3946!
3947! Inquire about the variables.
3948!
3949 CALL pio_netcdf_inq_var (ng, model, ncname, &
3950 & piofile = qck(ng)%pioFile)
3951 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3952!
3953! Initialize logical switches.
3954!
3955 DO i=1,nv
3956 got_var(i)=.false.
3957 END DO
3958!
3959! Scan variable list from input NetCDF and activate switches for
3960! quicksave variables. Get variable IDs.
3961!
3962 DO i=1,n_var
3963 IF (trim(var_name(i)).eq.trim(vname(1,idtime))) THEN
3964 got_var(idtime)=.true.
3965 qck(ng)%pioVar(idtime)%vd=var_desc(i)
3966 qck(ng)%pioVar(idtime)%dkind=pio_tout
3967 qck(ng)%pioVar(idtime)%gtype=0
3968# if defined WET_DRY
3969 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpwet))) THEN
3970 got_var(idpwet)=.true.
3971 qck(ng)%pioVar(idpwet)%vd=var_desc(i)
3972 qck(ng)%pioVar(idpwet)%dkind=pio_fout
3973 qck(ng)%pioVar(idpwet)%gtype=p2dvar
3974 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrwet))) THEN
3975 got_var(idrwet)=.true.
3976 qck(ng)%pioVar(idrwet)%vd=var_desc(i)
3977 qck(ng)%pioVar(idrwet)%dkind=pio_fout
3978 qck(ng)%pioVar(idrwet)%gtype=r2dvar
3979 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduwet))) THEN
3980 got_var(iduwet)=.true.
3981 qck(ng)%pioVar(iduwet)%vd=var_desc(i)
3982 qck(ng)%pioVar(iduwet)%dkind=pio_fout
3983 qck(ng)%pioVar(iduwet)%gtype=u2dvar
3984 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvwet))) THEN
3985 got_var(idvwet)=.true.
3986 qck(ng)%pioVar(idvwet)%vd=var_desc(i)
3987 qck(ng)%pioVar(idvwet)%dkind=pio_fout
3988 qck(ng)%pioVar(idvwet)%gtype=v2dvar
3989# endif
3990# ifdef SOLVE3D
3991 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpthr))) THEN
3992 got_var(idpthr)=.true.
3993 qck(ng)%pioVar(idpthr)%vd=var_desc(i)
3994 qck(ng)%pioVar(idpthr)%dkind=pio_fout
3995 qck(ng)%pioVar(idpthr)%gtype=r3dvar
3996 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpthu))) THEN
3997 got_var(idpthu)=.true.
3998 qck(ng)%pioVar(idpthu)%vd=var_desc(i)
3999 qck(ng)%pioVar(idpthu)%dkind=pio_fout
4000 qck(ng)%pioVar(idpthu)%gtype=u3dvar
4001 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpthv))) THEN
4002 got_var(idpthv)=.true.
4003 qck(ng)%pioVar(idpthv)%vd=var_desc(i)
4004 qck(ng)%pioVar(idpthv)%dkind=pio_fout
4005 qck(ng)%pioVar(idpthv)%gtype=v3dvar
4006 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpthw))) THEN
4007 got_var(idpthw)=.true.
4008 qck(ng)%pioVar(idpthw)%vd=var_desc(i)
4009 qck(ng)%pioVar(idpthw)%dkind=pio_fout
4010 qck(ng)%pioVar(idpthw)%gtype=w3dvar
4011# endif
4012 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idfsur))) THEN
4013 got_var(idfsur)=.true.
4014 qck(ng)%pioVar(idfsur)%vd=var_desc(i)
4015 qck(ng)%pioVar(idfsur)%dkind=pio_fout
4016 qck(ng)%pioVar(idfsur)%gtype=r2dvar
4017 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubar))) THEN
4018 got_var(idubar)=.true.
4019 qck(ng)%pioVar(idubar)%vd=var_desc(i)
4020 qck(ng)%pioVar(idubar)%dkind=pio_fout
4021 qck(ng)%pioVar(idubar)%gtype=u2dvar
4022 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbar))) THEN
4023 got_var(idvbar)=.true.
4024 qck(ng)%pioVar(idvbar)%vd=var_desc(i)
4025 qck(ng)%pioVar(idvbar)%dkind=pio_fout
4026 qck(ng)%pioVar(idvbar)%gtype=v2dvar
4027 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu2de))) THEN
4028 got_var(idu2de)=.true.
4029 qck(ng)%pioVar(idu2de)%vd=var_desc(i)
4030 qck(ng)%pioVar(idu2de)%dkind=pio_fout
4031 qck(ng)%pioVar(idu2de)%gtype=r2dvar
4032 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv2dn))) THEN
4033 got_var(idv2dn)=.true.
4034 qck(ng)%pioVar(idv2dn)%vd=var_desc(i)
4035 qck(ng)%pioVar(idv2dn)%dkind=pio_fout
4036 qck(ng)%pioVar(idv2dn)%gtype=r2dvar
4037# ifdef SOLVE3D
4038 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduvel))) THEN
4039 got_var(iduvel)=.true.
4040 qck(ng)%pioVar(iduvel)%vd=var_desc(i)
4041 qck(ng)%pioVar(iduvel)%dkind=pio_fout
4042 qck(ng)%pioVar(iduvel)%gtype=u3dvar
4043 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvel))) THEN
4044 got_var(idvvel)=.true.
4045 qck(ng)%pioVar(idvvel)%vd=var_desc(i)
4046 qck(ng)%pioVar(idvvel)%dkind=pio_fout
4047 qck(ng)%pioVar(idvvel)%gtype=v3dvar
4048 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idusur))) THEN
4049 got_var(idusur)=.true.
4050 qck(ng)%pioVar(idusur)%vd=var_desc(i)
4051 qck(ng)%pioVar(idusur)%dkind=pio_fout
4052 qck(ng)%pioVar(idusur)%gtype=u2dvar
4053 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvsur))) THEN
4054 got_var(idvsur)=.true.
4055 qck(ng)%pioVar(idvsur)%vd=var_desc(i)
4056 qck(ng)%pioVar(idvsur)%dkind=pio_fout
4057 qck(ng)%pioVar(idvsur)%gtype=v2dvar
4058 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu3de))) THEN
4059 got_var(idu3de)=.true.
4060 qck(ng)%pioVar(idu3de)%vd=var_desc(i)
4061 qck(ng)%pioVar(idu3de)%dkind=pio_fout
4062 qck(ng)%pioVar(idu3de)%gtype=r3dvar
4063 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv3dn))) THEN
4064 got_var(idv3dn)=.true.
4065 qck(ng)%pioVar(idv3dn)%vd=var_desc(i)
4066 qck(ng)%pioVar(idv3dn)%dkind=pio_fout
4067 qck(ng)%pioVar(idv3dn)%gtype=r3dvar
4068 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idusue))) THEN
4069 got_var(idusue)=.true.
4070 qck(ng)%pioVar(idusue)%vd=var_desc(i)
4071 qck(ng)%pioVar(idusue)%dkind=pio_fout
4072 qck(ng)%pioVar(idusue)%gtype=r2dvar
4073 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvsun))) THEN
4074 got_var(idvsun)=.true.
4075 qck(ng)%pioVar(idvsun)%vd=var_desc(i)
4076 qck(ng)%pioVar(idvsun)%dkind=pio_fout
4077 qck(ng)%pioVar(idvsun)%gtype=r2dvar
4078 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idwvel))) THEN
4079 got_var(idwvel)=.true.
4080 qck(ng)%pioVar(idwvel)%vd=var_desc(i)
4081 qck(ng)%pioVar(idwvel)%dkind=pio_fout
4082 qck(ng)%pioVar(idwvel)%gtype=w3dvar
4083 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idovel))) THEN
4084 got_var(idovel)=.true.
4085 qck(ng)%pioVar(idovel)%vd=var_desc(i)
4086 qck(ng)%pioVar(idovel)%dkind=pio_fout
4087 qck(ng)%pioVar(idovel)%gtype=w3dvar
4088 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iddano))) THEN
4089 got_var(iddano)=.true.
4090 qck(ng)%pioVar(iddano)%vd=var_desc(i)
4091 qck(ng)%pioVar(iddano)%dkind=pio_fout
4092 qck(ng)%pioVar(iddano)%gtype=r3dvar
4093# ifdef LMD_SKPP
4094 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhsbl))) THEN
4095 got_var(idhsbl)=.true.
4096 qck(ng)%pioVar(idhsbl)%vd=var_desc(i)
4097 qck(ng)%pioVar(idhsbl)%dkind=pio_fout
4098 qck(ng)%pioVar(idhsbl)%gtype=r2dvar
4099# endif
4100# ifdef LMD_BKPP
4101 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhbbl))) THEN
4102 got_var(idhbbl)=.true.
4103 qck(ng)%pioVar(idhbbl)%vd=var_desc(i)
4104 qck(ng)%pioVar(idhbbl)%dkind=pio_fout
4105 qck(ng)%pioVar(idhbbl)%gtype=r2dvar
4106# endif
4107 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvis))) THEN
4108 got_var(idvvis)=.true.
4109 qck(ng)%pioVar(idvvis)%vd=var_desc(i)
4110 qck(ng)%pioVar(idvvis)%dkind=pio_fout
4111 qck(ng)%pioVar(idvvis)%gtype=w3dvar
4112 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idtdif))) THEN
4113 got_var(idtdif)=.true.
4114 qck(ng)%pioVar(idtdif)%vd=var_desc(i)
4115 qck(ng)%pioVar(idtdif)%dkind=pio_fout
4116 qck(ng)%pioVar(idtdif)%gtype=w3dvar
4117 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsdif))) THEN
4118 got_var(idsdif)=.true.
4119 qck(ng)%pioVar(idsdif)%vd=var_desc(i)
4120 qck(ng)%pioVar(idsdif)%dkind=pio_fout
4121 qck(ng)%pioVar(idsdif)%gtype=w3dvar
4122# if defined GLS_MIXING || defined MY25_MIXING
4123 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idmtke))) THEN
4124 got_var(idmtke)=.true.
4125 qck(ng)%pioVar(idmtke)%vd=var_desc(i)
4126 qck(ng)%pioVar(idmtke)%dkind=pio_fout
4127 qck(ng)%pioVar(idmtke)%gtype=w3dvar
4128 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idmtls))) THEN
4129 got_var(idmtls)=.true.
4130 qck(ng)%pioVar(idmtls)%vd=var_desc(i)
4131 qck(ng)%pioVar(idmtls)%dkind=pio_fout
4132 qck(ng)%pioVar(idmtls)%gtype=w3dvar
4133# endif
4134# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
4135 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpair))) THEN
4136 got_var(idpair)=.true.
4137 qck(ng)%pioVar(idpair)%vd=var_desc(i)
4138 qck(ng)%pioVar(idpair)%dkind=pio_fout
4139 qck(ng)%pioVar(idpair)%gtype=r2dvar
4140# endif
4141# if defined BULK_FLUXES || defined ECOSIM
4142 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduair))) THEN
4143 got_var(iduair)=.true.
4144 qck(ng)%pioVar(iduair)%vd=var_desc(i)
4145 qck(ng)%pioVar(iduair)%dkind=pio_fout
4146 qck(ng)%pioVar(iduair)%gtype=r2dvar
4147 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvair))) THEN
4148 got_var(idvair)=.true.
4149 qck(ng)%pioVar(idvair)%vd=var_desc(i)
4150 qck(ng)%pioVar(idvair)%dkind=pio_fout
4151 qck(ng)%pioVar(idvair)%gtype=r2dvar
4152 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduaie))) THEN
4153 got_var(iduair)=.true.
4154 qck(ng)%pioVar(iduaie)%vd=var_desc(i)
4155 qck(ng)%pioVar(iduaie)%dkind=pio_fout
4156 qck(ng)%pioVar(iduaie)%gtype=r2dvar
4157 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvain))) THEN
4158 got_var(idvair)=.true.
4159 qck(ng)%pioVar(idvain)%vd=var_desc(i)
4160 qck(ng)%pioVar(idvain)%dkind=pio_fout
4161 qck(ng)%pioVar(idvain)%gtype=r2dvar
4162# endif
4163# if defined BULK_FLUXES || defined FRC_COUPLING
4164 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idlhea))) THEN
4165 got_var(idlhea)=.true.
4166 qck(ng)%pioVar(idlhea)%vd=var_desc(i)
4167 qck(ng)%pioVar(idlhea)%dkind=pio_fout
4168 qck(ng)%pioVar(idlhea)%gtype=r2dvar
4169 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idshea))) THEN
4170 got_var(idshea)=.true.
4171 qck(ng)%pioVar(idshea)%vd=var_desc(i)
4172 qck(ng)%pioVar(idshea)%dkind=pio_fout
4173 qck(ng)%pioVar(idshea)%gtype=r2dvar
4174 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idlrad))) THEN
4175 got_var(idlrad)=.true.
4176 qck(ng)%pioVar(idlrad)%vd=var_desc(i)
4177 qck(ng)%pioVar(idlrad)%dkind=pio_fout
4178 qck(ng)%pioVar(idlrad)%gtype=r2dvar
4179# endif
4180# ifdef BULK_FLUXES
4181 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idtair))) THEN
4182 got_var(idtair)=.true.
4183 qck(ng)%pioVar(idtair)%vd=var_desc(i)
4184 qck(ng)%pioVar(idtair)%dkind=pio_fout
4185 qck(ng)%pioVar(idtair)%gtype=r2dvar
4186# ifdef EMINUSP
4187 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idevap))) THEN
4188 got_var(idevap)=.true.
4189 qck(ng)%pioVar(idevap)%vd=var_desc(i)
4190 qck(ng)%pioVar(idevap)%dkind=pio_fout
4191 qck(ng)%pioVar(idevap)%gtype=r2dvar
4192 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrain))) THEN
4193 got_var(idrain)=.true.
4194 qck(ng)%pioVar(idrain)%vd=var_desc(i)
4195 qck(ng)%pioVar(idrain)%dkind=pio_fout
4196 qck(ng)%pioVar(idrain)%gtype=r2dvar
4197# endif
4198# endif
4199 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idempf))) THEN
4200 got_var(idempf)=.true.
4201 qck(ng)%pioVar(idempf)%vd=var_desc(i)
4202 qck(ng)%pioVar(idempf)%dkind=pio_fout
4203 qck(ng)%pioVar(idempf)%gtype=r2dvar
4204# ifdef SHORTWAVE
4205 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsrad))) THEN
4206 got_var(idsrad)=.true.
4207 qck(ng)%pioVar(idsrad)%vd=var_desc(i)
4208 qck(ng)%pioVar(idsrad)%dkind=pio_fout
4209 qck(ng)%pioVar(idsrad)%gtype=r2dvar
4210# endif
4211# endif
4212 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idusms))) THEN
4213 got_var(idusms)=.true.
4214 qck(ng)%pioVar(idusms)%vd=var_desc(i)
4215 qck(ng)%pioVar(idusms)%dkind=pio_fout
4216 qck(ng)%pioVar(idusms)%gtype=u2dvar
4217 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvsms))) THEN
4218 got_var(idvsms)=.true.
4219 qck(ng)%pioVar(idvsms)%vd=var_desc(i)
4220 qck(ng)%pioVar(idvsms)%dkind=pio_fout
4221 qck(ng)%pioVar(idvsms)%gtype=v2dvar
4222 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubms))) THEN
4223 got_var(idubms)=.true.
4224 qck(ng)%pioVar(idubms)%vd=var_desc(i)
4225 qck(ng)%pioVar(idubms)%dkind=pio_fout
4226 qck(ng)%pioVar(idubms)%gtype=u2dvar
4227 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbms))) THEN
4228 got_var(idvbms)=.true.
4229 qck(ng)%pioVar(idvbms)%vd=var_desc(i)
4230 qck(ng)%pioVar(idvbms)%dkind=pio_fout
4231 qck(ng)%pioVar(idvbms)%gtype=v2dvar
4232 END IF
4233# ifdef SOLVE3D
4234 DO itrc=1,nt(ng)
4235 IF (trim(var_name(i)).eq.trim(vname(1,idtvar(itrc)))) THEN
4236 got_var(idtvar(itrc))=.true.
4237 qck(ng)%pioTrc(itrc)%vd=var_desc(i)
4238 qck(ng)%pioTrc(itrc)%dkind=pio_fout
4239 qck(ng)%pioTrc(itrc)%gtype=r3dvar
4240 ELSE IF (trim(var_name(i)).eq. &
4241 & trim(vname(1,idsurt(itrc)))) THEN
4242 got_var(idsurt(itrc))=.true.
4243 qck(ng)%pioVar(idsurt(itrc))%vd=var_desc(i)
4244 qck(ng)%pioVar(idsurt(itrc))%dkind=pio_fout
4245 qck(ng)%pioVar(idsurt(itrc))%gtype=r2dvar
4246 END IF
4247 END DO
4248 DO itrc=1,nat
4249 IF (trim(var_name(i)).eq.trim(vname(1,idtsur(itrc)))) THEN
4250 got_var(idtsur(itrc))=.true.
4251 qck(ng)%pioVar(idtsur(itrc))%vd=var_desc(i)
4252 qck(ng)%pioVar(idtsur(itrc))%dkind=pio_fout
4253 qck(ng)%pioVar(idtsur(itrc))%gtype=r2dvar
4254 END IF
4255 END DO
4256# endif
4257 END DO
4258!
4259! Check if quicksave variables are available in input NetCDF
4260! file.
4261!
4262 IF (.not.got_var(idtime)) THEN
4263 IF (master) WRITE (stdout,70) trim(vname(1,idtime)), &
4264 & trim(ncname)
4265 exit_flag=3
4266 RETURN
4267 END IF
4268# if defined WET_DRY
4269 IF (.not.got_var(idpwet)) THEN
4270 IF (master) WRITE (stdout,70) trim(vname(1,idpwet)), &
4271 & trim(ncname)
4272 exit_flag=3
4273 RETURN
4274 END IF
4275 IF (.not.got_var(idrwet)) THEN
4276 IF (master) WRITE (stdout,70) trim(vname(1,idrwet)), &
4277 & trim(ncname)
4278 exit_flag=3
4279 RETURN
4280 END IF
4281 IF (.not.got_var(iduwet)) THEN
4282 IF (master) WRITE (stdout,70) trim(vname(1,iduwet)), &
4283 & trim(ncname)
4284 exit_flag=3
4285 RETURN
4286 END IF
4287 IF (.not.got_var(idvwet)) THEN
4288 IF (master) WRITE (stdout,70) trim(vname(1,idvwet)), &
4289 & trim(ncname)
4290 exit_flag=3
4291 RETURN
4292 END IF
4293# endif
4294# ifdef SOLVE3D
4295 IF (.not.got_var(idpthr).and.qout(idpthr,ng)) THEN
4296 IF (master) WRITE (stdout,70) trim(vname(1,idpthr)), &
4297 & trim(ncname)
4298 exit_flag=3
4299 RETURN
4300 END IF
4301 IF (.not.got_var(idpthu).and.qout(idpthu,ng)) THEN
4302 IF (master) WRITE (stdout,70) trim(vname(1,idpthu)), &
4303 & trim(ncname)
4304 exit_flag=3
4305 RETURN
4306 END IF
4307 IF (.not.got_var(idpthv).and.qout(idpthv,ng)) THEN
4308 IF (master) WRITE (stdout,70) trim(vname(1,idpthv)), &
4309 & trim(ncname)
4310 exit_flag=3
4311 RETURN
4312 END IF
4313 IF (.not.got_var(idpthw).and.qout(idpthw,ng)) THEN
4314 IF (master) WRITE (stdout,70) trim(vname(1,idpthw)), &
4315 & trim(ncname)
4316 exit_flag=3
4317 RETURN
4318 END IF
4319# endif
4320 IF (.not.got_var(idfsur).and.qout(idfsur,ng)) THEN
4321 IF (master) WRITE (stdout,70) trim(vname(1,idfsur)), &
4322 & trim(ncname)
4323 exit_flag=3
4324 RETURN
4325 END IF
4326 IF (.not.got_var(idubar).and.qout(idubar,ng)) THEN
4327 IF (master) WRITE (stdout,70) trim(vname(1,idubar)), &
4328 & trim(ncname)
4329 exit_flag=3
4330 RETURN
4331 END IF
4332 IF (.not.got_var(idvbar).and.qout(idvbar,ng)) THEN
4333 IF (master) WRITE (stdout,70) trim(vname(1,idvbar)), &
4334 & trim(ncname)
4335 exit_flag=3
4336 RETURN
4337 END IF
4338 IF (.not.got_var(idu2de).and.qout(idu2de,ng)) THEN
4339 IF (master) WRITE (stdout,70) trim(vname(1,idu2de)), &
4340 & trim(ncname)
4341 exit_flag=3
4342 RETURN
4343 END IF
4344 IF (.not.got_var(idv2dn).and.qout(idv2dn,ng)) THEN
4345 IF (master) WRITE (stdout,70) trim(vname(1,idv2dn)), &
4346 & trim(ncname)
4347 exit_flag=3
4348 RETURN
4349 END IF
4350# ifdef SOLVE3D
4351 IF (.not.got_var(iduvel).and.qout(iduvel,ng)) THEN
4352 IF (master) WRITE (stdout,70) trim(vname(1,iduvel)), &
4353 & trim(ncname)
4354 exit_flag=3
4355 RETURN
4356 END IF
4357 IF (.not.got_var(idvvel).and.qout(idvvel,ng)) THEN
4358 IF (master) WRITE (stdout,70) trim(vname(1,idvvel)), &
4359 & trim(ncname)
4360 exit_flag=3
4361 RETURN
4362 END IF
4363 IF (.not.got_var(idusur).and.qout(idusur,ng)) THEN
4364 IF (master) WRITE (stdout,70) trim(vname(1,idusur)), &
4365 & trim(ncname)
4366 exit_flag=3
4367 RETURN
4368 END IF
4369 IF (.not.got_var(idvsur).and.qout(idvsur,ng)) THEN
4370 IF (master) WRITE (stdout,70) trim(vname(1,idvsur)), &
4371 & trim(ncname)
4372 exit_flag=3
4373 RETURN
4374 END IF
4375 IF (.not.got_var(idu3de).and.qout(idu3de,ng)) THEN
4376 IF (master) WRITE (stdout,70) trim(vname(1,idu3de)), &
4377 & trim(ncname)
4378 exit_flag=3
4379 RETURN
4380 END IF
4381 IF (.not.got_var(idv3dn).and.qout(idv3dn,ng)) THEN
4382 IF (master) WRITE (stdout,70) trim(vname(1,idv3dn)), &
4383 & trim(ncname)
4384 exit_flag=3
4385 RETURN
4386 END IF
4387 IF (.not.got_var(idusue).and.qout(idusue,ng)) THEN
4388 IF (master) WRITE (stdout,70) trim(vname(1,idusue)), &
4389 & trim(ncname)
4390 exit_flag=3
4391 RETURN
4392 END IF
4393 IF (.not.got_var(idvsun).and.qout(idvsun,ng)) THEN
4394 IF (master) WRITE (stdout,70) trim(vname(1,idvsun)), &
4395 & trim(ncname)
4396 exit_flag=3
4397 RETURN
4398 END IF
4399 IF (.not.got_var(idwvel).and.qout(idwvel,ng)) THEN
4400 IF (master) WRITE (stdout,70) trim(vname(1,idwvel)), &
4401 & trim(ncname)
4402 exit_flag=3
4403 RETURN
4404 END IF
4405 IF (.not.got_var(idovel).and.qout(idovel,ng)) THEN
4406 IF (master) WRITE (stdout,70) trim(vname(1,idovel)), &
4407 & trim(ncname)
4408 exit_flag=3
4409 RETURN
4410 END IF
4411 IF (.not.got_var(iddano).and.qout(iddano,ng)) THEN
4412 IF (master) WRITE (stdout,70) trim(vname(1,iddano)), &
4413 & trim(ncname)
4414 exit_flag=3
4415 RETURN
4416 END IF
4417# ifdef LMD_SKPP
4418 IF (.not.got_var(idhsbl).and.qout(idhsbl,ng)) THEN
4419 IF (master) WRITE (stdout,70) trim(vname(1,idhsbl)), &
4420 & trim(ncname)
4421 exit_flag=3
4422 RETURN
4423 END IF
4424# endif
4425# ifdef LMD_BKPP
4426 IF (.not.got_var(idhbbl).and.qout(idhbbl,ng)) THEN
4427 IF (master) WRITE (stdout,70) trim(vname(1,idhbbl)), &
4428 & trim(ncname)
4429 exit_flag=3
4430 RETURN
4431 END IF
4432# endif
4433 IF (.not.got_var(idvvis).and.qout(idvvis,ng)) THEN
4434 IF (master) WRITE (stdout,70) trim(vname(1,idvvis)), &
4435 & trim(ncname)
4436 exit_flag=3
4437 RETURN
4438 END IF
4439 IF (.not.got_var(idtdif).and.qout(idtdif,ng)) THEN
4440 IF (master) WRITE (stdout,70) trim(vname(1,idtdif)), &
4441 & trim(ncname)
4442 exit_flag=3
4443 RETURN
4444 END IF
4445# ifdef SALINITY
4446 IF (.not.got_var(idsdif).and.qout(idsdif,ng)) THEN
4447 IF (master) WRITE (stdout,70) trim(vname(1,idsdif)), &
4448 & trim(ncname)
4449 exit_flag=3
4450 RETURN
4451 END IF
4452# endif
4453# if defined GLS_MIXING || defined MY25_MIXING
4454 IF (.not.got_var(idmtke).and.qout(idmtke,ng)) THEN
4455 IF (master) WRITE (stdout,70) trim(vname(1,idmtke)), &
4456 & trim(ncname)
4457 exit_flag=3
4458 RETURN
4459 END IF
4460 IF (.not.got_var(idmtls).and.qout(idmtls,ng)) THEN
4461 IF (master) WRITE (stdout,70) trim(vname(1,idmtls)), &
4462 & trim(ncname)
4463 exit_flag=3
4464 RETURN
4465 END IF
4466# endif
4467# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
4468 IF (.not.got_var(idpair).and.qout(idpair,ng)) THEN
4469 IF (master) WRITE (stdout,70) trim(vname(1,idpair)), &
4470 & trim(ncname)
4471 exit_flag=3
4472 RETURN
4473 END IF
4474# endif
4475# if defined BULK_FLUXES || defined ECOSIM
4476 IF (.not.got_var(iduair).and.qout(iduair,ng)) THEN
4477 IF (master) WRITE (stdout,70) trim(vname(1,iduair)), &
4478 & trim(ncname)
4479 exit_flag=3
4480 RETURN
4481 END IF
4482 IF (.not.got_var(idvair).and.qout(idvair,ng)) THEN
4483 IF (master) WRITE (stdout,70) trim(vname(1,idvair)), &
4484 & trim(ncname)
4485 exit_flag=3
4486 RETURN
4487 END IF
4488 IF (.not.got_var(iduaie).and.qout(iduaie,ng)) THEN
4489 IF (master) WRITE (stdout,70) trim(vname(1,iduaie)), &
4490 & trim(ncname)
4491 exit_flag=3
4492 RETURN
4493 END IF
4494 IF (.not.got_var(idvain).and.qout(idvain,ng)) THEN
4495 IF (master) WRITE (stdout,70) trim(vname(1,idvain)), &
4496 & trim(ncname)
4497 exit_flag=3
4498 RETURN
4499 END IF
4500# endif
4501# if defined BULK_FLUXES || defined FRC_COUPLING
4502 IF (.not.got_var(idlhea).and.qout(idlhea,ng)) THEN
4503 IF (master) WRITE (stdout,70) trim(vname(1,idlhea)), &
4504 & trim(ncname)
4505 exit_flag=3
4506 RETURN
4507 END IF
4508 IF (.not.got_var(idshea).and.qout(idshea,ng)) THEN
4509 IF (master) WRITE (stdout,70) trim(vname(1,idshea)), &
4510 & trim(ncname)
4511 exit_flag=3
4512 RETURN
4513 END IF
4514 IF (.not.got_var(idlrad).and.qout(idlrad,ng)) THEN
4515 IF (master) WRITE (stdout,70) trim(vname(1,idlrad)), &
4516 & trim(ncname)
4517 exit_flag=3
4518 RETURN
4519 END IF
4520# endif
4521# ifdef BULK_FLUXES
4522 IF (.not.got_var(idtair).and.qout(idtair,ng)) THEN
4523 IF (master) WRITE (stdout,70) trim(vname(1,idtair)), &
4524 & trim(ncname)
4525 exit_flag=3
4526 RETURN
4527 END IF
4528# ifdef EMINUSP
4529 IF (.not.got_var(idevap).and.qout(idevap,ng)) THEN
4530 IF (master) WRITE (stdout,70) trim(vname(1,idevap)), &
4531 & trim(ncname)
4532 exit_flag=3
4533 RETURN
4534 END IF
4535 IF (.not.got_var(idrain).and.qout(idrain,ng)) THEN
4536 IF (master) WRITE (stdout,70) trim(vname(1,idrain)), &
4537 & trim(ncname)
4538 exit_flag=3
4539 RETURN
4540 END IF
4541# endif
4542# endif
4543 IF (.not.got_var(idempf).and.qout(idempf,ng)) THEN
4544 IF (master) WRITE (stdout,70) trim(vname(1,idempf)), &
4545 & trim(ncname)
4546 exit_flag=3
4547 RETURN
4548 END IF
4549# ifdef SHORTWAVE
4550 IF (.not.got_var(idsrad).and.qout(idsrad,ng)) THEN
4551 IF (master) WRITE (stdout,70) trim(vname(1,idsrad)), &
4552 & trim(ncname)
4553 exit_flag=3
4554 RETURN
4555 END IF
4556# endif
4557# endif
4558 IF (.not.got_var(idusms).and.qout(idusms,ng)) THEN
4559 IF (master) WRITE (stdout,70) trim(vname(1,idusms)), &
4560 & trim(ncname)
4561 exit_flag=3
4562 RETURN
4563 END IF
4564 IF (.not.got_var(idvsms).and.qout(idvsms,ng)) THEN
4565 IF (master) WRITE (stdout,70) trim(vname(1,idvsms)), &
4566 & trim(ncname)
4567 exit_flag=3
4568 RETURN
4569 END IF
4570 IF (.not.got_var(idubms).and.qout(idubms,ng)) THEN
4571 IF (master) WRITE (stdout,70) trim(vname(1,idubms)), &
4572 & trim(ncname)
4573 exit_flag=3
4574 RETURN
4575 END IF
4576 IF (.not.got_var(idvbms).and.qout(idvbms,ng)) THEN
4577 IF (master) WRITE (stdout,70) trim(vname(1,idvbms)), &
4578 & trim(ncname)
4579 exit_flag=3
4580 RETURN
4581 END IF
4582# ifdef SOLVE3D
4583 DO itrc=1,nt(ng)
4584 IF (.not.got_var(idtvar(itrc)).and.qout(idtvar(itrc),ng)) THEN
4585 IF (master) WRITE (stdout,70) trim(vname(1,idtvar(itrc))), &
4586 & trim(ncname)
4587 exit_flag=3
4588 RETURN
4589 END IF
4590 IF (.not.got_var(idsurt(itrc)).and.qout(idsurt(itrc),ng)) THEN
4591 IF (master) WRITE (stdout,70) trim(vname(1,idsurt(itrc))), &
4592 & trim(ncname)
4593 exit_flag=3
4594 RETURN
4595 END IF
4596 END DO
4597 DO itrc=1,nat
4598 IF (.not.got_var(idtsur(itrc)).and.qout(idtsur(itrc),ng)) THEN
4599 IF (master) WRITE (stdout,70) trim(vname(1,idtsur(itrc))), &
4600 & trim(ncname)
4601 exit_flag=3
4602 RETURN
4603 END IF
4604 END DO
4605# endif
4606
4607# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
4608!
4609! Scan bottom boundary layer model and waves variables from input
4610! NetCDF and activate switches for quicksave variables. Get variable
4611! IDs.
4612!
4613 CALL bbl_def_pio (ng, model, ldef, qout, qck)
4614 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4615# endif
4616
4617# if defined ICE_MODEL && defined SOLVE3D
4618!
4619! Scan sea-ice variables from input NetCDF and activate switches for
4620! quicksave variables. Get variable IDs.
4621!
4622 CALL ice_def_pio (ng, model, ldef, qout, qck)
4623# endif
4624
4625# if defined SEDIMENT && defined SOLVE3D
4626!
4627! Scan sediment model variables from input NetCDF and activate
4628! switches for quicksave variables. Get variable IDs.
4629!
4630 CALL sediment_def_pio (ng, model, ldef, qout, qck)
4631 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4632# endif
4633
4634# if defined WEC_VF && defined SOLVE3D
4635!
4636! Scan Waves Effect on Currents variables from input NetCDF and
4637! activate switches for quicksave variables. Get variable IDs.
4638!
4639 CALL wec_def_pio (ng, model, ldef, qout, qck)
4640 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4641# endif
4642!
4643! Set unlimited time record dimension to the appropriate value.
4644!
4645 IF (ndefqck(ng).gt.0) THEN
4646 qck(ng)%Rindex=((ntstart(ng)-1)- &
4647 & ndefqck(ng)*((ntstart(ng)-1)/ndefqck(ng)))/ &
4648 & nqck(ng)
4649 ELSE
4650 qck(ng)%Rindex=(ntstart(ng)-1)/nqck(ng)
4651 END IF
4652 qck(ng)%Rindex=min(qck(ng)%Rindex,rec_size)
4653 END IF query
4654!
4655 10 FORMAT (2x,'DEF_QUICK_PIO - creating quicksave file,',t56, &
4656 & 'Grid ',i2.2,': ',a)
4657 20 FORMAT (2x,'DEF_QUICK_PIO - inquiring quicksave file,',t56, &
4658 & 'Grid ',i2.2,': ',a)
4659 30 FORMAT (/,' DEF_QUICK_PIO - unable to create quicksave NetCDF', &
4660 & ' file:', 1x,a)
4661 40 FORMAT ('time dependent',1x,a)
4662 50 FORMAT (1pe11.4,1x,'millimeter')
4663 60 FORMAT (/,' DEF_QUICK_PIO - unable to open quicksave NetCDF', &
4664 & ' file: ',a)
4665 70 FORMAT (/,' DEF_QUICK_PIO - unable to find variable: ',a,2x, &
4666 & ' in quicksave NetCDF file: ',a)
4667!
4668 RETURN
integer, parameter pio_fout
type(var_desc_t), dimension(:), pointer var_desc
subroutine, public pio_netcdf_create(ng, model, ncname, piofile)
subroutine, public pio_netcdf_inq_var(ng, model, ncname, piofile, myvarname, searchvar, piovar, nvardim, nvaratt)
subroutine, public pio_netcdf_open(ng, model, ncname, omode, piofile)
subroutine, public pio_netcdf_check_dim(ng, model, ncname, piofile)
integer, parameter pio_tout
subroutine, public pio_netcdf_enddef(ng, model, ncname, piofile)

References bbl_output_mod::bbl_def_pio(), mod_scalars::exit_flag, strings_mod::founderror(), mod_ncparam::iddano, mod_ncparam::idempf, mod_ncparam::idevap, mod_ncparam::idfsur, mod_ncparam::idhbbl, mod_ncparam::idhsbl, mod_ncparam::idlhea, mod_ncparam::idlrad, mod_ncparam::idmtke, mod_ncparam::idmtls, mod_ncparam::idovel, mod_ncparam::idpair, mod_ncparam::idpthr, mod_ncparam::idpthu, mod_ncparam::idpthv, mod_ncparam::idpthw, mod_ncparam::idpwet, mod_ncparam::idrain, mod_ncparam::idrwet, mod_ncparam::idsdif, mod_sediment::idsed, mod_ncparam::idshea, mod_ncparam::idsrad, mod_ncparam::idsurt, mod_ncparam::idtair, mod_ncparam::idtdif, mod_ncparam::idtime, mod_ncparam::idtsur, mod_ncparam::idtvar, mod_ncparam::idu2de, mod_ncparam::idu3de, mod_ncparam::iduaie, mod_ncparam::iduair, mod_ncparam::idubar, mod_ncparam::idubms, mod_ncparam::idusms, mod_ncparam::idusue, mod_ncparam::idusur, mod_ncparam::iduvel, mod_ncparam::iduwet, mod_ncparam::idv2dn, mod_ncparam::idv3dn, mod_ncparam::idvain, mod_ncparam::idvair, mod_ncparam::idvbar, mod_ncparam::idvbms, mod_ncparam::idvsms, mod_ncparam::idvsun, mod_ncparam::idvsur, mod_ncparam::idvvel, mod_ncparam::idvvis, mod_ncparam::idvwet, mod_ncparam::idwvel, mod_ncparam::iinfo, mod_param::iobounds, mod_scalars::isalt, mod_scalars::itemp, mod_parallel::master, mod_param::n, mod_param::nat, mod_biology::nbac, mod_biology::nbands, mod_param::nbed, mod_scalars::nbrec, mod_scalars::ndefqck, mod_biology::ndom, mod_biology::nfec, mod_scalars::noerror, mod_biology::nphy, mod_scalars::nqck, mod_param::nst, mod_fourdvar::nstatevar, mod_param::nt, mod_scalars::ntstart, mod_ncparam::nv, mod_param::p2dvar, mod_pio_netcdf::pio_fout, mod_pio_netcdf::pio_netcdf_check_dim(), mod_pio_netcdf::pio_netcdf_create(), mod_pio_netcdf::pio_netcdf_enddef(), mod_pio_netcdf::pio_netcdf_inq_var(), mod_pio_netcdf::pio_netcdf_open(), mod_pio_netcdf::pio_tout, mod_iounits::qck, mod_ncparam::qout, mod_param::r2dvar, mod_param::r3dvar, mod_scalars::rclock, mod_sediment::sd50, sediment_output_mod::sediment_def_pio(), mod_iounits::sourcefile, mod_iounits::stdout, mod_param::u2dvar, mod_param::u3dvar, mod_param::v2dvar, mod_param::v3dvar, mod_pio_netcdf::var_desc, mod_ncparam::vname, and mod_param::w3dvar.

Referenced by def_quick().

Here is the call graph for this function:
Here is the caller graph for this function: