43# if defined PIO_LIB && defined DISTRIBUTE
55 logical,
intent(in) :: ldef
57 integer,
intent(in) :: ng
61 character (len=*),
parameter :: myfile = &
68 SELECT CASE (
dia(ng)%IOtype)
72# if defined PIO_LIB && defined DISTRIBUTE
82 10
FORMAT (
' DEF_DIAGS - Illegal output file type, io_type = ',i0, &
83 & /,13x,
'Check KeyWord ''OUT_LIB'' in ''roms.in''.')
96 integer,
intent(in) :: ng
98 logical,
intent(in) :: ldef
102 logical :: got_var(
nv)
104 integer,
parameter :: natt = 25
106 integer :: i, ifield, itrc, ivar, j, nvd3, nvd4, nvd5
107 integer :: recdim, status
108# if defined WRITE_WATER && defined MASKING
109 integer :: xy_pdim, xyz_pdim
112 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
113# if defined ECOSIM && defined DIAGNOSTICS_BIO
114 integer :: l3dgrd(4), l4dgrd(5)
121 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
126 character (len= 13) :: prefix
127 character (len=256) :: ncname
128 character (len=MaxLen) :: vinfo(natt)
130 character (len=*),
parameter :: myfile = &
131 & __FILE__//
", def_diags_nf90"
144 WRITE (
stdout,10) ng, trim(ncname)
146 WRITE (
stdout,20) ng, trim(ncname)
154 define :
IF (ldef)
THEN
199# if defined WRITE_WATER && defined MASKING
218# if defined WRITE_WATER && defined MASKING
236 &
iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
245 &
n(ng)+1, dimids(10))
249 &
nt(ng), dimids(11))
261# if defined WRITE_WATER && defined MASKING
302 & nf90_unlimited, dimids(12))
309#if defined WRITE_WATER && defined MASKING
321# if defined WRITE_WATER && defined MASKING
342# if defined WRITE_WATER && defined MASKING
363# if defined WRITE_WATER && defined MASKING
385# if defined WRITE_WATER && defined MASKING
398# if defined WRITE_WATER && defined MASKING
408# if defined ECOSIM && defined DIAGNOSTICS_BIO
459 WRITE (vinfo( 2),
'(a,a)')
'averaged ', trim(
vname(2,
idtime))
460 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
461 vinfo( 4)=trim(
rclock%calendar)
465 &
nf_tout, 1, (/recdim/), aval, vinfo, ncname, &
466 & setparaccess = .true.)
473 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,
idfsur))
477# if !defined WET_DRY && (defined WRITE_WATER && defined MASKING)
481 vinfo(22)=
'coordinates'
484 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
487# ifdef DIAGNOSTICS_UV
493 IF (
dout(ifield,ng))
THEN
494 vinfo( 1)=
vname(1,ifield)
495 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
496 vinfo( 3)=
vname(3,ifield)
497 vinfo(14)=
vname(4,ifield)
499# if defined WRITE_WATER && defined MASKING
502 vinfo(21)=
vname(6,ifield)
503 vinfo(22)=
'coordinates'
506 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
510 IF (
dout(ifield,ng))
THEN
511 vinfo( 1)=
vname(1,ifield)
512 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
513 vinfo( 3)=
vname(3,ifield)
514 vinfo(14)=
vname(4,ifield)
516# if defined WRITE_WATER && defined MASKING
519 vinfo(21)=
vname(6,ifield)
520 vinfo(22)=
'coordinates'
523 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
534 IF (
dout(ifield,ng))
THEN
535 vinfo( 1)=
vname(1,ifield)
536 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
537 vinfo( 3)=
vname(3,ifield)
538 vinfo(14)=
vname(4,ifield)
540# if defined WRITE_WATER && defined MASKING
543 vinfo(21)=
vname(6,ifield)
544 vinfo(22)=
'coordinates'
547 &
nf_fout, nvd4, u3dgrd, aval, vinfo, ncname)
551 IF (
dout(ifield,ng))
THEN
552 vinfo( 1)=
vname(1,ifield)
553 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
554 vinfo( 3)=
vname(3,ifield)
555 vinfo(14)=
vname(4,ifield)
557# if defined WRITE_WATER && defined MASKING
560 vinfo(21)=
vname(6,ifield)
561 vinfo(22)=
'coordinates'
564 &
nf_fout, nvd4, v3dgrd, aval, vinfo, ncname)
570# ifdef DIAGNOSTICS_TS
577 IF (
dout(ifield,ng))
THEN
578 vinfo( 1)=
vname(1,ifield)
579 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
580 vinfo( 3)=
vname(3,ifield)
581 vinfo(14)=
vname(4,ifield)
583# if defined WRITE_WATER && defined MASKING
586 vinfo(21)=
vname(6,ifield)
587 vinfo(22)=
'coordinates'
591 & nvd4, t3dgrd, aval, vinfo, ncname)
593 & __line__, myfile))
RETURN
599# ifdef DIAGNOSTICS_BIO
600# if defined BIO_FENNEL || defined HYPOXIA_SRM
606 IF (
dout(ifield,ng))
THEN
607 vinfo( 1)=
vname(1,ifield)
608 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
609 vinfo( 3)=
vname(3,ifield)
610 vinfo(14)=
vname(4,ifield)
612# if defined WRITE_WATER && defined MASKING
615 vinfo(21)=
vname(6,ifield)
616 vinfo(22)=
'coordinates'
619 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
624# if defined BIO_FENNEL
630 IF (
dout(ifield,ng))
THEN
631 vinfo( 1)=
vname(1,ifield)
632 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
633 vinfo( 3)=
vname(3,ifield)
634 vinfo(14)=
vname(4,ifield)
636# if defined WRITE_WATER && defined MASKING
639 vinfo(21)=
vname(6,ifield)
640 vinfo(22)=
'coordinates'
643 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
653 IF (
dout(ifield,ng))
THEN
654 vinfo( 1)=
vname(1,ifield)
655 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
656 vinfo( 3)=
vname(3,ifield)
657 vinfo(14)=
vname(4,ifield)
659# if defined WRITE_WATER && defined MASKING
662 vinfo(21)=
vname(6,ifield)
663 vinfo(22)=
'coordinates'
664 aval(5)=real(
iinfo(1,ifield,ng),r8)
666 &
nf_fout, nvd4, l3dgrd, aval, vinfo, ncname)
675 IF (
dout(ifield,ng))
THEN
676 vinfo( 1)=
vname(1,ifield)
677 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
678 vinfo( 3)=
vname(3,ifield)
679 vinfo(14)=
vname(4,ifield)
681# if defined WRITE_WATER && defined MASKING
684 vinfo(21)=
vname(6,ifield)
685 vinfo(22)=
'coordinates'
686 aval(5)=real(
iinfo(1,ifield,ng),r8)
688 &
nf_fout, nvd5, l4dgrd, aval, vinfo, ncname)
715 query :
IF (.not.ldef)
THEN
722 WRITE (
stdout,50) trim(ncname)
729 & ncid =
dia(ng)%ncid)
735 & ncid =
dia(ng)%ncid)
752# ifdef DIAGNOSTICS_UV
756 got_var(
iddu2d(ivar))=.true.
760 got_var(
iddv2d(ivar))=.true.
768 got_var(
iddu3d(ivar))=.true.
772 got_var(
iddv3d(ivar))=.true.
778# ifdef DIAGNOSTICS_TS
783 got_var(ifield)=.true.
789# ifdef DIAGNOSTICS_BIO
790# if defined BIO_FENNEL || defined HYPOXIA_SRM
794 got_var(ifield)=.true.
799# if defined BIO_FENNEL
803 got_var(ifield)=.true.
811 got_var(ifield)=.true.
818 got_var(ifield)=.true.
828 IF (.not.got_var(
idtime))
THEN
834# ifdef DIAGNOSTICS_UV
837 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
844 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
854 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
861 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
870# ifdef DIAGNOSTICS_TS
874 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
883# ifdef DIAGNOSTICS_BIO
884# if defined BIO_FENNEL || defined HYPOXIA_SRM
887 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
895# if defined BIO_FENNEL
898 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
908 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
917 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
948 & 0.5_r8*real(
ndia(ng),r8)*
dt(ng)
951 10
FORMAT (2x,
'DEF_DIAGS_NF90 - creating diagnostics file,',t56, &
952 &
'Grid ',i2.2,
': ',a)
953 20
FORMAT (2x,
'DEF_DIAGS_NF90 - inquiring diagnostics file,',t56, &
954 &
'Grid ',i2.2,
': ', a)
955 30
FORMAT (/,
' DEF_DIAGS_NF90 - unable to create diagnostics NetCDF',&
957 40
FORMAT (1pe11.4,1x,
'millimeter')
958 50
FORMAT (/,
' DEF_DIAGS_NF90 - unable to open diagnostics NetCDF', &
960 60
FORMAT (/,
' DEF_DIAGS_NF90 - unable to find variable: ',a,2x, &
961 &
' in diagnostics NetCDF file: ',a)
966# if defined PIO_LIB && defined DISTRIBUTE
976 integer,
intent(in) :: ng
978 logical,
intent(in) :: ldef
982 logical :: got_var(
nv)
984 integer,
parameter :: natt = 25
986 integer :: i, ifield, itrc, ivar, j, nvd3, nvd4, nvd5
987 integer :: recdim, status
988# if defined WRITE_WATER && defined MASKING
989 integer :: xy_pdim, xyz_pdim
992 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
993# if defined ECOSIM && defined DIAGNOSTICS_BIO
994 integer :: l3dgrd(4), l4dgrd(5)
1001 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
1006 character (len= 13) :: prefix
1007 character (len=256) :: ncname
1008 character (len=MaxLen) :: vinfo(natt)
1010 character (len=*),
parameter :: myfile = &
1011 & __FILE__//
", def_diags_pio"
1024 WRITE (
stdout,10) ng, trim(ncname)
1026 WRITE (
stdout,20) ng, trim(ncname)
1034 define :
IF (ldef)
THEN
1064 &
iobounds(ng)%eta_rho, dimids( 5))
1076 &
iobounds(ng)%eta_psi, dimids( 8))
1079# if defined WRITE_WATER && defined MASKING
1098# if defined WRITE_WATER && defined MASKING
1104 &
iobounds(ng)%xy_rho*
n(ng), dimids(20))
1116 &
iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
1121 &
n(ng), dimids( 9))
1125 &
n(ng)+1, dimids(10))
1129 &
nt(ng), dimids(11))
1141# if defined WRITE_WATER && defined MASKING
1182 & pio_unlimited, dimids(12))
1189# if defined WRITE_WATER && defined MASKING
1201# if defined WRITE_WATER && defined MASKING
1202 t2dgrd(1)=dimids(17)
1203 t2dgrd(2)=dimids(12)
1205 t3dgrd(1)=dimids(20)
1206 t3dgrd(2)=dimids(12)
1209 t2dgrd(1)=dimids( 1)
1210 t2dgrd(2)=dimids( 5)
1211 t2dgrd(3)=dimids(12)
1213 t3dgrd(1)=dimids( 1)
1214 t3dgrd(2)=dimids( 5)
1215 t3dgrd(3)=dimids( 9)
1216 t3dgrd(4)=dimids(12)
1222# if defined WRITE_WATER && defined MASKING
1223 u2dgrd(1)=dimids(18)
1224 u2dgrd(2)=dimids(12)
1226 u3dgrd(1)=dimids(21)
1227 u3dgrd(2)=dimids(12)
1230 u2dgrd(1)=dimids( 2)
1231 u2dgrd(2)=dimids( 6)
1232 u2dgrd(3)=dimids(12)
1234 u3dgrd(1)=dimids( 2)
1235 u3dgrd(2)=dimids( 6)
1236 u3dgrd(3)=dimids( 9)
1237 u3dgrd(4)=dimids(12)
1243# if defined WRITE_WATER && defined MASKING
1244 v2dgrd(1)=dimids(19)
1245 v2dgrd(2)=dimids(12)
1247 v3dgrd(1)=dimids(22)
1248 v3dgrd(2)=dimids(12)
1251 v2dgrd(1)=dimids( 3)
1252 v2dgrd(2)=dimids( 7)
1253 v2dgrd(3)=dimids(12)
1255 v3dgrd(1)=dimids( 3)
1256 v3dgrd(2)=dimids( 7)
1257 v3dgrd(3)=dimids( 9)
1258 v3dgrd(4)=dimids(12)
1265# if defined WRITE_WATER && defined MASKING
1266 w3dgrd(1)=dimids(23)
1267 w3dgrd(2)=dimids(12)
1269 w3dgrd(1)=dimids( 1)
1270 w3dgrd(2)=dimids( 5)
1271 w3dgrd(3)=dimids(10)
1272 w3dgrd(4)=dimids(12)
1278# if defined WRITE_WATER && defined MASKING
1279 b3dgrd(1)=dimids(24)
1280 b3dgrd(2)=dimids(12)
1282 b3dgrd(1)=dimids( 1)
1283 b3dgrd(2)=dimids( 5)
1284 b3dgrd(3)=dimids(16)
1285 b3dgrd(4)=dimids(12)
1288# if defined ECOSIM && defined DIAGNOSTICS_BIO
1292 l3dgrd(1)=dimids( 1)
1293 l3dgrd(2)=dimids( 5)
1294 l3dgrd(3)=dimids(33)
1295 l3dgrd(4)=dimids(12)
1297 l4dgrd(1)=dimids( 1)
1298 l4dgrd(2)=dimids( 5)
1299 l4dgrd(3)=dimids( 9)
1300 l4dgrd(4)=dimids(33)
1301 l4dgrd(5)=dimids(12)
1312 DO j=1,len(vinfo(1))
1339 WRITE (vinfo( 2),
'(a,a)')
'averaged ', trim(
vname(2,
idtime))
1340 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
1341 vinfo( 4)=trim(
rclock%calendar)
1349 &
pio_tout, 1, (/recdim/), aval, vinfo, ncname, &
1350 & setparaccess = .true.)
1357 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,
idfsur))
1361# if !defined WET_DRY && (defined WRITE_WATER && defined MASKING)
1362 vinfo(20)=
'mask_rho'
1365 vinfo(22)=
'coordinates'
1372 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1375# ifdef DIAGNOSTICS_UV
1381 IF (
dout(ifield,ng))
THEN
1382 vinfo( 1)=
vname(1,ifield)
1383 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
1384 vinfo( 3)=
vname(3,ifield)
1385 vinfo(14)=
vname(4,ifield)
1387# if defined WRITE_WATER && defined MASKING
1390 vinfo(21)=
vname(6,ifield)
1391 vinfo(22)=
'coordinates'
1397 &
dia(ng)%pioVar(ifield)%vd, &
1398 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
1403 IF (
dout(ifield,ng))
THEN
1404 vinfo( 1)=
vname(1,ifield)
1405 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
1406 vinfo( 3)=
vname(3,ifield)
1407 vinfo(14)=
vname(4,ifield)
1409# if defined WRITE_WATER && defined MASKING
1412 vinfo(21)=
vname(6,ifield)
1413 vinfo(22)=
'coordinates'
1419 &
dia(ng)%pioVar(ifield)%vd, &
1420 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
1431 IF (
dout(ifield,ng))
THEN
1432 vinfo( 1)=
vname(1,ifield)
1433 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
1434 vinfo( 3)=
vname(3,ifield)
1435 vinfo(14)=
vname(4,ifield)
1437# if defined WRITE_WATER && defined MASKING
1440 vinfo(21)=
vname(6,ifield)
1441 vinfo(22)=
'coordinates'
1447 &
dia(ng)%pioVar(ifield)%vd, &
1448 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
1453 IF (
dout(ifield,ng))
THEN
1454 vinfo( 1)=
vname(1,ifield)
1455 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
1456 vinfo( 3)=
vname(3,ifield)
1457 vinfo(14)=
vname(4,ifield)
1459# if defined WRITE_WATER && defined MASKING
1462 vinfo(21)=
vname(6,ifield)
1463 vinfo(22)=
'coordinates'
1469 &
dia(ng)%pioVar(ifield)%vd, &
1470 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
1476# ifdef DIAGNOSTICS_TS
1483 IF (
dout(ifield,ng))
THEN
1484 vinfo( 1)=
vname(1,ifield)
1485 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
1486 vinfo( 3)=
vname(3,ifield)
1487 vinfo(14)=
vname(4,ifield)
1489# if defined WRITE_WATER && defined MASKING
1490 vinfo(20)=
'mask_rho'
1492 vinfo(21)=
vname(6,ifield)
1493 vinfo(22)=
'coordinates'
1499 &
dia(ng)%pioVar(ifield)%vd, &
1500 &
pio_fout, nvd4, t3dgrd, aval, vinfo, &
1503 & __line__, myfile))
RETURN
1509# ifdef DIAGNOSTICS_BIO
1510# if defined BIO_FENNEL || defined HYPOXIA_SRM
1516 IF (
dout(ifield,ng))
THEN
1517 vinfo( 1)=
vname(1,ifield)
1518 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
1519 vinfo( 3)=
vname(3,ifield)
1520 vinfo(14)=
vname(4,ifield)
1522# if defined WRITE_WATER && defined MASKING
1523 vinfo(20)=
'mask_rho'
1525 vinfo(21)=
vname(6,ifield)
1526 vinfo(22)=
'coordinates'
1532 &
dia(ng)%pioVar(ifield)%vd, &
1533 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1538# if defined BIO_FENNEL
1544 IF (
dout(ifield,ng))
THEN
1545 vinfo( 1)=
vname(1,ifield)
1546 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
1547 vinfo( 3)=
vname(3,ifield)
1548 vinfo(14)=
vname(4,ifield)
1550# if defined WRITE_WATER && defined MASKING
1551 vinfo(20)=
'mask_rho'
1553 vinfo(21)=
vname(6,ifield)
1554 vinfo(22)=
'coordinates'
1560 &
dia(ng)%pioVar(ifield)%vd, &
1561 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1566# elif defined ECOSIM
1572 IF (
dout(ifield,ng))
THEN
1573 vinfo( 1)=
vname(1,ifield)
1574 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
1575 vinfo( 3)=
vname(3,ifield)
1576 vinfo(14)=
vname(4,ifield)
1578# if defined WRITE_WATER && defined MASKING
1579 vinfo(20)=
'mask_rho'
1581 vinfo(21)=
vname(6,ifield)
1582 vinfo(22)=
'coordinates'
1583 aval(5)=real(
iinfo(1,ifield,ng),r8)
1588 &
dia(ng)%pioVar(ifield)%vd, &
1589 &
pio_fout, nvd4, l3dgrd, aval, vinfo, ncname)
1598 IF (
dout(ifield,ng))
THEN
1599 vinfo( 1)=
vname(1,ifield)
1600 WRITE (vinfo( 2),
'(a,1x,a)') prefix, trim(
vname(2,ifield))
1601 vinfo( 3)=
vname(3,ifield)
1602 vinfo(14)=
vname(4,ifield)
1604# if defined WRITE_WATER && defined MASKING
1605 vinfo(20)=
'mask_rho'
1607 vinfo(21)=
vname(6,ifield)
1608 vinfo(22)=
'coordinates'
1609 aval(5)=real(
iinfo(1,ifield,ng),r8)
1614 &
dia(ng)%pioVar(ifield)%vd, &
1615 &
pio_fout, nvd5, l4dgrd, aval, vinfo, ncname)
1642 query :
IF (.not.ldef)
THEN
1649 WRITE (
stdout,50) trim(ncname)
1656 & piofile =
dia(ng)%pioFile)
1662 & piofile =
dia(ng)%pioFile)
1675 IF (trim(var_name(i)).eq.trim(
vname(1,
idtime)))
THEN
1681# ifdef DIAGNOSTICS_UV
1683 IF (trim(var_name(i)).eq. &
1685 got_var(
iddu2d(ivar))=.true.
1689 ELSE IF (trim(var_name(i)).eq. &
1691 got_var(
iddv2d(ivar))=.true.
1699 IF (trim(var_name(i)).eq. &
1701 got_var(
iddu3d(ivar))=.true.
1705 ELSE IF (trim(var_name(i)).eq. &
1707 got_var(
iddv3d(ivar))=.true.
1715# ifdef DIAGNOSTICS_TS
1719 IF (trim(var_name(i)).eq.trim(
vname(1,ifield)))
THEN
1720 got_var(ifield)=.true.
1728# ifdef DIAGNOSTICS_BIO
1729# if defined BIO_FENNEL || defined HYPOXIA_SRM
1732 IF (trim(var_name(i)).eq.trim(
vname(1,ifield)))
THEN
1733 got_var(ifield)=.true.
1740# if defined BIO_FENNEL
1743 IF (trim(var_name(i)).eq.trim(
vname(1,ifield)))
THEN
1744 got_var(ifield)=.true.
1750# elif defined ECOSIM
1753 IF (trim(var_name(i)).eq.trim(
vname(1,ifield)))
THEN
1754 got_var(ifield)=.true.
1762 IF (trim(var_name(i)).eq.trim(
vname(1,ifield)))
THEN
1763 got_var(ifield)=.true.
1775 IF (.not.got_var(
idtime))
THEN
1781# ifdef DIAGNOSTICS_UV
1784 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
1791 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
1801 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
1808 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
1817# ifdef DIAGNOSTICS_TS
1821 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
1830# ifdef DIAGNOSTICS_BIO
1831# if defined BIO_FENNEL || defined HYPOXIA_SRM
1834 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
1842# if defined BIO_FENNEL
1845 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
1852# elif defined ECOSIM
1855 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
1864 IF (.not.got_var(ifield).and.
dout(ifield,ng))
THEN
1885 dia(ng)%Rindex=rec_size
1891 IF (
ntsdia(ng).eq.1)
THEN
1895 & 0.5_r8*real(
ndia(ng),r8)*
dt(ng)
1898 10
FORMAT (2x,
'DEF_DIAGS_PIO - creating diagnostics file,',t56, &
1899 &
'Grid ',i2.2,
': ',a)
1900 20
FORMAT (2x,
'DEF_DIAGS_PIO - inquiring diagnostics file,',t56, &
1901 &
'Grid ',i2.2,
': ',a)
1902 30
FORMAT (/,
' DEF_DIAGS_PIO - unable to create diagnostics NetCDF', &
1904 40
FORMAT (1pe11.4,1x,
'millimeter')
1905 50
FORMAT (/,
' DEF_DIAGS_PIO - unable to open diagnostics NetCDF', &
1907 60
FORMAT (/,
' DEF_DIAGS_PIO - unable to find variable: ',a,2x, &
1908 &
' in diagnostics NetCDF file: ',a)
subroutine, public def_diags(ng, ldef)
subroutine, private def_diags_nf90(ng, ldef)
subroutine, private def_diags_pio(ng, ldef)
integer, dimension(:), allocatable idbio4
integer, dimension(:), allocatable idbio3
integer, dimension(:), allocatable idbio2
integer, dimension(:), allocatable nstatevar
type(t_io), dimension(:), allocatable avg
character(len=256) sourcefile
type(t_io), dimension(:), allocatable dia
integer, dimension(:), allocatable iddu2d
integer, parameter io_nf90
integer, dimension(:), allocatable iddv2d
integer, parameter io_pio
integer, dimension(:), allocatable iddu3d
integer, dimension(:), allocatable iddv3d
character(len=maxlen), dimension(6, 0:nv) vname
integer, dimension(:,:,:), allocatable iinfo
integer, parameter ndimid
logical, dimension(:,:), allocatable dout
integer, dimension(:,:), allocatable iddtrc
integer, parameter nf_tout
subroutine, public netcdf_check_dim(ng, model, ncname, ncid)
subroutine, public netcdf_open(ng, model, ncname, omode, ncid)
integer, parameter nf_fout
subroutine, public netcdf_enddef(ng, model, ncname, ncid)
character(len=100), dimension(mvars) var_name
integer, dimension(mvars) var_id
subroutine, public netcdf_create(ng, model, ncname, ncid)
subroutine, public netcdf_inq_var(ng, model, ncname, ncid, myvarname, searchvar, varid, nvardim, nvaratt)
integer, dimension(:), allocatable n
integer, parameter r3dvar
integer, parameter l4dvar
type(t_iobounds), dimension(:), allocatable iobounds
integer, parameter u3dvar
integer, parameter u2dvar
integer, dimension(:), allocatable nt
integer, parameter r2dvar
integer, parameter l3dvar
integer, parameter v2dvar
integer, parameter v3dvar
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)
real(dp), dimension(:), allocatable dt
integer, dimension(:), allocatable nrst
real(dp), dimension(:), allocatable diatime
real(dp), dimension(:), allocatable time
integer, dimension(:), allocatable ntstart
integer, dimension(:), allocatable ndia
integer, dimension(:), allocatable ntsdia
integer, dimension(:), allocatable ndefdia
logical function, public founderror(flag, noerr, line, routine)