100 integer,
intent(in) :: ng
104 logical :: got_var(
nv)
106 integer,
parameter :: natt = 25
108 integer :: i, j, ifield, itrc, nrec, nvd, nvd3, nvd4
109 integer :: recdim, status, varid
110# ifdef ADJUST_BOUNDARY
111 integer :: iorjdim, brecdim
113# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
116# if defined POSTERIOR_EOFS && defined WEAK_CONSTRAINT
120 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
121# ifdef ADJUST_BOUNDARY
125 integer :: minnerdim, ninnerdim, nouterdim
130 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
131# ifdef ADJUST_BOUNDARY
138# ifdef ADJUST_WSTRESS
139 integer :: u3dfrc(4), v3dfrc(4)
144 character (len=256) :: ncname
145 character (len=MaxLen) :: vinfo(natt)
147 character (len=*),
parameter :: myfile = &
148 & __FILE__//
", def_hessian_nf90"
161 WRITE (
stdout,10) ng, trim(ncname)
163 WRITE (
stdout,20) ng, trim(ncname)
216# ifdef ADJUST_BOUNDARY
222# if defined WRITE_WATER && defined MASKING
253# if defined WRITE_WATER && defined MASKING
267 &
iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
280 &
n(ng)+1, dimids(10))
284 &
nt(ng), dimids(11))
296# if defined WRITE_WATER && defined MASKING
336# if defined POSTERIOR_EOFS && defined WEAK_CONSTRAINT
342# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
344 &
nfrec(ng), dimids(30))
348# ifdef ADJUST_BOUNDARY
350 &
nbrec(ng), dimids(31))
356 & nf90_unlimited, dimids(12))
360# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
363# ifdef ADJUST_BOUNDARY
369# if defined WRITE_WATER && defined MASKING
379# if defined WRITE_WATER && defined MASKING
403# ifdef ADJUST_BOUNDARY
419# if defined WRITE_WATER && defined MASKING
436# ifdef ADJUST_WSTRESS
446# if defined WRITE_WATER && defined MASKING
463# ifdef ADJUST_WSTRESS
474# if defined WRITE_WATER && defined MASKING
513 vinfo( 1)=
'nConvRitz'
514 vinfo( 2)=
'number of converged Ritz eigenvalues'
516 & 1, (/0/), aval, vinfo, ncname, &
517 & setparaccess = .false.)
523 vinfo( 2)=
'Ritz eigenvalues'
525 & 1, (/recdim/), aval, vinfo, ncname, &
526 & setparaccess = .true.)
531 vinfo( 1)=
'Ritz_error'
532 vinfo( 2)=
'accuracy of Ritz eigenvalues'
534 & 1, (/recdim/), aval, vinfo, ncname, &
535 & setparaccess = .true.)
538# ifdef POSTERIOR_EOFS
543 vinfo( 2)=
'posterior analysis error covariance matrix trace'
545 & 1, (/npostdim/), aval, vinfo, ncname, &
546 & setparaccess = .false.)
554 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
555 vinfo( 4)=trim(
rclock%calendar)
559 &
nf_tout, 1, (/recdim/), aval, vinfo,ncname, &
560 & setparaccess = .true.)
567 vinfo( 3)=
'nondimensional'
570# if defined WRITE_WATER && defined MASKING
574 vinfo(22)=
'coordinates'
577 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
580# ifdef ADJUST_BOUNDARY
586 vinfo( 1)=
vname(1,ifield)
587 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
588 vinfo( 3)=
'nondimensional'
589 vinfo(14)=
vname(4,ifield)
591 vinfo(21)=
vname(6,ifield)
592 aval(5)=real(
iinfo(1,ifield,ng),r8)
594 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
595 & setfillval = .false.)
604 vinfo( 3)=
'nondimensional'
607# if defined WRITE_WATER && defined MASKING
611 vinfo(22)=
'coordinates'
614 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
617# ifdef ADJUST_BOUNDARY
623 vinfo( 1)=
vname(1,ifield)
624 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
625 vinfo( 3)=
'nondimensional'
626 vinfo(14)=
vname(4,ifield)
628 vinfo(21)=
vname(6,ifield)
629 aval(5)=real(
iinfo(1,ifield,ng),r8)
631 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
632 & setfillval = .false.)
641 vinfo( 3)=
'nondimensional'
644# if defined WRITE_WATER && defined MASKING
648 vinfo(22)=
'coordinates'
651 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
654# ifdef ADJUST_BOUNDARY
660 vinfo( 1)=
vname(1,ifield)
661 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
662 vinfo( 3)=
'nondimensional'
663 vinfo(14)=
vname(4,ifield)
665 vinfo(21)=
vname(6,ifield)
666 aval(5)=real(
iinfo(1,ifield,ng),r8)
668 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
669 & setfillval = .false.)
679 vinfo( 3)=
'nondimensional'
682# if defined WRITE_WATER && defined MASKING
686 vinfo(22)=
'coordinates'
689 &
nf_fout, nvd4, u3dgrd, aval, vinfo, ncname)
692# ifdef ADJUST_BOUNDARY
698 vinfo( 1)=
vname(1,ifield)
699 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
700 vinfo( 3)=
'nondimensional'
701 vinfo(14)=
vname(4,ifield)
703 vinfo(21)=
vname(6,ifield)
704 aval(5)=real(
iinfo(1,ifield,ng),r8)
706 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
707 & setfillval = .false.)
716 vinfo( 3)=
'nondimensional'
719# if defined WRITE_WATER && defined MASKING
723 vinfo(22)=
'coordinates'
726 &
nf_fout, nvd4, v3dgrd, aval, vinfo, ncname)
729# ifdef ADJUST_BOUNDARY
735 vinfo( 1)=
vname(1,ifield)
736 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
737 vinfo( 3)=
'nondimensional'
738 vinfo(14)=
vname(4,ifield)
740 vinfo(21)=
vname(6,ifield)
741 aval(5)=real(
iinfo(1,ifield,ng),r8)
743 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
744 & setfillval = .false.)
754 vinfo( 3)=
'nondimensional'
759 IF (itrc.eq.
idsed(i))
THEN
760 WRITE (vinfo(19),50) 1000.0_r8*
sd50(i,ng)
764# if defined WRITE_WATER && defined MASKING
768 vinfo(22)=
'coordinates'
771 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
775# ifdef ADJUST_BOUNDARY
782 vinfo( 1)=
vname(1,ifield)
783 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
784 vinfo( 3)=
'nondimensional'
785 vinfo(14)=
vname(4,ifield)
789 IF (itrc.eq.
idsed(i))
THEN
790 WRITE (vinfo(19),50) 1000.0_r8*
sd50(i,ng)
794 vinfo(21)=
vname(6,ifield)
795 aval(5)=real(
iinfo(1,ifield,ng),r8)
797 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
798 & setfillval = .false.)
811 vinfo( 3)=
'nondimensional'
812 IF (itrc.eq.
itemp)
THEN
813 vinfo(11)=
'upward flux, cooling'
814 vinfo(12)=
'downward flux, heating'
815 ELSE IF (itrc.eq.
isalt)
THEN
816 vinfo(11)=
'upward flux, freshening (net precipitation)'
817 vinfo(12)=
'downward flux, salting (net evaporation)'
821# if defined WRITE_WATER && defined MASKING
825 vinfo(22)=
'coordinates'
829 &
nf_fout, nvd4, t3dfrc, aval, vinfo, ncname)
835# ifdef ADJUST_WSTRESS
841 vinfo( 3)=
'nondimensional'
844# if defined WRITE_WATER && defined MASKING
848 vinfo(22)=
'coordinates'
851 &
nf_fout, nvd4, u3dfrc, aval, vinfo, ncname)
859 vinfo( 3)=
'nondimensional'
862# if defined WRITE_WATER && defined MASKING
866 vinfo(22)=
'coordinates'
869 &
nf_fout, nvd4, v3dfrc, aval, vinfo, ncname)
893 query:
IF (.not.
ldefhss(ng))
THEN
900 WRITE (
stdout,60) trim(ncname)
907 & ncid =
hss(ng)%ncid)
913 & ncid =
hss(ng)%ncid)
938# ifdef ADJUST_BOUNDARY
952# ifdef ADJUST_WSTRESS
967# ifdef ADJUST_BOUNDARY
982 got_var(
idtvar(itrc))=.true.
984# ifdef ADJUST_BOUNDARY
993 got_var(
idtsur(itrc))=.true.
1004 IF (.not.got_var(
idtime))
THEN
1010 IF (.not.got_var(
idfsur))
THEN
1016 IF (.not.got_var(
idubar))
THEN
1022 IF (.not.got_var(
idvbar))
THEN
1028# ifdef ADJUST_BOUNDARY
1048# ifdef ADJUST_WSTRESS
1049 IF (.not.got_var(
idusms))
THEN
1055 IF (.not.got_var(
idvsms))
THEN
1063 IF (.not.got_var(
iduvel))
THEN
1069 IF (.not.got_var(
idvvel))
THEN
1075# ifdef ADJUST_BOUNDARY
1092 IF (.not.got_var(
idtvar(itrc)))
THEN
1098# ifdef ADJUST_BOUNDARY
1107# ifdef ADJUST_STFLUX
1123 10
FORMAT (2x,
'DEF_HESSIAN_NF90 - creating Hessian file,',t56, &
1124 &
'Grid ',i2.2,
': ',a)
1125 20
FORMAT (2x,
'DEF_HESSIAN_NF90 - inquiring Hessian file,',t56, &
1126 &
'Grid ',i2.2,
': ',a)
1127 30
FORMAT (/,
' DEF_HESSIAN_NF90 - unable to create Hessian NetCDF', &
1129 40
FORMAT (a,
', Hessian eigenvectors')
1130 50
FORMAT (1pe11.4,1x,
'millimeter')
1131 60
FORMAT (/,
' DEF_HESSIAN_NF90 - unable to open Hessian NetCDF', &
1133 70
FORMAT (/,
' DEF_HESSIAN_NF90 - unable to find variable: ',a,2x, &
1134 &
' in Hessian NetCDF file: ',a)
1149 integer,
intent(in) :: ng
1153 logical :: got_var(
nv)
1155 integer,
parameter :: natt = 25
1157 integer :: i, j, ifield, itrc, nrec, nvd, nvd3, nvd4
1158 integer :: recdim, status
1159# ifdef ADJUST_BOUNDARY
1160 integer :: iorjdim, brecdim
1162# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1165# if defined POSTERIOR_EOFS && defined WEAK_CONSTRAINT
1168 integer :: dimids(
ndimid)
1169 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
1170# ifdef ADJUST_BOUNDARY
1171 integer :: t2dobc(4)
1174 integer :: minnerdim, ninnerdim, nouterdim
1175 integer :: vardim(2)
1179 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
1180# ifdef ADJUST_BOUNDARY
1181 integer :: t3dobc(5)
1183# ifdef ADJUST_STFLUX
1184 integer :: t3dfrc(4)
1187# ifdef ADJUST_WSTRESS
1188 integer :: u3dfrc(4), v3dfrc(4)
1193 character (len=256) :: ncname
1194 character (len=MaxLen) :: vinfo(natt)
1196 character (len=*),
parameter :: myfile = &
1197 & __FILE__//
", def_hessian_pio"
1199 TYPE (var_desc_t) :: vardesc
1212 WRITE (
stdout,10) ng, trim(ncname)
1214 WRITE (
stdout,20) ng, trim(ncname)
1222 define :
IF (
ldefhss(ng))
THEN
1252 &
iobounds(ng)%eta_rho, dimids( 5))
1264 &
iobounds(ng)%eta_psi, dimids( 8))
1267# ifdef ADJUST_BOUNDARY
1273# if defined WRITE_WATER && defined MASKING
1304# if defined WRITE_WATER && defined MASKING
1306 &
iobounds(ng)%xy_rho*
n(ng), dimids(20))
1318 &
iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
1323 &
n(ng), dimids( 9))
1327 &
n(ng), dimids( 9))
1331 &
n(ng)+1, dimids(10))
1335 &
nt(ng), dimids(11))
1347# if defined WRITE_WATER && defined MASKING
1387# if defined POSTERIOR_EOFS && defined WEAK_CONSTRAINT
1388 status=
def_dim(ng,
iadm,
hss(ng)%pioFile, ncname,
'Nposterior', &
1393# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1394 status=
def_dim(ng,
iadm,
hss(ng)%pioFile, ncname,
'frc_adjust', &
1395 &
nfrec(ng), dimids(30))
1399# ifdef ADJUST_BOUNDARY
1400 status=
def_dim(ng,
iadm,
hss(ng)%pioFile, ncname,
'obc_adjust', &
1401 &
nbrec(ng), dimids(31))
1407 & pio_unlimited, dimids(12))
1411# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1414# ifdef ADJUST_BOUNDARY
1420# if defined WRITE_WATER && defined MASKING
1430# if defined WRITE_WATER && defined MASKING
1431 t2dgrd(1)=dimids(17)
1432 t2dgrd(2)=dimids(12)
1434 t3dgrd(1)=dimids(20)
1435 t3dgrd(2)=dimids(12)
1438 t2dgrd(1)=dimids( 1)
1439 t2dgrd(2)=dimids( 5)
1440 t2dgrd(3)=dimids(12)
1442 t3dgrd(1)=dimids( 1)
1443 t3dgrd(2)=dimids( 5)
1444 t3dgrd(3)=dimids( 9)
1445 t3dgrd(4)=dimids(12)
1447# ifdef ADJUST_STFLUX
1448 t3dfrc(1)=dimids( 1)
1449 t3dfrc(2)=dimids( 5)
1451 t3dfrc(4)=dimids(12)
1454# ifdef ADJUST_BOUNDARY
1456 t2dobc(2)=dimids(14)
1458 t2dobc(4)=dimids(12)
1461 t3dobc(2)=dimids( 9)
1462 t3dobc(3)=dimids(14)
1464 t3dobc(5)=dimids(12)
1470# if defined WRITE_WATER && defined MASKING
1471 u2dgrd(1)=dimids(18)
1472 u2dgrd(2)=dimids(12)
1474 u3dgrd(1)=dimids(21)
1475 u3dgrd(2)=dimids(12)
1478 u2dgrd(1)=dimids( 2)
1479 u2dgrd(2)=dimids( 6)
1480 u2dgrd(3)=dimids(12)
1482 u3dgrd(1)=dimids( 2)
1483 u3dgrd(2)=dimids( 6)
1484 u3dgrd(3)=dimids( 9)
1485 u3dgrd(4)=dimids(12)
1487# ifdef ADJUST_WSTRESS
1488 u3dfrc(1)=dimids( 2)
1489 u3dfrc(2)=dimids( 6)
1491 u3dfrc(4)=dimids(12)
1497# if defined WRITE_WATER && defined MASKING
1498 v2dgrd(1)=dimids(19)
1499 v2dgrd(2)=dimids(12)
1501 v3dgrd(1)=dimids(22)
1502 v3dgrd(2)=dimids(12)
1505 v2dgrd(1)=dimids( 3)
1506 v2dgrd(2)=dimids( 7)
1507 v2dgrd(3)=dimids(12)
1509 v3dgrd(1)=dimids( 3)
1510 v3dgrd(2)=dimids( 7)
1511 v3dgrd(3)=dimids( 9)
1512 v3dgrd(4)=dimids(12)
1514# ifdef ADJUST_WSTRESS
1515 v3dfrc(1)=dimids( 3)
1516 v3dfrc(2)=dimids( 7)
1518 v3dfrc(4)=dimids(12)
1525# if defined WRITE_WATER && defined MASKING
1526 w3dgrd(1)=dimids(23)
1527 w3dgrd(2)=dimids(12)
1529 w3dgrd(1)=dimids( 1)
1530 w3dgrd(2)=dimids( 5)
1531 w3dgrd(3)=dimids(10)
1532 w3dgrd(4)=dimids(12)
1543 DO j=1,len(vinfo(1))
1564 vinfo( 1)=
'nConvRitz'
1565 vinfo( 2)=
'number of converged Ritz eigenvalues'
1567 & 1, (/0/), aval, vinfo, ncname, &
1568 & setparaccess = .false.)
1574 vinfo( 2)=
'Ritz eigenvalues'
1576 & 1, (/recdim/), aval, vinfo, ncname, &
1577 & setparaccess = .true.)
1582 vinfo( 1)=
'Ritz_error'
1583 vinfo( 2)=
'accuracy of Ritz eigenvalues'
1585 & 1, (/recdim/), aval, vinfo, ncname, &
1586 & setparaccess = .true.)
1589# ifdef POSTERIOR_EOFS
1593 vinfo( 1)=
'ae_trace'
1594 vinfo( 2)=
'posterior analysis error covariance matrix trace'
1596 & 1, (/npostdim/), aval, vinfo, ncname, &
1597 & setparaccess = .false.)
1605 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
1606 vinfo( 4)=trim(
rclock%calendar)
1614 &
pio_tout, 1, (/recdim/), aval, vinfo, ncname, &
1615 & setparaccess = .true.)
1622 vinfo( 3)=
'nondimensional'
1625# if defined WRITE_WATER && defined MASKING
1626 vinfo(20)=
'mask_rho'
1629 vinfo(22)=
'coordinates'
1636 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1639# ifdef ADJUST_BOUNDARY
1645 vinfo( 1)=
vname(1,ifield)
1646 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1647 vinfo( 3)=
'nondimensional'
1648 vinfo(14)=
vname(4,ifield)
1650 vinfo(21)=
vname(6,ifield)
1651 aval(5)=real(
iinfo(1,ifield,ng),r8)
1656 &
hss(ng)%pioVar(ifield)%vd, &
1657 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1658 & setfillval = .false.)
1667 vinfo( 3)=
'nondimensional'
1670# if defined WRITE_WATER && defined MASKING
1674 vinfo(22)=
'coordinates'
1681 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
1684# ifdef ADJUST_BOUNDARY
1690 vinfo( 1)=
vname(1,ifield)
1691 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1692 vinfo( 3)=
'nondimensional'
1693 vinfo(14)=
vname(4,ifield)
1695 vinfo(21)=
vname(6,ifield)
1696 aval(5)=real(
iinfo(1,ifield,ng),r8)
1701 &
hss(ng)%pioVar(ifield)%vd, &
1702 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1703 & setfillval = .false.)
1712 vinfo( 3)=
'nondimensional'
1715# if defined WRITE_WATER && defined MASKING
1719 vinfo(22)=
'coordinates'
1726 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
1729# ifdef ADJUST_BOUNDARY
1735 vinfo( 1)=
vname(1,ifield)
1736 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1737 vinfo( 3)=
'nondimensional'
1738 vinfo(14)=
vname(4,ifield)
1740 vinfo(21)=
vname(6,ifield)
1741 aval(5)=real(
iinfo(1,ifield,ng),r8)
1746 &
hss(ng)%pioVar(ifield)%vd, &
1747 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1748 & setfillval = .false.)
1758 vinfo( 3)=
'nondimensional'
1761# if defined WRITE_WATER && defined MASKING
1765 vinfo(22)=
'coordinates'
1772 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
1775# ifdef ADJUST_BOUNDARY
1781 vinfo( 1)=
vname(1,ifield)
1782 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1783 vinfo( 3)=
'nondimensional'
1784 vinfo(14)=
vname(4,ifield)
1786 vinfo(21)=
vname(6,ifield)
1787 aval(5)=real(
iinfo(1,ifield,ng),r8)
1792 &
hss(ng)%pioVar(ifield)%vd, &
1793 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1794 & setfillval = .false.)
1803 vinfo( 3)=
'nondimensional'
1806# if defined WRITE_WATER && defined MASKING
1810 vinfo(22)=
'coordinates'
1817 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
1820# ifdef ADJUST_BOUNDARY
1826 vinfo( 1)=
vname(1,ifield)
1827 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1828 vinfo( 3)=
'nondimensional'
1829 vinfo(14)=
vname(4,ifield)
1831 vinfo(21)=
vname(6,ifield)
1832 aval(5)=real(
iinfo(1,ifield,ng),r8)
1837 &
hss(ng)%pioVar(ifield)%vd, &
1838 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1839 & setfillval = .false.)
1849 vinfo( 3)=
'nondimensional'
1854 IF (itrc.eq.
idsed(i))
THEN
1855 WRITE (vinfo(19),50) 1000.0_r8*
sd50(i,ng)
1859# if defined WRITE_WATER && defined MASKING
1860 vinfo(20)=
'mask_rho'
1863 vinfo(22)=
'coordinates'
1869 &
hss(ng)%pioTrc(itrc)%vd, &
1870 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1874# ifdef ADJUST_BOUNDARY
1881 vinfo( 1)=
vname(1,ifield)
1882 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1883 vinfo( 3)=
'nondimensional'
1884 vinfo(14)=
vname(4,ifield)
1888 IF (itrc.eq.
idsed(i))
THEN
1889 WRITE (vinfo(19),50) 1000.0_r8*
sd50(i,ng)
1893 vinfo(21)=
vname(6,ifield)
1894 aval(5)=real(
iinfo(1,ifield,ng),r8)
1899 &
hss(ng)%pioVar(ifield)%vd, &
1900 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1901 & setfillval = .false.)
1906# ifdef ADJUST_STFLUX
1914 vinfo( 3)=
'nondimensional'
1915 IF (itrc.eq.
itemp)
THEN
1916 vinfo(11)=
'upward flux, cooling'
1917 vinfo(12)=
'downward flux, heating'
1918 ELSE IF (itrc.eq.
isalt)
THEN
1919 vinfo(11)=
'upward flux, freshening (net precipitation)'
1920 vinfo(12)=
'downward flux, salting (net evaporation)'
1924# if defined WRITE_WATER && defined MASKING
1925 vinfo(20)=
'mask_rho'
1928 vinfo(22)=
'coordinates'
1935 &
pio_fout, nvd4, t3dfrc, aval, vinfo, ncname)
1941# ifdef ADJUST_WSTRESS
1947 vinfo( 3)=
'nondimensional'
1950# if defined WRITE_WATER && defined MASKING
1954 vinfo(22)=
'coordinates'
1961 &
pio_fout, nvd4, u3dfrc, aval, vinfo, ncname)
1969 vinfo( 3)=
'nondimensional'
1972# if defined WRITE_WATER && defined MASKING
1976 vinfo(22)=
'coordinates'
1983 &
pio_fout, nvd4, v3dfrc, aval, vinfo, ncname)
2007 query:
IF (.not.
ldefhss(ng))
THEN
2014 WRITE (
stdout,60) trim(ncname)
2021 & piofile =
hss(ng)%pioFile)
2027 & piofile =
hss(ng)%pioFile)
2040 IF (trim(var_name(i)).eq.trim(
vname(1,
idtime)))
THEN
2045 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idfsur)))
THEN
2050 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idubar)))
THEN
2055 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvbar)))
THEN
2060# ifdef ADJUST_BOUNDARY
2061 ELSE IF (trim(var_name(i)).eq. &
2067 ELSE IF (trim(var_name(i)).eq. &
2073 ELSE IF (trim(var_name(i)).eq. &
2080# ifdef ADJUST_WSTRESS
2081 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idusms)))
THEN
2086 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvsms)))
THEN
2093 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iduvel)))
THEN
2098 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvvel)))
THEN
2103# ifdef ADJUST_BOUNDARY
2104 ELSE IF (trim(var_name(i)).eq. &
2110 ELSE IF (trim(var_name(i)).eq. &
2121 IF (trim(var_name(i)).eq.trim(
vname(1,
idtvar(itrc))))
THEN
2122 got_var(
idtvar(itrc))=.true.
2126# ifdef ADJUST_BOUNDARY
2127 ELSE IF (trim(var_name(i)).eq. &
2134# ifdef ADJUST_STFLUX
2135 ELSE IF (trim(var_name(i)).eq. &
2137 got_var(
idtsur(itrc))=.true.
2150 IF (.not.got_var(
idtime))
THEN
2156 IF (.not.got_var(
idfsur))
THEN
2162 IF (.not.got_var(
idubar))
THEN
2168 IF (.not.got_var(
idvbar))
THEN
2174# ifdef ADJUST_BOUNDARY
2194# ifdef ADJUST_WSTRESS
2195 IF (.not.got_var(
idusms))
THEN
2201 IF (.not.got_var(
idvsms))
THEN
2209 IF (.not.got_var(
iduvel))
THEN
2215 IF (.not.got_var(
idvvel))
THEN
2221# ifdef ADJUST_BOUNDARY
2238 IF (.not.got_var(
idtvar(itrc)))
THEN
2244# ifdef ADJUST_BOUNDARY
2253# ifdef ADJUST_STFLUX
2266 hss(ng)%Rindex=rec_size
2269 10
FORMAT (2x,
'DEF_HESSIAN_PIO - creating Hessian file,',t56, &
2270 &
'Grid ',i2.2,
': ',a)
2271 20
FORMAT (2x,
'DEF_HESSIAN_PIO - inquiring Hessian file,',t56, &
2272 &
'Grid ',i2.2,
': ',a)
2273 30
FORMAT (/,
' DEF_HESSIAN_PIO - unable to create Hessian NetCDF', &
2275 40
FORMAT (a,
', Hessian eigenvectors')
2276 50
FORMAT (1pe11.4,1x,
'millimeter')
2277 60
FORMAT (/,
' DEF_HESSIAN_PIO - unable to open Hessian NetCDF', &
2279 70
FORMAT (/,
' DEF_HESSIAN_PIO - unable to find variable: ',a,2x, &
2280 &
' in Hessian NetCDF file: ',a)