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

Functions/Subroutines

subroutine, public def_avg (ng, ldef)
 
subroutine, private def_avg_nf90 (ng, model, ldef)
 
subroutine, private def_avg_pio (ng, model, ldef)
 

Function/Subroutine Documentation

◆ def_avg()

subroutine, public def_avg_mod::def_avg ( integer, intent(in) ng,
logical, intent(in) ldef )

Definition at line 78 of file def_avg.F.

79!***********************************************************************
80!
81! Imported variable declarations.
82!
83 logical, intent(in) :: ldef
84!
85 integer, intent(in) :: ng
86!
87! Local variable declarations.
88!
89 integer :: model
90!
91 character (len=*), parameter :: MyFile = &
92 & __FILE__
93!
94!-----------------------------------------------------------------------
95! Create a new time-averaged file according to IO type.
96!-----------------------------------------------------------------------
97!
98# ifdef ADJOINT
99 model=iadm
100# else
101 model=inlm
102# endif
103!
104 SELECT CASE (avg(ng)%IOtype)
105 CASE (io_nf90)
106 CALL def_avg_nf90 (ng, model, ldef)
107
108# if defined PIO_LIB && defined DISTRIBUTE
109 CASE (io_pio)
110 CALL def_avg_pio (ng, model, ldef)
111# endif
112 CASE DEFAULT
113 IF (master) WRITE (stdout,10) avg(ng)%IOtype
114 exit_flag=3
115 END SELECT
116 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
117!
118 10 FORMAT (' DEF_AVG - Illegal output file type, io_type = ',i0, &
119 & /,11x,'Check KeyWord ''OUT_LIB'' in ''roms.in''.')
120!
121 RETURN

References mod_iounits::avg, def_avg_nf90(), def_avg_pio(), mod_scalars::exit_flag, strings_mod::founderror(), mod_param::iadm, mod_param::inlm, mod_ncparam::io_nf90, mod_ncparam::io_pio, mod_parallel::master, mod_scalars::noerror, and mod_iounits::stdout.

Referenced by ad_output(), output(), rp_output(), and tl_output().

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

◆ def_avg_nf90()

subroutine, private def_avg_mod::def_avg_nf90 ( integer, intent(in) ng,
integer, intent(in) model,
logical, intent(in) ldef )
private

Definition at line 125 of file def_avg.F.

126!***********************************************************************
127!
128 USE mod_netcdf
129!
130! Imported variable declarations.
131!
132 integer, intent(in) :: ng, model
133!
134 logical, intent(in) :: ldef
135!
136! Local variable declarations.
137!
138 logical :: got_var(NV)
139!
140 integer, parameter :: Natt = 25
141
142 integer :: i, ifield, itrc, j, nvd3, nvd4
143# if defined WRITE_WATER && defined MASKING
144 integer :: xy_pdim, xyz_pdim
145# endif
146 integer :: recdim, status
147
148 integer :: DimIDs(nDimID)
149 integer :: p2dgrd(3), t2dgrd(3), u2dgrd(3), v2dgrd(3)
150
151# ifdef SOLVE3D
152# ifdef SEDIMENT
153 integer :: b3dgrd(4)
154# endif
155 integer :: p3dgrd(4), t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
156# endif
157!
158 real(r8) :: Aval(6)
159!
160# ifdef ADJOINT
161 character (len=21) :: Prefix
162# else
163 character (len=13) :: Prefix
164# endif
165 character (len=256) :: ncname
166 character (len=MaxLen) :: Vinfo(Natt)
167
168 character (len=*), parameter :: MyFile = &
169 & __FILE__//", def_avg_nf90"
170!
171 sourcefile=myfile
172!
173!-----------------------------------------------------------------------
174! Set and report file name.
175!-----------------------------------------------------------------------
176!
177 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
178 ncname=avg(ng)%name
179!
180 IF (master) THEN
181 IF (ldef) THEN
182 WRITE (stdout,10) ng, trim(ncname)
183 ELSE
184 WRITE (stdout,20) ng, trim(ncname)
185 END IF
186 END IF
187!
188!=======================================================================
189! Create a new averages file.
190!=======================================================================
191!
192 define : IF (ldef) THEN
193 CALL netcdf_create (ng, model, trim(ncname), avg(ng)%ncid)
194 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
195 IF (master) WRITE (stdout,30) trim(ncname)
196 RETURN
197 END IF
198!
199!-----------------------------------------------------------------------
200! Define file dimensions.
201!-----------------------------------------------------------------------
202!
203 dimids=0
204!
205 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'xi_rho', &
206 & iobounds(ng)%xi_rho, dimids( 1))
207 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
208
209 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'xi_u', &
210 & iobounds(ng)%xi_u, dimids( 2))
211 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
212
213 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'xi_v', &
214 & iobounds(ng)%xi_v, dimids( 3))
215 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
216
217 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'xi_psi', &
218 & iobounds(ng)%xi_psi, dimids( 4))
219 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
220
221 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'eta_rho', &
222 & iobounds(ng)%eta_rho, dimids( 5))
223 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
224
225 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'eta_u', &
226 & iobounds(ng)%eta_u, dimids( 6))
227 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
228
229 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'eta_v', &
230 & iobounds(ng)%eta_v, dimids( 7))
231 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
232
233 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'eta_psi', &
234 & iobounds(ng)%eta_psi, dimids( 8))
235 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
236
237# if defined WRITE_WATER && defined MASKING
238 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'xy_rho', &
239 & iobounds(ng)%xy_rho, dimids(17))
240 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
241
242 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'xy_u', &
243 & iobounds(ng)%xy_u, dimids(18))
244 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
245
246 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'xy_v', &
247 & iobounds(ng)%xy_v, dimids(19))
248 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
249
250 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'xy_psi', &
251 & iobounds(ng)%xy_psi, xy_pdim)
252 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
253# endif
254
255# ifdef SOLVE3D
256# if defined WRITE_WATER && defined MASKING
257 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'xyz_rho', &
258 & iobounds(ng)%xy_rho*n(ng), dimids(20))
259 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
260
261 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'xyz_u', &
262 & iobounds(ng)%xy_u*n(ng), dimids(21))
263 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
264
265 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'xyz_v', &
266 & iobounds(ng)%xy_v*n(ng), dimids(22))
267 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
268
269 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'xyz_w', &
270 & iobounds(ng)%xy_rho*(n(ng)+1), dimids(23))
271 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
272
273 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'xyz_psi', &
274 & iobounds(ng)%xy_psi*n(ng), xyz_pdim)
275 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
276# endif
277
278 status=def_dim(ng, model, avg(ng)%ncid, ncname, 's_rho', &
279 & n(ng), dimids( 9))
280 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
281
282 status=def_dim(ng, model, avg(ng)%ncid, ncname, 's_w', &
283 & n(ng)+1, dimids(10))
284 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
285
286 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'tracer', &
287 & nt(ng), dimids(11))
288 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
289
290# ifdef SEDIMENT
291 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'NST', &
292 & nst, dimids(32))
293 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
294
295 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'Nbed', &
296 & nbed, dimids(16))
297 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
298
299# if defined WRITE_WATER && defined MASKING
300 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'xybed', &
301 & iobounds(ng)%xy_rho*nbed, dimids(24))
302 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
303# endif
304# endif
305
306# ifdef ECOSIM
307 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'Nbands', &
308 & nbands, dimids(33))
309 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
310
311 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'Nphy', &
312 & nphy, dimids(25))
313 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
314
315 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'Nbac', &
316 & nbac, dimids(26))
317 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
318
319 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'Ndom', &
320 & ndom, dimids(27))
321 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
322
323 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'Nfec', &
324 & nfec, dimids(28))
325 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
326# endif
327# endif
328
329 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'boundary', &
330 & 4, dimids(14))
331 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
332
333# ifdef FOUR_DVAR
334 status=def_dim(ng, model, avg(ng)%ncid, ncname, 'Nstate', &
335 & nstatevar(ng), dimids(29))
336 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
337# endif
338
339 status=def_dim(ng, model, avg(ng)%ncid, ncname, &
340 & trim(adjustl(vname(5,idtime))), &
341 & nf90_unlimited, dimids(12))
342 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
343
344 recdim=dimids(12)
345!
346! Set number of dimensions for output variables.
347!
348# if defined WRITE_WATER && defined MASKING
349 nvd3=2
350 nvd4=2
351# else
352 nvd3=3
353 nvd4=4
354# endif
355!
356! Define dimension vectors for staggered tracer type variables.
357!
358# if defined WRITE_WATER && defined MASKING
359 t2dgrd(1)=dimids(17)
360 t2dgrd(2)=dimids(12)
361# ifdef SOLVE3D
362 t3dgrd(1)=dimids(20)
363 t3dgrd(2)=dimids(12)
364# endif
365# else
366 t2dgrd(1)=dimids( 1)
367 t2dgrd(2)=dimids( 5)
368 t2dgrd(3)=dimids(12)
369# ifdef SOLVE3D
370 t3dgrd(1)=dimids( 1)
371 t3dgrd(2)=dimids( 5)
372 t3dgrd(3)=dimids( 9)
373 t3dgrd(4)=dimids(12)
374# endif
375# endif
376!
377! Define dimension vectors for staggered u-momentum type variables.
378!
379# if defined WRITE_WATER && defined MASKING
380 u2dgrd(1)=dimids(18)
381 u2dgrd(2)=dimids(12)
382# ifdef SOLVE3D
383 u3dgrd(1)=dimids(21)
384 u3dgrd(2)=dimids(12)
385# endif
386# else
387 u2dgrd(1)=dimids( 2)
388 u2dgrd(2)=dimids( 6)
389 u2dgrd(3)=dimids(12)
390# ifdef SOLVE3D
391 u3dgrd(1)=dimids( 2)
392 u3dgrd(2)=dimids( 6)
393 u3dgrd(3)=dimids( 9)
394 u3dgrd(4)=dimids(12)
395# endif
396# endif
397!
398! Define dimension vectors for staggered v-momentum type variables.
399!
400# if defined WRITE_WATER && defined MASKING
401 v2dgrd(1)=dimids(19)
402 v2dgrd(2)=dimids(12)
403# ifdef SOLVE3D
404 v3dgrd(1)=dimids(22)
405 v3dgrd(2)=dimids(12)
406# endif
407# else
408 v2dgrd(1)=dimids( 3)
409 v2dgrd(2)=dimids( 7)
410 v2dgrd(3)=dimids(12)
411# ifdef SOLVE3D
412 v3dgrd(1)=dimids( 3)
413 v3dgrd(2)=dimids( 7)
414 v3dgrd(3)=dimids( 9)
415 v3dgrd(4)=dimids(12)
416# endif
417# endif
418!
419! Define dimension vectors for staggered variables at PSI-points.
420!
421# if defined WRITE_WATER && defined MASKING
422 p2dgrd(1)=xy_pdim
423 p2dgrd(2)=dimids(12)
424# ifdef SOLVE3D
425 p3dgrd(1)=xyz_pdim
426 p3dgrd(2)=dimids(12)
427# endif
428# else
429 p2dgrd(1)=dimids( 4)
430 p2dgrd(2)=dimids( 8)
431 p2dgrd(3)=dimids(12)
432# ifdef SOLVE3D
433 p3dgrd(1)=dimids( 4)
434 p3dgrd(2)=dimids( 8)
435 p3dgrd(3)=dimids( 9)
436 p3dgrd(4)=dimids(12)
437# endif
438# endif
439# ifdef SOLVE3D
440!
441! Define dimension vector for staggered w-momentum type variables.
442!
443# if defined WRITE_WATER && defined MASKING
444 w3dgrd(1)=dimids(23)
445 w3dgrd(2)=dimids(12)
446# else
447 w3dgrd(1)=dimids( 1)
448 w3dgrd(2)=dimids( 5)
449 w3dgrd(3)=dimids(10)
450 w3dgrd(4)=dimids(12)
451# endif
452# ifdef SEDIMENT
453!
454! Define dimension vector for sediment bed layer type variables.
455!
456# if defined WRITE_WATER && defined MASKING
457 b3dgrd(1)=dimids(24)
458 b3dgrd(2)=dimids(12)
459# else
460 b3dgrd(1)=dimids( 1)
461 b3dgrd(2)=dimids( 5)
462 b3dgrd(3)=dimids(16)
463 b3dgrd(4)=dimids(12)
464# endif
465# endif
466# endif
467!
468! Initialize unlimited time record dimension.
469!
470 avg(ng)%Rindex=0
471!
472! Initialize local information variable arrays.
473!
474 DO i=1,natt
475 DO j=1,len(vinfo(1))
476 vinfo(i)(j:j)=' '
477 END DO
478 END DO
479 DO i=1,6
480 aval(i)=0.0_r8
481 END DO
482!
483! Set long name prefix string.
484!
485# ifdef ADJOINT
486!! Prefix='time-averaged adjoint'
487 prefix='adjoint'
488# else
489!! Prefix='time-averaged'
490 prefix=char(32) ! blank space
491# endif
492!
493!-----------------------------------------------------------------------
494! Define time-recordless information variables.
495!-----------------------------------------------------------------------
496!
497 CALL def_info (ng, model, avg(ng)%ncid, ncname, dimids)
498 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
499!
500!-----------------------------------------------------------------------
501! Define time-varying variables.
502!-----------------------------------------------------------------------
503!
504! Define model time.
505!
506 vinfo( 1)=vname(1,idtime)
507 WRITE (vinfo( 2),'(a,a)') 'averaged ', trim(vname(2,idtime))
508 WRITE (vinfo( 3),'(a,a)') 'seconds since ', trim(rclock%string)
509 vinfo( 4)=trim(rclock%calendar)
510 vinfo(14)=vname(4,idtime)
511 vinfo(21)=vname(6,idtime)
512 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idtime), &
513 & nf_tout, 1, (/recdim/), aval, vinfo, ncname, &
514 & setparaccess = .true.)
515 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
516!
517! Define free-surface.
518!
519 IF (aout(idfsur,ng)) THEN
520 vinfo( 1)=vname(1,idfsur)
521 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idfsur))
522 vinfo( 3)=vname(3,idfsur)
523 vinfo(14)=vname(4,idfsur)
524 vinfo(16)=vname(1,idtime)
525# if !defined WET_DRY && (defined WRITE_WATER && defined MASKING)
526 vinfo(20)='mask_rho'
527# endif
528 vinfo(21)=vname(6,idfsur)
529 vinfo(22)='coordinates'
530 aval(5)=real(iinfo(1,idfsur,ng),r8)
531 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idfsur), &
532 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
533 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
534 END IF
535
536# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
537!
538! Define detided free-surface.
539!
540 IF (aout(idfsud,ng)) THEN
541 vinfo( 1)=vname(1,idfsud)
542 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idfsud))
543 vinfo( 3)=vname(3,idfsud)
544 vinfo(14)=vname(4,idfsud)
545 vinfo(16)=vname(1,idtime)
546# if defined WRITE_WATER && defined MASKING
547 vinfo(20)='mask_rho'
548# endif
549 vinfo(21)=vname(6,idfsud)
550 vinfo(22)='coordinates'
551 aval(5)=real(iinfo(1,idfsud,ng),r8)
552 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idfsud), &
553 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
554 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
555 END IF
556# endif
557!
558! Define 2D momentum in the XI-direction.
559!
560 IF (aout(idubar,ng)) THEN
561 vinfo( 1)=vname(1,idubar)
562 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idubar))
563 vinfo( 3)=vname(3,idubar)
564 vinfo(14)=vname(4,idubar)
565 vinfo(16)=vname(1,idtime)
566# if defined WRITE_WATER && defined MASKING
567 vinfo(20)='mask_u'
568# endif
569 vinfo(21)=vname(6,idubar)
570 vinfo(22)='coordinates'
571 aval(5)=real(iinfo(1,idubar,ng),r8)
572 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idubar), &
573 & nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
574 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
575 END IF
576
577# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
578!
579! Define detided 2D momentum in the XI-direction.
580!
581 IF (aout(idu2dd,ng)) THEN
582 vinfo( 1)=vname(1,idu2dd)
583 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idu2dd))
584 vinfo( 3)=vname(3,idu2dd)
585 vinfo(14)=vname(4,idu2dd)
586 vinfo(16)=vname(1,idtime)
587# if defined WRITE_WATER && defined MASKING
588 vinfo(20)='mask_u'
589# endif
590 vinfo(21)=vname(6,idu2dd)
591 vinfo(22)='coordinates'
592 aval(5)=real(iinfo(1,idu2dd,ng),r8)
593 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idu2dd), &
594 & nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
595 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
596 END IF
597# endif
598!
599! Define 2D momentum in the ETA-direction.
600!
601 IF (aout(idvbar,ng)) THEN
602 vinfo( 1)=vname(1,idvbar)
603 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idvbar))
604 vinfo( 3)=vname(3,idvbar)
605 vinfo(14)=vname(4,idvbar)
606 vinfo(16)=vname(1,idtime)
607# if defined WRITE_WATER && defined MASKING
608 vinfo(20)='mask_v'
609# endif
610 vinfo(21)=vname(6,idvbar)
611 vinfo(22)='coordinates'
612 aval(5)=real(iinfo(1,idvbar,ng),r8)
613 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idvbar), &
614 & nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
615 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
616 END IF
617
618# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
619!
620! Define detided 2D momentum in the ETA-direction.
621!
622 IF (aout(idv2dd,ng)) THEN
623 vinfo( 1)=vname(1,idv2dd)
624 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idv2dd))
625 vinfo( 3)=vname(3,idv2dd)
626 vinfo(14)=vname(4,idv2dd)
627 vinfo(16)=vname(1,idtime)
628# if defined WRITE_WATER && defined MASKING
629 vinfo(20)='mask_v'
630# endif
631 vinfo(21)=vname(6,idv2dd)
632 vinfo(22)='coordinates'
633 aval(5)=real(iinfo(1,idv2dd,ng),r8)
634 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idv2dd), &
635 & nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
636 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
637 END IF
638# endif
639!
640! Define 2D Eastward momentum component at RHO-points.
641!
642 IF (aout(idu2de,ng)) THEN
643 vinfo( 1)=vname(1,idu2de)
644 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idu2de))
645 vinfo( 3)=vname(3,idu2de)
646 vinfo(14)=vname(4,idu2de)
647 vinfo(16)=vname(1,idtime)
648# if defined WRITE_WATER && defined MASKING
649 vinfo(20)='mask_rho'
650# endif
651 vinfo(21)=vname(6,idu2de)
652 vinfo(22)='coordinates'
653 aval(5)=real(iinfo(1,idu2de,ng),r8)
654 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idu2de), &
655 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
656 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
657 END IF
658!
659! Define 2D Northward momentum component at RHO-points.
660!
661 IF (aout(idv2dn,ng)) THEN
662 vinfo( 1)=vname(1,idv2dn)
663 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idv2dn))
664 vinfo( 3)=vname(3,idv2dn)
665 vinfo(14)=vname(4,idv2dn)
666 vinfo(16)=vname(1,idtime)
667# if defined WRITE_WATER && defined MASKING
668 vinfo(20)='mask_rho'
669# endif
670 vinfo(21)=vname(6,idv2dn)
671 vinfo(22)='coordinates'
672 aval(5)=real(iinfo(1,idv2dn,ng),r8)
673 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idv2dn), &
674 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
675 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
676 END IF
677
678# ifdef SOLVE3D
679# ifdef FORWARD_WRITE
680!
681! Define time-averaged mass fluxes for 3D momentum coupling.
682!
683 IF (aout(idufx1,ng)) THEN
684 vinfo( 1)=vname(1,idufx1)
685 vinfo( 2)=vname(2,idufx1)
686 vinfo( 3)=vname(3,idufx1)
687 vinfo(14)=vname(4,idufx1)
688 vinfo(16)=vname(1,idtime)
689# if defined WRITE_WATER && defined MASKING
690 vinfo(20)='mask_u'
691# endif
692 vinfo(21)=vname(6,idufx1)
693 vinfo(22)='coordinates'
694 aval(5)=real(u2dvar,r8)
695 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idufx1), &
696 & nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
697 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
698 END IF
699!
700 IF (aout(idufx2,ng)) THEN
701 vinfo( 1)=vname(1,idufx2)
702 vinfo( 2)=vname(2,idufx2)
703 vinfo( 3)=vname(3,idufx2)
704 vinfo(14)=vname(4,idufx2)
705 vinfo(16)=vname(1,idtime)
706# if defined WRITE_WATER && defined MASKING
707 vinfo(20)='mask_u'
708# endif
709 vinfo(21)=vname(6,idufx2)
710 vinfo(22)='coordinates'
711 aval(5)=real(u2dvar,r8)
712 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idufx2), &
713 & nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
714 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
715 END IF
716!
717 IF (aout(idvfx1,ng)) THEN
718 vinfo( 1)=vname(1,idvfx1)
719 vinfo( 2)=vname(2,idvfx1)
720 vinfo( 3)=vname(3,idvfx1)
721 vinfo(14)=vname(4,idvfx1)
722 vinfo(16)=vname(1,idtime)
723# if defined WRITE_WATER && defined MASKING
724 vinfo(20)='mask_v'
725# endif
726 vinfo(21)=vname(6,idvfx1)
727 vinfo(22)='coordinates'
728 aval(5)=real(v2dvar,r8)
729 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idvfx1), &
730 & nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
731 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
732 END IF
733!
734 IF (aout(idvfx2,ng)) THEN
735 vinfo( 1)=vname(1,idvfx2)
736 vinfo( 2)=vname(2,idvfx2)
737 vinfo( 3)=vname(3,idvfx2)
738 vinfo(14)=vname(4,idvfx2)
739 vinfo(16)=vname(1,idtime)
740# if defined WRITE_WATER && defined MASKING
741 vinfo(20)='mask_v'
742# endif
743 vinfo(21)=vname(6,idvfx2)
744 vinfo(22)='coordinates'
745 aval(5)=real(v2dvar,r8)
746 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idvfx2), &
747 & nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
748 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
749 END IF
750# endif
751!
752! Define 3D momentum component in the XI-direction.
753!
754 IF (aout(iduvel,ng)) THEN
755 vinfo( 1)=vname(1,iduvel)
756 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,iduvel))
757 vinfo( 3)=vname(3,iduvel)
758 vinfo(14)=vname(4,iduvel)
759 vinfo(16)=vname(1,idtime)
760# if defined WRITE_WATER && defined MASKING
761 vinfo(20)='mask_u'
762# endif
763 vinfo(21)=vname(6,iduvel)
764 vinfo(22)='coordinates'
765 aval(5)=real(iinfo(1,iduvel,ng),r8)
766 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(iduvel), &
767 & nf_fout, nvd4, u3dgrd, aval, vinfo, ncname)
768 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
769 END IF
770
771# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
772!
773! Define detided 3D momentum component in the XI-direction.
774!
775 IF (aout(idu3dd,ng)) THEN
776 vinfo( 1)=vname(1,idu3dd)
777 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idu3dd))
778 vinfo( 3)=vname(3,idu3dd)
779 vinfo(14)=vname(4,idu3dd)
780 vinfo(16)=vname(1,idtime)
781# if defined WRITE_WATER && defined MASKING
782 vinfo(20)='mask_u'
783# endif
784 vinfo(21)=vname(6,idu3dd)
785 vinfo(22)='coordinates'
786 aval(5)=real(iinfo(1,idu3dd,ng),r8)
787 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idu3dd), &
788 & nf_fout, nvd4, u3dgrd, aval, vinfo, ncname)
789 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
790 END IF
791# endif
792!
793! Define 3D momentum component in the ETA-direction.
794!
795 IF (aout(idvvel,ng)) THEN
796 vinfo( 1)=vname(1,idvvel)
797 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idvvel))
798 vinfo( 3)=vname(3,idvvel)
799 vinfo(14)=vname(4,idvvel)
800 vinfo(16)=vname(1,idtime)
801# if defined WRITE_WATER && defined MASKING
802 vinfo(20)='mask_v'
803# endif
804 vinfo(21)=vname(6,idvvel)
805 vinfo(22)='coordinates'
806 aval(5)=real(iinfo(1,idvvel,ng),r8)
807 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idvvel), &
808 & nf_fout, nvd4, v3dgrd, aval, vinfo, ncname)
809 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
810 END IF
811
812# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
813!
814! Define detided 3D momentum component in the ETA-direction.
815!
816 IF (aout(idv3dd,ng)) THEN
817 vinfo( 1)=vname(1,idv3dd)
818 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idv3dd))
819 vinfo( 3)=vname(3,idv3dd)
820 vinfo(14)=vname(4,idv3dd)
821 vinfo(16)=vname(1,idtime)
822# if defined WRITE_WATER && defined MASKING
823 vinfo(20)='mask_v'
824# endif
825 vinfo(21)=vname(6,idv3dd)
826 vinfo(22)='coordinates'
827 aval(5)=real(iinfo(1,idv3dd,ng),r8)
828 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idv3dd), &
829 & nf_fout, nvd4, v3dgrd, aval, vinfo, ncname)
830 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
831 END IF
832# endif
833!
834! Define 3D Eastward momentum component at RHO-points.
835!
836 IF (aout(idu3de,ng)) THEN
837 vinfo( 1)=vname(1,idu3de)
838 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idu3de))
839 vinfo( 3)=vname(3,idu3de)
840 vinfo(14)=vname(4,idu3de)
841 vinfo(16)=vname(1,idtime)
842# if defined WRITE_WATER && defined MASKING
843 vinfo(20)='mask_rho'
844# endif
845 vinfo(21)=vname(6,idu3de)
846 vinfo(22)='coordinates'
847 aval(5)=real(iinfo(1,idu3de,ng),r8)
848 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idu3de), &
849 & nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
850 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
851 END IF
852!
853! Define 3D Northward momentum component at RHO-points.
854!
855 IF (aout(idv3dn,ng)) THEN
856 vinfo( 1)=vname(1,idv3dn)
857 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idv3dn))
858 vinfo( 3)=vname(3,idv3dn)
859 vinfo(14)=vname(4,idv3dn)
860 vinfo(16)=vname(1,idtime)
861# if defined WRITE_WATER && defined MASKING
862 vinfo(20)='mask_rho'
863# endif
864 vinfo(21)=vname(6,idv3dn)
865 vinfo(22)='coordinates'
866 aval(5)=real(iinfo(1,idv3dn,ng),r8)
867 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idv3dn), &
868 & nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
869 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
870 END IF
871!
872! Define S-coordinate vertical "omega" momentum component.
873!
874 IF (aout(idovel,ng)) THEN
875 vinfo( 1)=vname(1,idovel)
876 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idovel))
877 vinfo( 3)=vname(3,idovel)
878 vinfo(14)=vname(4,idovel)
879 vinfo(16)=vname(1,idtime)
880# if defined WRITE_WATER && defined MASKING
881 vinfo(20)='mask_rho'
882# endif
883 vinfo(21)=vname(6,idovel)
884 vinfo(22)='coordinates'
885 aval(5)=real(iinfo(1,idovel,ng),r8)
886 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idovel), &
887 & nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
888 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
889 END IF
890!
891! Define "true" vertical momentum component.
892!
893 IF (aout(idwvel,ng)) THEN
894 vinfo( 1)=vname(1,idwvel)
895 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idwvel))
896 vinfo( 3)=vname(3,idwvel)
897 vinfo(14)=vname(4,idwvel)
898 vinfo(16)=vname(1,idtime)
899# if defined WRITE_WATER && defined MASKING
900 vinfo(20)='mask_rho'
901# endif
902 vinfo(21)=vname(6,idwvel)
903 vinfo(22)='coordinates'
904 aval(5)=real(iinfo(1,idwvel,ng),r8)
905 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idwvel), &
906 & nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
907 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
908 END IF
909!
910! Define tracer type variables.
911!
912 DO itrc=1,nt(ng)
913 IF (aout(idtvar(itrc),ng)) THEN
914 vinfo( 1)=vname(1,idtvar(itrc))
915 WRITE (vinfo( 2),'(a,1x,a)') prefix, &
916 & trim(vname(2,idtvar(itrc)))
917 vinfo( 3)=vname(3,idtvar(itrc))
918 vinfo(14)=vname(4,idtvar(itrc))
919 vinfo(16)=vname(1,idtime)
920# ifdef SEDIMENT
921 DO i=1,nst
922 IF (itrc.eq.idsed(i)) THEN
923 WRITE (vinfo(19),40) 1000.0_r8*sd50(i,ng)
924 END IF
925 END DO
926# endif
927# if defined WRITE_WATER && defined MASKING
928 vinfo(20)='mask_rho'
929# endif
930 vinfo(21)=vname(6,idtvar(itrc))
931 vinfo(22)='coordinates'
932 aval(5)=real(r3dvar,r8)
933 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Tid(itrc), &
934 & nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
935 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
936 END IF
937 END DO
938
939# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
940!
941! Define detided temperature and salinity.
942!
943 DO itrc=1,nat
944 IF (aout(idtrcd(itrc),ng)) THEN
945 ifield=idtrcd(itrc)
946 vinfo( 1)=vname(1,ifield)
947 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,ifield))
948 vinfo( 3)=vname(3,ifield)
949 vinfo(14)=vname(4,ifield)
950 vinfo(16)=vname(1,idtime)
951# if defined WRITE_WATER && defined MASKING
952 vinfo(20)='mask_rho'
953# endif
954 vinfo(21)=vname(6,ifield)
955 vinfo(22)='coordinates'
956 aval(5)=real(r3dvar,r8)
957 status=def_var(ng, model, avg(ng)%ncid, &
958 & avg(ng)%Vid(ifield), nf_fout, &
959 & nvd4, t3dgrd, aval, vinfo, ncname)
960 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
961 END IF
962 END DO
963# endif
964!
965! Define density anomaly.
966!
967 IF (aout(iddano,ng)) THEN
968 vinfo( 1)=vname(1,iddano)
969 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,iddano))
970 vinfo( 3)=vname(3,iddano)
971 vinfo(14)=vname(4,iddano)
972 vinfo(16)=vname(1,idtime)
973# if defined WRITE_WATER && defined MASKING
974 vinfo(20)='mask_rho'
975# endif
976 vinfo(21)=vname(6,iddano)
977 vinfo(22)='coordinates'
978 aval(5)=real(iinfo(1,iddano,ng),r8)
979 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(iddano), &
980 & nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
981 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
982 END IF
983
984# ifdef LMD_SKPP
985!
986! Define depth of surface boundary layer.
987!
988 IF (aout(idhsbl,ng)) THEN
989 vinfo( 1)=vname(1,idhsbl)
990 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idhsbl))
991 vinfo( 3)=vname(3,idhsbl)
992 vinfo(14)=vname(4,idhsbl)
993 vinfo(16)=vname(1,idtime)
994# if defined WRITE_WATER && defined MASKING
995 vinfo(20)='mask_rho'
996# endif
997 vinfo(21)=vname(6,idhsbl)
998 vinfo(22)='coordinates'
999 aval(5)=real(iinfo(1,idhsbl,ng),r8)
1000 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idhsbl), &
1001 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1002 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1003 END IF
1004# endif
1005# ifdef LMD_BKPP
1006!
1007! Define depth of bottom boundary layer.
1008!
1009 IF (aout(idhbbl,ng)) THEN
1010 vinfo( 1)=vname(1,idhbbl)
1011 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idhbbl))
1012 vinfo( 3)=vname(3,idhbbl)
1013 vinfo(14)=vname(4,idhbbl)
1014 vinfo(16)=vname(1,idtime)
1015# if defined WRITE_WATER && defined MASKING
1016 vinfo(20)='mask_rho'
1017# endif
1018 vinfo(21)=vname(6,idhbbl)
1019 vinfo(22)='coordinates'
1020 aval(5)=real(iinfo(1,idhbbl,ng),r8)
1021 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idhbbl), &
1022 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1023 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1024 END IF
1025# endif
1026# endif
1027!
1028! Define 2D potential vorticity.
1029!
1030 IF (aout(id2dpv,ng)) THEN
1031 vinfo( 1)=vname(1,id2dpv)
1032 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,id2dpv))
1033 vinfo( 3)=vname(3,id2dpv)
1034 vinfo(14)=vname(4,id2dpv)
1035 vinfo(16)=vname(1,idtime)
1036# if defined WRITE_WATER && defined MASKING
1037 vinfo(20)='mask_psi'
1038# endif
1039 vinfo(21)=vname(6,id2dpv)
1040 vinfo(22)='coordinates'
1041 aval(5)=real(p2dvar,r8)
1042 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(id2dpv), &
1043 & nf_fout, nvd3, p2dgrd, aval, vinfo, ncname)
1044 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1045 END IF
1046!
1047! Define 2D relative vorticity.
1048!
1049 IF (aout(id2drv,ng)) THEN
1050 vinfo( 1)=vname(1,id2drv)
1051 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,id2drv))
1052 vinfo( 3)=vname(3,id2drv)
1053 vinfo(14)=vname(4,id2drv)
1054 vinfo(16)=vname(1,idtime)
1055# if defined WRITE_WATER && defined MASKING
1056 vinfo(20)='mask_psi'
1057# endif
1058 vinfo(21)=vname(6,id2drv)
1059 vinfo(22)='coordinates'
1060 aval(5)=real(p2dvar,r8)
1061 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(id2drv), &
1062 & nf_fout, nvd3, p2dgrd, aval, vinfo, ncname)
1063 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1064 END IF
1065
1066# ifdef SOLVE3D
1067!
1068! Define 3D potential vorticity.
1069!
1070 IF (aout(id3dpv,ng)) THEN
1071 vinfo( 1)=vname(1,id3dpv)
1072 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,id3dpv))
1073 vinfo( 3)=vname(3,id3dpv)
1074 vinfo(14)=vname(4,id3dpv)
1075 vinfo(16)=vname(1,idtime)
1076# if defined WRITE_WATER && defined MASKING
1077 vinfo(20)='mask_psi'
1078# endif
1079 vinfo(21)=vname(6,id3dpv)
1080 vinfo(22)='coordinates'
1081 aval(5)=real(p3dvar,r8)
1082 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(id3dpv), &
1083 & nf_fout, nvd4, p3dgrd, aval, vinfo, ncname)
1084 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1085 END IF
1086!
1087! Define 3D relative vorticity.
1088!
1089 IF (aout(id3drv,ng)) THEN
1090 vinfo( 1)=vname(1,id3drv)
1091 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,id3drv))
1092 vinfo( 3)=vname(3,id3drv)
1093 vinfo(14)=vname(4,id3drv)
1094 vinfo(16)=vname(1,idtime)
1095# if defined WRITE_WATER && defined MASKING
1096 vinfo(20)='mask_psi'
1097# endif
1098 vinfo(21)=vname(6,id3drv)
1099 vinfo(22)='coordinates'
1100 aval(5)=real(p3dvar,r8)
1101 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(id3drv), &
1102 & nf_fout, nvd4, p3dgrd, aval, vinfo, ncname)
1103 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1104 END IF
1105# endif
1106!
1107! Define quadratic <zeta*zeta> term.
1108!
1109 IF (aout(idzzav,ng)) THEN
1110 vinfo( 1)=vname(1,idzzav)
1111 vinfo( 2)=trim(vname(2,idzzav))
1112 vinfo( 3)=vname(3,idzzav)
1113 vinfo(14)=vname(4,idzzav)
1114 vinfo(16)=vname(1,idtime)
1115# if defined WRITE_WATER && defined MASKING
1116 vinfo(20)='mask_rho'
1117# endif
1118 vinfo(21)=vname(6,idzzav)
1119 vinfo(22)='coordinates'
1120 aval(5)=real(r2dvar,r8)
1121 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idzzav), &
1122 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1123 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1124 END IF
1125!
1126! Define quadratic <ubar*ubar> term.
1127!
1128 IF (aout(idu2av,ng)) THEN
1129 vinfo( 1)=vname(1,idu2av)
1130 vinfo( 2)=trim(vname(2,idu2av))
1131 vinfo( 3)=vname(3,idu2av)
1132 vinfo(14)=vname(4,idu2av)
1133 vinfo(16)=vname(1,idtime)
1134# if defined WRITE_WATER && defined MASKING
1135 vinfo(20)='mask_u'
1136# endif
1137 vinfo(21)=vname(6,idu2av)
1138 vinfo(22)='coordinates'
1139 aval(5)=real(u2dvar,r8)
1140 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idu2av), &
1141 & nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
1142 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1143 END IF
1144!
1145! Define quadratic <vbar*vbar> term.
1146!
1147 IF (aout(idv2av,ng)) THEN
1148 vinfo( 1)=vname(1,idv2av)
1149 vinfo( 2)=trim(vname(2,idv2av))
1150 vinfo( 3)=vname(3,idv2av)
1151 vinfo(14)=vname(4,idv2av)
1152 vinfo(16)=vname(1,idtime)
1153# if defined WRITE_WATER && defined MASKING
1154 vinfo(20)='mask_v'
1155# endif
1156 vinfo(21)=vname(6,idv2av)
1157 vinfo(22)='coordinates'
1158 aval(5)=real(v2dvar,r8)
1159 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idv2av), &
1160 & nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
1161 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1162 END IF
1163
1164# ifdef SOLVE3D
1165!
1166! Define u-volume flux.
1167!
1168 IF (aout(idhuav,ng)) THEN
1169 vinfo( 1)=vname(1,idhuav)
1170 vinfo( 2)=trim(vname(2,idhuav))
1171 vinfo( 3)=vname(3,idhuav)
1172 vinfo(14)=vname(4,idhuav)
1173 vinfo(16)=vname(1,idtime)
1174# if defined WRITE_WATER && defined MASKING
1175 vinfo(20)='mask_u'
1176# endif
1177 vinfo(21)=vname(6,idhuav)
1178 vinfo(22)='coordinates'
1179 aval(5)=real(u3dvar,r8)
1180 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idhuav), &
1181 & nf_fout, nvd4, u3dgrd, aval, vinfo, ncname)
1182 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1183 END IF
1184!
1185! Define v-volume flux.
1186!
1187 IF (aout(idhvav,ng)) THEN
1188 vinfo( 1)=vname(1,idhvav)
1189 vinfo( 2)=trim(vname(2,idhvav))
1190 vinfo( 3)=vname(3,idhvav)
1191 vinfo(14)=vname(4,idhvav)
1192 vinfo(16)=vname(1,idtime)
1193# if defined WRITE_WATER && defined MASKING
1194 vinfo(20)='mask_v'
1195# endif
1196 vinfo(21)=vname(6,idhvav)
1197 vinfo(22)='coordinates'
1198 aval(5)=real(v3dvar,r8)
1199 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idhvav), &
1200 & nf_fout, nvd4, v3dgrd, aval, vinfo, ncname)
1201 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1202 END IF
1203!
1204! Define quadratic <u*u> term.
1205!
1206 IF (aout(iduuav,ng)) THEN
1207 vinfo( 1)=vname(1,iduuav)
1208 vinfo( 2)=trim(vname(2,iduuav))
1209 vinfo( 3)=vname(3,iduuav)
1210 vinfo(14)=vname(4,iduuav)
1211 vinfo(16)=vname(1,idtime)
1212# if defined WRITE_WATER && defined MASKING
1213 vinfo(20)='mask_u'
1214# endif
1215 vinfo(21)=vname(6,iduuav)
1216 vinfo(22)='coordinates'
1217 aval(5)=real(u3dvar,r8)
1218 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(iduuav), &
1219 & nf_fout, nvd4, u3dgrd, aval, vinfo, ncname)
1220 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1221 END IF
1222!
1223! Define quadratic <u*v> term.
1224!
1225 IF (aout(iduvav,ng)) THEN
1226 vinfo( 1)=vname(1,iduvav)
1227 vinfo( 2)=trim(vname(2,iduvav))
1228 vinfo( 3)=vname(3,iduvav)
1229 vinfo(14)=vname(4,iduvav)
1230 vinfo(16)=vname(1,idtime)
1231# if defined WRITE_WATER && defined MASKING
1232 vinfo(20)='mask_rho'
1233# endif
1234 vinfo(21)=vname(6,iduvav)
1235 vinfo(22)='coordinates'
1236 aval(5)=real(r3dvar,r8)
1237 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(iduvav), &
1238 & nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1239 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1240 END IF
1241!
1242! Define quadratic <v*v> term.
1243!
1244 IF (aout(idvvav,ng)) THEN
1245 vinfo( 1)=vname(1,idvvav)
1246 vinfo( 2)=trim(vname(2,idvvav))
1247 vinfo( 3)=vname(3,idvvav)
1248 vinfo(14)=vname(4,idvvav)
1249 vinfo(16)=vname(1,idtime)
1250# if defined WRITE_WATER && defined MASKING
1251 vinfo(20)='mask_v'
1252# endif
1253 vinfo(21)=vname(6,idvvav)
1254 vinfo(22)='coordinates'
1255 aval(5)=real(v3dvar,r8)
1256 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idvvav), &
1257 & nf_fout, nvd4, v3dgrd, aval, vinfo, ncname)
1258 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1259 END IF
1260!
1261! Define quadratic <t*t> terms.
1262!
1263 DO itrc=1,nt(ng)
1264 IF (aout(idttav(itrc),ng)) THEN
1265 vinfo( 1)=vname(1,idttav(itrc))
1266 vinfo( 2)=trim(vname(2,idttav(itrc)))
1267 vinfo( 3)=vname(3,idttav(itrc))
1268 vinfo(14)=vname(4,idttav(itrc))
1269 vinfo(16)=vname(1,idtime)
1270# if defined WRITE_WATER && defined MASKING
1271 vinfo(20)='mask_rho'
1272# endif
1273 vinfo(21)=vname(6,idttav(itrc))
1274 vinfo(22)='coordinates'
1275 aval(5)=real(r3dvar,r8)
1276 status=def_var(ng, model, avg(ng)%ncid, &
1277 & avg(ng)%Vid(idttav(itrc)), nf_fout, &
1278 & nvd4, t3dgrd, aval, vinfo, ncname)
1279 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1280 END IF
1281 END DO
1282!
1283! Define active tracers volume fluxes.
1284!
1285 DO itrc=1,nt(ng)
1286 IF (aout(ihutav(itrc),ng)) THEN
1287 vinfo( 1)=vname(1,ihutav(itrc))
1288 vinfo( 2)=trim(vname(2,ihutav(itrc)))
1289 vinfo( 3)=vname(3,ihutav(itrc))
1290 vinfo(14)=vname(4,ihutav(itrc))
1291 vinfo(16)=vname(1,idtime)
1292# if defined WRITE_WATER && defined MASKING
1293 vinfo(20)='mask_u'
1294# endif
1295 vinfo(21)=vname(6,ihutav(itrc))
1296 vinfo(22)='coordinates'
1297 aval(5)=real(u3dvar,r8)
1298 status=def_var(ng, model, avg(ng)%ncid, &
1299 & avg(ng)%Vid(ihutav(itrc)), nf_fout, &
1300 & nvd4, u3dgrd, aval, vinfo, ncname)
1301 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1302 END IF
1303!
1304 IF (aout(ihvtav(itrc),ng)) THEN
1305 vinfo( 1)=vname(1,ihvtav(itrc))
1306 vinfo( 2)=trim(vname(2,ihvtav(itrc)))
1307 vinfo( 3)=vname(3,ihvtav(itrc))
1308 vinfo(14)=vname(4,ihvtav(itrc))
1309 vinfo(16)=vname(1,idtime)
1310# if defined WRITE_WATER && defined MASKING
1311 vinfo(20)='mask_v'
1312# endif
1313 vinfo(21)=vname(6,ihvtav(itrc))
1314 vinfo(22)='coordinates'
1315 aval(5)=real(v3dvar,r8)
1316 status=def_var(ng, model, avg(ng)%ncid, &
1317 & avg(ng)%Vid(ihvtav(itrc)), nf_fout, &
1318 & nvd4, v3dgrd, aval, vinfo, ncname)
1319 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1320 END IF
1321 END DO
1322!
1323! Define quadratic <u*t> and <v*t> terms.
1324!
1325 DO itrc=1,nt(ng)
1326 IF (aout(idutav(itrc),ng)) THEN
1327 vinfo( 1)=vname(1,idutav(itrc))
1328 vinfo( 2)=trim(vname(2,idutav(itrc)))
1329 vinfo( 3)=vname(3,idutav(itrc))
1330 vinfo(14)=vname(4,idutav(itrc))
1331 vinfo(16)=vname(1,idtime)
1332# if defined WRITE_WATER && defined MASKING
1333 vinfo(20)='mask_u'
1334# endif
1335 vinfo(21)=vname(6,idutav(itrc))
1336 vinfo(22)='coordinates'
1337 aval(5)=real(u3dvar,r8)
1338 status=def_var(ng, model, avg(ng)%ncid, &
1339 & avg(ng)%Vid(idutav(itrc)), nf_fout, &
1340 & nvd4, u3dgrd, aval, vinfo, ncname)
1341 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1342 END IF
1343!
1344 IF (aout(idvtav(itrc),ng)) THEN
1345 vinfo( 1)=vname(1,idvtav(itrc))
1346 vinfo( 2)=trim(vname(2,idvtav(itrc)))
1347 vinfo( 3)=vname(3,idvtav(itrc))
1348 vinfo(14)=vname(4,idvtav(itrc))
1349 vinfo(16)=vname(1,idtime)
1350# if defined WRITE_WATER && defined MASKING
1351 vinfo(20)='mask_v'
1352# endif
1353 vinfo(21)=vname(6,idvtav(itrc))
1354 vinfo(22)='coordinates'
1355 aval(5)=real(v3dvar,r8)
1356 status=def_var(ng, model, avg(ng)%ncid, &
1357 & avg(ng)%Vid(idvtav(itrc)), nf_fout, &
1358 & nvd4, v3dgrd, aval, vinfo, ncname)
1359 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1360 END IF
1361 END DO
1362
1363# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
1364!
1365! Define vertical viscosity coefficient.
1366!
1367 IF (aout(idvvis,ng)) THEN
1368 vinfo( 1)=vname(1,idvvis)
1369 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idvvis))
1370 vinfo( 3)=vname(3,idvvis)
1371 vinfo(14)=vname(4,idvvis)
1372 vinfo(16)=vname(1,idtime)
1373 vinfo(21)=vname(6,idvvis)
1374 vinfo(22)='coordinates'
1375 aval(5)=real(iinfo(1,idvvis,ng),r8)
1376 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idvvis), &
1377 & nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1378 & setfillval = .false.)
1379 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1380 END IF
1381!
1382! Define vertical diffusion coefficient for potential temperature.
1383!
1384 IF (aout(idtdif,ng)) THEN
1385 vinfo( 1)=vname(1,idtdif)
1386 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idtdif))
1387 vinfo( 3)=vname(3,idtdif)
1388 vinfo(14)=vname(4,idtdif)
1389 vinfo(16)=vname(1,idtime)
1390 vinfo(21)=vname(6,idtdif)
1391 vinfo(22)='coordinates'
1392 aval(5)=real(iinfo(1,idtdif,ng),r8)
1393 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idtdif), &
1394 & nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1395 & setfillval = .false.)
1396 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1397 END IF
1398
1399# ifdef SALINITY
1400!
1401! Define vertical diffusion coefficient for salinity.
1402!
1403 IF (aout(idsdif,ng)) THEN
1404 vinfo( 1)=vname(1,idsdif)
1405 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idsdif))
1406 vinfo( 3)=vname(3,idsdif)
1407 vinfo(14)=vname(4,idsdif)
1408 vinfo(16)=vname(1,idtime)
1409 vinfo(21)=vname(6,idsdif)
1410 vinfo(22)='coordinates'
1411 aval(5)=real(iinfo(1,idsdif,ng),r8)
1412 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idsdif), &
1413 & nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1414 & setfillval = .false.)
1415 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1416 END IF
1417# endif
1418# endif
1419# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
1420!
1421! Define surface air pressure.
1422!
1423 IF (aout(idpair,ng)) THEN
1424 vinfo( 1)=vname(1,idpair)
1425 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idpair))
1426 vinfo( 3)=vname(3,idpair)
1427 vinfo(14)=vname(4,idpair)
1428 vinfo(16)=vname(1,idtime)
1429# if defined WRITE_WATER && defined MASKING
1430 vinfo(20)='mask_rho'
1431# endif
1432 vinfo(21)=vname(6,idpair)
1433 vinfo(22)='coordinates'
1434 aval(5)=real(iinfo(1,idpair,ng),r8)
1435 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idpair), &
1436 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1437 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1438 END IF
1439# endif
1440# if defined BULK_FLUXES
1441!
1442! Define surface air temperature.
1443!
1444 IF (aout(idtair,ng)) THEN
1445 vinfo( 1)=vname(1,idtair)
1446 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idtair))
1447 vinfo( 3)=vname(3,idtair)
1448 vinfo(14)=vname(4,idtair)
1449 vinfo(16)=vname(1,idtime)
1450# if defined WRITE_WATER && defined MASKING
1451 vinfo(20)='mask_rho'
1452# endif
1453 vinfo(21)=vname(6,idtair)
1454 vinfo(22)='coordinates'
1455 aval(5)=real(iinfo(1,idtair,ng),r8)
1456 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idtair), &
1457 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1458 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1459 END IF
1460# endif
1461# if defined BULK_FLUXES || defined ECOSIM
1462!
1463! Define surface winds.
1464!
1465 IF (aout(iduair,ng)) THEN
1466 vinfo( 1)=vname(1,iduair)
1467 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,iduair))
1468 vinfo( 3)=vname(3,iduair)
1469 vinfo(14)=vname(4,iduair)
1470 vinfo(16)=vname(1,idtime)
1471# if defined WRITE_WATER && defined MASKING
1472 vinfo(20)='mask_rho'
1473# endif
1474 vinfo(21)=vname(6,iduair)
1475 vinfo(22)='coordinates'
1476 aval(5)=real(iinfo(1,iduair,ng),r8)
1477 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(iduair), &
1478 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1479 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1480 END IF
1481!
1482 IF (aout(idvair,ng)) THEN
1483 vinfo( 1)=vname(1,idvair)
1484 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idvair))
1485 vinfo( 3)=vname(3,idvair)
1486 vinfo(14)=vname(4,idvair)
1487 vinfo(16)=vname(1,idtime)
1488# if defined WRITE_WATER && defined MASKING
1489 vinfo(20)='mask_rho'
1490# endif
1491 vinfo(21)=vname(6,idvair)
1492 vinfo(22)='coordinates'
1493 aval(5)=real(iinfo(1,idvair,ng),r8)
1494 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idvair), &
1495 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1496 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1497 END IF
1498!
1499! Define Eastward/Northward surface wind at RHO-points.
1500!
1501 IF (aout(iduaie,ng)) THEN
1502 vinfo( 1)=vname(1,iduaie)
1503 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,iduaie))
1504 vinfo( 3)=vname(3,iduaie)
1505 vinfo(14)=vname(4,iduaie)
1506 vinfo(16)=vname(1,idtime)
1507# if defined WRITE_WATER && defined MASKING
1508 vinfo(20)='mask_rho'
1509# endif
1510 vinfo(21)=vname(6,iduaie)
1511 vinfo(22)='coordinates'
1512 aval(5)=real(iinfo(1,iduaie,ng),r8)
1513 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(iduaie), &
1514 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1515 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1516 END IF
1517!
1518 IF (aout(idvain,ng)) THEN
1519 vinfo( 1)=vname(1,idvain)
1520 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idvain))
1521 vinfo( 3)=vname(3,idvain)
1522 vinfo(14)=vname(4,idvain)
1523 vinfo(16)=vname(1,idtime)
1524# if defined WRITE_WATER && defined MASKING
1525 vinfo(20)='mask_rho'
1526# endif
1527 vinfo(21)=vname(6,idvain)
1528 vinfo(22)='coordinates'
1529 aval(5)=real(iinfo(1,idvain,ng),r8)
1530 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idvain), &
1531 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1532 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1533 END IF
1534# endif
1535!
1536! Define surface net heat flux.
1537!
1538 IF (aout(idtsur(itemp),ng)) THEN
1539 vinfo( 1)=vname(1,idtsur(itemp))
1540 WRITE (vinfo( 2),'(a,1x,a)') prefix, &
1541 & trim(vname(2,idtsur(itemp)))
1542 vinfo( 3)=vname(3,idtsur(itemp))
1543 vinfo(11)='upward flux, cooling'
1544 vinfo(12)='downward flux, heating'
1545 vinfo(14)=vname(4,idtsur(itemp))
1546 vinfo(16)=vname(1,idtime)
1547# if defined WRITE_WATER && defined MASKING
1548 vinfo(20)='mask_rho'
1549# endif
1550 vinfo(21)=vname(6,idtsur(itemp))
1551 vinfo(22)='coordinates'
1552 aval(5)=real(iinfo(1,idtsur(itemp),ng),r8)
1553 status=def_var(ng, model, avg(ng)%ncid, &
1554 & avg(ng)%Vid(idtsur(itemp)), nf_fout, &
1555 & nvd3, t2dgrd, aval, vinfo, ncname)
1556 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1557 END IF
1558
1559# ifdef SALINITY
1560!
1561! Define surface net salt flux.
1562!
1563 IF (aout(idtsur(isalt),ng)) THEN
1564 vinfo( 1)=vname(1,idtsur(isalt))
1565 WRITE (vinfo( 2),'(a,1x,a)') prefix, &
1566 & trim(vname(2,idtsur(isalt)))
1567 vinfo( 3)=vname(3,idtsur(isalt))
1568 vinfo(11)='upward flux, freshening (net precipitation)'
1569 vinfo(12)='downward flux, salting (net evaporation)'
1570 vinfo(14)=vname(4,idtsur(isalt))
1571 vinfo(16)=vname(1,idtime)
1572# if defined WRITE_WATER && defined MASKING
1573 vinfo(20)='mask_rho'
1574# endif
1575 vinfo(21)=vname(6,idtsur(isalt))
1576 vinfo(22)='coordinates'
1577 aval(5)=real(iinfo(1,idtsur(isalt),ng),r8)
1578 status=def_var(ng, model, avg(ng)%ncid, &
1579 & avg(ng)%Vid(idtsur(isalt)), nf_fout, &
1580 & nvd3, t2dgrd, aval, vinfo, ncname)
1581 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1582 END IF
1583# endif
1584
1585# if defined BULK_FLUXES || defined FRC_COUPLING
1586!
1587! Define latent heat flux.
1588!
1589 IF (aout(idlhea,ng)) THEN
1590 vinfo( 1)=vname(1,idlhea)
1591 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idlhea))
1592 vinfo( 3)=vname(3,idlhea)
1593 vinfo(11)='upward flux, cooling'
1594 vinfo(12)='downward flux, heating'
1595 vinfo(14)=vname(4,idlhea)
1596 vinfo(16)=vname(1,idtime)
1597# if defined WRITE_WATER && defined MASKING
1598 vinfo(20)='mask_rho'
1599# endif
1600 vinfo(21)=vname(6,idlhea)
1601 vinfo(22)='coordinates'
1602 aval(5)=real(iinfo(1,idlhea,ng),r8)
1603 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idlhea), &
1604 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1605 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1606 END IF
1607!
1608! Define sensible heat flux.
1609!
1610 IF (aout(idshea,ng)) THEN
1611 vinfo( 1)=vname(1,idshea)
1612 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idshea))
1613 vinfo( 3)=vname(3,idshea)
1614 vinfo(11)='upward flux, cooling'
1615 vinfo(12)='downward flux, heating'
1616 vinfo(14)=vname(4,idshea)
1617 vinfo(16)=vname(1,idtime)
1618# if defined WRITE_WATER && defined MASKING
1619 vinfo(20)='mask_rho'
1620# endif
1621 vinfo(21)=vname(6,idshea)
1622 vinfo(22)='coordinates'
1623 aval(5)=real(iinfo(1,idshea,ng),r8)
1624 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idshea), &
1625 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1626 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1627 END IF
1628!
1629! Define net longwave radiation flux.
1630!
1631 IF (aout(idlrad,ng)) THEN
1632 vinfo( 1)=vname(1,idlrad)
1633 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idlrad))
1634 vinfo( 3)=vname(3,idlrad)
1635 vinfo(11)='upward flux, cooling'
1636 vinfo(12)='downward flux, heating'
1637 vinfo(14)=vname(4,idlrad)
1638 vinfo(16)=vname(1,idtime)
1639# if defined WRITE_WATER && defined MASKING
1640 vinfo(20)='mask_rho'
1641# endif
1642 vinfo(21)=vname(6,idlrad)
1643 vinfo(22)='coordinates'
1644 aval(5)=real(iinfo(1,idlrad,ng),r8)
1645 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idlrad), &
1646 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1647 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1648 END IF
1649# endif
1650
1651# ifdef BULK_FLUXES
1652# ifdef EMINUSP
1653!
1654! Define evaporation rate.
1655!
1656 IF (aout(idevap,ng)) THEN
1657 vinfo( 1)=vname(1,idevap)
1658 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idevap))
1659 vinfo( 3)=vname(3,idevap)
1660 vinfo(11)='downward flux, freshening (condensation)'
1661 vinfo(12)='upward flux, salting (evaporation)'
1662 vinfo(14)=vname(4,idevap)
1663 vinfo(16)=vname(1,idtime)
1664# if defined WRITE_WATER && defined MASKING
1665 vinfo(20)='mask_rho'
1666# endif
1667 vinfo(21)=vname(6,idevap)
1668 vinfo(22)='coordinates'
1669 aval(5)=real(iinfo(1,idevap,ng),r8)
1670 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idevap), &
1671 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1672 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1673 END IF
1674!
1675! Define precipitation rate.
1676!
1677 IF (aout(idrain,ng)) THEN
1678 vinfo( 1)=vname(1,idrain)
1679 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idrain))
1680 vinfo( 3)=vname(3,idrain)
1681 vinfo(12)='downward flux, freshening (precipitation)'
1682 vinfo(14)=vname(4,idrain)
1683 vinfo(16)=vname(1,idtime)
1684# if defined WRITE_WATER && defined MASKING
1685 vinfo(20)='mask_rho'
1686# endif
1687 vinfo(21)=vname(6,idrain)
1688 vinfo(22)='coordinates'
1689 aval(5)=real(iinfo(1,idrain,ng),r8)
1690 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idrain), &
1691 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1692 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1693 END IF
1694# endif
1695# endif
1696# ifdef SHORTWAVE
1697!
1698! Define net shortwave radiation flux.
1699!
1700 IF (aout(idsrad,ng)) THEN
1701 vinfo( 1)=vname(1,idsrad)
1702 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idsrad))
1703 vinfo( 3)=vname(3,idsrad)
1704 vinfo(11)='upward flux, cooling'
1705 vinfo(12)='downward flux, heating'
1706 vinfo(14)=vname(4,idsrad)
1707 vinfo(16)=vname(1,idtime)
1708# if defined WRITE_WATER && defined MASKING
1709 vinfo(20)='mask_rho'
1710# endif
1711 vinfo(21)=vname(6,idsrad)
1712 vinfo(22)='coordinates'
1713 aval(5)=real(iinfo(1,idsrad,ng),r8)
1714 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idsrad), &
1715 & nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1716 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1717 END IF
1718# endif
1719# endif
1720!
1721! Define surface u-momentum stress.
1722!
1723 IF (aout(idusms,ng)) THEN
1724 vinfo( 1)=vname(1,idusms)
1725 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idusms))
1726 vinfo( 3)=vname(3,idusms)
1727 vinfo(14)=vname(4,idusms)
1728 vinfo(16)=vname(1,idtime)
1729# if defined WRITE_WATER && defined MASKING
1730 vinfo(20)='mask_u'
1731# endif
1732 vinfo(21)=vname(6,idusms)
1733 vinfo(22)='coordinates'
1734 aval(5)=real(iinfo(1,idusms,ng),r8)
1735 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idusms), &
1736 & nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
1737 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1738 END IF
1739!
1740! Define surface v-momentum stress.
1741!
1742 IF (aout(idvsms,ng)) THEN
1743 vinfo( 1)=vname(1,idvsms)
1744 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idvsms))
1745 vinfo( 3)=vname(3,idvsms)
1746 vinfo(14)=vname(4,idvsms)
1747 vinfo(16)=vname(1,idtime)
1748# if defined WRITE_WATER && defined MASKING
1749 vinfo(20)='mask_v'
1750# endif
1751 vinfo(21)=vname(6,idvsms)
1752 vinfo(22)='coordinates'
1753 aval(5)=real(iinfo(1,idvsms,ng),r8)
1754 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idvsms), &
1755 & nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
1756 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1757 END IF
1758!
1759! Define bottom u-momentum stress.
1760!
1761 IF (aout(idubms,ng)) THEN
1762 vinfo( 1)=vname(1,idubms)
1763 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idubms))
1764 vinfo( 3)=vname(3,idubms)
1765 vinfo(14)=vname(4,idubms)
1766 vinfo(16)=vname(1,idtime)
1767# if defined WRITE_WATER && defined MASKING
1768 vinfo(20)='mask_u'
1769# endif
1770 vinfo(21)=vname(6,idubms)
1771 vinfo(22)='coordinates'
1772 aval(5)=real(iinfo(1,idubms,ng),r8)
1773 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idubms), &
1774 & nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
1775 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1776 END IF
1777!
1778! Define bottom v-momentum stress.
1779!
1780 IF (aout(idvbms,ng)) THEN
1781 vinfo( 1)=vname(1,idvbms)
1782 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idvbms))
1783 vinfo( 3)=vname(3,idvbms)
1784 vinfo(14)=vname(4,idvbms)
1785 vinfo(16)=vname(1,idtime)
1786# if defined WRITE_WATER && defined MASKING
1787 vinfo(20)='mask_v'
1788# endif
1789 vinfo(21)=vname(6,idvbms)
1790 vinfo(22)='coordinates'
1791 aval(5)=real(iinfo(1,idvbms,ng),r8)
1792 status=def_var(ng, model, avg(ng)%ncid, avg(ng)%Vid(idvbms), &
1793 & nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
1794 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1795 END IF
1796
1797# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
1798!
1799!-----------------------------------------------------------------------
1800! Define the bottom boundary layer model or waves variables.
1801!-----------------------------------------------------------------------
1802!
1803 CALL bbl_def_nf90 (ng, model, ldef, aout, avg, &
1804 & t2dgrd, u2dgrd, v2dgrd)
1805 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1806# endif
1807
1808# if defined ICE_MODEL && defined SOLVE3D
1809!
1810!-----------------------------------------------------------------------
1811! Define the sea-ice model variables.
1812!-----------------------------------------------------------------------
1813!
1814 CALL ice_def_nf90 (ng, model, ldef, aout, avg, &
1815 & t2dgrd, u2dgrd, v2dgrd)
1816 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1817# endif
1818
1819# if defined SEDIMENT && defined SOLVE3D
1820!
1821!-----------------------------------------------------------------------
1822! Define the sediment model variables.
1823!-----------------------------------------------------------------------
1824!
1825 CALL sediment_def_nf90 (ng, model, ldef, aout, avg, &
1826 & t2dgrd, u2dgrd, v2dgrd, &
1827 & b3dgrd)
1828 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1829# endif
1830
1831# if defined WEC_VF && defined SOLVE3D
1832!
1833!-----------------------------------------------------------------------
1834! Define the Waves Effect on Currents variables.
1835!-----------------------------------------------------------------------
1836!
1837 CALL wec_def_nf90 (ng, model, ldef, aout, avg, &
1838 & t2dgrd, u2dgrd, v2dgrd, &
1839 & t3dgrd, u3dgrd, v3dgrd, w3dgrd)
1840 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1841# endif
1842!
1843!-----------------------------------------------------------------------
1844! Leave definition mode.
1845!-----------------------------------------------------------------------
1846!
1847 CALL netcdf_enddef (ng, model, ncname, avg(ng)%ncid)
1848 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1849!
1850!-----------------------------------------------------------------------
1851! Write out time-recordless, information variables.
1852!-----------------------------------------------------------------------
1853!
1854 CALL wrt_info (ng, model, avg(ng)%ncid, ncname)
1855 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1856 END IF define
1857!
1858!=======================================================================
1859! Open an existing averages file, check its contents, and prepare
1860! for appending data.
1861!=======================================================================
1862!
1863 query : IF (.not.ldef) THEN
1864 ncname=avg(ng)%name
1865!
1866! Open averages file for read/write.
1867!
1868 CALL netcdf_open (ng, model, ncname, 1, avg(ng)%ncid)
1869 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
1870 WRITE (stdout,50) trim(ncname)
1871 RETURN
1872 END IF
1873!
1874! Inquire about the dimensions and check for consistency.
1875!
1876 CALL netcdf_check_dim (ng, model, ncname, &
1877 & ncid = avg(ng)%ncid)
1878 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1879!
1880! Inquire about the variables.
1881!
1882 CALL netcdf_inq_var (ng, model, ncname, &
1883 & ncid = avg(ng)%ncid)
1884 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
1885!
1886! Initialize logical switches.
1887!
1888 DO i=1,nv
1889 got_var(i)=.false.
1890 END DO
1891!
1892! Scan variable list from input NetCDF and activate switches for
1893! average variables. Get variable IDs.
1894!
1895 DO i=1,n_var
1896 IF (trim(var_name(i)).eq.trim(vname(1,idtime))) THEN
1897 got_var(idtime)=.true.
1898 avg(ng)%Vid(idtime)=var_id(i)
1899# ifdef WET_DRY
1900 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrwet))) THEN
1901 got_var(idrwet)=.true.
1902 avg(ng)%Vid(idrwet)=var_id(i)
1903# endif
1904 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idfsur))) THEN
1905 got_var(idfsur)=.true.
1906 avg(ng)%Vid(idfsur)=var_id(i)
1907 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubar))) THEN
1908 got_var(idubar)=.true.
1909 avg(ng)%Vid(idubar)=var_id(i)
1910 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbar))) THEN
1911 got_var(idvbar)=.true.
1912 avg(ng)%Vid(idvbar)=var_id(i)
1913# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
1914 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idfsud))) THEN
1915 got_var(idfsud)=.true.
1916 avg(ng)%Vid(idfsud)=var_id(i)
1917 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu2dd))) THEN
1918 got_var(idu2dd)=.true.
1919 avg(ng)%Vid(idu2dd)=var_id(i)
1920 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv2dd))) THEN
1921 got_var(idv2dd)=.true.
1922 avg(ng)%Vid(idv2dd)=var_id(i)
1923# endif
1924 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu2de))) THEN
1925 got_var(idu2de)=.true.
1926 avg(ng)%Vid(idu2de)=var_id(i)
1927 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv2dn))) THEN
1928 got_var(idv2dn)=.true.
1929 avg(ng)%Vid(idv2dn)=var_id(i)
1930# ifdef SOLVE3D
1931# ifdef FORWARD_WRITE
1932 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idufx1))) THEN
1933 got_var(idufx1)=.true.
1934 avg(ng)%Vid(idufx1)=var_id(i)
1935 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idufx2))) THEN
1936 got_var(idufx2)=.true.
1937 avg(ng)%Vid(idufx2)=var_id(i)
1938 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvfx1))) THEN
1939 got_var(idvfx1)=.true.
1940 avg(ng)%Vid(idvfx1)=var_id(i)
1941 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvfx2))) THEN
1942 got_var(idvfx2)=.true.
1943 avg(ng)%Vid(idvfx2)=var_id(i)
1944# endif
1945 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduvel))) THEN
1946 got_var(iduvel)=.true.
1947 avg(ng)%Vid(iduvel)=var_id(i)
1948 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvel))) THEN
1949 got_var(idvvel)=.true.
1950 avg(ng)%Vid(idvvel)=var_id(i)
1951# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
1952 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu3dd))) THEN
1953 got_var(idu3dd)=.true.
1954 avg(ng)%Vid(idu3dd)=var_id(i)
1955 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv3dd))) THEN
1956 got_var(idv3dd)=.true.
1957 avg(ng)%Vid(idv3dd)=var_id(i)
1958# endif
1959 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu3de))) THEN
1960 got_var(idu3de)=.true.
1961 avg(ng)%Vid(idu3de)=var_id(i)
1962 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv3dn))) THEN
1963 got_var(idv3dn)=.true.
1964 avg(ng)%Vid(idv3dn)=var_id(i)
1965 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idovel))) THEN
1966 got_var(idovel)=.true.
1967 avg(ng)%Vid(idovel)=var_id(i)
1968 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idwvel))) THEN
1969 got_var(idwvel)=.true.
1970 avg(ng)%Vid(idwvel)=var_id(i)
1971 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iddano))) THEN
1972 got_var(iddano)=.true.
1973 avg(ng)%Vid(iddano)=var_id(i)
1974# ifdef LMD_SKPP
1975 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhsbl))) THEN
1976 got_var(idhsbl)=.true.
1977 avg(ng)%Vid(idhsbl)=var_id(i)
1978# endif
1979# ifdef LMD_BKPP
1980 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhbbl))) THEN
1981 got_var(idhbbl)=.true.
1982 avg(ng)%Vid(idhbbl)=var_id(i)
1983# endif
1984# endif
1985 ELSE IF (trim(var_name(i)).eq.trim(vname(1,id2dpv))) THEN
1986 got_var(id2dpv)=.true.
1987 avg(ng)%Vid(id2dpv)=var_id(i)
1988 ELSE IF (trim(var_name(i)).eq.trim(vname(1,id2drv))) THEN
1989 got_var(id2drv)=.true.
1990 avg(ng)%Vid(id2drv)=var_id(i)
1991# ifdef SOLVE3D
1992 ELSE IF (trim(var_name(i)).eq.trim(vname(1,id3dpv))) THEN
1993 got_var(id3dpv)=.true.
1994 avg(ng)%Vid(id3dpv)=var_id(i)
1995 ELSE IF (trim(var_name(i)).eq.trim(vname(1,id3drv))) THEN
1996 got_var(id3drv)=.true.
1997 avg(ng)%Vid(id3drv)=var_id(i)
1998# endif
1999 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idzzav))) THEN
2000 got_var(idzzav)=.true.
2001 avg(ng)%Vid(idzzav)=var_id(i)
2002 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu2av))) THEN
2003 got_var(idu2av)=.true.
2004 avg(ng)%Vid(idu2av)=var_id(i)
2005 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv2av))) THEN
2006 got_var(idv2av)=.true.
2007 avg(ng)%Vid(idv2av)=var_id(i)
2008# ifdef SOLVE3D
2009 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhuav))) THEN
2010 got_var(idhuav)=.true.
2011 avg(ng)%Vid(idhuav)=var_id(i)
2012 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhvav))) THEN
2013 got_var(idhvav)=.true.
2014 avg(ng)%Vid(idhvav)=var_id(i)
2015 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduuav))) THEN
2016 got_var(iduuav)=.true.
2017 avg(ng)%Vid(iduuav)=var_id(i)
2018 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduvav))) THEN
2019 got_var(iduvav)=.true.
2020 avg(ng)%Vid(iduvav)=var_id(i)
2021 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvav))) THEN
2022 got_var(idvvav)=.true.
2023 avg(ng)%Vid(idvvav)=var_id(i)
2024# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
2025 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvis))) THEN
2026 got_var(idvvis)=.true.
2027 avg(ng)%Vid(idvvis)=var_id(i)
2028 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idtdif))) THEN
2029 got_var(idtdif)=.true.
2030 avg(ng)%Vid(idtdif)=var_id(i)
2031# ifdef SALINITY
2032 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsdif))) THEN
2033 got_var(idsdif)=.true.
2034 avg(ng)%Vid(idsdif)=var_id(i)
2035# endif
2036# endif
2037# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
2038 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpair))) THEN
2039 got_var(idpair)=.true.
2040 avg(ng)%Vid(idpair)=var_id(i)
2041# endif
2042# if defined BULK_FLUXES || defined ECOSIM
2043 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduair))) THEN
2044 got_var(iduair)=.true.
2045 avg(ng)%Vid(iduair)=var_id(i)
2046 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvair))) THEN
2047 got_var(idvair)=.true.
2048 avg(ng)%Vid(idvair)=var_id(i)
2049 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduaie))) THEN
2050 got_var(iduaie)=.true.
2051 avg(ng)%Vid(iduaie)=var_id(i)
2052 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvain))) THEN
2053 got_var(idvain)=.true.
2054 avg(ng)%Vid(idvain)=var_id(i)
2055# endif
2056 ELSE IF (trim(var_name(i)).eq. &
2057 & trim(vname(1,idtsur(itemp)))) THEN
2058 got_var(idtsur(itemp))=.true.
2059 avg(ng)%Vid(idtsur(itemp))=var_id(i)
2060# ifdef SALINITY
2061 ELSE IF (trim(var_name(i)).eq. &
2062 & trim(vname(1,idtsur(isalt)))) THEN
2063 got_var(idtsur(isalt))=.true.
2064 avg(ng)%Vid(idtsur(isalt))=var_id(i)
2065# endif
2066# if defined BULK_FLUXES || defined FRC_COUPLING
2067 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idlhea))) THEN
2068 got_var(idlhea)=.true.
2069 avg(ng)%Vid(idlhea)=var_id(i)
2070 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idshea))) THEN
2071 got_var(idshea)=.true.
2072 avg(ng)%Vid(idshea)=var_id(i)
2073 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idlrad))) THEN
2074 got_var(idlrad)=.true.
2075 avg(ng)%Vid(idlrad)=var_id(i)
2076# endif
2077# ifdef BULK_FLUXES
2078 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idtair))) THEN
2079 got_var(idtair)=.true.
2080 avg(ng)%Vid(idtair)=var_id(i)
2081# ifdef EMINUSP
2082 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idevap))) THEN
2083 got_var(idevap)=.true.
2084 avg(ng)%Vid(idevap)=var_id(i)
2085 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrain))) THEN
2086 got_var(idrain)=.true.
2087 avg(ng)%Vid(idrain)=var_id(i)
2088# endif
2089# endif
2090# ifdef SHORTWAVE
2091 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsrad))) THEN
2092 got_var(idsrad)=.true.
2093 avg(ng)%Vid(idsrad)=var_id(i)
2094# endif
2095# endif
2096 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idusms))) THEN
2097 got_var(idusms)=.true.
2098 avg(ng)%Vid(idusms)=var_id(i)
2099 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvsms))) THEN
2100 got_var(idvsms)=.true.
2101 avg(ng)%Vid(idvsms)=var_id(i)
2102 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubms))) THEN
2103 got_var(idubms)=.true.
2104 avg(ng)%Vid(idubms)=var_id(i)
2105 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbms))) THEN
2106 got_var(idvbms)=.true.
2107 avg(ng)%Vid(idvbms)=var_id(i)
2108 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubrs))) THEN
2109 got_var(idubrs)=.true.
2110 avg(ng)%Vid(idubrs)=var_id(i)
2111 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbrs))) THEN
2112 got_var(idvbrs)=.true.
2113 avg(ng)%Vid(idvbrs)=var_id(i)
2114 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubws))) THEN
2115 got_var(idubws)=.true.
2116 avg(ng)%Vid(idubws)=var_id(i)
2117 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbws))) THEN
2118 got_var(idvbws)=.true.
2119 avg(ng)%Vid(idvbws)=var_id(i)
2120 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubcs))) THEN
2121 got_var(idubcs)=.true.
2122 avg(ng)%Vid(idubcs)=var_id(i)
2123 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbcs))) THEN
2124 got_var(idvbcs)=.true.
2125 avg(ng)%Vid(idvbcs)=var_id(i)
2126 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduvwc))) THEN
2127 got_var(iduvwc)=.true.
2128 avg(ng)%Vid(iduvwc)=var_id(i)
2129 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubot))) THEN
2130 got_var(idubot)=.true.
2131 avg(ng)%Vid(idubot)=var_id(i)
2132 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbot))) THEN
2133 got_var(idvbot)=.true.
2134 avg(ng)%Vid(idvbot)=var_id(i)
2135 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubur))) THEN
2136 got_var(idubur)=.true.
2137 avg(ng)%Vid(idubur)=var_id(i)
2138 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbvr))) THEN
2139 got_var(idvbvr)=.true.
2140 avg(ng)%Vid(idvbvr)=var_id(i)
2141 END IF
2142# ifdef SOLVE3D
2143 DO itrc=1,nt(ng)
2144 IF (trim(var_name(i)).eq.trim(vname(1,idtvar(itrc)))) THEN
2145 got_var(idtvar(itrc))=.true.
2146 avg(ng)%Tid(itrc)=var_id(i)
2147 END IF
2148 END DO
2149 DO itrc=1,nat
2150 IF (trim(var_name(i)).eq.trim(vname(1,ihutav(itrc)))) THEN
2151 got_var(ihutav(itrc))=.true.
2152 avg(ng)%Vid(ihutav(itrc))=var_id(i)
2153 ELSE IF (trim(var_name(i)).eq. &
2154 & trim(vname(1,ihvtav(itrc)))) THEN
2155 got_var(ihvtav(itrc))=.true.
2156 avg(ng)%Vid(ihvtav(itrc))=var_id(i)
2157 ELSE IF (trim(var_name(i)).eq. &
2158 & trim(vname(1,idutav(itrc)))) THEN
2159 got_var(idutav(itrc))=.true.
2160 avg(ng)%Vid(idutav(itrc))=var_id(i)
2161 ELSE IF (trim(var_name(i)).eq. &
2162 & trim(vname(1,idvtav(itrc)))) THEN
2163 got_var(idvtav(itrc))=.true.
2164 avg(ng)%Vid(idvtav(itrc))=var_id(i)
2165 ELSE IF (trim(var_name(i)).eq. &
2166 & trim(vname(1,idttav(itrc)))) THEN
2167 got_var(idttav(itrc))=.true.
2168 avg(ng)%Vid(idttav(itrc))=var_id(i)
2169 END IF
2170 END DO
2171# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
2172 DO itrc=1,nat
2173 IF (trim(var_name(i)).eq.trim(vname(1,idtrcd(itrc)))) THEN
2174 got_var(idtrcd(itrc))=.true.
2175 avg(ng)%Vid(idtrcd(itrc))=var_id(i)
2176 END IF
2177 END DO
2178# endif
2179# endif
2180 END DO
2181!
2182! Check if averages variables are available in input NetCDF file.
2183!
2184 IF (.not.got_var(idtime)) THEN
2185 IF (master) WRITE (stdout,60) trim(vname(1,idtime)), &
2186 & trim(ncname)
2187 exit_flag=3
2188 RETURN
2189 END IF
2190 IF (.not.got_var(idfsur).and.aout(idfsur,ng)) THEN
2191 IF (master) WRITE (stdout,60) trim(vname(1,idfsur)), &
2192 & trim(ncname)
2193 exit_flag=3
2194 RETURN
2195 END IF
2196 IF (.not.got_var(idubar).and.aout(idubar,ng)) THEN
2197 IF (master) WRITE (stdout,60) trim(vname(1,idubar)), &
2198 & trim(ncname)
2199 exit_flag=3
2200 RETURN
2201 END IF
2202 IF (.not.got_var(idvbar).and.aout(idvbar,ng)) THEN
2203 IF (master) WRITE (stdout,60) trim(vname(1,idvbar)), &
2204 & trim(ncname)
2205 exit_flag=3
2206 RETURN
2207 END IF
2208# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
2209 IF (.not.got_var(idfsud).and.aout(idfsud,ng)) THEN
2210 IF (master) WRITE (stdout,60) trim(vname(1,idfsud)), &
2211 & trim(ncname)
2212 exit_flag=3
2213 RETURN
2214 END IF
2215 IF (.not.got_var(idu2dd).and.aout(idu2dd,ng)) THEN
2216 IF (master) WRITE (stdout,60) trim(vname(1,idu2dd)), &
2217 & trim(ncname)
2218 exit_flag=3
2219 RETURN
2220 END IF
2221 IF (.not.got_var(idv2dd).and.aout(idv2dd,ng)) THEN
2222 IF (master) WRITE (stdout,60) trim(vname(1,idv2dd)), &
2223 & trim(ncname)
2224 exit_flag=3
2225 RETURN
2226 END IF
2227# endif
2228 IF (.not.got_var(idu2de).and.aout(idu2de,ng)) THEN
2229 IF (master) WRITE (stdout,60) trim(vname(1,idu2de)), &
2230 & trim(ncname)
2231 exit_flag=3
2232 RETURN
2233 END IF
2234 IF (.not.got_var(idv2dn).and.aout(idv2dn,ng)) THEN
2235 IF (master) WRITE (stdout,60) trim(vname(1,idv2dn)), &
2236 & trim(ncname)
2237 exit_flag=3
2238 RETURN
2239 END IF
2240# ifdef SOLVE3D
2241# ifdef FORWARD_WRITE
2242 IF (.not.got_var(idufx1).and.aout(idufx1,ng)) THEN
2243 IF (master) WRITE (stdout,60) trim(vname(1,idufx1)), &
2244 & trim(ncname)
2245 exit_flag=3
2246 RETURN
2247 END IF
2248 IF (.not.got_var(idufx2).and.aout(idufx2,ng)) THEN
2249 IF (master) WRITE (stdout,60) trim(vname(1,idufx2)), &
2250 & trim(ncname)
2251 exit_flag=3
2252 RETURN
2253 END IF
2254 IF (.not.got_var(idvfx1).and.aout(idvfx1,ng)) THEN
2255 IF (master) WRITE (stdout,60) trim(vname(1,idvfx1)), &
2256 & trim(ncname)
2257 exit_flag=3
2258 RETURN
2259 END IF
2260 IF (.not.got_var(idvfx2).and.aout(idvfx2,ng)) THEN
2261 IF (master) WRITE (stdout,60) trim(vname(1,idvfx2)), &
2262 & trim(ncname)
2263 exit_flag=3
2264 RETURN
2265 END IF
2266# endif
2267 IF (.not.got_var(iduvel).and.aout(iduvel,ng)) THEN
2268 IF (master) WRITE (stdout,60) trim(vname(1,iduvel)), &
2269 & trim(ncname)
2270 exit_flag=3
2271 RETURN
2272 END IF
2273 IF (.not.got_var(idvvel).and.aout(idvvel,ng)) THEN
2274 IF (master) WRITE (stdout,60) trim(vname(1,idvvel)), &
2275 & trim(ncname)
2276 exit_flag=3
2277 RETURN
2278 END IF
2279# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
2280 IF (.not.got_var(idu3dd).and.aout(idu3dd,ng)) THEN
2281 IF (master) WRITE (stdout,60) trim(vname(1,idu3dd)), &
2282 & trim(ncname)
2283 exit_flag=3
2284 RETURN
2285 END IF
2286 IF (.not.got_var(idv3dd).and.aout(idv3dd,ng)) THEN
2287 IF (master) WRITE (stdout,60) trim(vname(1,idv3dd)), &
2288 & trim(ncname)
2289 exit_flag=3
2290 RETURN
2291 END IF
2292# endif
2293 IF (.not.got_var(idu3de).and.aout(idu3de,ng)) THEN
2294 IF (master) WRITE (stdout,60) trim(vname(1,idu3de)), &
2295 & trim(ncname)
2296 exit_flag=3
2297 RETURN
2298 END IF
2299 IF (.not.got_var(idv3dn).and.aout(idv3dn,ng)) THEN
2300 IF (master) WRITE (stdout,60) trim(vname(1,idv3dn)), &
2301 & trim(ncname)
2302 exit_flag=3
2303 RETURN
2304 END IF
2305 IF (.not.got_var(idovel).and.aout(idovel,ng)) THEN
2306 IF (master) WRITE (stdout,60) trim(vname(1,idovel)), &
2307 & trim(ncname)
2308 exit_flag=3
2309 RETURN
2310 END IF
2311 IF (.not.got_var(idwvel).and.aout(idwvel,ng)) THEN
2312 IF (master) WRITE (stdout,60) trim(vname(1,idwvel)), &
2313 & trim(ncname)
2314 exit_flag=3
2315 RETURN
2316 END IF
2317 IF (.not.got_var(iddano).and.aout(iddano,ng)) THEN
2318 IF (master) WRITE (stdout,60) trim(vname(1,iddano)), &
2319 & trim(ncname)
2320 exit_flag=3
2321 RETURN
2322 END IF
2323# ifdef LMD_SKPP
2324 IF (.not.got_var(idhsbl).and.aout(idhsbl,ng)) THEN
2325 IF (master) WRITE (stdout,60) trim(vname(1,idhsbl)), &
2326 & trim(ncname)
2327 exit_flag=3
2328 RETURN
2329 END IF
2330# endif
2331# ifdef LMD_BKPP
2332 IF (.not.got_var(idhbbl).and.aout(idhbbl,ng)) THEN
2333 IF (master) WRITE (stdout,60) trim(vname(1,idhbbl)), &
2334 & trim(ncname)
2335 exit_flag=3
2336 RETURN
2337 END IF
2338# endif
2339# endif
2340 IF (.not.got_var(id2dpv).and.aout(id2dpv,ng)) THEN
2341 IF (master) WRITE (stdout,60) trim(vname(1,id2dpv)), &
2342 & trim(ncname)
2343 exit_flag=3
2344 RETURN
2345 END IF
2346 IF (.not.got_var(id2drv).and.aout(id2drv,ng)) THEN
2347 IF (master) WRITE (stdout,60) trim(vname(1,id2drv)), &
2348 & trim(ncname)
2349 exit_flag=3
2350 RETURN
2351 END IF
2352# ifdef SOLVE3D
2353 IF (.not.got_var(id3dpv).and.aout(id3dpv,ng)) THEN
2354 IF (master) WRITE (stdout,60) trim(vname(1,id3dpv)), &
2355 & trim(ncname)
2356 exit_flag=3
2357 RETURN
2358 END IF
2359 IF (.not.got_var(id3drv).and.aout(id3drv,ng)) THEN
2360 IF (master) WRITE (stdout,60) trim(vname(1,id3drv)), &
2361 & trim(ncname)
2362 exit_flag=3
2363 RETURN
2364 END IF
2365# endif
2366 IF (.not.got_var(idzzav).and.aout(idzzav,ng)) THEN
2367 IF (master) WRITE (stdout,60) trim(vname(1,idzzav)), &
2368 & trim(ncname)
2369 exit_flag=3
2370 RETURN
2371 END IF
2372 IF (.not.got_var(idu2av).and.aout(idu2av,ng)) THEN
2373 IF (master) WRITE (stdout,60) trim(vname(1,idu2av)), &
2374 & trim(ncname)
2375 exit_flag=3
2376 RETURN
2377 END IF
2378 IF (.not.got_var(idv2av).and.aout(idv2av,ng)) THEN
2379 IF (master) WRITE (stdout,60) trim(vname(1,idv2av)), &
2380 & trim(ncname)
2381 exit_flag=3
2382 RETURN
2383 END IF
2384# ifdef SOLVE3D
2385 IF (.not.got_var(idhuav).and.aout(idhuav,ng)) THEN
2386 IF (master) WRITE (stdout,60) trim(vname(1,idhuav)), &
2387 & trim(ncname)
2388 exit_flag=3
2389 RETURN
2390 END IF
2391 IF (.not.got_var(idhvav).and.aout(idhvav,ng)) THEN
2392 IF (master) WRITE (stdout,60) trim(vname(1,idhvav)), &
2393 & trim(ncname)
2394 exit_flag=3
2395 RETURN
2396 END IF
2397 IF (.not.got_var(iduuav).and.aout(iduuav,ng)) THEN
2398 IF (master) WRITE (stdout,60) trim(vname(1,iduuav)), &
2399 & trim(ncname)
2400 exit_flag=3
2401 RETURN
2402 END IF
2403 IF (.not.got_var(iduvav).and.aout(iduvav,ng)) THEN
2404 IF (master) WRITE (stdout,60) trim(vname(1,iduvav)), &
2405 & trim(ncname)
2406 exit_flag=3
2407 RETURN
2408 END IF
2409 IF (.not.got_var(idvvav).and.aout(idvvav,ng)) THEN
2410 IF (master) WRITE (stdout,60) trim(vname(1,idvvav)), &
2411 & trim(ncname)
2412 exit_flag=3
2413 RETURN
2414 END IF
2415# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
2416 IF (.not.got_var(idvvis).and.aout(idvvis,ng)) THEN
2417 IF (master) WRITE (stdout,60) trim(vname(1,idvvis)), &
2418 & trim(ncname)
2419 exit_flag=3
2420 RETURN
2421 END IF
2422 IF (.not.got_var(idtdif).and.aout(idtdif,ng)) THEN
2423 IF (master) WRITE (stdout,60) trim(vname(1,idtdif)), &
2424 & trim(ncname)
2425 exit_flag=3
2426 RETURN
2427 END IF
2428# ifdef SALINITY
2429 IF (.not.got_var(idsdif).and.aout(idsdif,ng)) THEN
2430 IF (master) WRITE (stdout,60) trim(vname(1,idsdif)), &
2431 & trim(ncname)
2432 exit_flag=3
2433 RETURN
2434 END IF
2435# endif
2436# endif
2437# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
2438 IF (.not.got_var(idpair).and.aout(idpair,ng)) THEN
2439 IF (master) WRITE (stdout,60) trim(vname(1,idpair)), &
2440 & trim(ncname)
2441 exit_flag=3
2442 RETURN
2443 END IF
2444# endif
2445# if defined BULK_FLUXES || defined ECOSIM
2446 IF (.not.got_var(iduair).and.aout(iduair,ng)) THEN
2447 IF (master) WRITE (stdout,60) trim(vname(1,iduair)), &
2448 & trim(ncname)
2449 exit_flag=3
2450 RETURN
2451 END IF
2452 IF (.not.got_var(idvair).and.aout(idvair,ng)) THEN
2453 IF (master) WRITE (stdout,60) trim(vname(1,idvair)), &
2454 & trim(ncname)
2455 exit_flag=3
2456 RETURN
2457 END IF
2458 IF (.not.got_var(iduaie).and.aout(iduaie,ng)) THEN
2459 IF (master) WRITE (stdout,60) trim(vname(1,iduaie)), &
2460 & trim(ncname)
2461 exit_flag=3
2462 RETURN
2463 END IF
2464 IF (.not.got_var(idvain).and.aout(idvain,ng)) THEN
2465 IF (master) WRITE (stdout,60) trim(vname(1,idvain)), &
2466 & trim(ncname)
2467 exit_flag=3
2468 RETURN
2469 END IF
2470# endif
2471 IF (.not.got_var(idtsur(itemp)).and.aout(idtsur(itemp),ng)) THEN
2472 IF (master) WRITE (stdout,60) trim(vname(1,idtsur(itemp))), &
2473 & trim(ncname)
2474 exit_flag=3
2475 RETURN
2476 END IF
2477# ifdef SALINITY
2478 IF (.not.got_var(idtsur(isalt)).and.aout(idtsur(isalt),ng)) THEN
2479 IF (master) WRITE (stdout,60) trim(vname(1,idtsur(isalt))), &
2480 & trim(ncname)
2481 exit_flag=3
2482 RETURN
2483 END IF
2484# endif
2485# if defined BULK_FLUXES || defined FRC_COUPLING
2486 IF (.not.got_var(idlhea).and.aout(idlhea,ng)) THEN
2487 IF (master) WRITE (stdout,60) trim(vname(1,idlhea)), &
2488 & trim(ncname)
2489 exit_flag=3
2490 RETURN
2491 END IF
2492 IF (.not.got_var(idshea).and.aout(idshea,ng)) THEN
2493 IF (master) WRITE (stdout,60) trim(vname(1,idshea)), &
2494 & trim(ncname)
2495 exit_flag=3
2496 RETURN
2497 END IF
2498 IF (.not.got_var(idlrad).and.aout(idlrad,ng)) THEN
2499 IF (master) WRITE (stdout,60) trim(vname(1,idlrad)), &
2500 & trim(ncname)
2501 exit_flag=3
2502 RETURN
2503 END IF
2504# endif
2505# ifdef BULK_FLUXES
2506 IF (.not.got_var(idtair).and.aout(idtair,ng)) THEN
2507 IF (master) WRITE (stdout,60) trim(vname(1,idtair)), &
2508 & trim(ncname)
2509 exit_flag=3
2510 RETURN
2511 END IF
2512# ifdef EMINUSP
2513 IF (.not.got_var(idevap).and.aout(idevap,ng)) THEN
2514 IF (master) WRITE (stdout,60) trim(vname(1,idevap)), &
2515 & trim(ncname)
2516 exit_flag=3
2517 RETURN
2518 END IF
2519 IF (.not.got_var(idrain).and.aout(idrain,ng)) THEN
2520 IF (master) WRITE (stdout,60) trim(vname(1,idrain)), &
2521 & trim(ncname)
2522 exit_flag=3
2523 RETURN
2524 END IF
2525# endif
2526# endif
2527# ifdef SHORTWAVE
2528 IF (.not.got_var(idsrad).and.aout(idsrad,ng)) THEN
2529 IF (master) WRITE (stdout,60) trim(vname(1,idsrad)), &
2530 & trim(ncname)
2531 exit_flag=3
2532 RETURN
2533 END IF
2534# endif
2535# endif
2536 IF (.not.got_var(idusms).and.aout(idusms,ng)) THEN
2537 IF (master) WRITE (stdout,60) trim(vname(1,idusms)), &
2538 & trim(ncname)
2539 exit_flag=3
2540 RETURN
2541 END IF
2542 IF (.not.got_var(idvsms).and.aout(idvsms,ng)) THEN
2543 IF (master) WRITE (stdout,60) trim(vname(1,idvsms)), &
2544 & trim(ncname)
2545 exit_flag=3
2546 RETURN
2547 END IF
2548 IF (.not.got_var(idubms).and.aout(idubms,ng)) THEN
2549 IF (master) WRITE (stdout,60) trim(vname(1,idubms)), &
2550 & trim(ncname)
2551 exit_flag=3
2552 RETURN
2553 END IF
2554 IF (.not.got_var(idvbms).and.aout(idvbms,ng)) THEN
2555 IF (master) WRITE (stdout,60) trim(vname(1,idvbms)), &
2556 & trim(ncname)
2557 exit_flag=3
2558 RETURN
2559 END IF
2560# ifdef SOLVE3D
2561 DO itrc=1,nt(ng)
2562 IF (.not.got_var(idtvar(itrc)).and.aout(idtvar(itrc),ng)) THEN
2563 IF (master) WRITE (stdout,60) trim(vname(1,idtvar(itrc))), &
2564 & trim(ncname)
2565 exit_flag=3
2566 RETURN
2567 END IF
2568 END DO
2569 DO itrc=1,nat
2570 IF (.not.got_var(ihutav(itrc)).and.aout(ihutav(itrc),ng)) THEN
2571 IF (master) WRITE (stdout,60) trim(vname(1,ihutav(itrc))), &
2572 & trim(ncname)
2573 exit_flag=3
2574 RETURN
2575 END IF
2576 IF (.not.got_var(ihvtav(itrc)).and.aout(ihvtav(itrc),ng)) THEN
2577 IF (master) WRITE (stdout,60) trim(vname(1,ihvtav(itrc))), &
2578 & trim(ncname)
2579 exit_flag=3
2580 RETURN
2581 END IF
2582 IF (.not.got_var(idutav(itrc)).and.aout(idutav(itrc),ng)) THEN
2583 IF (master) WRITE (stdout,60) trim(vname(1,idutav(itrc))), &
2584 & trim(ncname)
2585 exit_flag=3
2586 RETURN
2587 END IF
2588 IF (.not.got_var(idvtav(itrc)).and.aout(idvtav(itrc),ng)) THEN
2589 IF (master) WRITE (stdout,60) trim(vname(1,idvtav(itrc))), &
2590 & trim(ncname)
2591 exit_flag=3
2592 RETURN
2593 END IF
2594 IF (.not.got_var(idttav(itrc)).and.aout(idttav(itrc),ng)) THEN
2595 IF (master) WRITE (stdout,60) trim(vname(1,idttav(itrc))), &
2596 & trim(ncname)
2597 exit_flag=3
2598 RETURN
2599 END IF
2600 END DO
2601# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
2602 DO itrc=1,nat
2603 IF (.not.got_var(idtrcd(itrc)).and.aout(idtrcd(itrc),ng)) THEN
2604 IF (master) WRITE (stdout,60) trim(vname(1,idtrcd(itrc))), &
2605 & trim(ncname)
2606 exit_flag=3
2607 RETURN
2608 END IF
2609 END DO
2610# endif
2611# endif
2612
2613# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
2614!
2615! Scan bottom boundary layer model and waves variables from input
2616! NetCDF and activate switches for time-averaged variables. Get
2617! variable IDs.
2618!
2619 CALL bbl_def_nf90 (ng, model, ldef, aout, avg)
2620 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2621# endif
2622
2623# if defined ICE_MODEL && defined SOLVE3D
2624!
2625! Scan sea-ice variables from input NetCDF and activate switches for
2626! time-averaged variables. Get variable IDs.
2627!
2628 CALL ice_def_nf90 (ng, model, ldef, aout, avg)
2629# endif
2630
2631# if defined SEDIMENT && defined SOLVE3D
2632!
2633! Scan sediment model variables from input NetCDF and activate
2634! switches for time-averaged variables. Get variable IDs.
2635!
2636 CALL sediment_def_nf90 (ng, model, ldef, aout, avg)
2637 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2638# endif
2639
2640# if defined WEC_VF && defined SOLVE3D
2641!
2642! Scan Waves Effect on Currents variables from input NetCDF and
2643! activate switches for time-averaged variables. Get variable IDs.
2644!
2645 CALL wec_def_nf90 (ng, model, ldef, aout, avg)
2646 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2647# endif
2648!
2649! Set unlimited time record dimension to the appropriate value.
2650!
2651 IF (nrst(ng).eq.navg(ng)) THEN
2652 IF (ndefavg(ng).gt.0) THEN
2653 avg(ng)%Rindex=((ntstart(ng)-1)- &
2654 & ndefavg(ng)*((ntstart(ng)-1)/ndefavg(ng)))/ &
2655 & navg(ng)
2656 ELSE
2657 avg(ng)%Rindex=(ntstart(ng)-1)/navg(ng)
2658 END IF
2659 ELSE
2660 avg(ng)%Rindex=rec_size
2661 END IF
2662 END IF query
2663!
2664! Set initial average time. Notice that the value is offset by half
2665! nAVG*dt so there is not a special case when computing its value
2666
2667# ifdef ADJOINT
2668! in "ad_set_avg".
2669!
2670 avgtime(ng)=time(ng)+0.5_r8*real(navg(ng),r8)*dt(ng)
2671# else
2672! in "set_avg".
2673!
2674 IF (ntsavg(ng).eq.1) THEN
2675 avgtime(ng)=time(ng)-0.5_r8*real(navg(ng),r8)*dt(ng)
2676 ELSE
2677 avgtime(ng)=time(ng)+real(ntsavg(ng),r8)*dt(ng)- &
2678 & 0.5_r8*real(navg(ng),r8)*dt(ng)
2679 END IF
2680# endif
2681!
2682 10 FORMAT (2x,'DEF_AVG_NF90 - creating average file,',t56, &
2683 & 'Grid ',i2.2,': ',a)
2684 20 FORMAT (2x,'DEF_AVG_NF90 - inquiring average file,',t56, &
2685 & 'Grid ',i2.2,': ',a)
2686 30 FORMAT (/,' DEF_AVG_NF90 - unable to create averages NetCDF', &
2687 & ' file: ',a)
2688 40 FORMAT (1pe11.4,1x,'millimeter')
2689 50 FORMAT (/,' DEF_AVG_NF90 - unable to open averages NetCDF', &
2690 & ' file: ',a)
2691 60 FORMAT (/,' DEF_AVG_NF90 - unable to find variable: ',a,2x, &
2692 & ' in averages NetCDF file: ',a)
2693!
2694 RETURN
integer, parameter nf_tout
Definition mod_netcdf.F:207
subroutine, public netcdf_check_dim(ng, model, ncname, ncid)
Definition mod_netcdf.F:538
subroutine, public netcdf_open(ng, model, ncname, omode, ncid)
integer, parameter nf_fout
Definition mod_netcdf.F:188
subroutine, public netcdf_enddef(ng, model, ncname, ncid)
character(len=100), dimension(mvars) var_name
Definition mod_netcdf.F:169
integer, dimension(mvars) var_id
Definition mod_netcdf.F:160
integer n_var
Definition mod_netcdf.F:152
integer rec_size
Definition mod_netcdf.F:156
subroutine, public netcdf_create(ng, model, ncname, ncid)
subroutine, public netcdf_inq_var(ng, model, ncname, ncid, myvarname, searchvar, varid, nvardim, nvaratt)

References mod_ncparam::aout, mod_iounits::avg, mod_scalars::avgtime, bbl_output_mod::bbl_def_nf90(), mod_scalars::dt, mod_scalars::exit_flag, strings_mod::founderror(), mod_ncparam::id2dpv, mod_ncparam::id2drv, mod_ncparam::id3dpv, mod_ncparam::id3drv, mod_ncparam::iddano, mod_ncparam::idevap, mod_ncparam::idfsud, mod_ncparam::idfsur, mod_ncparam::idhbbl, mod_ncparam::idhsbl, mod_ncparam::idhuav, mod_ncparam::idhvav, mod_ncparam::idlhea, mod_ncparam::idlrad, mod_ncparam::idovel, mod_ncparam::idpair, mod_ncparam::idrain, mod_ncparam::idrwet, mod_ncparam::idsdif, mod_sediment::idsed, mod_ncparam::idshea, mod_ncparam::idsrad, mod_ncparam::idtair, mod_ncparam::idtdif, mod_ncparam::idtime, mod_ncparam::idtrcd, mod_ncparam::idtsur, mod_ncparam::idttav, mod_ncparam::idtvar, mod_ncparam::idu2av, mod_ncparam::idu2dd, mod_ncparam::idu2de, mod_ncparam::idu3dd, mod_ncparam::idu3de, mod_ncparam::iduaie, mod_ncparam::iduair, mod_ncparam::idubar, mod_ncparam::idubcs, mod_ncparam::idubms, mod_ncparam::idubot, mod_ncparam::idubrs, mod_ncparam::idubur, mod_ncparam::idubws, mod_ncparam::idufx1, mod_ncparam::idufx2, mod_ncparam::idusms, mod_ncparam::idutav, mod_ncparam::iduuav, mod_ncparam::iduvav, mod_ncparam::iduvel, mod_ncparam::iduvwc, mod_ncparam::idv2av, mod_ncparam::idv2dd, mod_ncparam::idv2dn, mod_ncparam::idv3dd, mod_ncparam::idv3dn, mod_ncparam::idvain, mod_ncparam::idvair, mod_ncparam::idvbar, mod_ncparam::idvbcs, mod_ncparam::idvbms, mod_ncparam::idvbot, mod_ncparam::idvbrs, mod_ncparam::idvbvr, mod_ncparam::idvbws, mod_ncparam::idvfx1, mod_ncparam::idvfx2, mod_ncparam::idvsms, mod_ncparam::idvtav, mod_ncparam::idvvav, mod_ncparam::idvvel, mod_ncparam::idvvis, mod_ncparam::idwvel, mod_ncparam::idzzav, mod_ncparam::ihutav, mod_ncparam::ihvtav, mod_ncparam::iinfo, mod_param::iobounds, mod_scalars::isalt, mod_scalars::itemp, mod_parallel::master, mod_param::n, mod_netcdf::n_var, mod_param::nat, mod_scalars::navg, mod_biology::nbac, mod_biology::nbands, mod_param::nbed, mod_scalars::ndefavg, mod_biology::ndom, mod_netcdf::netcdf_check_dim(), mod_netcdf::netcdf_create(), mod_netcdf::netcdf_enddef(), mod_netcdf::netcdf_inq_var(), mod_netcdf::netcdf_open(), mod_netcdf::nf_fout, mod_netcdf::nf_tout, mod_biology::nfec, mod_scalars::noerror, mod_biology::nphy, mod_scalars::nrst, mod_param::nst, mod_fourdvar::nstatevar, mod_param::nt, mod_scalars::ntsavg, mod_scalars::ntstart, mod_ncparam::nv, mod_param::p2dvar, mod_param::p3dvar, mod_param::r2dvar, mod_param::r3dvar, mod_scalars::rclock, mod_netcdf::rec_size, mod_sediment::sd50, sediment_output_mod::sediment_def_nf90(), mod_iounits::sourcefile, mod_iounits::stdout, mod_scalars::time, mod_param::u2dvar, mod_param::u3dvar, mod_param::v2dvar, mod_param::v3dvar, mod_netcdf::var_id, mod_netcdf::var_name, and mod_ncparam::vname.

Referenced by def_avg().

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

◆ def_avg_pio()

subroutine, private def_avg_mod::def_avg_pio ( integer, intent(in) ng,
integer, intent(in) model,
logical, intent(in) ldef )
private

Definition at line 2700 of file def_avg.F.

2701!***********************************************************************
2702!
2703 USE mod_pio_netcdf
2704!
2705! Imported variable declarations.
2706!
2707 integer, intent(in) :: ng, model
2708!
2709 logical, intent(in) :: ldef
2710!
2711! Local variable declarations.
2712!
2713 logical :: got_var(NV)
2714!
2715 integer, parameter :: Natt = 25
2716
2717 integer :: i, ifield, itrc, j, nvd3, nvd4
2718# if defined WRITE_WATER && defined MASKING
2719 integer :: xy_pdim, xyz_pdim
2720# endif
2721 integer :: recdim, status
2722
2723 integer :: DimIDs(nDimID)
2724 integer :: p2dgrd(3), t2dgrd(3), u2dgrd(3), v2dgrd(3)
2725
2726# ifdef SOLVE3D
2727# ifdef SEDIMENT
2728 integer :: b3dgrd(4)
2729# endif
2730 integer :: p3dgrd(4), t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
2731# endif
2732!
2733 real(r8) :: Aval(6)
2734!
2735# ifdef ADJOINT
2736 character (len=21) :: Prefix
2737# else
2738 character (len=13) :: Prefix
2739# endif
2740 character (len=256) :: ncname
2741 character (len=MaxLen) :: Vinfo(Natt)
2742
2743 character (len=*), parameter :: MyFile = &
2744 & __FILE__//", def_avg_pio"
2745!
2746 sourcefile=myfile
2747!
2748!-----------------------------------------------------------------------
2749! Set and report file name.
2750!-----------------------------------------------------------------------
2751!
2752 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2753 ncname=avg(ng)%name
2754!
2755 IF (master) THEN
2756 IF (ldef) THEN
2757 WRITE (stdout,10) ng, trim(ncname)
2758 ELSE
2759 WRITE (stdout,20) ng, trim(ncname)
2760 END IF
2761 END IF
2762!
2763!=======================================================================
2764! Create a new averages file.
2765!=======================================================================
2766!
2767 define : IF (ldef) THEN
2768 CALL pio_netcdf_create (ng, model, trim(ncname), &
2769 & avg(ng)%pioFile)
2770 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
2771 IF (master) WRITE (stdout,30) trim(ncname)
2772 RETURN
2773 END IF
2774!
2775!-----------------------------------------------------------------------
2776! Define file dimensions.
2777!-----------------------------------------------------------------------
2778!
2779 dimids=0
2780!
2781 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'xi_rho', &
2782 & iobounds(ng)%xi_rho, dimids( 1))
2783 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2784
2785 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'xi_u', &
2786 & iobounds(ng)%xi_u, dimids( 2))
2787 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2788
2789 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'xi_v', &
2790 & iobounds(ng)%xi_v, dimids( 3))
2791 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2792
2793 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'xi_psi', &
2794 & iobounds(ng)%xi_psi, dimids( 4))
2795 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2796
2797 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'eta_rho', &
2798 & iobounds(ng)%eta_rho, dimids( 5))
2799 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2800
2801 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'eta_u', &
2802 & iobounds(ng)%eta_u, dimids( 6))
2803 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2804
2805 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'eta_v', &
2806 & iobounds(ng)%eta_v, dimids( 7))
2807 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2808
2809 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'eta_psi', &
2810 & iobounds(ng)%eta_psi, dimids( 8))
2811 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2812
2813# if defined WRITE_WATER && defined MASKING
2814 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'xy_rho', &
2815 & iobounds(ng)%xy_rho, dimids(17))
2816 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2817
2818 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'xy_u', &
2819 & iobounds(ng)%xy_u, dimids(18))
2820 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2821
2822 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'xy_v', &
2823 & iobounds(ng)%xy_v, dimids(19))
2824 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2825
2826 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'xy_psi', &
2827 & iobounds(ng)%xy_psi, xy_pdim)
2828 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2829# endif
2830
2831# ifdef SOLVE3D
2832# if defined WRITE_WATER && defined MASKING
2833 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'xyz_rho', &
2834 & iobounds(ng)%xy_rho*n(ng), dimids(20))
2835 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2836
2837 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'xyz_u', &
2838 & iobounds(ng)%xy_u*n(ng), dimids(21))
2839 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2840
2841 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'xyz_v', &
2842 & iobounds(ng)%xy_v*n(ng), dimids(22))
2843 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2844
2845 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'xyz_w', &
2846 & iobounds(ng)%xy_rho*(n(ng)+1), dimids(23))
2847 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2848
2849 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'xyz_psi', &
2850 & iobounds(ng)%xy_psi*n(ng), xyz_pdim)
2851 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2852# endif
2853
2854 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 's_rho', &
2855 & n(ng), dimids( 9))
2856 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2857
2858 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 's_w', &
2859 & n(ng)+1, dimids(10))
2860 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2861
2862 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'tracer', &
2863 & nt(ng), dimids(11))
2864 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2865
2866# ifdef SEDIMENT
2867 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'NST', &
2868 & nst, dimids(32))
2869 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2870
2871 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'Nbed', &
2872 & nbed, dimids(16))
2873 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2874
2875# if defined WRITE_WATER && defined MASKING
2876 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'xybed', &
2877 & iobounds(ng)%xy_rho*nbed, dimids(24))
2878 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2879# endif
2880# endif
2881
2882# ifdef ECOSIM
2883 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'Nbands', &
2884 & nbands, dimids(33))
2885 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2886
2887 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'Nphy', &
2888 & nphy, dimids(25))
2889 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2890
2891 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'Nbac', &
2892 & nbac, dimids(26))
2893 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2894
2895 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'Ndom', &
2896 & ndom, dimids(27))
2897 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2898
2899 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'Nfec', &
2900 & nfec, dimids(28))
2901 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2902# endif
2903# endif
2904
2905 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'boundary', &
2906 & 4, dimids(14))
2907 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2908
2909# ifdef FOUR_DVAR
2910 status=def_dim(ng, model, avg(ng)%pioFile, ncname, 'Nstate', &
2911 & nstatevar(ng), dimids(29))
2912 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2913# endif
2914
2915 status=def_dim(ng, model, avg(ng)%pioFile, ncname, &
2916 & trim(adjustl(vname(5,idtime))), &
2917 & pio_unlimited, dimids(12))
2918 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2919
2920 recdim=dimids(12)
2921!
2922! Set number of dimensions for output variables.
2923!
2924# if defined WRITE_WATER && defined MASKING
2925 nvd3=2
2926 nvd4=2
2927# else
2928 nvd3=3
2929 nvd4=4
2930# endif
2931!
2932! Define dimension vectors for staggered tracer type variables.
2933!
2934# if defined WRITE_WATER && defined MASKING
2935 t2dgrd(1)=dimids(17)
2936 t2dgrd(2)=dimids(12)
2937# ifdef SOLVE3D
2938 t3dgrd(1)=dimids(20)
2939 t3dgrd(2)=dimids(12)
2940# endif
2941# else
2942 t2dgrd(1)=dimids( 1)
2943 t2dgrd(2)=dimids( 5)
2944 t2dgrd(3)=dimids(12)
2945# ifdef SOLVE3D
2946 t3dgrd(1)=dimids( 1)
2947 t3dgrd(2)=dimids( 5)
2948 t3dgrd(3)=dimids( 9)
2949 t3dgrd(4)=dimids(12)
2950# endif
2951# endif
2952!
2953! Define dimension vectors for staggered u-momentum type variables.
2954!
2955# if defined WRITE_WATER && defined MASKING
2956 u2dgrd(1)=dimids(18)
2957 u2dgrd(2)=dimids(12)
2958# ifdef SOLVE3D
2959 u3dgrd(1)=dimids(21)
2960 u3dgrd(2)=dimids(12)
2961# endif
2962# else
2963 u2dgrd(1)=dimids( 2)
2964 u2dgrd(2)=dimids( 6)
2965 u2dgrd(3)=dimids(12)
2966# ifdef SOLVE3D
2967 u3dgrd(1)=dimids( 2)
2968 u3dgrd(2)=dimids( 6)
2969 u3dgrd(3)=dimids( 9)
2970 u3dgrd(4)=dimids(12)
2971# endif
2972# endif
2973!
2974! Define dimension vectors for staggered v-momentum type variables.
2975!
2976# if defined WRITE_WATER && defined MASKING
2977 v2dgrd(1)=dimids(19)
2978 v2dgrd(2)=dimids(12)
2979# ifdef SOLVE3D
2980 v3dgrd(1)=dimids(22)
2981 v3dgrd(2)=dimids(12)
2982# endif
2983# else
2984 v2dgrd(1)=dimids( 3)
2985 v2dgrd(2)=dimids( 7)
2986 v2dgrd(3)=dimids(12)
2987# ifdef SOLVE3D
2988 v3dgrd(1)=dimids( 3)
2989 v3dgrd(2)=dimids( 7)
2990 v3dgrd(3)=dimids( 9)
2991 v3dgrd(4)=dimids(12)
2992# endif
2993# endif
2994!
2995! Define dimension vectors for staggered variables at PSI-points.
2996!
2997# if defined WRITE_WATER && defined MASKING
2998 p2dgrd(1)=xy_pdim
2999 p2dgrd(2)=dimids(12)
3000# ifdef SOLVE3D
3001 p3dgrd(1)=xyz_pdim
3002 p3dgrd(2)=dimids(12)
3003# endif
3004# else
3005 p2dgrd(1)=dimids( 4)
3006 p2dgrd(2)=dimids( 8)
3007 p2dgrd(3)=dimids(12)
3008# ifdef SOLVE3D
3009 p3dgrd(1)=dimids( 4)
3010 p3dgrd(2)=dimids( 8)
3011 p3dgrd(3)=dimids( 9)
3012 p3dgrd(4)=dimids(12)
3013# endif
3014# endif
3015# ifdef SOLVE3D
3016!
3017! Define dimension vector for staggered w-momentum type variables.
3018!
3019# if defined WRITE_WATER && defined MASKING
3020 w3dgrd(1)=dimids(23)
3021 w3dgrd(2)=dimids(12)
3022# else
3023 w3dgrd(1)=dimids( 1)
3024 w3dgrd(2)=dimids( 5)
3025 w3dgrd(3)=dimids(10)
3026 w3dgrd(4)=dimids(12)
3027# endif
3028# ifdef SEDIMENT
3029!
3030! Define dimension vector for sediment bed layer type variables.
3031!
3032# if defined WRITE_WATER && defined MASKING
3033 b3dgrd(1)=dimids(24)
3034 b3dgrd(2)=dimids(12)
3035# else
3036 b3dgrd(1)=dimids( 1)
3037 b3dgrd(2)=dimids( 5)
3038 b3dgrd(3)=dimids(16)
3039 b3dgrd(4)=dimids(12)
3040# endif
3041# endif
3042# endif
3043!
3044! Initialize unlimited time record dimension.
3045!
3046 avg(ng)%Rindex=0
3047!
3048! Initialize local information variable arrays.
3049!
3050 DO i=1,natt
3051 DO j=1,len(vinfo(1))
3052 vinfo(i)(j:j)=' '
3053 END DO
3054 END DO
3055 DO i=1,6
3056 aval(i)=0.0_r8
3057 END DO
3058!
3059! Set long name prefix string.
3060!
3061# ifdef ADJOINT
3062!! Prefix='time-averaged adjoint'
3063 prefix='adjoint'
3064# else
3065!! Prefix='time-averaged'
3066 prefix=char(32) ! blank space
3067# endif
3068!
3069!-----------------------------------------------------------------------
3070! Define time-recordless information variables.
3071!-----------------------------------------------------------------------
3072!
3073 CALL def_info (ng, model, avg(ng)%pioFile, ncname, dimids)
3074 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3075!
3076!-----------------------------------------------------------------------
3077! Define time-varying variables.
3078!-----------------------------------------------------------------------
3079!
3080! Define model time.
3081!
3082 vinfo( 1)=vname(1,idtime)
3083 WRITE (vinfo( 2),'(a,a)') 'averaged ', trim(vname(2,idtime))
3084 WRITE (vinfo( 3),'(a,a)') 'seconds since ', trim(rclock%string)
3085 vinfo( 4)=trim(rclock%calendar)
3086 vinfo(14)=vname(4,idtime)
3087 vinfo(21)=vname(6,idtime)
3088 avg(ng)%pioVar(idtime)%dkind=pio_tout
3089 avg(ng)%pioVar(idtime)%gtype=0
3090!
3091 status=def_var(ng, model, avg(ng)%pioFile, &
3092 & avg(ng)%pioVar(idtime)%vd, &
3093 & pio_tout, 1, (/recdim/), aval, vinfo, ncname, &
3094 & setparaccess = .true.)
3095 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3096!
3097! Define free-surface.
3098!
3099 IF (aout(idfsur,ng)) THEN
3100 vinfo( 1)=vname(1,idfsur)
3101 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idfsur))
3102 vinfo( 3)=vname(3,idfsur)
3103 vinfo(14)=vname(4,idfsur)
3104 vinfo(16)=vname(1,idtime)
3105# if !defined WET_DRY && (defined WRITE_WATER && defined MASKING)
3106 vinfo(20)='mask_rho'
3107# endif
3108 vinfo(21)=vname(6,idfsur)
3109 vinfo(22)='coordinates'
3110 aval(5)=real(iinfo(1,idfsur,ng),r8)
3111 avg(ng)%pioVar(idfsur)%dkind=pio_fout
3112 avg(ng)%pioVar(idfsur)%gtype=r2dvar
3113!
3114 status=def_var(ng, model, avg(ng)%pioFile, &
3115 & avg(ng)%pioVar(idfsur)%vd, &
3116 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3117 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3118 END IF
3119
3120# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
3121!
3122! Define detided free-surface.
3123!
3124 IF (aout(idfsud,ng)) THEN
3125 vinfo( 1)=vname(1,idfsud)
3126 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idfsud))
3127 vinfo( 3)=vname(3,idfsud)
3128 vinfo(14)=vname(4,idfsud)
3129 vinfo(16)=vname(1,idtime)
3130# if defined WRITE_WATER && defined MASKING
3131 vinfo(20)='mask_rho'
3132# endif
3133 vinfo(21)=vname(6,idfsud)
3134 vinfo(22)='coordinates'
3135 aval(5)=real(iinfo(1,idfsud,ng),r8)
3136 avg(ng)%pioVar(idfsud)%dkind=pio_fout
3137 avg(ng)%pioVar(idfsud)%gtype=r2dvar
3138!
3139 status=def_var(ng, model, avg(ng)%pioFile, &
3140 & avg(ng)%pioVar(idfsud)%vd, &
3141 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3142 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3143 END IF
3144# endif
3145!
3146! Define 2D momentum in the XI-direction.
3147!
3148 IF (aout(idubar,ng)) THEN
3149 vinfo( 1)=vname(1,idubar)
3150 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idubar))
3151 vinfo( 3)=vname(3,idubar)
3152 vinfo(14)=vname(4,idubar)
3153 vinfo(16)=vname(1,idtime)
3154# if defined WRITE_WATER && defined MASKING
3155 vinfo(20)='mask_u'
3156# endif
3157 vinfo(21)=vname(6,idubar)
3158 vinfo(22)='coordinates'
3159 aval(5)=real(iinfo(1,idubar,ng),r8)
3160 avg(ng)%pioVar(idubar)%dkind=pio_fout
3161 avg(ng)%pioVar(idubar)%gtype=u2dvar
3162!
3163 status=def_var(ng, model, avg(ng)%pioFile, &
3164 & avg(ng)%pioVar(idubar)%vd, &
3165 & pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3166 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3167 END IF
3168
3169# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
3170!
3171! Define detided 2D momentum in the XI-direction.
3172!
3173 IF (aout(idu2dd,ng)) THEN
3174 vinfo( 1)=vname(1,idu2dd)
3175 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idu2dd))
3176 vinfo( 3)=vname(3,idu2dd)
3177 vinfo(14)=vname(4,idu2dd)
3178 vinfo(16)=vname(1,idtime)
3179# if defined WRITE_WATER && defined MASKING
3180 vinfo(20)='mask_u'
3181# endif
3182 vinfo(21)=vname(6,idu2dd)
3183 vinfo(22)='coordinates'
3184 aval(5)=real(iinfo(1,idu2dd,ng),r8)
3185 avg(ng)%pioVar(idu2dd)%dkind=pio_fout
3186 avg(ng)%pioVar(idu2dd)%gtype=u2dvar
3187!
3188 status=def_var(ng, model, avg(ng)%pioFile, &
3189 & avg(ng)%pioVar(idu2dd)%vd, &
3190 & pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3191 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3192 END IF
3193# endif
3194!
3195! Define 2D momentum in the ETA-direction.
3196!
3197 IF (aout(idvbar,ng)) THEN
3198 vinfo( 1)=vname(1,idvbar)
3199 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idvbar))
3200 vinfo( 3)=vname(3,idvbar)
3201 vinfo(14)=vname(4,idvbar)
3202 vinfo(16)=vname(1,idtime)
3203# if defined WRITE_WATER && defined MASKING
3204 vinfo(20)='mask_v'
3205# endif
3206 vinfo(21)=vname(6,idvbar)
3207 vinfo(22)='coordinates'
3208 aval(5)=real(iinfo(1,idvbar,ng),r8)
3209 avg(ng)%pioVar(idvbar)%dkind=pio_fout
3210 avg(ng)%pioVar(idvbar)%gtype=v2dvar
3211!
3212 status=def_var(ng, model, avg(ng)%pioFile, &
3213 & avg(ng)%pioVar(idvbar)%vd, &
3214 & pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3215 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3216 END IF
3217
3218# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
3219!
3220! Define detided 2D momentum in the ETA-direction.
3221!
3222 IF (aout(idv2dd,ng)) THEN
3223 vinfo( 1)=vname(1,idv2dd)
3224 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idv2dd))
3225 vinfo( 3)=vname(3,idv2dd)
3226 vinfo(14)=vname(4,idv2dd)
3227 vinfo(16)=vname(1,idtime)
3228# if defined WRITE_WATER && defined MASKING
3229 vinfo(20)='mask_v'
3230# endif
3231 vinfo(21)=vname(6,idv2dd)
3232 vinfo(22)='coordinates'
3233 aval(5)=real(iinfo(1,idv2dd,ng),r8)
3234 avg(ng)%pioVar(idv2dd)%dkind=pio_fout
3235 avg(ng)%pioVar(idv2dd)%gtype=v2dvar
3236!
3237 status=def_var(ng, model, avg(ng)%pioFile, &
3238 & avg(ng)%pioVar(idv2dd)%vd, &
3239 & pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3240 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3241 END IF
3242# endif
3243!
3244! Define 2D Eastward momentum component at RHO-points.
3245!
3246 IF (aout(idu2de,ng)) THEN
3247 vinfo( 1)=vname(1,idu2de)
3248 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idu2de))
3249 vinfo( 3)=vname(3,idu2de)
3250 vinfo(14)=vname(4,idu2de)
3251 vinfo(16)=vname(1,idtime)
3252# if defined WRITE_WATER && defined MASKING
3253 vinfo(20)='mask_rho'
3254# endif
3255 vinfo(21)=vname(6,idu2de)
3256 vinfo(22)='coordinates'
3257 aval(5)=real(iinfo(1,idu2de,ng),r8)
3258 avg(ng)%pioVar(idu2de)%dkind=pio_fout
3259 avg(ng)%pioVar(idu2de)%gtype=r2dvar
3260!
3261 status=def_var(ng, model, avg(ng)%pioFile, &
3262 & avg(ng)%pioVar(idu2de)%vd, &
3263 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3264 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3265 END IF
3266!
3267! Define 2D Northward momentum component at RHO-points.
3268!
3269 IF (aout(idv2dn,ng)) THEN
3270 vinfo( 1)=vname(1,idv2dn)
3271 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idv2dn))
3272 vinfo( 3)=vname(3,idv2dn)
3273 vinfo(14)=vname(4,idv2dn)
3274 vinfo(16)=vname(1,idtime)
3275# if defined WRITE_WATER && defined MASKING
3276 vinfo(20)='mask_rho'
3277# endif
3278 vinfo(21)=vname(6,idv2dn)
3279 vinfo(22)='coordinates'
3280 aval(5)=real(iinfo(1,idv2dn,ng),r8)
3281 avg(ng)%pioVar(idv2dn)%dkind=pio_fout
3282 avg(ng)%pioVar(idv2dn)%gtype=r2dvar
3283!
3284 status=def_var(ng, model, avg(ng)%pioFile, &
3285 & avg(ng)%pioVar(idv2dn)%vd, &
3286 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3287 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3288 END IF
3289
3290# ifdef SOLVE3D
3291# ifdef FORWARD_WRITE
3292!
3293! Define time-averaged mass fluxes for 3D momentum coupling.
3294!
3295 IF (aout(idufx1,ng)) THEN
3296 vinfo( 1)=vname(1,idufx1)
3297 vinfo( 2)=vname(2,idufx1)
3298 vinfo( 3)=vname(3,idufx1)
3299 vinfo(14)=vname(4,idufx1)
3300 vinfo(16)=vname(1,idtime)
3301# if defined WRITE_WATER && defined MASKING
3302 vinfo(20)='mask_u'
3303# endif
3304 vinfo(21)=vname(6,idufx1)
3305 vinfo(22)='coordinates'
3306 aval(5)=real(u2dvar,r8)
3307 avg(ng)%pioVar(idufx1)%dkind=pio_fout
3308 avg(ng)%pioVar(idufx1)%gtype=u2dvar
3309!
3310 status=def_var(ng, model, avg(ng)%pioFile, &
3311 & avg(ng)%pioVar(idufx1)%vd, &
3312 & pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3313 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3314 END IF
3315!
3316 IF (aout(idufx2,ng)) THEN
3317 vinfo( 1)=vname(1,idufx2)
3318 vinfo( 2)=vname(2,idufx2)
3319 vinfo( 3)=vname(3,idufx2)
3320 vinfo(14)=vname(4,idufx2)
3321 vinfo(16)=vname(1,idtime)
3322# if defined WRITE_WATER && defined MASKING
3323 vinfo(20)='mask_u'
3324# endif
3325 vinfo(21)=vname(6,idufx2)
3326 vinfo(22)='coordinates'
3327 aval(5)=real(u2dvar,r8)
3328 avg(ng)%pioVar(idufx2)%dkind=pio_fout
3329 avg(ng)%pioVar(idufx2)%gtype=u2dvar
3330!
3331 status=def_var(ng, model, avg(ng)%pioFile, &
3332 & avg(ng)%pioVar(idufx2)%vd, &
3333 & pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3334 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3335 END IF
3336!
3337 IF (aout(idvfx1,ng)) THEN
3338 vinfo( 1)=vname(1,idvfx1)
3339 vinfo( 2)=vname(2,idvfx1)
3340 vinfo( 3)=vname(3,idvfx1)
3341 vinfo(14)=vname(4,idvfx1)
3342 vinfo(16)=vname(1,idtime)
3343# if defined WRITE_WATER && defined MASKING
3344 vinfo(20)='mask_v'
3345# endif
3346 vinfo(21)=vname(6,idvfx1)
3347 vinfo(22)='coordinates'
3348 aval(5)=real(v2dvar,r8)
3349 avg(ng)%pioVar(idvfx1)%dkind=pio_fout
3350 avg(ng)%pioVar(idvfx1)%gtype=v2dvar
3351!
3352 status=def_var(ng, model, avg(ng)%pioFile, &
3353 & avg(ng)%pioVar(idvfx1)%vd, &
3354 & pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3355 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3356 END IF
3357!
3358 IF (aout(idvfx2,ng)) THEN
3359 vinfo( 1)=vname(1,idvfx2)
3360 vinfo( 2)=vname(2,idvfx2)
3361 vinfo( 3)=vname(3,idvfx2)
3362 vinfo(14)=vname(4,idvfx2)
3363 vinfo(16)=vname(1,idtime)
3364# if defined WRITE_WATER && defined MASKING
3365 vinfo(20)='mask_v'
3366# endif
3367 vinfo(21)=vname(6,idvfx2)
3368 vinfo(22)='coordinates'
3369 aval(5)=real(v2dvar,r8)
3370 avg(ng)%pioVar(idvfx2)%dkind=pio_fout
3371 avg(ng)%pioVar(idvfx2)%gtype=v2dvar
3372!
3373 status=def_var(ng, model, avg(ng)%pioFile, &
3374 & avg(ng)%pioVar(idvfx2)%vd, &
3375 & pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3376 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3377 END IF
3378# endif
3379!
3380! Define 3D momentum component in the XI-direction.
3381!
3382 IF (aout(iduvel,ng)) THEN
3383 vinfo( 1)=vname(1,iduvel)
3384 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,iduvel))
3385 vinfo( 3)=vname(3,iduvel)
3386 vinfo(14)=vname(4,iduvel)
3387 vinfo(16)=vname(1,idtime)
3388# if defined WRITE_WATER && defined MASKING
3389 vinfo(20)='mask_u'
3390# endif
3391 vinfo(21)=vname(6,iduvel)
3392 vinfo(22)='coordinates'
3393 aval(5)=real(iinfo(1,iduvel,ng),r8)
3394 avg(ng)%pioVar(iduvel)%dkind=pio_fout
3395 avg(ng)%pioVar(iduvel)%gtype=u3dvar
3396!
3397 status=def_var(ng, model, avg(ng)%pioFile, &
3398 & avg(ng)%pioVar(iduvel)%vd, &
3399 & pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
3400 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3401 END IF
3402
3403# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
3404!
3405! Define detided 3D momentum component in the XI-direction.
3406!
3407 IF (aout(idu3dd,ng)) THEN
3408 vinfo( 1)=vname(1,idu3dd)
3409 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idu3dd))
3410 vinfo( 3)=vname(3,idu3dd)
3411 vinfo(14)=vname(4,idu3dd)
3412 vinfo(16)=vname(1,idtime)
3413# if defined WRITE_WATER && defined MASKING
3414 vinfo(20)='mask_u'
3415# endif
3416 vinfo(21)=vname(6,idu3dd)
3417 vinfo(22)='coordinates'
3418 aval(5)=real(iinfo(1,idu3dd,ng),r8)
3419 avg(ng)%pioVar(idu3dd)%dkind=pio_fout
3420 avg(ng)%pioVar(idu3dd)%gtype=u3dvar
3421!
3422 status=def_var(ng, model, avg(ng)%pioFile, &
3423 & avg(ng)%pioVar(idu3dd)%vd, &
3424 & pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
3425 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3426 END IF
3427# endif
3428!
3429! Define 3D momentum component in the ETA-direction.
3430!
3431 IF (aout(idvvel,ng)) THEN
3432 vinfo( 1)=vname(1,idvvel)
3433 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idvvel))
3434 vinfo( 3)=vname(3,idvvel)
3435 vinfo(14)=vname(4,idvvel)
3436 vinfo(16)=vname(1,idtime)
3437# if defined WRITE_WATER && defined MASKING
3438 vinfo(20)='mask_v'
3439# endif
3440 vinfo(21)=vname(6,idvvel)
3441 vinfo(22)='coordinates'
3442 aval(5)=real(iinfo(1,idvvel,ng),r8)
3443 avg(ng)%pioVar(idvvel)%dkind=pio_fout
3444 avg(ng)%pioVar(idvvel)%gtype=v3dvar
3445!
3446 status=def_var(ng, model, avg(ng)%pioFile, &
3447 & avg(ng)%pioVar(idvvel)%vd, &
3448 & pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
3449 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3450 END IF
3451
3452# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
3453!
3454! Define detided 3D momentum component in the ETA-direction.
3455!
3456 IF (aout(idv3dd,ng)) THEN
3457 vinfo( 1)=vname(1,idv3dd)
3458 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idv3dd))
3459 vinfo( 3)=vname(3,idv3dd)
3460 vinfo(14)=vname(4,idv3dd)
3461 vinfo(16)=vname(1,idtime)
3462# if defined WRITE_WATER && defined MASKING
3463 vinfo(20)='mask_v'
3464# endif
3465 vinfo(21)=vname(6,idv3dd)
3466 vinfo(22)='coordinates'
3467 aval(5)=real(iinfo(1,idv3dd,ng),r8)
3468 avg(ng)%pioVar(idv3dd)%dkind=pio_fout
3469 avg(ng)%pioVar(idv3dd)%gtype=v3dvar
3470!
3471 status=def_var(ng, model, avg(ng)%pioFile, &
3472 & avg(ng)%pioVar(idv3dd)%vd, &
3473 & pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
3474 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3475 END IF
3476# endif
3477!
3478! Define 3D Eastward momentum component at RHO-points.
3479!
3480 IF (aout(idu3de,ng)) THEN
3481 vinfo( 1)=vname(1,idu3de)
3482 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idu3de))
3483 vinfo( 3)=vname(3,idu3de)
3484 vinfo(14)=vname(4,idu3de)
3485 vinfo(16)=vname(1,idtime)
3486# if defined WRITE_WATER && defined MASKING
3487 vinfo(20)='mask_rho'
3488# endif
3489 vinfo(21)=vname(6,idu3de)
3490 vinfo(22)='coordinates'
3491 aval(5)=real(iinfo(1,idu3de,ng),r8)
3492 avg(ng)%pioVar(idu3de)%dkind=pio_fout
3493 avg(ng)%pioVar(idu3de)%gtype=r3dvar
3494!
3495 status=def_var(ng, model, avg(ng)%pioFile, &
3496 & avg(ng)%pioVar(idu3de)%vd, &
3497 & pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3498 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3499 END IF
3500!
3501! Define 3D Northward momentum component at RHO-points.
3502!
3503 IF (aout(idv3dn,ng)) THEN
3504 vinfo( 1)=vname(1,idv3dn)
3505 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idv3dn))
3506 vinfo( 3)=vname(3,idv3dn)
3507 vinfo(14)=vname(4,idv3dn)
3508 vinfo(16)=vname(1,idtime)
3509# if defined WRITE_WATER && defined MASKING
3510 vinfo(20)='mask_rho'
3511# endif
3512 vinfo(21)=vname(6,idv3dn)
3513 vinfo(22)='coordinates'
3514 aval(5)=real(iinfo(1,idv3dn,ng),r8)
3515 avg(ng)%pioVar(idv3dn)%dkind=pio_fout
3516 avg(ng)%pioVar(idv3dn)%gtype=r3dvar
3517!
3518 status=def_var(ng, model, avg(ng)%pioFile, &
3519 & avg(ng)%pioVar(idv3dn)%vd, &
3520 & pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3521 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3522 END IF
3523!
3524! Define S-coordinate vertical "omega" momentum component.
3525!
3526 IF (aout(idovel,ng)) THEN
3527 vinfo( 1)=vname(1,idovel)
3528 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idovel))
3529 vinfo( 3)=vname(3,idovel)
3530 vinfo(14)=vname(4,idovel)
3531 vinfo(16)=vname(1,idtime)
3532# if defined WRITE_WATER && defined MASKING
3533 vinfo(20)='mask_rho'
3534# endif
3535 vinfo(21)=vname(6,idovel)
3536 vinfo(22)='coordinates'
3537 aval(5)=real(iinfo(1,idovel,ng),r8)
3538 avg(ng)%pioVar(idovel)%dkind=pio_fout
3539 avg(ng)%pioVar(idovel)%gtype=w3dvar
3540!
3541 status=def_var(ng, model, avg(ng)%pioFile, &
3542 & avg(ng)%pioVar(idovel)%vd, &
3543 & pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
3544 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3545 END IF
3546!
3547! Define "true" vertical momentum component.
3548!
3549 IF (aout(idwvel,ng)) THEN
3550 vinfo( 1)=vname(1,idwvel)
3551 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idwvel))
3552 vinfo( 3)=vname(3,idwvel)
3553 vinfo(14)=vname(4,idwvel)
3554 vinfo(16)=vname(1,idtime)
3555# if defined WRITE_WATER && defined MASKING
3556 vinfo(20)='mask_rho'
3557# endif
3558 vinfo(21)=vname(6,idwvel)
3559 vinfo(22)='coordinates'
3560 aval(5)=real(iinfo(1,idwvel,ng),r8)
3561 avg(ng)%pioVar(idwvel)%dkind=pio_fout
3562 avg(ng)%pioVar(idwvel)%gtype=w3dvar
3563!
3564 status=def_var(ng, model, avg(ng)%pioFile, &
3565 & avg(ng)%pioVar(idwvel)%vd, &
3566 & pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
3567 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3568 END IF
3569!
3570! Define tracer type variables.
3571!
3572 DO itrc=1,nt(ng)
3573 IF (aout(idtvar(itrc),ng)) THEN
3574 vinfo( 1)=vname(1,idtvar(itrc))
3575 WRITE (vinfo( 2),'(a,1x,a)') prefix, &
3576 & trim(vname(2,idtvar(itrc)))
3577 vinfo( 3)=vname(3,idtvar(itrc))
3578 vinfo(14)=vname(4,idtvar(itrc))
3579 vinfo(16)=vname(1,idtime)
3580# ifdef SEDIMENT
3581 DO i=1,nst
3582 IF (itrc.eq.idsed(i)) THEN
3583 WRITE (vinfo(19),40) 1000.0_r8*sd50(i,ng)
3584 END IF
3585 END DO
3586# endif
3587# if defined WRITE_WATER && defined MASKING
3588 vinfo(20)='mask_rho'
3589# endif
3590 vinfo(21)=vname(6,idtvar(itrc))
3591 vinfo(22)='coordinates'
3592 aval(5)=real(r3dvar,r8)
3593 avg(ng)%pioTrc(itrc)%dkind=pio_fout
3594 avg(ng)%pioTrc(itrc)%gtype=r3dvar
3595!
3596 status=def_var(ng, model, avg(ng)%pioFile, &
3597 & avg(ng)%pioTrc(itrc)%vd, &
3598 & pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3599 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3600 END IF
3601 END DO
3602
3603# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
3604!
3605! Define detided temperature and salinity.
3606!
3607 DO itrc=1,nat
3608 IF (aout(idtrcd(itrc),ng)) THEN
3609 ifield=idtrcd(itrc)
3610 vinfo( 1)=vname(1,ifield)
3611 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,ifield))
3612 vinfo( 3)=vname(3,ifield)
3613 vinfo(14)=vname(4,ifield)
3614 vinfo(16)=vname(1,idtime)
3615# if defined WRITE_WATER && defined MASKING
3616 vinfo(20)='mask_rho'
3617# endif
3618 vinfo(21)=vname(6,ifield)
3619 vinfo(22)='coordinates'
3620 aval(5)=real(r3dvar,r8)
3621 avg(ng)%pioVar(ifield)%dkind=pio_fout
3622 avg(ng)%pioVar(ifield)%gtype=r3dvar
3623!
3624 status=def_var(ng, model, avg(ng)%pioFile, &
3625 & avg(ng)%pioVar(ifield)%vd, &
3626 & pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3627 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3628 END IF
3629 END DO
3630# endif
3631!
3632! Define density anomaly.
3633!
3634 IF (aout(iddano,ng)) THEN
3635 vinfo( 1)=vname(1,iddano)
3636 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,iddano))
3637 vinfo( 3)=vname(3,iddano)
3638 vinfo(14)=vname(4,iddano)
3639 vinfo(16)=vname(1,idtime)
3640# if defined WRITE_WATER && defined MASKING
3641 vinfo(20)='mask_rho'
3642# endif
3643 vinfo(21)=vname(6,iddano)
3644 vinfo(22)='coordinates'
3645 aval(5)=real(iinfo(1,iddano,ng),r8)
3646 avg(ng)%pioVar(iddano)%dkind=pio_fout
3647 avg(ng)%pioVar(iddano)%gtype=r3dvar
3648!
3649 status=def_var(ng, model, avg(ng)%pioFile, &
3650 & avg(ng)%pioVar(iddano)%vd, &
3651 & pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3652 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3653 END IF
3654
3655# ifdef LMD_SKPP
3656!
3657! Define depth of surface boundary layer.
3658!
3659 IF (aout(idhsbl,ng)) THEN
3660 vinfo( 1)=vname(1,idhsbl)
3661 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idhsbl))
3662 vinfo( 3)=vname(3,idhsbl)
3663 vinfo(14)=vname(4,idhsbl)
3664 vinfo(16)=vname(1,idtime)
3665# if defined WRITE_WATER && defined MASKING
3666 vinfo(20)='mask_rho'
3667# endif
3668 vinfo(21)=vname(6,idhsbl)
3669 vinfo(22)='coordinates'
3670 aval(5)=real(iinfo(1,idhsbl,ng),r8)
3671 avg(ng)%pioVar(idhsbl)%dkind=pio_fout
3672 avg(ng)%pioVar(idhsbl)%gtype=r2dvar
3673!
3674 status=def_var(ng, model, avg(ng)%pioFile, &
3675 & avg(ng)%pioVar(idhsbl)%vd, &
3676 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3677 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3678 END IF
3679# endif
3680# ifdef LMD_BKPP
3681!
3682! Define depth of bottom boundary layer.
3683!
3684 IF (aout(idhbbl,ng)) THEN
3685 vinfo( 1)=vname(1,idhbbl)
3686 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idhbbl))
3687 vinfo( 3)=vname(3,idhbbl)
3688 vinfo(14)=vname(4,idhbbl)
3689 vinfo(16)=vname(1,idtime)
3690# if defined WRITE_WATER && defined MASKING
3691 vinfo(20)='mask_rho'
3692# endif
3693 vinfo(21)=vname(6,idhbbl)
3694 vinfo(22)='coordinates'
3695 aval(5)=real(iinfo(1,idhbbl,ng),r8)
3696 avg(ng)%pioVar(idhbbl)%dkind=pio_fout
3697 avg(ng)%pioVar(idhbbl)%gtype=r2dvar
3698!
3699 status=def_var(ng, model, avg(ng)%pioFile, &
3700 & avg(ng)%pioVar(idhbbl)%vd, &
3701 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3702 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3703 END IF
3704# endif
3705# endif
3706!
3707! Define 2D potential vorticity.
3708!
3709 IF (aout(id2dpv,ng)) THEN
3710 vinfo( 1)=vname(1,id2dpv)
3711 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,id2dpv))
3712 vinfo( 3)=vname(3,id2dpv)
3713 vinfo(14)=vname(4,id2dpv)
3714 vinfo(16)=vname(1,idtime)
3715# if defined WRITE_WATER && defined MASKING
3716 vinfo(20)='mask_psi'
3717# endif
3718 vinfo(21)=vname(6,id2dpv)
3719 vinfo(22)='coordinates'
3720 aval(5)=real(p2dvar,r8)
3721 avg(ng)%pioVar(id2dpv)%dkind=pio_fout
3722 avg(ng)%pioVar(id2dpv)%gtype=p2dvar
3723!
3724 status=def_var(ng, model, avg(ng)%pioFile, &
3725 & avg(ng)%pioVar(id2dpv)%vd, &
3726 & pio_fout, nvd3, p2dgrd, aval, vinfo, ncname)
3727 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3728 END IF
3729!
3730! Define 2D relative vorticity.
3731!
3732 IF (aout(id2drv,ng)) THEN
3733 vinfo( 1)=vname(1,id2drv)
3734 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,id2drv))
3735 vinfo( 3)=vname(3,id2drv)
3736 vinfo(14)=vname(4,id2drv)
3737 vinfo(16)=vname(1,idtime)
3738# if defined WRITE_WATER && defined MASKING
3739 vinfo(20)='mask_psi'
3740# endif
3741 vinfo(21)=vname(6,id2drv)
3742 vinfo(22)='coordinates'
3743 aval(5)=real(p2dvar,r8)
3744 avg(ng)%pioVar(id2drv)%dkind=pio_fout
3745 avg(ng)%pioVar(id2drv)%gtype=p2dvar
3746!
3747 status=def_var(ng, model, avg(ng)%pioFile, &
3748 & avg(ng)%pioVar(id2drv)%vd, &
3749 & pio_fout, nvd3, p2dgrd, aval, vinfo, ncname)
3750 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3751 END IF
3752
3753# ifdef SOLVE3D
3754!
3755! Define 3D potential vorticity.
3756!
3757 IF (aout(id3dpv,ng)) THEN
3758 vinfo( 1)=vname(1,id3dpv)
3759 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,id3dpv))
3760 vinfo( 3)=vname(3,id3dpv)
3761 vinfo(14)=vname(4,id3dpv)
3762 vinfo(16)=vname(1,idtime)
3763# if defined WRITE_WATER && defined MASKING
3764 vinfo(20)='mask_psi'
3765# endif
3766 vinfo(21)=vname(6,id3dpv)
3767 vinfo(22)='coordinates'
3768 aval(5)=real(p3dvar,r8)
3769 avg(ng)%pioVar(id3dpv)%dkind=pio_fout
3770 avg(ng)%pioVar(id3dpv)%gtype=p3dvar
3771!
3772 status=def_var(ng, model, avg(ng)%pioFile, &
3773 & avg(ng)%pioVar(id3dpv)%vd, &
3774 & pio_fout, nvd4, p3dgrd, aval, vinfo, ncname)
3775 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3776 END IF
3777!
3778! Define 3D relative vorticity.
3779!
3780 IF (aout(id3drv,ng)) THEN
3781 vinfo( 1)=vname(1,id3drv)
3782 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,id3drv))
3783 vinfo( 3)=vname(3,id3drv)
3784 vinfo(14)=vname(4,id3drv)
3785 vinfo(16)=vname(1,idtime)
3786# if defined WRITE_WATER && defined MASKING
3787 vinfo(20)='mask_psi'
3788# endif
3789 vinfo(21)=vname(6,id3drv)
3790 vinfo(22)='coordinates'
3791 aval(5)=real(p3dvar,r8)
3792 avg(ng)%pioVar(id3drv)%dkind=pio_fout
3793 avg(ng)%pioVar(id3drv)%gtype=p3dvar
3794!
3795 status=def_var(ng, model, avg(ng)%pioFile, &
3796 & avg(ng)%pioVar(id3drv)%vd, &
3797 & pio_fout, nvd4, p3dgrd, aval, vinfo, ncname)
3798 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3799 END IF
3800# endif
3801!
3802! Define quadratic <zeta*zeta> term.
3803!
3804 IF (aout(idzzav,ng)) THEN
3805 vinfo( 1)=vname(1,idzzav)
3806 vinfo( 2)=trim(vname(2,idzzav))
3807 vinfo( 3)=vname(3,idzzav)
3808 vinfo(14)=vname(4,idzzav)
3809 vinfo(16)=vname(1,idtime)
3810# if defined WRITE_WATER && defined MASKING
3811 vinfo(20)='mask_rho'
3812# endif
3813 vinfo(21)=vname(6,idzzav)
3814 vinfo(22)='coordinates'
3815 aval(5)=real(r2dvar,r8)
3816 avg(ng)%pioVar(idzzav)%dkind=pio_fout
3817 avg(ng)%pioVar(idzzav)%gtype=r2dvar
3818!
3819 status=def_var(ng, model, avg(ng)%pioFile, &
3820 & avg(ng)%pioVar(idzzav)%vd, &
3821 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3822 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3823 END IF
3824!
3825! Define quadratic <ubar*ubar> term.
3826!
3827 IF (aout(idu2av,ng)) THEN
3828 vinfo( 1)=vname(1,idu2av)
3829 vinfo( 2)=trim(vname(2,idu2av))
3830 vinfo( 3)=vname(3,idu2av)
3831 vinfo(14)=vname(4,idu2av)
3832 vinfo(16)=vname(1,idtime)
3833# if defined WRITE_WATER && defined MASKING
3834 vinfo(20)='mask_u'
3835# endif
3836 vinfo(21)=vname(6,idu2av)
3837 vinfo(22)='coordinates'
3838 aval(5)=real(u2dvar,r8)
3839 avg(ng)%pioVar(idu2av)%dkind=pio_fout
3840 avg(ng)%pioVar(idu2av)%gtype=u2dvar
3841!
3842 status=def_var(ng, model, avg(ng)%pioFile, &
3843 & avg(ng)%pioVar(idu2av)%vd, &
3844 & pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3845 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3846 END IF
3847!
3848! Define quadratic <vbar*vbar> term.
3849!
3850 IF (aout(idv2av,ng)) THEN
3851 vinfo( 1)=vname(1,idv2av)
3852 vinfo( 2)=trim(vname(2,idv2av))
3853 vinfo( 3)=vname(3,idv2av)
3854 vinfo(14)=vname(4,idv2av)
3855 vinfo(16)=vname(1,idtime)
3856# if defined WRITE_WATER && defined MASKING
3857 vinfo(20)='mask_v'
3858# endif
3859 vinfo(21)=vname(6,idv2av)
3860 vinfo(22)='coordinates'
3861 aval(5)=real(v2dvar,r8)
3862 avg(ng)%pioVar(idv2av)%dkind=pio_fout
3863 avg(ng)%pioVar(idv2av)%gtype=v2dvar
3864!
3865 status=def_var(ng, model, avg(ng)%pioFile, &
3866 & avg(ng)%pioVar(idv2av)%vd, &
3867 & pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3868 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3869 END IF
3870
3871# ifdef SOLVE3D
3872!
3873! Define u-volume flux.
3874!
3875 IF (aout(idhuav,ng)) THEN
3876 vinfo( 1)=vname(1,idhuav)
3877 vinfo( 2)=trim(vname(2,idhuav))
3878 vinfo( 3)=vname(3,idhuav)
3879 vinfo(14)=vname(4,idhuav)
3880 vinfo(16)=vname(1,idtime)
3881# if defined WRITE_WATER && defined MASKING
3882 vinfo(20)='mask_u'
3883# endif
3884 vinfo(21)=vname(6,idhuav)
3885 vinfo(22)='coordinates'
3886 aval(5)=real(u3dvar,r8)
3887 avg(ng)%pioVar(idhuav)%dkind=pio_fout
3888 avg(ng)%pioVar(idhuav)%gtype=u3dvar
3889!
3890 status=def_var(ng, model, avg(ng)%pioFile, &
3891 & avg(ng)%pioVar(idhuav)%vd, &
3892 & pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
3893 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3894 END IF
3895!
3896! Define v-volume flux.
3897!
3898 IF (aout(idhvav,ng)) THEN
3899 vinfo( 1)=vname(1,idhvav)
3900 vinfo( 2)=trim(vname(2,idhvav))
3901 vinfo( 3)=vname(3,idhvav)
3902 vinfo(14)=vname(4,idhvav)
3903 vinfo(16)=vname(1,idtime)
3904# if defined WRITE_WATER && defined MASKING
3905 vinfo(20)='mask_v'
3906# endif
3907 vinfo(21)=vname(6,idhvav)
3908 vinfo(22)='coordinates'
3909 aval(5)=real(v3dvar,r8)
3910 avg(ng)%pioVar(idhvav)%dkind=pio_fout
3911 avg(ng)%pioVar(idhvav)%gtype=v3dvar
3912!
3913 status=def_var(ng, model, avg(ng)%pioFile, &
3914 & avg(ng)%pioVar(idhvav)%vd, &
3915 & pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
3916 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3917 END IF
3918!
3919! Define quadratic <u*u> term.
3920!
3921 IF (aout(iduuav,ng)) THEN
3922 vinfo( 1)=vname(1,iduuav)
3923 vinfo( 2)=trim(vname(2,iduuav))
3924 vinfo( 3)=vname(3,iduuav)
3925 vinfo(14)=vname(4,iduuav)
3926 vinfo(16)=vname(1,idtime)
3927# if defined WRITE_WATER && defined MASKING
3928 vinfo(20)='mask_u'
3929# endif
3930 vinfo(21)=vname(6,iduuav)
3931 vinfo(22)='coordinates'
3932 aval(5)=real(u3dvar,r8)
3933 avg(ng)%pioVar(iduuav)%dkind=pio_fout
3934 avg(ng)%pioVar(iduuav)%gtype=u3dvar
3935!
3936 status=def_var(ng, model, avg(ng)%pioFile, &
3937 & avg(ng)%pioVar(iduuav)%vd, &
3938 & pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
3939 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3940 END IF
3941!
3942! Define quadratic <u*v> term.
3943!
3944 IF (aout(iduvav,ng)) THEN
3945 vinfo( 1)=vname(1,iduvav)
3946 vinfo( 2)=trim(vname(2,iduvav))
3947 vinfo( 3)=vname(3,iduvav)
3948 vinfo(14)=vname(4,iduvav)
3949 vinfo(16)=vname(1,idtime)
3950# if defined WRITE_WATER && defined MASKING
3951 vinfo(20)='mask_rho'
3952# endif
3953 vinfo(21)=vname(6,iduvav)
3954 vinfo(22)='coordinates'
3955 aval(5)=real(r3dvar,r8)
3956 avg(ng)%pioVar(iduvav)%dkind=pio_fout
3957 avg(ng)%pioVar(iduvav)%gtype=r3dvar
3958!
3959 status=def_var(ng, model, avg(ng)%pioFile, &
3960 & avg(ng)%pioVar(iduvav)%vd, &
3961 & pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3962 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3963 END IF
3964!
3965! Define quadratic <v*v> term.
3966!
3967 IF (aout(idvvav,ng)) THEN
3968 vinfo( 1)=vname(1,idvvav)
3969 vinfo( 2)=trim(vname(2,idvvav))
3970 vinfo( 3)=vname(3,idvvav)
3971 vinfo(14)=vname(4,idvvav)
3972 vinfo(16)=vname(1,idtime)
3973# if defined WRITE_WATER && defined MASKING
3974 vinfo(20)='mask_v'
3975# endif
3976 vinfo(21)=vname(6,idvvav)
3977 vinfo(22)='coordinates'
3978 aval(5)=real(v3dvar,r8)
3979 avg(ng)%pioVar(idvvav)%dkind=pio_fout
3980 avg(ng)%pioVar(idvvav)%gtype=v3dvar
3981!
3982 status=def_var(ng, model, avg(ng)%pioFile, &
3983 & avg(ng)%pioVar(idvvav)%vd, &
3984 & pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
3985 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3986 END IF
3987!
3988! Define quadratic <t*t> terms.
3989!
3990 DO itrc=1,nt(ng)
3991 IF (aout(idttav(itrc),ng)) THEN
3992 vinfo( 1)=vname(1,idttav(itrc))
3993 vinfo( 2)=trim(vname(2,idttav(itrc)))
3994 vinfo( 3)=vname(3,idttav(itrc))
3995 vinfo(14)=vname(4,idttav(itrc))
3996 vinfo(16)=vname(1,idtime)
3997# if defined WRITE_WATER && defined MASKING
3998 vinfo(20)='mask_rho'
3999# endif
4000 vinfo(21)=vname(6,idttav(itrc))
4001 vinfo(22)='coordinates'
4002 aval(5)=real(r3dvar,r8)
4003 avg(ng)%pioVar(idttav(itrc))%dkind=pio_fout
4004 avg(ng)%pioVar(idttav(itrc))%gtype=r3dvar
4005!
4006 status=def_var(ng, model, avg(ng)%pioFile, &
4007 & avg(ng)%pioVar(idttav(itrc))%vd, &
4008 & pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
4009 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4010 END IF
4011 END DO
4012!
4013! Define active tracers volume fluxes.
4014!
4015 DO itrc=1,nt(ng)
4016 IF (aout(ihutav(itrc),ng)) THEN
4017 vinfo( 1)=vname(1,ihutav(itrc))
4018 vinfo( 2)=trim(vname(2,ihutav(itrc)))
4019 vinfo( 3)=vname(3,ihutav(itrc))
4020 vinfo(14)=vname(4,ihutav(itrc))
4021 vinfo(16)=vname(1,idtime)
4022# if defined WRITE_WATER && defined MASKING
4023 vinfo(20)='mask_u'
4024# endif
4025 vinfo(21)=vname(6,ihutav(itrc))
4026 vinfo(22)='coordinates'
4027 aval(5)=real(u3dvar,r8)
4028 avg(ng)%pioVar(ihutav(itrc))%dkind=pio_fout
4029 avg(ng)%pioVar(ihutav(itrc))%gtype=u3dvar
4030!
4031 status=def_var(ng, model, avg(ng)%pioFile, &
4032 & avg(ng)%pioVar(ihutav(itrc))%vd, &
4033 & pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
4034 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4035 END IF
4036!
4037 IF (aout(ihvtav(itrc),ng)) THEN
4038 vinfo( 1)=vname(1,ihvtav(itrc))
4039 vinfo( 2)=trim(vname(2,ihvtav(itrc)))
4040 vinfo( 3)=vname(3,ihvtav(itrc))
4041 vinfo(14)=vname(4,ihvtav(itrc))
4042 vinfo(16)=vname(1,idtime)
4043# if defined WRITE_WATER && defined MASKING
4044 vinfo(20)='mask_v'
4045# endif
4046 vinfo(21)=vname(6,ihvtav(itrc))
4047 vinfo(22)='coordinates'
4048 aval(5)=real(v3dvar,r8)
4049 avg(ng)%pioVar(ihvtav(itrc))%dkind=pio_fout
4050 avg(ng)%pioVar(ihvtav(itrc))%gtype=v3dvar
4051!
4052 status=def_var(ng, model, avg(ng)%pioFile, &
4053 & avg(ng)%pioVar(ihvtav(itrc))%vd, &
4054 & pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
4055 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4056 END IF
4057 END DO
4058!
4059! Define quadratic <u*t> and <v*t> terms.
4060!
4061 DO itrc=1,nt(ng)
4062 IF (aout(idutav(itrc),ng)) THEN
4063 vinfo( 1)=vname(1,idutav(itrc))
4064 vinfo( 2)=trim(vname(2,idutav(itrc)))
4065 vinfo( 3)=vname(3,idutav(itrc))
4066 vinfo(14)=vname(4,idutav(itrc))
4067 vinfo(16)=vname(1,idtime)
4068# if defined WRITE_WATER && defined MASKING
4069 vinfo(20)='mask_u'
4070# endif
4071 vinfo(21)=vname(6,idutav(itrc))
4072 vinfo(22)='coordinates'
4073 aval(5)=real(u3dvar,r8)
4074 avg(ng)%pioVar(idutav(itrc))%dkind=pio_fout
4075 avg(ng)%pioVar(idutav(itrc))%gtype=u3dvar
4076!
4077 status=def_var(ng, model, avg(ng)%pioFile, &
4078 & avg(ng)%pioVar(idutav(itrc))%vd, &
4079 & pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
4080 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4081 END IF
4082!
4083 IF (aout(idvtav(itrc),ng)) THEN
4084 vinfo( 1)=vname(1,idvtav(itrc))
4085 vinfo( 2)=trim(vname(2,idvtav(itrc)))
4086 vinfo( 3)=vname(3,idvtav(itrc))
4087 vinfo(14)=vname(4,idvtav(itrc))
4088 vinfo(16)=vname(1,idtime)
4089# if defined WRITE_WATER && defined MASKING
4090 vinfo(20)='mask_v'
4091# endif
4092 vinfo(21)=vname(6,idvtav(itrc))
4093 vinfo(22)='coordinates'
4094 aval(5)=real(v3dvar,r8)
4095 avg(ng)%pioVar(idvtav(itrc))%dkind=pio_fout
4096 avg(ng)%pioVar(idvtav(itrc))%gtype=v3dvar
4097!
4098 status=def_var(ng, model, avg(ng)%pioFile, &
4099 & avg(ng)%pioVar(idvtav(itrc))%vd, &
4100 & pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
4101 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4102 END IF
4103 END DO
4104
4105# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
4106!
4107! Define vertical viscosity coefficient.
4108!
4109 IF (aout(idvvis,ng)) THEN
4110 vinfo( 1)=vname(1,idvvis)
4111 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idvvis))
4112 vinfo( 3)=vname(3,idvvis)
4113 vinfo(14)=vname(4,idvvis)
4114 vinfo(16)=vname(1,idtime)
4115 vinfo(21)=vname(6,idvvis)
4116 vinfo(22)='coordinates'
4117 aval(5)=real(iinfo(1,idvvis,ng),r8)
4118 avg(ng)%pioVar(idvvis)%dkind=pio_fout
4119 avg(ng)%pioVar(idvvis)%gtype=w3dvar
4120!
4121 status=def_var(ng, model, avg(ng)%pioFile, &
4122 & avg(ng)%pioVar(idvvis)%vd, &
4123 & pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4124 & setfillval = .false.)
4125 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4126 END IF
4127!
4128! Define vertical diffusion coefficient for potential temperature.
4129!
4130 IF (aout(idtdif,ng)) THEN
4131 vinfo( 1)=vname(1,idtdif)
4132 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idtdif))
4133 vinfo( 3)=vname(3,idtdif)
4134 vinfo(14)=vname(4,idtdif)
4135 vinfo(16)=vname(1,idtime)
4136 vinfo(21)=vname(6,idtdif)
4137 vinfo(22)='coordinates'
4138 aval(5)=real(iinfo(1,idtdif,ng),r8)
4139 avg(ng)%pioVar(idtdif)%dkind=pio_fout
4140 avg(ng)%pioVar(idtdif)%gtype=w3dvar
4141!
4142 status=def_var(ng, model, avg(ng)%pioFile, &
4143 & avg(ng)%pioVar(idtdif)%vd, &
4144 & pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4145 & setfillval = .false.)
4146 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4147 END IF
4148
4149# ifdef SALINITY
4150!
4151! Define vertical diffusion coefficient for salinity.
4152!
4153 IF (aout(idsdif,ng)) THEN
4154 vinfo( 1)=vname(1,idsdif)
4155 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idsdif))
4156 vinfo( 3)=vname(3,idsdif)
4157 vinfo(14)=vname(4,idsdif)
4158 vinfo(16)=vname(1,idtime)
4159 vinfo(21)=vname(6,idsdif)
4160 vinfo(22)='coordinates'
4161 aval(5)=real(iinfo(1,idsdif,ng),r8)
4162 avg(ng)%pioVar(idsdif)%dkind=pio_fout
4163 avg(ng)%pioVar(idsdif)%gtype=w3dvar
4164!
4165 status=def_var(ng, model, avg(ng)%pioFile, &
4166 & avg(ng)%pioVar(idsdif)%vd, &
4167 & pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4168 & setfillval = .false.)
4169 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4170 END IF
4171# endif
4172# endif
4173# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
4174!
4175! Define surface air pressure.
4176!
4177 IF (aout(idpair,ng)) THEN
4178 vinfo( 1)=vname(1,idpair)
4179 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idpair))
4180 vinfo( 3)=vname(3,idpair)
4181 vinfo(14)=vname(4,idpair)
4182 vinfo(16)=vname(1,idtime)
4183# if defined WRITE_WATER && defined MASKING
4184 vinfo(20)='mask_rho'
4185# endif
4186 vinfo(21)=vname(6,idpair)
4187 vinfo(22)='coordinates'
4188 aval(5)=real(iinfo(1,idpair,ng),r8)
4189 avg(ng)%pioVar(idpair)%dkind=pio_fout
4190 avg(ng)%pioVar(idpair)%gtype=r2dvar
4191!
4192 status=def_var(ng, model, avg(ng)%pioFile, &
4193 & avg(ng)%pioVar(idpair)%vd, &
4194 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4195 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4196 END IF
4197# endif
4198# if defined BULK_FLUXES
4199!
4200! Define surface air temperature.
4201!
4202 IF (aout(idtair,ng)) THEN
4203 vinfo( 1)=vname(1,idtair)
4204 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idtair))
4205 vinfo( 3)=vname(3,idtair)
4206 vinfo(14)=vname(4,idtair)
4207 vinfo(16)=vname(1,idtime)
4208# if defined WRITE_WATER && defined MASKING
4209 vinfo(20)='mask_rho'
4210# endif
4211 vinfo(21)=vname(6,idtair)
4212 vinfo(22)='coordinates'
4213 aval(5)=real(iinfo(1,idtair,ng),r8)
4214 avg(ng)%pioVar(idtair)%dkind=pio_fout
4215 avg(ng)%pioVar(idtair)%gtype=r2dvar
4216!
4217 status=def_var(ng, model, avg(ng)%pioFile, &
4218 & avg(ng)%pioVar(idtair)%vd, &
4219 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4220 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4221 END IF
4222# endif
4223# if defined BULK_FLUXES || defined ECOSIM
4224!
4225! Define surface winds.
4226!
4227 IF (aout(iduair,ng)) THEN
4228 vinfo( 1)=vname(1,iduair)
4229 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,iduair))
4230 vinfo( 3)=vname(3,iduair)
4231 vinfo(14)=vname(4,iduair)
4232 vinfo(16)=vname(1,idtime)
4233# if defined WRITE_WATER && defined MASKING
4234 vinfo(20)='mask_rho'
4235# endif
4236 vinfo(21)=vname(6,iduair)
4237 vinfo(22)='coordinates'
4238 aval(5)=real(iinfo(1,iduair,ng),r8)
4239 avg(ng)%pioVar(iduair)%dkind=pio_fout
4240 avg(ng)%pioVar(iduair)%gtype=r2dvar
4241!
4242 status=def_var(ng, model, avg(ng)%pioFile, &
4243 & avg(ng)%pioVar(iduair)%vd, &
4244 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4245 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4246 END IF
4247!
4248 IF (aout(idvair,ng)) THEN
4249 vinfo( 1)=vname(1,idvair)
4250 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idvair))
4251 vinfo( 3)=vname(3,idvair)
4252 vinfo(14)=vname(4,idvair)
4253 vinfo(16)=vname(1,idtime)
4254# if defined WRITE_WATER && defined MASKING
4255 vinfo(20)='mask_rho'
4256# endif
4257 vinfo(21)=vname(6,idvair)
4258 vinfo(22)='coordinates'
4259 aval(5)=real(iinfo(1,idvair,ng),r8)
4260 avg(ng)%pioVar(idvair)%dkind=pio_fout
4261 avg(ng)%pioVar(idvair)%gtype=r2dvar
4262!
4263 status=def_var(ng, model, avg(ng)%pioFile, &
4264 & avg(ng)%pioVar(idvair)%vd, &
4265 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4266 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4267 END IF
4268!
4269! Define Eastward/Northward surface wind at RHO-points.
4270!
4271 IF (aout(iduaie,ng)) THEN
4272 vinfo( 1)=vname(1,iduaie)
4273 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,iduaie))
4274 vinfo( 3)=vname(3,iduaie)
4275 vinfo(14)=vname(4,iduaie)
4276 vinfo(16)=vname(1,idtime)
4277# if defined WRITE_WATER && defined MASKING
4278 vinfo(20)='mask_rho'
4279# endif
4280 vinfo(21)=vname(6,iduaie)
4281 vinfo(22)='coordinates'
4282 aval(5)=real(iinfo(1,iduaie,ng),r8)
4283 avg(ng)%pioVar(iduaie)%dkind=pio_fout
4284 avg(ng)%pioVar(iduaie)%gtype=r2dvar
4285!
4286 status=def_var(ng, model, avg(ng)%pioFile, &
4287 & avg(ng)%pioVar(iduaie)%vd, &
4288 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4289 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4290 END IF
4291!
4292 IF (aout(idvain,ng)) THEN
4293 vinfo( 1)=vname(1,idvain)
4294 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idvain))
4295 vinfo( 3)=vname(3,idvain)
4296 vinfo(14)=vname(4,idvain)
4297 vinfo(16)=vname(1,idtime)
4298# if defined WRITE_WATER && defined MASKING
4299 vinfo(20)='mask_rho'
4300# endif
4301 vinfo(21)=vname(6,idvain)
4302 vinfo(22)='coordinates'
4303 aval(5)=real(iinfo(1,idvain,ng),r8)
4304 avg(ng)%pioVar(idvain)%dkind=pio_fout
4305 avg(ng)%pioVar(idvain)%gtype=r2dvar
4306!
4307 status=def_var(ng, model, avg(ng)%pioFile, &
4308 & avg(ng)%pioVar(idvain)%vd, &
4309 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4310 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4311 END IF
4312# endif
4313!
4314! Define surface net heat flux.
4315!
4316 IF (aout(idtsur(itemp),ng)) THEN
4317 vinfo( 1)=vname(1,idtsur(itemp))
4318 WRITE (vinfo( 2),'(a,1x,a)') prefix, &
4319 & trim(vname(2,idtsur(itemp)))
4320 vinfo( 3)=vname(3,idtsur(itemp))
4321 vinfo(11)='upward flux, cooling'
4322 vinfo(12)='downward flux, heating'
4323 vinfo(14)=vname(4,idtsur(itemp))
4324 vinfo(16)=vname(1,idtime)
4325# if defined WRITE_WATER && defined MASKING
4326 vinfo(20)='mask_rho'
4327# endif
4328 vinfo(21)=vname(6,idtsur(itemp))
4329 vinfo(22)='coordinates'
4330 aval(5)=real(iinfo(1,idtsur(itemp),ng),r8)
4331 avg(ng)%pioVar(idtsur(itemp))%dkind=pio_fout
4332 avg(ng)%pioVar(idtsur(itemp))%gtype=r2dvar
4333!
4334 status=def_var(ng, model, avg(ng)%pioFile, &
4335 & avg(ng)%pioVar(idtsur(itemp))%vd, &
4336 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4337 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4338 END IF
4339
4340# ifdef SALINITY
4341!
4342! Define surface net salt flux.
4343!
4344 IF (aout(idtsur(isalt),ng)) THEN
4345 vinfo( 1)=vname(1,idtsur(isalt))
4346 WRITE (vinfo( 2),'(a,1x,a)') prefix, &
4347 & trim(vname(2,idtsur(isalt)))
4348 vinfo( 3)=vname(3,idtsur(isalt))
4349 vinfo(11)='upward flux, freshening (net precipitation)'
4350 vinfo(12)='downward flux, salting (net evaporation)'
4351 vinfo(14)=vname(4,idtsur(isalt))
4352 vinfo(16)=vname(1,idtime)
4353# if defined WRITE_WATER && defined MASKING
4354 vinfo(20)='mask_rho'
4355# endif
4356 vinfo(21)=vname(6,idtsur(isalt))
4357 vinfo(22)='coordinates'
4358 aval(5)=real(iinfo(1,idtsur(isalt),ng),r8)
4359 avg(ng)%pioVar(idtsur(isalt))%dkind=pio_fout
4360 avg(ng)%pioVar(idtsur(isalt))%gtype=r2dvar
4361!
4362 status=def_var(ng, model, avg(ng)%pioFile, &
4363 & avg(ng)%pioVar(idtsur(isalt))%vd, &
4364 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4365 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4366 END IF
4367# endif
4368
4369# if defined BULK_FLUXES || defined FRC_COUPLING
4370!
4371! Define latent heat flux.
4372!
4373 IF (aout(idlhea,ng)) THEN
4374 vinfo( 1)=vname(1,idlhea)
4375 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idlhea))
4376 vinfo( 3)=vname(3,idlhea)
4377 vinfo(11)='upward flux, cooling'
4378 vinfo(12)='downward flux, heating'
4379 vinfo(14)=vname(4,idlhea)
4380 vinfo(16)=vname(1,idtime)
4381# if defined WRITE_WATER && defined MASKING
4382 vinfo(20)='mask_rho'
4383# endif
4384 vinfo(21)=vname(6,idlhea)
4385 vinfo(22)='coordinates'
4386 aval(5)=real(iinfo(1,idlhea,ng),r8)
4387 avg(ng)%pioVar(idlhea)%dkind=pio_fout
4388 avg(ng)%pioVar(idlhea)%gtype=r2dvar
4389!
4390 status=def_var(ng, model, avg(ng)%pioFile, &
4391 & avg(ng)%pioVar(idlhea)%vd, &
4392 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4393 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4394 END IF
4395!
4396! Define sensible heat flux.
4397!
4398 IF (aout(idshea,ng)) THEN
4399 vinfo( 1)=vname(1,idshea)
4400 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idshea))
4401 vinfo( 3)=vname(3,idshea)
4402 vinfo(11)='upward flux, cooling'
4403 vinfo(12)='downward flux, heating'
4404 vinfo(14)=vname(4,idshea)
4405 vinfo(16)=vname(1,idtime)
4406# if defined WRITE_WATER && defined MASKING
4407 vinfo(20)='mask_rho'
4408# endif
4409 vinfo(21)=vname(6,idshea)
4410 vinfo(22)='coordinates'
4411 aval(5)=real(iinfo(1,idshea,ng),r8)
4412 avg(ng)%pioVar(idshea)%dkind=pio_fout
4413 avg(ng)%pioVar(idshea)%gtype=r2dvar
4414!
4415 status=def_var(ng, model, avg(ng)%pioFile, &
4416 & avg(ng)%pioVar(idshea)%vd, &
4417 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4418 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4419 END IF
4420!
4421! Define net longwave radiation flux.
4422!
4423 IF (aout(idlrad,ng)) THEN
4424 vinfo( 1)=vname(1,idlrad)
4425 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idlrad))
4426 vinfo( 3)=vname(3,idlrad)
4427 vinfo(11)='upward flux, cooling'
4428 vinfo(12)='downward flux, heating'
4429 vinfo(14)=vname(4,idlrad)
4430 vinfo(16)=vname(1,idtime)
4431# if defined WRITE_WATER && defined MASKING
4432 vinfo(20)='mask_rho'
4433# endif
4434 vinfo(21)=vname(6,idlrad)
4435 vinfo(22)='coordinates'
4436 aval(5)=real(iinfo(1,idlrad,ng),r8)
4437 avg(ng)%pioVar(idlrad)%dkind=pio_fout
4438 avg(ng)%pioVar(idlrad)%gtype=r2dvar
4439!
4440 status=def_var(ng, model, avg(ng)%pioFile, &
4441 & avg(ng)%pioVar(idlrad)%vd, &
4442 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4443 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4444 END IF
4445# endif
4446
4447# ifdef BULK_FLUXES
4448# ifdef EMINUSP
4449!
4450! Define evaporation rate.
4451!
4452 IF (aout(idevap,ng)) THEN
4453 vinfo( 1)=vname(1,idevap)
4454 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idevap))
4455 vinfo( 3)=vname(3,idevap)
4456 vinfo(11)='downward flux, freshening (condensation)'
4457 vinfo(12)='upward flux, salting (evaporation)'
4458 vinfo(14)=vname(4,idevap)
4459 vinfo(16)=vname(1,idtime)
4460# if defined WRITE_WATER && defined MASKING
4461 vinfo(20)='mask_rho'
4462# endif
4463 vinfo(21)=vname(6,idevap)
4464 vinfo(22)='coordinates'
4465 aval(5)=real(iinfo(1,idevap,ng),r8)
4466 avg(ng)%pioVar(idevap)%dkind=pio_fout
4467 avg(ng)%pioVar(idevap)%gtype=r2dvar
4468!
4469 status=def_var(ng, model, avg(ng)%pioFile, &
4470 & avg(ng)%pioVar(idevap)%vd, &
4471 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4472 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4473 END IF
4474!
4475! Define precipitation rate.
4476!
4477 IF (aout(idrain,ng)) THEN
4478 vinfo( 1)=vname(1,idrain)
4479 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idrain))
4480 vinfo( 3)=vname(3,idrain)
4481 vinfo(12)='downward flux, freshening (precipitation)'
4482 vinfo(14)=vname(4,idrain)
4483 vinfo(16)=vname(1,idtime)
4484# if defined WRITE_WATER && defined MASKING
4485 vinfo(20)='mask_rho'
4486# endif
4487 vinfo(21)=vname(6,idrain)
4488 vinfo(22)='coordinates'
4489 aval(5)=real(iinfo(1,idrain,ng),r8)
4490 avg(ng)%pioVar(idrain)%dkind=pio_fout
4491 avg(ng)%pioVar(idrain)%gtype=r2dvar
4492!
4493 status=def_var(ng, model, avg(ng)%pioFile, &
4494 & avg(ng)%pioVar(idrain)%vd, &
4495 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4496 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4497 END IF
4498# endif
4499# endif
4500# ifdef SHORTWAVE
4501!
4502! Define net shortwave radiation flux.
4503!
4504 IF (aout(idsrad,ng)) THEN
4505 vinfo( 1)=vname(1,idsrad)
4506 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idsrad))
4507 vinfo( 3)=vname(3,idsrad)
4508 vinfo(11)='upward flux, cooling'
4509 vinfo(12)='downward flux, heating'
4510 vinfo(14)=vname(4,idsrad)
4511 vinfo(16)=vname(1,idtime)
4512# if defined WRITE_WATER && defined MASKING
4513 vinfo(20)='mask_rho'
4514# endif
4515 vinfo(21)=vname(6,idsrad)
4516 vinfo(22)='coordinates'
4517 aval(5)=real(iinfo(1,idsrad,ng),r8)
4518 avg(ng)%pioVar(idsrad)%dkind=pio_fout
4519 avg(ng)%pioVar(idsrad)%gtype=r2dvar
4520!
4521 status=def_var(ng, model, avg(ng)%pioFile, &
4522 & avg(ng)%pioVar(idsrad)%vd, &
4523 & pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4524 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4525 END IF
4526# endif
4527# endif
4528!
4529! Define surface u-momentum stress.
4530!
4531 IF (aout(idusms,ng)) THEN
4532 vinfo( 1)=vname(1,idusms)
4533 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idusms))
4534 vinfo( 3)=vname(3,idusms)
4535 vinfo(14)=vname(4,idusms)
4536 vinfo(16)=vname(1,idtime)
4537# if defined WRITE_WATER && defined MASKING
4538 vinfo(20)='mask_u'
4539# endif
4540 vinfo(21)=vname(6,idusms)
4541 vinfo(22)='coordinates'
4542 aval(5)=real(iinfo(1,idusms,ng),r8)
4543 avg(ng)%pioVar(idusms)%dkind=pio_fout
4544 avg(ng)%pioVar(idusms)%gtype=u2dvar
4545!
4546 status=def_var(ng, model, avg(ng)%pioFile, &
4547 & avg(ng)%pioVar(idusms)%vd, &
4548 & pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
4549 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4550 END IF
4551!
4552! Define surface v-momentum stress.
4553!
4554 IF (aout(idvsms,ng)) THEN
4555 vinfo( 1)=vname(1,idvsms)
4556 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idvsms))
4557 vinfo( 3)=vname(3,idvsms)
4558 vinfo(14)=vname(4,idvsms)
4559 vinfo(16)=vname(1,idtime)
4560# if defined WRITE_WATER && defined MASKING
4561 vinfo(20)='mask_v'
4562# endif
4563 vinfo(21)=vname(6,idvsms)
4564 vinfo(22)='coordinates'
4565 aval(5)=real(iinfo(1,idvsms,ng),r8)
4566 avg(ng)%pioVar(idvsms)%dkind=pio_fout
4567 avg(ng)%pioVar(idvsms)%gtype=v2dvar
4568!
4569 status=def_var(ng, model, avg(ng)%pioFile, &
4570 & avg(ng)%pioVar(idvsms)%vd, &
4571 & pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
4572 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4573 END IF
4574!
4575! Define bottom u-momentum stress.
4576!
4577 IF (aout(idubms,ng)) THEN
4578 vinfo( 1)=vname(1,idubms)
4579 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idubms))
4580 vinfo( 3)=vname(3,idubms)
4581 vinfo(14)=vname(4,idubms)
4582 vinfo(16)=vname(1,idtime)
4583# if defined WRITE_WATER && defined MASKING
4584 vinfo(20)='mask_u'
4585# endif
4586 vinfo(21)=vname(6,idubms)
4587 vinfo(22)='coordinates'
4588 aval(5)=real(iinfo(1,idubms,ng),r8)
4589 avg(ng)%pioVar(idubms)%dkind=pio_fout
4590 avg(ng)%pioVar(idubms)%gtype=u2dvar
4591!
4592 status=def_var(ng, model, avg(ng)%pioFile, &
4593 & avg(ng)%pioVar(idubms)%vd, &
4594 & pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
4595 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4596 END IF
4597!
4598! Define bottom v-momentum stress.
4599!
4600 IF (aout(idvbms,ng)) THEN
4601 vinfo( 1)=vname(1,idvbms)
4602 WRITE (vinfo( 2),'(a,1x,a)') prefix, trim(vname(2,idvbms))
4603 vinfo( 3)=vname(3,idvbms)
4604 vinfo(14)=vname(4,idvbms)
4605 vinfo(16)=vname(1,idtime)
4606# if defined WRITE_WATER && defined MASKING
4607 vinfo(20)='mask_v'
4608# endif
4609 vinfo(21)=vname(6,idvbms)
4610 vinfo(22)='coordinates'
4611 aval(5)=real(iinfo(1,idvbms,ng),r8)
4612 avg(ng)%pioVar(idvbms)%dkind=pio_fout
4613 avg(ng)%pioVar(idvbms)%gtype=v2dvar
4614!
4615 status=def_var(ng, model, avg(ng)%pioFile, &
4616 & avg(ng)%pioVar(idvbms)%vd, &
4617 & pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
4618 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4619 END IF
4620
4621# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
4622!
4623!-----------------------------------------------------------------------
4624! Define the bottom boundary layer model or waves variables.
4625!-----------------------------------------------------------------------
4626!
4627 CALL bbl_def_pio (ng, model, ldef, aout, avg, &
4628 & t2dgrd, u2dgrd, v2dgrd)
4629 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4630# endif
4631
4632# if defined ICE_MODEL && defined SOLVE3D
4633!
4634!-----------------------------------------------------------------------
4635! Define the sea-ice model variables.
4636!-----------------------------------------------------------------------
4637!
4638 CALL ice_def_pio (ng, model, ldef, aout, avg, &
4639 & t2dgrd, u2dgrd, v2dgrd)
4640 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4641# endif
4642
4643# if defined SEDIMENT && defined SOLVE3D
4644!
4645!-----------------------------------------------------------------------
4646! Define the sediment model variables.
4647!-----------------------------------------------------------------------
4648!
4649 CALL sediment_def_pio (ng, model, ldef, aout, avg, &
4650 & t2dgrd, u2dgrd, v2dgrd)
4651 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4652# endif
4653
4654# if defined WEC_VF && defined SOLVE3D
4655!
4656!-----------------------------------------------------------------------
4657! Define the Waves Effect on Currents variables.
4658!-----------------------------------------------------------------------
4659!
4660 CALL wec_def_pio (ng, model, ldef, aout, avg, &
4661 & t2dgrd, u2dgrd, v2dgrd, &
4662 & t3dgrd, u3dgrd, v3dgrd, w3dgrd)
4663 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4664# endif
4665!
4666!-----------------------------------------------------------------------
4667! Leave definition mode.
4668!-----------------------------------------------------------------------
4669!
4670 CALL pio_netcdf_enddef (ng, model, ncname, avg(ng)%pioFile)
4671 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4672!
4673!-----------------------------------------------------------------------
4674! Write out time-recordless, information variables.
4675!-----------------------------------------------------------------------
4676!
4677 CALL wrt_info (ng, model, avg(ng)%pioFile, ncname)
4678 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4679 END IF define
4680!
4681!=======================================================================
4682! Open an existing averages file, check its contents, and prepare
4683! for appending data.
4684!=======================================================================
4685!
4686 query : IF (.not.ldef) THEN
4687 ncname=avg(ng)%name
4688!
4689! Open averages file for read/write.
4690!
4691 CALL pio_netcdf_open (ng, model, ncname, 1, avg(ng)%pioFile)
4692 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
4693 WRITE (stdout,50) trim(ncname)
4694 RETURN
4695 END IF
4696!
4697! Inquire about the dimensions and check for consistency.
4698!
4699 CALL pio_netcdf_check_dim (ng, model, ncname, &
4700 & piofile = avg(ng)%pioFile)
4701 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4702!
4703! Inquire about the variables.
4704!
4705 CALL pio_netcdf_inq_var (ng, model, ncname, &
4706 & piofile = avg(ng)%pioFile)
4707 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4708!
4709! Initialize logical switches.
4710!
4711 DO i=1,nv
4712 got_var(i)=.false.
4713 END DO
4714!
4715! Scan variable list from input NetCDF and activate switches for
4716! average variables. Get variable IDs.
4717!
4718 DO i=1,n_var
4719 IF (trim(var_name(i)).eq.trim(vname(1,idtime))) THEN
4720 got_var(idtime)=.true.
4721 avg(ng)%pioVar(idtime)%vd=var_desc(i)
4722 avg(ng)%pioVar(idtime)%dkind=pio_tout
4723 avg(ng)%pioVar(idtime)%gtype=0
4724# ifdef WET_DRY
4725 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrwet))) THEN
4726 got_var(idrwet)=.true.
4727 avg(ng)%pioVar(idrwet)%vd=var_desc(i)
4728 avg(ng)%pioVar(idrwet)%dkind=pio_fout
4729 avg(ng)%pioVar(idrwet)%gtype=r2dvar
4730# endif
4731 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idfsur))) THEN
4732 got_var(idfsur)=.true.
4733 avg(ng)%pioVar(idfsur)%vd=var_desc(i)
4734 avg(ng)%pioVar(idfsur)%dkind=pio_fout
4735 avg(ng)%pioVar(idfsur)%gtype=r2dvar
4736 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubar))) THEN
4737 got_var(idubar)=.true.
4738 avg(ng)%pioVar(idubar)%vd=var_desc(i)
4739 avg(ng)%pioVar(idubar)%dkind=pio_fout
4740 avg(ng)%pioVar(idubar)%gtype=u2dvar
4741 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbar))) THEN
4742 got_var(idvbar)=.true.
4743 avg(ng)%pioVar(idvbar)%vd=var_desc(i)
4744 avg(ng)%pioVar(idvbar)%dkind=pio_fout
4745 avg(ng)%pioVar(idvbar)%gtype=v2dvar
4746# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
4747 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idfsud))) THEN
4748 got_var(idfsud)=.true.
4749 avg(ng)%pioVar(idfsud)%vd=var_desc(i)
4750 avg(ng)%pioVar(idfsud)%dkind=pio_fout
4751 avg(ng)%pioVar(idfsud)%gtype=r2dvar
4752 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu2dd))) THEN
4753 got_var(idu2dd)=.true.
4754 avg(ng)%pioVar(idu2dd)%vd=var_desc(i)
4755 avg(ng)%pioVar(idu2dd)%dkind=pio_fout
4756 avg(ng)%pioVar(idu2dd)%gtype=u2dvar
4757 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv2dd))) THEN
4758 got_var(idv2dd)=.true.
4759 avg(ng)%pioVar(idv2dd)%vd=var_desc(i)
4760 avg(ng)%pioVar(idv2dd)%dkind=pio_fout
4761 avg(ng)%pioVar(idv2dd)%gtype=v2dvar
4762# endif
4763 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu2de))) THEN
4764 got_var(idu2de)=.true.
4765 avg(ng)%pioVar(idu2de)%vd=var_desc(i)
4766 avg(ng)%pioVar(idu2de)%dkind=pio_fout
4767 avg(ng)%pioVar(idu2de)%gtype=r2dvar
4768 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv2dn))) THEN
4769 got_var(idv2dn)=.true.
4770 avg(ng)%pioVar(idv2dn)%vd=var_desc(i)
4771 avg(ng)%pioVar(idv2dn)%dkind=pio_fout
4772 avg(ng)%pioVar(idv2dn)%gtype=r2dvar
4773# ifdef SOLVE3D
4774# ifdef FORWARD_WRITE
4775 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idufx1))) THEN
4776 got_var(idufx1)=.true.
4777 avg(ng)%pioVar(idufx1)%vd=var_desc(i)
4778 avg(ng)%pioVar(idufx1)%dkind=pio_fout
4779 avg(ng)%pioVar(idufx1)%gtype=u2dvar
4780 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idufx2))) THEN
4781 got_var(idufx2)=.true.
4782 avg(ng)%pioVar(idufx2)%vd=var_desc(i)
4783 avg(ng)%pioVar(idufx2)%dkind=pio_fout
4784 avg(ng)%pioVar(idufx2)%gtype=u2dvar
4785 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvfx1))) THEN
4786 got_var(idvfx1)=.true.
4787 avg(ng)%pioVar(idvfx1)%vd=var_desc(i)
4788 avg(ng)%pioVar(idvfx1)%dkind=pio_fout
4789 avg(ng)%pioVar(idvfx1)%gtype=v2dvar
4790 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvfx2))) THEN
4791 got_var(idvfx2)=.true.
4792 avg(ng)%pioVar(idvfx2)%vd=var_desc(i)
4793 avg(ng)%pioVar(idvfx2)%dkind=pio_fout
4794 avg(ng)%pioVar(idvfx2)%gtype=v2dvar
4795# endif
4796 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduvel))) THEN
4797 got_var(iduvel)=.true.
4798 avg(ng)%pioVar(iduvel)%vd=var_desc(i)
4799 avg(ng)%pioVar(iduvel)%dkind=pio_fout
4800 avg(ng)%pioVar(iduvel)%gtype=u3dvar
4801 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvel))) THEN
4802 got_var(idvvel)=.true.
4803 avg(ng)%pioVar(idvvel)%vd=var_desc(i)
4804 avg(ng)%pioVar(idvvel)%dkind=pio_fout
4805 avg(ng)%pioVar(idvvel)%gtype=v3dvar
4806# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
4807 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu3dd))) THEN
4808 got_var(idu3dd)=.true.
4809 avg(ng)%pioVar(idu3dd)%vd=var_desc(i)
4810 avg(ng)%pioVar(idu3dd)%dkind=pio_fout
4811 avg(ng)%pioVar(idu3dd)%gtype=u3dvar
4812 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv3dd))) THEN
4813 got_var(idv3dd)=.true.
4814 avg(ng)%pioVar(idv3dd)%vd=var_desc(i)
4815 avg(ng)%pioVar(idv3dd)%dkind=pio_fout
4816 avg(ng)%pioVar(idv3dd)%gtype=v3dvar
4817# endif
4818 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu3de))) THEN
4819 got_var(idu3de)=.true.
4820 avg(ng)%pioVar(idu3de)%vd=var_desc(i)
4821 avg(ng)%pioVar(idu3de)%dkind=pio_fout
4822 avg(ng)%pioVar(idu3de)%gtype=r3dvar
4823 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv3dn))) THEN
4824 got_var(idv3dn)=.true.
4825 avg(ng)%pioVar(idv3dn)%vd=var_desc(i)
4826 avg(ng)%pioVar(idv3dn)%dkind=pio_fout
4827 avg(ng)%pioVar(idv3dn)%gtype=r3dvar
4828 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idovel))) THEN
4829 got_var(idovel)=.true.
4830 avg(ng)%pioVar(idovel)%vd=var_desc(i)
4831 avg(ng)%pioVar(idovel)%dkind=pio_fout
4832 avg(ng)%pioVar(idovel)%gtype=w3dvar
4833 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idwvel))) THEN
4834 got_var(idwvel)=.true.
4835 avg(ng)%pioVar(idwvel)%vd=var_desc(i)
4836 avg(ng)%pioVar(idwvel)%dkind=pio_fout
4837 avg(ng)%pioVar(idwvel)%gtype=w3dvar
4838 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iddano))) THEN
4839 got_var(iddano)=.true.
4840 avg(ng)%pioVar(iddano)%vd=var_desc(i)
4841 avg(ng)%pioVar(iddano)%dkind=pio_fout
4842 avg(ng)%pioVar(iddano)%gtype=r3dvar
4843# ifdef LMD_SKPP
4844 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhsbl))) THEN
4845 got_var(idhsbl)=.true.
4846 avg(ng)%pioVar(idhsbl)%vd=var_desc(i)
4847 avg(ng)%pioVar(idhsbl)%dkind=pio_fout
4848 avg(ng)%pioVar(idhsbl)%gtype=r2dvar
4849# endif
4850# ifdef LMD_BKPP
4851 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhbbl))) THEN
4852 got_var(idhbbl)=.true.
4853 avg(ng)%pioVar(idhbbl)%vd=var_desc(i)
4854 avg(ng)%pioVar(idhbbl)%dkind=pio_fout
4855 avg(ng)%pioVar(idhbbl)%gtype=r2dvar
4856# endif
4857# endif
4858 ELSE IF (trim(var_name(i)).eq.trim(vname(1,id2dpv))) THEN
4859 got_var(id2dpv)=.true.
4860 avg(ng)%pioVar(id2dpv)%vd=var_desc(i)
4861 avg(ng)%pioVar(id2dpv)%dkind=pio_fout
4862 avg(ng)%pioVar(id2dpv)%gtype=p2dvar
4863 ELSE IF (trim(var_name(i)).eq.trim(vname(1,id2drv))) THEN
4864 got_var(id2drv)=.true.
4865 avg(ng)%pioVar(id2drv)%vd=var_desc(i)
4866 avg(ng)%pioVar(id2drv)%dkind=pio_fout
4867 avg(ng)%pioVar(id2drv)%gtype=p2dvar
4868# ifdef SOLVE3D
4869 ELSE IF (trim(var_name(i)).eq.trim(vname(1,id3dpv))) THEN
4870 got_var(id3dpv)=.true.
4871 avg(ng)%pioVar(id3dpv)%vd=var_desc(i)
4872 avg(ng)%pioVar(id3dpv)%dkind=pio_fout
4873 avg(ng)%pioVar(id3dpv)%gtype=p3dvar
4874 ELSE IF (trim(var_name(i)).eq.trim(vname(1,id3drv))) THEN
4875 got_var(id3drv)=.true.
4876 avg(ng)%pioVar(id3drv)%vd=var_desc(i)
4877 avg(ng)%pioVar(id3drv)%dkind=pio_fout
4878 avg(ng)%pioVar(id3drv)%gtype=p3dvar
4879# endif
4880 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idzzav))) THEN
4881 got_var(idzzav)=.true.
4882 avg(ng)%pioVar(idzzav)%vd=var_desc(i)
4883 avg(ng)%pioVar(idzzav)%dkind=pio_fout
4884 avg(ng)%pioVar(idzzav)%gtype=r2dvar
4885 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu2av))) THEN
4886 got_var(idu2av)=.true.
4887 avg(ng)%pioVar(idu2av)%vd=var_desc(i)
4888 avg(ng)%pioVar(idu2av)%dkind=pio_fout
4889 avg(ng)%pioVar(idu2av)%gtype=u2dvar
4890 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv2av))) THEN
4891 got_var(idv2av)=.true.
4892 avg(ng)%pioVar(idv2av)%vd=var_desc(i)
4893 avg(ng)%pioVar(idv2av)%dkind=pio_fout
4894 avg(ng)%pioVar(idv2av)%gtype=v2dvar
4895# ifdef SOLVE3D
4896 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhuav))) THEN
4897 got_var(idhuav)=.true.
4898 avg(ng)%pioVar(idhuav)%vd=var_desc(i)
4899 avg(ng)%pioVar(idhuav)%dkind=pio_fout
4900 avg(ng)%pioVar(idhuav)%gtype=u3dvar
4901 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhvav))) THEN
4902 got_var(idhvav)=.true.
4903 avg(ng)%pioVar(idhvav)%vd=var_desc(i)
4904 avg(ng)%pioVar(idhvav)%dkind=pio_fout
4905 avg(ng)%pioVar(idhvav)%gtype=v3dvar
4906 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduuav))) THEN
4907 got_var(iduuav)=.true.
4908 avg(ng)%pioVar(iduuav)%vd=var_desc(i)
4909 avg(ng)%pioVar(idhvav)%dkind=pio_fout
4910 avg(ng)%pioVar(idhvav)%gtype=v3dvar
4911 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduvav))) THEN
4912 got_var(iduvav)=.true.
4913 avg(ng)%pioVar(iduvav)%vd=var_desc(i)
4914 avg(ng)%pioVar(iduvav)%dkind=pio_fout
4915 avg(ng)%pioVar(iduvav)%gtype=r3dvar
4916 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvav))) THEN
4917 got_var(idvvav)=.true.
4918 avg(ng)%pioVar(idvvav)%vd=var_desc(i)
4919 avg(ng)%pioVar(idvvav)%dkind=pio_fout
4920 avg(ng)%pioVar(idvvav)%gtype=v3dvar
4921# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
4922 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvis))) THEN
4923 got_var(idvvis)=.true.
4924 avg(ng)%pioVar(idvvis)%vd=var_desc(i)
4925 avg(ng)%pioVar(idvvis)%dkind=pio_fout
4926 avg(ng)%pioVar(idvvis)%gtype=w3dvar
4927 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idtdif))) THEN
4928 got_var(idtdif)=.true.
4929 avg(ng)%pioVar(idtdif)%vd=var_desc(i)
4930 avg(ng)%pioVar(idtdif)%dkind=pio_fout
4931 avg(ng)%pioVar(idtdif)%gtype=w3dvar
4932 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsdif))) THEN
4933 got_var(idsdif)=.true.
4934 avg(ng)%pioVar(idsdif)%vd=var_desc(i)
4935 avg(ng)%pioVar(idsdif)%dkind=pio_fout
4936 avg(ng)%pioVar(idsdif)%gtype=w3dvar
4937# endif
4938# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
4939 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpair))) THEN
4940 got_var(idpair)=.true.
4941 avg(ng)%pioVar(idpair)%vd=var_desc(i)
4942 avg(ng)%pioVar(idpair)%dkind=pio_fout
4943 avg(ng)%pioVar(idpair)%gtype=r2dvar
4944# endif
4945# if defined BULK_FLUXES || defined ECOSIM
4946 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduair))) THEN
4947 got_var(iduair)=.true.
4948 avg(ng)%pioVar(iduair)%vd=var_desc(i)
4949 avg(ng)%pioVar(iduair)%dkind=pio_fout
4950 avg(ng)%pioVar(iduair)%gtype=r2dvar
4951 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvair))) THEN
4952 got_var(idvair)=.true.
4953 avg(ng)%pioVar(idvair)%vd=var_desc(i)
4954 avg(ng)%pioVar(idvair)%dkind=pio_fout
4955 avg(ng)%pioVar(idvair)%gtype=r2dvar
4956 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduaie))) THEN
4957 got_var(iduaie)=.true.
4958 avg(ng)%pioVar(iduaie)%vd=var_desc(i)
4959 avg(ng)%pioVar(iduaie)%dkind=pio_fout
4960 avg(ng)%pioVar(iduaie)%gtype=r2dvar
4961 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvain))) THEN
4962 got_var(idvain)=.true.
4963 avg(ng)%pioVar(idvain)%vd=var_desc(i)
4964 avg(ng)%pioVar(idvain)%dkind=pio_fout
4965 avg(ng)%pioVar(idvain)%gtype=r2dvar
4966# endif
4967 ELSE IF (trim(var_name(i)).eq. &
4968 & trim(vname(1,idtsur(itemp)))) THEN
4969 got_var(idtsur(itemp))=.true.
4970 avg(ng)%pioVar(idtsur(itemp))%vd=var_desc(i)
4971 avg(ng)%pioVar(idtsur(itemp))%dkind=pio_fout
4972 avg(ng)%pioVar(idtsur(itemp))%gtype=r2dvar
4973# ifdef SALINITY
4974 ELSE IF (trim(var_name(i)).eq. &
4975 & trim(vname(1,idtsur(isalt)))) THEN
4976 got_var(idtsur(isalt))=.true.
4977 avg(ng)%pioVar(idtsur(isalt))%vd=var_desc(i)
4978 avg(ng)%pioVar(idtsur(isalt))%dkind=pio_fout
4979 avg(ng)%pioVar(idtsur(isalt))%gtype=r2dvar
4980# endif
4981# if defined BULK_FLUXES || defined FRC_COUPLING
4982 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idlhea))) THEN
4983 got_var(idlhea)=.true.
4984 avg(ng)%pioVar(idlhea)%vd=var_desc(i)
4985 avg(ng)%pioVar(idlhea)%dkind=pio_fout
4986 avg(ng)%pioVar(idlhea)%gtype=r2dvar
4987 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idshea))) THEN
4988 got_var(idshea)=.true.
4989 avg(ng)%pioVar(idshea)%vd=var_desc(i)
4990 avg(ng)%pioVar(idshea)%dkind=pio_fout
4991 avg(ng)%pioVar(idshea)%gtype=r2dvar
4992 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idlrad))) THEN
4993 got_var(idlrad)=.true.
4994 avg(ng)%pioVar(idlrad)%vd=var_desc(i)
4995 avg(ng)%pioVar(idlrad)%dkind=pio_fout
4996 avg(ng)%pioVar(idlrad)%gtype=r2dvar
4997# endif
4998# ifdef BULK_FLUXES
4999 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idtair))) THEN
5000 got_var(idtair)=.true.
5001 avg(ng)%pioVar(idtair)%vd=var_desc(i)
5002 avg(ng)%pioVar(idtair)%dkind=pio_fout
5003 avg(ng)%pioVar(idtair)%gtype=r2dvar
5004# ifdef EMINUSP
5005 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idevap))) THEN
5006 got_var(idevap)=.true.
5007 avg(ng)%pioVar(idevap)%vd=var_desc(i)
5008 avg(ng)%pioVar(idevap)%dkind=pio_fout
5009 avg(ng)%pioVar(idevap)%gtype=r2dvar
5010 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrain))) THEN
5011 got_var(idrain)=.true.
5012 avg(ng)%pioVar(idrain)%vd=var_desc(i)
5013 avg(ng)%pioVar(idrain)%dkind=pio_fout
5014 avg(ng)%pioVar(idrain)%gtype=r2dvar
5015# endif
5016# endif
5017# ifdef SHORTWAVE
5018 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsrad))) THEN
5019 got_var(idsrad)=.true.
5020 avg(ng)%pioVar(idsrad)%vd=var_desc(i)
5021 avg(ng)%pioVar(idsrad)%dkind=pio_fout
5022 avg(ng)%pioVar(idsrad)%gtype=r2dvar
5023# endif
5024# endif
5025 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idusms))) THEN
5026 got_var(idusms)=.true.
5027 avg(ng)%pioVar(idusms)%vd=var_desc(i)
5028 avg(ng)%pioVar(idusms)%dkind=pio_fout
5029 avg(ng)%pioVar(idusms)%gtype=u2dvar
5030 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvsms))) THEN
5031 got_var(idvsms)=.true.
5032 avg(ng)%pioVar(idvsms)%vd=var_desc(i)
5033 avg(ng)%pioVar(idvsms)%dkind=pio_fout
5034 avg(ng)%pioVar(idvsms)%gtype=v2dvar
5035 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubms))) THEN
5036 got_var(idubms)=.true.
5037 avg(ng)%pioVar(idubms)%vd=var_desc(i)
5038 avg(ng)%pioVar(idubms)%dkind=pio_fout
5039 avg(ng)%pioVar(idubms)%gtype=u2dvar
5040 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbms))) THEN
5041 got_var(idvbms)=.true.
5042 avg(ng)%pioVar(idvbms)%vd=var_desc(i)
5043 avg(ng)%pioVar(idvbms)%dkind=pio_fout
5044 avg(ng)%pioVar(idvbms)%gtype=v2dvar
5045 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubrs))) THEN
5046 got_var(idubrs)=.true.
5047 avg(ng)%pioVar(idubrs)%vd=var_desc(i)
5048 avg(ng)%pioVar(idubrs)%dkind=pio_fout
5049 avg(ng)%pioVar(idubrs)%gtype=v2dvar
5050 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbrs))) THEN
5051 got_var(idvbrs)=.true.
5052 avg(ng)%pioVar(idvbrs)%vd=var_desc(i)
5053 avg(ng)%pioVar(idvbrs)%dkind=pio_fout
5054 avg(ng)%pioVar(idvbrs)%gtype=v2dvar
5055 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubws))) THEN
5056 got_var(idubws)=.true.
5057 avg(ng)%pioVar(idubws)%vd=var_desc(i)
5058 avg(ng)%pioVar(idubws)%dkind=pio_fout
5059 avg(ng)%pioVar(idubws)%gtype=v2dvar
5060 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbws))) THEN
5061 got_var(idvbws)=.true.
5062 avg(ng)%pioVar(idvbws)%vd=var_desc(i)
5063 avg(ng)%pioVar(idvbws)%dkind=pio_fout
5064 avg(ng)%pioVar(idvbws)%gtype=v2dvar
5065 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubcs))) THEN
5066 got_var(idubcs)=.true.
5067 avg(ng)%pioVar(idubcs)%vd=var_desc(i)
5068 avg(ng)%pioVar(idubcs)%dkind=pio_fout
5069 avg(ng)%pioVar(idubcs)%gtype=v2dvar
5070 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbcs))) THEN
5071 got_var(idvbcs)=.true.
5072 avg(ng)%pioVar(idvbcs)%vd=var_desc(i)
5073 avg(ng)%pioVar(idvbcs)%dkind=pio_fout
5074 avg(ng)%pioVar(idvbcs)%gtype=v2dvar
5075 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduvwc))) THEN
5076 got_var(iduvwc)=.true.
5077 avg(ng)%pioVar(iduvwc)%vd=var_desc(i)
5078 avg(ng)%pioVar(iduvwc)%dkind=pio_fout
5079 avg(ng)%pioVar(iduvwc)%gtype=v2dvar
5080 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubot))) THEN
5081 got_var(idubot)=.true.
5082 avg(ng)%pioVar(idubot)%vd=var_desc(i)
5083 avg(ng)%pioVar(idubot)%dkind=pio_fout
5084 avg(ng)%pioVar(idubot)%gtype=v2dvar
5085 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbot))) THEN
5086 got_var(idvbot)=.true.
5087 avg(ng)%pioVar(idvbot)%vd=var_desc(i)
5088 avg(ng)%pioVar(idvbot)%dkind=pio_fout
5089 avg(ng)%pioVar(idvbot)%gtype=v2dvar
5090 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubur))) THEN
5091 got_var(idubur)=.true.
5092 avg(ng)%pioVar(idubur)%vd=var_desc(i)
5093 avg(ng)%pioVar(idubur)%dkind=pio_fout
5094 avg(ng)%pioVar(idubur)%gtype=v2dvar
5095 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbvr))) THEN
5096 got_var(idvbvr)=.true.
5097 avg(ng)%pioVar(idvbvr)%vd=var_desc(i)
5098 avg(ng)%pioVar(idvbvr)%dkind=pio_fout
5099 avg(ng)%pioVar(idvbvr)%gtype=v2dvar
5100 END IF
5101# ifdef SOLVE3D
5102 DO itrc=1,nt(ng)
5103 IF (trim(var_name(i)).eq.trim(vname(1,idtvar(itrc)))) THEN
5104 got_var(idtvar(itrc))=.true.
5105 avg(ng)%pioTrc(itrc)%vd=var_desc(i)
5106 avg(ng)%pioTrc(itrc)%dkind=pio_fout
5107 avg(ng)%pioTrc(itrc)%gtype=r3dvar
5108 END IF
5109 END DO
5110 DO itrc=1,nat
5111 IF (trim(var_name(i)).eq.trim(vname(1,ihutav(itrc)))) THEN
5112 got_var(ihutav(itrc))=.true.
5113 avg(ng)%pioVar(ihutav(itrc))%vd=var_desc(i)
5114 avg(ng)%pioVar(ihutav(itrc))%dkind=pio_fout
5115 avg(ng)%pioVar(ihutav(itrc))%gtype=u3dvar
5116 ELSE IF (trim(var_name(i)).eq. &
5117 & trim(vname(1,ihvtav(itrc)))) THEN
5118 got_var(ihvtav(itrc))=.true.
5119 avg(ng)%pioVar(ihvtav(itrc))%vd=var_desc(i)
5120 avg(ng)%pioVar(ihvtav(itrc))%dkind=pio_fout
5121 avg(ng)%pioVar(ihvtav(itrc))%gtype=v3dvar
5122 ELSE IF (trim(var_name(i)).eq. &
5123 & trim(vname(1,idutav(itrc)))) THEN
5124 got_var(idutav(itrc))=.true.
5125 avg(ng)%pioVar(idutav(itrc))%vd=var_desc(i)
5126 avg(ng)%pioVar(idutav(itrc))%dkind=pio_fout
5127 avg(ng)%pioVar(idutav(itrc))%gtype=u3dvar
5128 ELSE IF (trim(var_name(i)).eq. &
5129 & trim(vname(1,idvtav(itrc)))) THEN
5130 got_var(idvtav(itrc))=.true.
5131 avg(ng)%pioVar(idvtav(itrc))%vd=var_desc(i)
5132 avg(ng)%pioVar(idvtav(itrc))%dkind=pio_fout
5133 avg(ng)%pioVar(idvtav(itrc))%gtype=v3dvar
5134 ELSE IF (trim(var_name(i)).eq. &
5135 & trim(vname(1,idttav(itrc)))) THEN
5136 got_var(idttav(itrc))=.true.
5137 avg(ng)%pioVar(idttav(itrc))%vd=var_desc(i)
5138 avg(ng)%pioVar(idttav(itrc))%dkind=pio_fout
5139 avg(ng)%pioVar(idttav(itrc))%gtype=r3dvar
5140 END IF
5141 END DO
5142# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
5143 DO itrc=1,nat
5144 IF (trim(var_name(i)).eq.trim(vname(1,idtrcd(itrc)))) THEN
5145 got_var(idtrcd(itrc))=.true.
5146 avg(ng)%pioVar(idtrcd(itrc))%vd=var_desc(i)
5147 avg(ng)%pioVar(idtrcd(itrc))%dkind=pio_fout
5148 avg(ng)%pioVar(idtrcd(itrc))%gtype=r3dvar
5149 END IF
5150 END DO
5151# endif
5152# endif
5153 END DO
5154!
5155! Check if averages variables are available in input NetCDF file.
5156!
5157 IF (.not.got_var(idtime)) THEN
5158 IF (master) WRITE (stdout,60) trim(vname(1,idtime)), &
5159 & trim(ncname)
5160 exit_flag=3
5161 RETURN
5162 END IF
5163 IF (.not.got_var(idfsur).and.aout(idfsur,ng)) THEN
5164 IF (master) WRITE (stdout,60) trim(vname(1,idfsur)), &
5165 & trim(ncname)
5166 exit_flag=3
5167 RETURN
5168 END IF
5169 IF (.not.got_var(idubar).and.aout(idubar,ng)) THEN
5170 IF (master) WRITE (stdout,60) trim(vname(1,idubar)), &
5171 & trim(ncname)
5172 exit_flag=3
5173 RETURN
5174 END IF
5175 IF (.not.got_var(idvbar).and.aout(idvbar,ng)) THEN
5176 IF (master) WRITE (stdout,60) trim(vname(1,idvbar)), &
5177 & trim(ncname)
5178 exit_flag=3
5179 RETURN
5180 END IF
5181# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
5182 IF (.not.got_var(idfsud).and.aout(idfsud,ng)) THEN
5183 IF (master) WRITE (stdout,60) trim(vname(1,idfsud)), &
5184 & trim(ncname)
5185 exit_flag=3
5186 RETURN
5187 END IF
5188 IF (.not.got_var(idu2dd).and.aout(idu2dd,ng)) THEN
5189 IF (master) WRITE (stdout,60) trim(vname(1,idu2dd)), &
5190 & trim(ncname)
5191 exit_flag=3
5192 RETURN
5193 END IF
5194 IF (.not.got_var(idv2dd).and.aout(idv2dd,ng)) THEN
5195 IF (master) WRITE (stdout,60) trim(vname(1,idv2dd)), &
5196 & trim(ncname)
5197 exit_flag=3
5198 RETURN
5199 END IF
5200# endif
5201 IF (.not.got_var(idu2de).and.aout(idu2de,ng)) THEN
5202 IF (master) WRITE (stdout,60) trim(vname(1,idu2de)), &
5203 & trim(ncname)
5204 exit_flag=3
5205 RETURN
5206 END IF
5207 IF (.not.got_var(idv2dn).and.aout(idv2dn,ng)) THEN
5208 IF (master) WRITE (stdout,60) trim(vname(1,idv2dn)), &
5209 & trim(ncname)
5210 exit_flag=3
5211 RETURN
5212 END IF
5213# ifdef SOLVE3D
5214# ifdef FORWARD_WRITE
5215 IF (.not.got_var(idufx1).and.aout(idufx1,ng)) THEN
5216 IF (master) WRITE (stdout,60) trim(vname(1,idufx1)), &
5217 & trim(ncname)
5218 exit_flag=3
5219 RETURN
5220 END IF
5221 IF (.not.got_var(idufx2).and.aout(idufx2,ng)) THEN
5222 IF (master) WRITE (stdout,60) trim(vname(1,idufx2)), &
5223 & trim(ncname)
5224 exit_flag=3
5225 RETURN
5226 END IF
5227 IF (.not.got_var(idvfx1).and.aout(idvfx1,ng)) THEN
5228 IF (master) WRITE (stdout,60) trim(vname(1,idvfx1)), &
5229 & trim(ncname)
5230 exit_flag=3
5231 RETURN
5232 END IF
5233 IF (.not.got_var(idvfx2).and.aout(idvfx2,ng)) THEN
5234 IF (master) WRITE (stdout,60) trim(vname(1,idvfx2)), &
5235 & trim(ncname)
5236 exit_flag=3
5237 RETURN
5238 END IF
5239# endif
5240 IF (.not.got_var(iduvel).and.aout(iduvel,ng)) THEN
5241 IF (master) WRITE (stdout,60) trim(vname(1,iduvel)), &
5242 & trim(ncname)
5243 exit_flag=3
5244 RETURN
5245 END IF
5246 IF (.not.got_var(idvvel).and.aout(idvvel,ng)) THEN
5247 IF (master) WRITE (stdout,60) trim(vname(1,idvvel)), &
5248 & trim(ncname)
5249 exit_flag=3
5250 RETURN
5251 END IF
5252# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
5253 IF (.not.got_var(idu3dd).and.aout(idu3dd,ng)) THEN
5254 IF (master) WRITE (stdout,60) trim(vname(1,idu3dd)), &
5255 & trim(ncname)
5256 exit_flag=3
5257 RETURN
5258 END IF
5259 IF (.not.got_var(idv3dd).and.aout(idv3dd,ng)) THEN
5260 IF (master) WRITE (stdout,60) trim(vname(1,idv3dd)), &
5261 & trim(ncname)
5262 exit_flag=3
5263 RETURN
5264 END IF
5265# endif
5266 IF (.not.got_var(idu3de).and.aout(idu3de,ng)) THEN
5267 IF (master) WRITE (stdout,60) trim(vname(1,idu3de)), &
5268 & trim(ncname)
5269 exit_flag=3
5270 RETURN
5271 END IF
5272 IF (.not.got_var(idv3dn).and.aout(idv3dn,ng)) THEN
5273 IF (master) WRITE (stdout,60) trim(vname(1,idv3dn)), &
5274 & trim(ncname)
5275 exit_flag=3
5276 RETURN
5277 END IF
5278 IF (.not.got_var(idovel).and.aout(idovel,ng)) THEN
5279 IF (master) WRITE (stdout,60) trim(vname(1,idovel)), &
5280 & trim(ncname)
5281 exit_flag=3
5282 RETURN
5283 END IF
5284 IF (.not.got_var(idwvel).and.aout(idwvel,ng)) THEN
5285 IF (master) WRITE (stdout,60) trim(vname(1,idwvel)), &
5286 & trim(ncname)
5287 exit_flag=3
5288 RETURN
5289 END IF
5290 IF (.not.got_var(iddano).and.aout(iddano,ng)) THEN
5291 IF (master) WRITE (stdout,60) trim(vname(1,iddano)), &
5292 & trim(ncname)
5293 exit_flag=3
5294 RETURN
5295 END IF
5296# ifdef LMD_SKPP
5297 IF (.not.got_var(idhsbl).and.aout(idhsbl,ng)) THEN
5298 IF (master) WRITE (stdout,60) trim(vname(1,idhsbl)), &
5299 & trim(ncname)
5300 exit_flag=3
5301 RETURN
5302 END IF
5303# endif
5304# ifdef LMD_BKPP
5305 IF (.not.got_var(idhbbl).and.aout(idhbbl,ng)) THEN
5306 IF (master) WRITE (stdout,60) trim(vname(1,idhbbl)), &
5307 & trim(ncname)
5308 exit_flag=3
5309 RETURN
5310 END IF
5311# endif
5312# endif
5313 IF (.not.got_var(id2dpv).and.aout(id2dpv,ng)) THEN
5314 IF (master) WRITE (stdout,60) trim(vname(1,id2dpv)), &
5315 & trim(ncname)
5316 exit_flag=3
5317 RETURN
5318 END IF
5319 IF (.not.got_var(id2drv).and.aout(id2drv,ng)) THEN
5320 IF (master) WRITE (stdout,60) trim(vname(1,id2drv)), &
5321 & trim(ncname)
5322 exit_flag=3
5323 RETURN
5324 END IF
5325# ifdef SOLVE3D
5326 IF (.not.got_var(id3dpv).and.aout(id3dpv,ng)) THEN
5327 IF (master) WRITE (stdout,60) trim(vname(1,id3dpv)), &
5328 & trim(ncname)
5329 exit_flag=3
5330 RETURN
5331 END IF
5332 IF (.not.got_var(id3drv).and.aout(id3drv,ng)) THEN
5333 IF (master) WRITE (stdout,60) trim(vname(1,id3drv)), &
5334 & trim(ncname)
5335 exit_flag=3
5336 RETURN
5337 END IF
5338# endif
5339 IF (.not.got_var(idzzav).and.aout(idzzav,ng)) THEN
5340 IF (master) WRITE (stdout,60) trim(vname(1,idzzav)), &
5341 & trim(ncname)
5342 exit_flag=3
5343 RETURN
5344 END IF
5345 IF (.not.got_var(idu2av).and.aout(idu2av,ng)) THEN
5346 IF (master) WRITE (stdout,60) trim(vname(1,idu2av)), &
5347 & trim(ncname)
5348 exit_flag=3
5349 RETURN
5350 END IF
5351 IF (.not.got_var(idv2av).and.aout(idv2av,ng)) THEN
5352 IF (master) WRITE (stdout,60) trim(vname(1,idv2av)), &
5353 & trim(ncname)
5354 exit_flag=3
5355 RETURN
5356 END IF
5357# ifdef SOLVE3D
5358 IF (.not.got_var(idhuav).and.aout(idhuav,ng)) THEN
5359 IF (master) WRITE (stdout,60) trim(vname(1,idhuav)), &
5360 & trim(ncname)
5361 exit_flag=3
5362 RETURN
5363 END IF
5364 IF (.not.got_var(idhvav).and.aout(idhvav,ng)) THEN
5365 IF (master) WRITE (stdout,60) trim(vname(1,idhvav)), &
5366 & trim(ncname)
5367 exit_flag=3
5368 RETURN
5369 END IF
5370 IF (.not.got_var(iduuav).and.aout(iduuav,ng)) THEN
5371 IF (master) WRITE (stdout,60) trim(vname(1,iduuav)), &
5372 & trim(ncname)
5373 exit_flag=3
5374 RETURN
5375 END IF
5376 IF (.not.got_var(iduvav).and.aout(iduvav,ng)) THEN
5377 IF (master) WRITE (stdout,60) trim(vname(1,iduvav)), &
5378 & trim(ncname)
5379 exit_flag=3
5380 RETURN
5381 END IF
5382 IF (.not.got_var(idvvav).and.aout(idvvav,ng)) THEN
5383 IF (master) WRITE (stdout,60) trim(vname(1,idvvav)), &
5384 & trim(ncname)
5385 exit_flag=3
5386 RETURN
5387 END IF
5388# if defined LMD_MIXING || defined MY25_MIXING || defined GLS_MIXING
5389 IF (.not.got_var(idvvis).and.aout(idvvis,ng)) THEN
5390 IF (master) WRITE (stdout,60) trim(vname(1,idvvis)), &
5391 & trim(ncname)
5392 exit_flag=3
5393 RETURN
5394 END IF
5395 IF (.not.got_var(idtdif).and.aout(idtdif,ng)) THEN
5396 IF (master) WRITE (stdout,60) trim(vname(1,idtdif)), &
5397 & trim(ncname)
5398 exit_flag=3
5399 RETURN
5400 END IF
5401# ifdef SALINITY
5402 IF (.not.got_var(idsdif).and.aout(idsdif,ng)) THEN
5403 IF (master) WRITE (stdout,60) trim(vname(1,idsdif)), &
5404 & trim(ncname)
5405 exit_flag=3
5406 RETURN
5407 END IF
5408# endif
5409# endif
5410# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
5411 IF (.not.got_var(idpair).and.aout(idpair,ng)) THEN
5412 IF (master) WRITE (stdout,60) trim(vname(1,idpair)), &
5413 & trim(ncname)
5414 exit_flag=3
5415 RETURN
5416 END IF
5417# endif
5418# if defined BULK_FLUXES || defined ECOSIM
5419 IF (.not.got_var(iduair).and.aout(iduair,ng)) THEN
5420 IF (master) WRITE (stdout,60) trim(vname(1,iduair)), &
5421 & trim(ncname)
5422 exit_flag=3
5423 RETURN
5424 END IF
5425 IF (.not.got_var(idvair).and.aout(idvair,ng)) THEN
5426 IF (master) WRITE (stdout,60) trim(vname(1,idvair)), &
5427 & trim(ncname)
5428 exit_flag=3
5429 RETURN
5430 END IF
5431 IF (.not.got_var(iduaie).and.aout(iduaie,ng)) THEN
5432 IF (master) WRITE (stdout,60) trim(vname(1,iduaie)), &
5433 & trim(ncname)
5434 exit_flag=3
5435 RETURN
5436 END IF
5437 IF (.not.got_var(idvain).and.aout(idvain,ng)) THEN
5438 IF (master) WRITE (stdout,60) trim(vname(1,idvain)), &
5439 & trim(ncname)
5440 exit_flag=3
5441 RETURN
5442 END IF
5443# endif
5444 IF (.not.got_var(idtsur(itemp)).and.aout(idtsur(itemp),ng)) THEN
5445 IF (master) WRITE (stdout,60) trim(vname(1,idtsur(itemp))), &
5446 & trim(ncname)
5447 exit_flag=3
5448 RETURN
5449 END IF
5450# ifdef SALINITY
5451 IF (.not.got_var(idtsur(isalt)).and.aout(idtsur(isalt),ng)) THEN
5452 IF (master) WRITE (stdout,60) trim(vname(1,idtsur(isalt))), &
5453 & trim(ncname)
5454 exit_flag=3
5455 RETURN
5456 END IF
5457# endif
5458# if defined BULK_FLUXES || defined FRC_COUPLING
5459 IF (.not.got_var(idlhea).and.aout(idlhea,ng)) THEN
5460 IF (master) WRITE (stdout,60) trim(vname(1,idlhea)), &
5461 & trim(ncname)
5462 exit_flag=3
5463 RETURN
5464 END IF
5465 IF (.not.got_var(idshea).and.aout(idshea,ng)) THEN
5466 IF (master) WRITE (stdout,60) trim(vname(1,idshea)), &
5467 & trim(ncname)
5468 exit_flag=3
5469 RETURN
5470 END IF
5471 IF (.not.got_var(idlrad).and.aout(idlrad,ng)) THEN
5472 IF (master) WRITE (stdout,60) trim(vname(1,idlrad)), &
5473 & trim(ncname)
5474 exit_flag=3
5475 RETURN
5476 END IF
5477# endif
5478# ifdef BULK_FLUXES
5479 IF (.not.got_var(idtair).and.aout(idtair,ng)) THEN
5480 IF (master) WRITE (stdout,60) trim(vname(1,idtair)), &
5481 & trim(ncname)
5482 exit_flag=3
5483 RETURN
5484 END IF
5485# ifdef EMINUSP
5486 IF (.not.got_var(idevap).and.aout(idevap,ng)) THEN
5487 IF (master) WRITE (stdout,60) trim(vname(1,idevap)), &
5488 & trim(ncname)
5489 exit_flag=3
5490 RETURN
5491 END IF
5492 IF (.not.got_var(idrain).and.aout(idrain,ng)) THEN
5493 IF (master) WRITE (stdout,60) trim(vname(1,idrain)), &
5494 & trim(ncname)
5495 exit_flag=3
5496 RETURN
5497 END IF
5498# endif
5499# endif
5500# ifdef SHORTWAVE
5501 IF (.not.got_var(idsrad).and.aout(idsrad,ng)) THEN
5502 IF (master) WRITE (stdout,60) trim(vname(1,idsrad)), &
5503 & trim(ncname)
5504 exit_flag=3
5505 RETURN
5506 END IF
5507# endif
5508# endif
5509 IF (.not.got_var(idusms).and.aout(idusms,ng)) THEN
5510 IF (master) WRITE (stdout,60) trim(vname(1,idusms)), &
5511 & trim(ncname)
5512 exit_flag=3
5513 RETURN
5514 END IF
5515 IF (.not.got_var(idvsms).and.aout(idvsms,ng)) THEN
5516 IF (master) WRITE (stdout,60) trim(vname(1,idvsms)), &
5517 & trim(ncname)
5518 exit_flag=3
5519 RETURN
5520 END IF
5521 IF (.not.got_var(idubms).and.aout(idubms,ng)) THEN
5522 IF (master) WRITE (stdout,60) trim(vname(1,idubms)), &
5523 & trim(ncname)
5524 exit_flag=3
5525 RETURN
5526 END IF
5527 IF (.not.got_var(idvbms).and.aout(idvbms,ng)) THEN
5528 IF (master) WRITE (stdout,60) trim(vname(1,idvbms)), &
5529 & trim(ncname)
5530 exit_flag=3
5531 RETURN
5532 END IF
5533# ifdef SOLVE3D
5534 DO itrc=1,nt(ng)
5535 IF (.not.got_var(idtvar(itrc)).and.aout(idtvar(itrc),ng)) THEN
5536 IF (master) WRITE (stdout,60) trim(vname(1,idtvar(itrc))), &
5537 & trim(ncname)
5538 exit_flag=3
5539 RETURN
5540 END IF
5541 END DO
5542 DO itrc=1,nat
5543 IF (.not.got_var(ihutav(itrc)).and.aout(ihutav(itrc),ng)) THEN
5544 IF (master) WRITE (stdout,60) trim(vname(1,ihutav(itrc))), &
5545 & trim(ncname)
5546 exit_flag=3
5547 RETURN
5548 END IF
5549 IF (.not.got_var(ihvtav(itrc)).and.aout(ihvtav(itrc),ng)) THEN
5550 IF (master) WRITE (stdout,60) trim(vname(1,ihvtav(itrc))), &
5551 & trim(ncname)
5552 exit_flag=3
5553 RETURN
5554 END IF
5555 IF (.not.got_var(idutav(itrc)).and.aout(idutav(itrc),ng)) THEN
5556 IF (master) WRITE (stdout,60) trim(vname(1,idutav(itrc))), &
5557 & trim(ncname)
5558 exit_flag=3
5559 RETURN
5560 END IF
5561 IF (.not.got_var(idvtav(itrc)).and.aout(idvtav(itrc),ng)) THEN
5562 IF (master) WRITE (stdout,60) trim(vname(1,idvtav(itrc))), &
5563 & trim(ncname)
5564 exit_flag=3
5565 RETURN
5566 END IF
5567 IF (.not.got_var(idttav(itrc)).and.aout(idttav(itrc),ng)) THEN
5568 IF (master) WRITE (stdout,60) trim(vname(1,idttav(itrc))), &
5569 & trim(ncname)
5570 exit_flag=3
5571 RETURN
5572 END IF
5573 END DO
5574# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
5575 DO itrc=1,nat
5576 IF (.not.got_var(idtrcd(itrc)).and.aout(idtrcd(itrc),ng)) THEN
5577 IF (master) WRITE (stdout,60) trim(vname(1,idtrcd(itrc))), &
5578 & trim(ncname)
5579 exit_flag=3
5580 RETURN
5581 END IF
5582 END DO
5583# endif
5584# endif
5585
5586# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
5587!
5588! Scan bottom boundary layer model and waves variables from input
5589! NetCDF and activate switches for time-averaged variables. Get
5590! variable IDs.
5591!
5592 CALL bbl_def_pio (ng, model, ldef, aout, avg)
5593 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
5594# endif
5595
5596# if defined ICE_MODEL && defined SOLVE3D
5597!
5598! Scan sea-ice variables from input NetCDF and activate switches for
5599! time-averaged variables. Get variable IDs.
5600!
5601 CALL ice_def_pio (ng, model, ldef, aout, avg)
5602# endif
5603
5604# if defined SEDIMENT && defined SOLVE3D
5605!
5606! Scan sediment model variables from input NetCDF and activate
5607! switches for time-averaged variables. Get variable IDs.
5608!
5609 CALL sediment_def_pio (ng, model, ldef, aout, avg)
5610 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
5611# endif
5612
5613# if defined WEC_VF && defined SOLVE3D
5614!
5615! Scan Waves Effect on Currents variables from input NetCDF and
5616! activate switches for time-averaged variables. Get variable IDs.
5617!
5618 CALL wec_def_pio (ng, model, ldef, aout, avg)
5619 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
5620# endif
5621!
5622! Set unlimited time record dimension to the appropriate value.
5623!
5624 IF (nrst(ng).eq.navg(ng)) THEN
5625 IF (ndefavg(ng).gt.0) THEN
5626 avg(ng)%Rindex=((ntstart(ng)-1)- &
5627 & ndefavg(ng)*((ntstart(ng)-1)/ndefavg(ng)))/ &
5628 & navg(ng)
5629 ELSE
5630 avg(ng)%Rindex=(ntstart(ng)-1)/navg(ng)
5631 END IF
5632 ELSE
5633 avg(ng)%Rindex=rec_size
5634 END IF
5635 END IF query
5636!
5637! Set initial average time. Notice that the value is offset by half
5638! nAVG*dt so there is not a special case when computing its value
5639
5640# ifdef ADJOINT
5641! in "ad_set_avg".
5642!
5643 avgtime(ng)=time(ng)+0.5_r8*real(navg(ng),r8)*dt(ng)
5644# else
5645! in "set_avg".
5646!
5647 IF (ntsavg(ng).eq.1) THEN
5648 avgtime(ng)=time(ng)-0.5_r8*real(navg(ng),r8)*dt(ng)
5649 ELSE
5650 avgtime(ng)=time(ng)+real(ntsavg(ng),r8)*dt(ng)- &
5651 & 0.5_r8*real(navg(ng),r8)*dt(ng)
5652 END IF
5653# endif
5654!
5655 10 FORMAT (2x,'DEF_AVG_PIO - creating average file,',t56, &
5656 & 'Grid ',i2.2,': ',a)
5657 20 FORMAT (2x,'DEF_AVG_PIO - inquiring average file',t56, &
5658 & 'Grid ',i2.2,': ',a)
5659 30 FORMAT (/,' DEF_AVG_PIO - unable to create averages NetCDF', &
5660 & ' file: ',a)
5661 40 FORMAT (1pe11.4,1x,'millimeter')
5662 50 FORMAT (/,' DEF_AVG_PIO - unable to open averages NetCDF' &
5663 & ' file: ',a)
5664 60 FORMAT (/,' DEF_AVG_PIO - unable to find variable: ',a,2x, &
5665 & ' in averages NetCDF file: ',a)
5666!
5667 RETURN
integer, parameter pio_fout
type(var_desc_t), dimension(:), pointer var_desc
subroutine, public pio_netcdf_create(ng, model, ncname, piofile)
subroutine, public pio_netcdf_inq_var(ng, model, ncname, piofile, myvarname, searchvar, piovar, nvardim, nvaratt)
subroutine, public pio_netcdf_open(ng, model, ncname, omode, piofile)
subroutine, public pio_netcdf_check_dim(ng, model, ncname, piofile)
integer, parameter pio_tout
subroutine, public pio_netcdf_enddef(ng, model, ncname, piofile)

References mod_ncparam::aout, mod_iounits::avg, mod_scalars::avgtime, bbl_output_mod::bbl_def_pio(), mod_scalars::dt, mod_scalars::exit_flag, strings_mod::founderror(), mod_ncparam::id2dpv, mod_ncparam::id2drv, mod_ncparam::id3dpv, mod_ncparam::id3drv, mod_ncparam::iddano, mod_ncparam::idevap, mod_ncparam::idfsud, mod_ncparam::idfsur, mod_ncparam::idhbbl, mod_ncparam::idhsbl, mod_ncparam::idhuav, mod_ncparam::idhvav, mod_ncparam::idlhea, mod_ncparam::idlrad, mod_ncparam::idovel, mod_ncparam::idpair, mod_ncparam::idrain, mod_ncparam::idrwet, mod_ncparam::idsdif, mod_sediment::idsed, mod_ncparam::idshea, mod_ncparam::idsrad, mod_ncparam::idtair, mod_ncparam::idtdif, mod_ncparam::idtime, mod_ncparam::idtrcd, mod_ncparam::idtsur, mod_ncparam::idttav, mod_ncparam::idtvar, mod_ncparam::idu2av, mod_ncparam::idu2dd, mod_ncparam::idu2de, mod_ncparam::idu3dd, mod_ncparam::idu3de, mod_ncparam::iduaie, mod_ncparam::iduair, mod_ncparam::idubar, mod_ncparam::idubcs, mod_ncparam::idubms, mod_ncparam::idubot, mod_ncparam::idubrs, mod_ncparam::idubur, mod_ncparam::idubws, mod_ncparam::idufx1, mod_ncparam::idufx2, mod_ncparam::idusms, mod_ncparam::idutav, mod_ncparam::iduuav, mod_ncparam::iduvav, mod_ncparam::iduvel, mod_ncparam::iduvwc, mod_ncparam::idv2av, mod_ncparam::idv2dd, mod_ncparam::idv2dn, mod_ncparam::idv3dd, mod_ncparam::idv3dn, mod_ncparam::idvain, mod_ncparam::idvair, mod_ncparam::idvbar, mod_ncparam::idvbcs, mod_ncparam::idvbms, mod_ncparam::idvbot, mod_ncparam::idvbrs, mod_ncparam::idvbvr, mod_ncparam::idvbws, mod_ncparam::idvfx1, mod_ncparam::idvfx2, mod_ncparam::idvsms, mod_ncparam::idvtav, mod_ncparam::idvvav, mod_ncparam::idvvel, mod_ncparam::idvvis, mod_ncparam::idwvel, mod_ncparam::idzzav, mod_ncparam::ihutav, mod_ncparam::ihvtav, mod_ncparam::iinfo, mod_param::iobounds, mod_scalars::isalt, mod_scalars::itemp, mod_parallel::master, mod_param::n, mod_param::nat, mod_scalars::navg, mod_biology::nbac, mod_biology::nbands, mod_param::nbed, mod_scalars::ndefavg, mod_biology::ndom, mod_biology::nfec, mod_scalars::noerror, mod_biology::nphy, mod_scalars::nrst, mod_param::nst, mod_fourdvar::nstatevar, mod_param::nt, mod_scalars::ntsavg, mod_scalars::ntstart, mod_ncparam::nv, mod_param::p2dvar, mod_param::p3dvar, mod_pio_netcdf::pio_fout, mod_pio_netcdf::pio_netcdf_check_dim(), mod_pio_netcdf::pio_netcdf_create(), mod_pio_netcdf::pio_netcdf_enddef(), mod_pio_netcdf::pio_netcdf_inq_var(), mod_pio_netcdf::pio_netcdf_open(), mod_pio_netcdf::pio_tout, mod_param::r2dvar, mod_param::r3dvar, mod_scalars::rclock, mod_sediment::sd50, sediment_output_mod::sediment_def_pio(), mod_iounits::sourcefile, mod_iounits::stdout, mod_scalars::time, mod_param::u2dvar, mod_param::u3dvar, mod_param::v2dvar, mod_param::v3dvar, mod_pio_netcdf::var_desc, mod_ncparam::vname, and mod_param::w3dvar.

Referenced by def_avg().

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