ROMS
Loading...
Searching...
No Matches
def_quick.F
Go to the documentation of this file.
1#include "cppdefs.h"
3!
4!git $Id$
5!================================================== Hernan G. Arango ===
6! Copyright (c) 2002-2025 The ROMS Group !
7! Licensed under a MIT/X style license !
8! See License_ROMS.md !
9!=======================================================================
10! !
11! This module creates output QUICKSAVE file using either the standard !
12! NetCDF library or the Parallel-IO (PIO) library. It defines its !
13! dimensions, attributes, and variables. !
14! !
15!=======================================================================
16!
17 USE mod_param
18 USE mod_parallel
19#ifdef BIOLOGY
20 USE mod_biology
21#endif
22#ifdef FOUR_DVAR
23 USE mod_fourdvar
24#endif
25 USE mod_iounits
26 USE mod_ncparam
27 USE mod_scalars
28#ifdef SEDIMENT
29 USE mod_sediment
30#endif
31!
32#if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
34# if defined PIO_LIB && defined DISTRIBUTE
35 USE bbl_output_mod, ONLY : bbl_def_pio
36# endif
37#endif
38 USE def_dim_mod, ONLY : def_dim
39 USE def_info_mod, ONLY : def_info
40 USE def_var_mod, ONLY : def_var
41#if defined ICE_MODEL && defined SOLVE3D
42 USE ice_output_mod, ONLY : ice_def_nf90
43# if defined PIO_LIB && defined DISTRIBUTE
44 USE ice_output_mod, ONLY : ice_def_pio
45# endif
46#endif
47#if defined SEDIMENT && defined SOLVE3D
49# if defined PIO_LIB && defined DISTRIBUTE
51# endif
52#endif
53 USE strings_mod, ONLY : founderror
54#if defined WEC_VF && defined SOLVE3D
55 USE wec_output_mod, ONLY : wec_def_nf90
56# if defined PIO_LIB && defined DISTRIBUTE
57 USE wec_output_mod, ONLY : wec_def_pio
58# endif
59#endif
60 USE wrt_info_mod, ONLY : wrt_info
61!
62 implicit none
63!
64 PUBLIC :: def_quick
65 PRIVATE :: def_quick_nf90
66#if defined PIO_LIB && defined DISTRIBUTE
67 PRIVATE :: def_quick_pio
68#endif
69!
70 CONTAINS
71!
72!***********************************************************************
73 SUBROUTINE def_quick (ng, ldef)
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
109 END SUBROUTINE def_quick
110!
111!***********************************************************************
112 SUBROUTINE def_quick_nf90 (ng, model, ldef)
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
2233 END SUBROUTINE def_quick_nf90
2234
2235#if defined PIO_LIB && defined DISTRIBUTE
2236!
2237!***********************************************************************
2238 SUBROUTINE def_quick_pio (ng, model, ldef)
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
4669 END SUBROUTINE def_quick_pio
4670#endif
4671
4672 END MODULE def_quick_mod
subroutine, public bbl_def_nf90(ng, model, ldef, varout, s, t2dgrd, u2dgrd, v2dgrd)
Definition bbl_output.F:83
subroutine, public bbl_def_pio(ng, model, ldef, varout, s, t2dgrd, u2dgrd, v2dgrd)
subroutine, private def_quick_nf90(ng, model, ldef)
Definition def_quick.F:113
subroutine, public def_quick(ng, ldef)
Definition def_quick.F:74
subroutine, private def_quick_pio(ng, model, ldef)
Definition def_quick.F:2239
integer, parameter nfec
Definition ecosim_mod.h:204
integer, parameter nbac
Definition ecosim_mod.h:202
integer, parameter ndom
Definition ecosim_mod.h:203
integer, parameter nbands
Definition ecosim_mod.h:201
integer, parameter nphy
Definition ecosim_mod.h:205
integer, dimension(:), allocatable nstatevar
type(t_io), dimension(:), allocatable qck
integer stdout
character(len=256) sourcefile
integer iddano
integer idvair
integer idevap
integer, parameter io_nf90
Definition mod_ncparam.F:95
integer idubar
integer idwvel
integer idvvel
integer idhsbl
integer idvsur
integer idvsms
integer, parameter nv
integer idusue
integer idpthw
integer, parameter io_pio
Definition mod_ncparam.F:96
integer, dimension(:), allocatable idsurt
integer idpair
integer idrwet
integer idv2dn
integer idsdif
integer idvsun
integer, dimension(:), allocatable idtsur
integer idempf
integer idvain
integer idtdif
integer idfsur
integer, dimension(:), allocatable idtvar
integer idhbbl
integer idusur
integer idvbms
integer iduair
integer idmtke
integer iduvel
integer idv3dn
logical, dimension(:,:), allocatable qout
integer idovel
integer iduwet
character(len=maxlen), dimension(6, 0:nv) vname
integer idtime
integer idshea
integer, dimension(:,:,:), allocatable iinfo
integer idpwet
integer idlrad
integer idpthu
integer idusms
integer, parameter ndimid
integer idvvis
integer idu3de
integer idpthv
integer idu2de
integer idlhea
integer idrain
integer idubms
integer idvwet
integer idsrad
integer idmtls
integer iduaie
integer idpthr
integer idtair
integer idvbar
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)
logical master
integer nat
Definition mod_param.F:499
integer, parameter inlm
Definition mod_param.F:662
integer nbed
Definition mod_param.F:517
integer, dimension(:), allocatable n
Definition mod_param.F:479
integer, parameter r3dvar
Definition mod_param.F:721
type(t_iobounds), dimension(:), allocatable iobounds
Definition mod_param.F:282
integer, parameter u3dvar
Definition mod_param.F:722
integer, parameter u2dvar
Definition mod_param.F:718
integer, parameter w3dvar
Definition mod_param.F:724
integer, parameter p2dvar
Definition mod_param.F:716
integer, dimension(:), allocatable nt
Definition mod_param.F:489
integer, parameter r2dvar
Definition mod_param.F:717
integer, parameter v2dvar
Definition mod_param.F:719
integer nst
Definition mod_param.F:521
integer, parameter v3dvar
Definition mod_param.F:723
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)
integer, dimension(:), allocatable nqck
type(t_clock) rclock
integer exit_flag
integer, dimension(:), allocatable ndefqck
integer isalt
integer itemp
integer, dimension(:), allocatable ntstart
integer, dimension(:), allocatable nbrec
integer noerror
integer, dimension(:), allocatable idsed
real(r8), dimension(:,:), allocatable sd50
subroutine, public sediment_def_pio(ng, model, ldef, varout, s, t2dgrd, u2dgrd, v2dgrd, t3dgrd, u3dgrd, v3dgrd, w3dgrd)
subroutine, public sediment_def_nf90(ng, model, ldef, varout, s, t2dgrd, u2dgrd, v2dgrd, b3dgrd)
logical function, public founderror(flag, noerr, line, routine)
Definition strings.F:52