94 integer,
intent(in) :: ng
98 logical :: got_var(
nv)
100 integer,
parameter :: natt = 25
102 integer :: i, j, ifield, itrc, nrec, nvd, nvd3, nvd4
103 integer :: recdim, status, varid
105# ifdef ADJUST_BOUNDARY
106 integer :: iorjdim, brecdim
108# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
112 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
113# ifdef ADJUST_BOUNDARY
118 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
119# ifdef ADJUST_BOUNDARY
126# ifdef ADJUST_WSTRESS
127 integer :: u3dfrc(4), v3dfrc(4)
132 character (len=256) :: ncname
133 character (len=MaxLen) :: vinfo(natt)
135 character (len=*),
parameter :: myfile = &
136 & __FILE__//
", def_error_nf90"
149 WRITE (
stdout,10) ng, trim(ncname)
151 WRITE (
stdout,20) ng, trim(ncname)
204# ifdef ADJUST_BOUNDARY
210# if defined WRITE_WATER && defined MASKING
225# if defined WRITE_WATER && defined MASKING
239 &
iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
252 &
n(ng)+1, dimids(10))
256 &
nt(ng), dimids(11))
268# if defined WRITE_WATER && defined MASKING
312# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
314 &
nfrec(ng), dimids(30))
318# ifdef ADJUST_BOUNDARY
320 &
nbrec(ng), dimids(31))
326 & nf90_unlimited, dimids(12))
330# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
333# ifdef ADJUST_BOUNDARY
339# if defined WRITE_WATER && defined MASKING
349# if defined WRITE_WATER && defined MASKING
373# ifdef ADJUST_BOUNDARY
389# if defined WRITE_WATER && defined MASKING
406# ifdef ADJUST_WSTRESS
416# if defined WRITE_WATER && defined MASKING
433# ifdef ADJUST_WSTRESS
444# if defined WRITE_WATER && defined MASKING
483 vinfo( 1)=
'zLanczos_coef'
484 vinfo( 2)=
'inner-loop Lanczos vector tridiagonal matrix'
486 & 2, (/ninnerdim,ninnerdim/), aval, vinfo, ncname, &
487 & setparaccess = .false.)
492 vinfo( 1)=
'zLanczos_inv'
493 vinfo( 2)=
'inverse inner-loop Lanczos vector tridiagonal matrix'
495 & 2, (/ninnerdim,ninnerdim/), aval, vinfo, ncname, &
496 & setparaccess = .false.)
502 vinfo( 1)=
'zLanczos_err'
504 'inner-loop Lanczos vector tridiagonal matrix inversion error'
506 & 2, (/ninnerdim,ninnerdim/), aval, vinfo, ncname, &
507 & setparaccess = .false.)
514 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
515 vinfo( 4)=trim(
rclock%calendar)
519 &
nf_tout, 1, (/recdim/), aval, vinfo, ncname, &
520 & setparaccess = .true.)
530# if defined WRITE_WATER && defined MASKING
534 vinfo(22)=
'coordinates'
537 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
540# ifdef ADJUST_BOUNDARY
546 vinfo( 1)=
vname(1,ifield)
547 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
549 vinfo(14)=
vname(4,ifield)
551 vinfo(21)=
vname(6,ifield)
552 aval(5)=real(
iinfo(1,ifield,ng),r8)
554 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
555 & setfillval = .false.)
564 vinfo( 3)=
'meter2 second-2'
567# if defined WRITE_WATER && defined MASKING
571 vinfo(22)=
'coordinates'
574 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
577# ifdef ADJUST_BOUNDARY
583 vinfo( 1)=
vname(1,ifield)
584 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
585 vinfo( 3)=
'meter2 second-2'
586 vinfo(14)=
vname(4,ifield)
588 vinfo(21)=
vname(6,ifield)
589 aval(5)=real(
iinfo(1,ifield,ng),r8)
591 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
592 & setfillval = .false.)
601 vinfo( 3)=
'meter2 second-2'
604# if defined WRITE_WATER && defined MASKING
608 vinfo(22)=
'coordinates'
611 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
614# ifdef ADJUST_BOUNDARY
620 vinfo( 1)=
vname(1,ifield)
621 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
622 vinfo( 3)=
'meter2 second-2'
623 vinfo(14)=
vname(4,ifield)
625 vinfo(21)=
vname(6,ifield)
626 aval(5)=real(
iinfo(1,ifield,ng),r8)
628 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
629 & setfillval = .false.)
639 vinfo( 3)=
'meter2 second-2'
642# if defined WRITE_WATER && defined MASKING
646 vinfo(22)=
'coordinates'
649 &
nf_fout, nvd4, u3dgrd, aval, vinfo, ncname)
652# ifdef ADJUST_BOUNDARY
658 vinfo( 1)=
vname(1,ifield)
659 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
660 vinfo( 3)=
'meter2 second-2'
661 vinfo(14)=
vname(4,ifield)
663 vinfo(21)=
vname(6,ifield)
664 aval(5)=real(
iinfo(1,ifield,ng),r8)
666 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
667 & setfillval = .false.)
676 vinfo( 3)=
'meter2 second-2'
679# if defined WRITE_WATER && defined MASKING
683 vinfo(22)=
'coordinates'
686 &
nf_fout, nvd4, v3dgrd, aval, vinfo, ncname)
689# ifdef ADJUST_BOUNDARY
695 vinfo( 1)=
vname(1,ifield)
696 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
697 vinfo( 3)=
'meter2 second-2'
698 vinfo(14)=
vname(4,ifield)
700 vinfo(21)=
vname(6,ifield)
701 aval(5)=real(
iinfo(1,ifield,ng),r8)
703 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
704 & setfillval = .false.)
714 IF (itrc.eq.
itemp)
THEN
716 ELSE IF (itrc.eq.
isalt)
THEN
717 vinfo( 3)=
'nondimensional'
725 IF (itrc.eq.
idsed(i))
THEN
726 WRITE (vinfo(19),60) 1000.0_r8*
sd50(i,ng)
730# if defined WRITE_WATER && defined MASKING
734 vinfo(22)=
'coordinates'
737 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
741# ifdef ADJUST_BOUNDARY
748 vinfo( 1)=
vname(1,ifield)
749 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
750 IF (itrc.eq.
itemp)
THEN
752 ELSE IF (itrc.eq.
isalt)
THEN
753 vinfo( 3)=
'nondimensional'
757 vinfo(14)=
vname(4,ifield)
761 IF (itrc.eq.
idsed(i))
THEN
762 WRITE (vinfo(19),60) 1000.0_r8*
sd50(i,ng)
766 vinfo(21)=
vname(6,ifield)
767 aval(5)=real(
iinfo(1,ifield,ng),r8)
769 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
770 & setfillval = .false.)
784 IF (itrc.eq.
itemp)
THEN
785 vinfo(11)=
'upward flux, cooling'
786 vinfo(12)=
'downward flux, heating'
787 ELSE IF (itrc.eq.
isalt)
THEN
788 vinfo(11)=
'upward flux, freshening (net precipitation)'
789 vinfo(12)=
'downward flux, salting (net evaporation)'
793# if defined WRITE_WATER && defined MASKING
797 vinfo(22)=
'coordinates'
801 &
nf_fout, nvd4, t3dfrc, aval, vinfo, ncname)
807# ifdef ADJUST_WSTRESS
813 vinfo( 3)=
'meter4 second-4'
816# if defined WRITE_WATER && defined MASKING
820 vinfo(22)=
'coordinates'
823 &
nf_fout, nvd4, u3dfrc, aval, vinfo, ncname)
831 vinfo( 3)=
'meter4 second4'
834# if defined WRITE_WATER && defined MASKING
838 vinfo(22)=
'coordinates'
841 &
nf_fout, nvd4, v3dfrc, aval, vinfo, ncname)
865 query:
IF (.not.
ldeferr(ng))
THEN
872 WRITE (
stdout,70) trim(ncname)
879 & ncid =
err(ng)%ncid)
885 & ncid =
err(ng)%ncid)
910# ifdef ADJUST_BOUNDARY
924# ifdef ADJUST_WSTRESS
939# ifdef ADJUST_BOUNDARY
954 got_var(
idtvar(itrc))=.true.
956# ifdef ADJUST_BOUNDARY
965 got_var(
idtsur(itrc))=.true.
976 IF (.not.got_var(
idtime))
THEN
982 IF (.not.got_var(
idfsur))
THEN
988 IF (.not.got_var(
idubar))
THEN
994 IF (.not.got_var(
idvbar))
THEN
1000# ifdef ADJUST_BOUNDARY
1020# ifdef ADJUST_WSTRESS
1021 IF (.not.got_var(
idusms))
THEN
1027 IF (.not.got_var(
idvsms))
THEN
1035 IF (.not.got_var(
iduvel))
THEN
1041 IF (.not.got_var(
idvvel))
THEN
1047# ifdef ADJUST_BOUNDARY
1064 IF (.not.got_var(
idtvar(itrc)))
THEN
1070# ifdef ADJUST_BOUNDARY
1079# ifdef ADJUST_STFLUX
1095 10
FORMAT (2x,
'DEF_ERROR_NF90 - creating error file,',t56, &
1096 &
'Grid ',i2.2,
': ',a)
1097 20
FORMAT (2x,
'DEF_ERROR_NF90 - inquiring error file,',t56, &
1098 &
'Grid ',i2.2,
': ',a)
1099 30
FORMAT (/,
' DEF_ERROR_NF90 - unable to create 4DVar error NetCDF' &
1101# if defined POSTERIOR_ERROR_I
1102 40
FORMAT (a,
', initial posterior error variance')
1103# elif defined POSTERIOR_ERROR_F
1104 40
FORMAT (a,
', final posterior error variance')
1106 50
FORMAT (
'(',a,
')^2')
1107 60
FORMAT (1pe11.4,1x,
'millimeter')
1108 70
FORMAT (/,
' DEF_ERROR_NF90 - unable to open error NetCDF', &
1110 80
FORMAT (/,
' DEF_ERROR_NF90 - unable to find variable: ',a,2x, &
1111 &
' in 4DVar error NetCDF file: ',a)
1126 integer,
intent(in) :: ng
1130 logical :: got_var(
nv)
1132 integer,
parameter :: natt = 25
1134 integer :: i, j, ifield, itrc, nrec, nvd, nvd3, nvd4
1135 integer :: recdim, status
1136 integer :: ninnerdim
1137# ifdef ADJUST_BOUNDARY
1138 integer :: iorjdim, brecdim
1140# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1143 integer :: dimids(
ndimid)
1144 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
1145# ifdef ADJUST_BOUNDARY
1146 integer :: t2dobc(4)
1149 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
1150# ifdef ADJUST_BOUNDARY
1151 integer :: t3dobc(5)
1153# ifdef ADJUST_STFLUX
1154 integer :: t3dfrc(4)
1157# ifdef ADJUST_WSTRESS
1158 integer :: u3dfrc(4), v3dfrc(4)
1163 character (len=256) :: ncname
1164 character (len=MaxLen) :: vinfo(natt)
1166 character (len=*),
parameter :: myfile = &
1167 & __FILE__//
", def_error_pio"
1169 TYPE (var_desc_t) :: vardesc
1182 WRITE (
stdout,10) ng, trim(ncname)
1184 WRITE (
stdout,20) ng, trim(ncname)
1192 define :
IF (
ldeferr(ng))
THEN
1222 &
iobounds(ng)%eta_rho, dimids( 5))
1234 &
iobounds(ng)%eta_psi, dimids( 8))
1237# ifdef ADJUST_BOUNDARY
1243# if defined WRITE_WATER && defined MASKING
1258# if defined WRITE_WATER && defined MASKING
1260 &
iobounds(ng)%xy_rho*
n(ng), dimids(20))
1272 &
iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
1277 &
n(ng), dimids( 9))
1281 &
n(ng), dimids( 9))
1285 &
n(ng)+1, dimids(10))
1289 &
nt(ng), dimids(11))
1301# if defined WRITE_WATER && defined MASKING
1345# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1346 status=
def_dim(ng,
itlm,
err(ng)%pioFile, ncname,
'frc_adjust', &
1347 &
nfrec(ng), dimids(30))
1351# ifdef ADJUST_BOUNDARY
1352 status=
def_dim(ng,
itlm,
err(ng)%pioFile, ncname,
'obc_adjust', &
1353 &
nbrec(ng), dimids(31))
1359 & pio_unlimited, dimids(12))
1363# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1366# ifdef ADJUST_BOUNDARY
1372# if defined WRITE_WATER && defined MASKING
1382# if defined WRITE_WATER && defined MASKING
1383 t2dgrd(1)=dimids(17)
1384 t2dgrd(2)=dimids(12)
1386 t3dgrd(1)=dimids(20)
1387 t3dgrd(2)=dimids(12)
1390 t2dgrd(1)=dimids( 1)
1391 t2dgrd(2)=dimids( 5)
1392 t2dgrd(3)=dimids(12)
1394 t3dgrd(1)=dimids( 1)
1395 t3dgrd(2)=dimids( 5)
1396 t3dgrd(3)=dimids( 9)
1397 t3dgrd(4)=dimids(12)
1399# ifdef ADJUST_STFLUX
1400 t3dfrc(1)=dimids( 1)
1401 t3dfrc(2)=dimids( 5)
1403 t3dfrc(4)=dimids(12)
1406# ifdef ADJUST_BOUNDARY
1408 t2dobc(2)=dimids(14)
1410 t2dobc(4)=dimids(12)
1413 t3dobc(2)=dimids( 9)
1414 t3dobc(3)=dimids(14)
1416 t3dobc(5)=dimids(12)
1422# if defined WRITE_WATER && defined MASKING
1423 u2dgrd(1)=dimids(18)
1424 u2dgrd(2)=dimids(12)
1426 u3dgrd(1)=dimids(21)
1427 u3dgrd(2)=dimids(12)
1430 u2dgrd(1)=dimids( 2)
1431 u2dgrd(2)=dimids( 6)
1432 u2dgrd(3)=dimids(12)
1434 u3dgrd(1)=dimids( 2)
1435 u3dgrd(2)=dimids( 6)
1436 u3dgrd(3)=dimids( 9)
1437 u3dgrd(4)=dimids(12)
1439# ifdef ADJUST_WSTRESS
1440 u3dfrc(1)=dimids( 2)
1441 u3dfrc(2)=dimids( 6)
1443 u3dfrc(4)=dimids(12)
1449# if defined WRITE_WATER && defined MASKING
1450 v2dgrd(1)=dimids(19)
1451 v2dgrd(2)=dimids(12)
1453 v3dgrd(1)=dimids(22)
1454 v3dgrd(2)=dimids(12)
1457 v2dgrd(1)=dimids( 3)
1458 v2dgrd(2)=dimids( 7)
1459 v2dgrd(3)=dimids(12)
1461 v3dgrd(1)=dimids( 3)
1462 v3dgrd(2)=dimids( 7)
1463 v3dgrd(3)=dimids( 9)
1464 v3dgrd(4)=dimids(12)
1466# ifdef ADJUST_WSTRESS
1467 v3dfrc(1)=dimids( 3)
1468 v3dfrc(2)=dimids( 7)
1470 v3dfrc(4)=dimids(12)
1477# if defined WRITE_WATER && defined MASKING
1478 w3dgrd(1)=dimids(23)
1479 w3dgrd(2)=dimids(12)
1481 w3dgrd(1)=dimids( 1)
1482 w3dgrd(2)=dimids( 5)
1483 w3dgrd(3)=dimids(10)
1484 w3dgrd(4)=dimids(12)
1495 DO j=1,len(vinfo(1))
1516 vinfo( 1)=
'zLanczos_coef'
1517 vinfo( 2)=
'inner-loop Lanczos vector tridiagonal matrix'
1519 & 2, (/ninnerdim,ninnerdim/), aval, vinfo, ncname, &
1520 & setparaccess = .false.)
1525 vinfo( 1)=
'zLanczos_inv'
1526 vinfo( 2)=
'inverse inner-loop Lanczos vector tridiagonal matrix'
1528 & 2, (/ninnerdim,ninnerdim/), aval, vinfo, ncname, &
1529 & setparaccess = .false.)
1535 vinfo( 1)=
'zLanczos_err'
1536 vinfo( 2)=
'inner-loop Lanczos vector tridiagonal matrix '// &
1539 & 2, (/ninnerdim,ninnerdim/), aval, vinfo, ncname, &
1540 & setparaccess = .false.)
1547 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
1548 vinfo( 4)=trim(
rclock%calendar)
1556 &
pio_tout, 1, (/recdim/), aval, vinfo, ncname, &
1557 & setparaccess = .true.)
1567# if defined WRITE_WATER && defined MASKING
1568 vinfo(20)=
'mask_rho'
1571 vinfo(22)=
'coordinates'
1578 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1581# ifdef ADJUST_BOUNDARY
1587 vinfo( 1)=
vname(1,ifield)
1588 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1590 vinfo(14)=
vname(4,ifield)
1592 vinfo(21)=
vname(6,ifield)
1593 aval(5)=real(
iinfo(1,ifield,ng),r8)
1598 &
err(ng)%pioVar(ifield)%vd, &
1599 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1600 & setfillval = .false.)
1609 vinfo( 3)=
'meter2 second-2'
1612# if defined WRITE_WATER && defined MASKING
1616 vinfo(22)=
'coordinates'
1623 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
1626# ifdef ADJUST_BOUNDARY
1632 vinfo( 1)=
vname(1,ifield)
1633 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1634 vinfo( 3)=
'meter2 second-2'
1635 vinfo(14)=
vname(4,ifield)
1637 vinfo(21)=
vname(6,ifield)
1638 aval(5)=real(
iinfo(1,ifield,ng),r8)
1643 &
err(ng)%pioVar(ifield)%vd, &
1644 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1645 & setfillval = .false.)
1654 vinfo( 3)=
'meter2 second-2'
1657# if defined WRITE_WATER && defined MASKING
1661 vinfo(22)=
'coordinates'
1668 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
1671# ifdef ADJUST_BOUNDARY
1677 vinfo( 1)=
vname(1,ifield)
1678 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1679 vinfo( 3)=
'meter2 second-2'
1680 vinfo(14)=
vname(4,ifield)
1682 vinfo(21)=
vname(6,ifield)
1683 aval(5)=real(
iinfo(1,ifield,ng),r8)
1688 &
err(ng)%pioVar(ifield)%vd, &
1689 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1690 & setfillval = .false.)
1700 vinfo( 3)=
'meter2 second-2'
1703# if defined WRITE_WATER && defined MASKING
1707 vinfo(22)=
'coordinates'
1714 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
1717# ifdef ADJUST_BOUNDARY
1723 vinfo( 1)=
vname(1,ifield)
1724 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1725 vinfo( 3)=
'meter2 second-2'
1726 vinfo(14)=
vname(4,ifield)
1728 vinfo(21)=
vname(6,ifield)
1729 aval(5)=real(
iinfo(1,ifield,ng),r8)
1734 &
err(ng)%pioVar(ifield)%vd, &
1735 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1736 & setfillval = .false.)
1745 vinfo( 3)=
'meter2 second-2'
1748# if defined WRITE_WATER && defined MASKING
1752 vinfo(22)=
'coordinates'
1759 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
1762# ifdef ADJUST_BOUNDARY
1768 vinfo( 1)=
vname(1,ifield)
1769 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1770 vinfo( 3)=
'meter2 second-2'
1771 vinfo(14)=
vname(4,ifield)
1773 vinfo(21)=
vname(6,ifield)
1774 aval(5)=real(
iinfo(1,ifield,ng),r8)
1779 &
err(ng)%pioVar(ifield)%vd, &
1780 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1781 & setfillval = .false.)
1791 IF (itrc.eq.
itemp)
THEN
1792 vinfo( 3)=
'Celsius2'
1793 ELSE IF (itrc.eq.
isalt)
THEN
1794 vinfo( 3)=
'nondimensional'
1802 IF (itrc.eq.
idsed(i))
THEN
1803 WRITE (vinfo(19),60) 1000.0_r8*
sd50(i,ng)
1807# if defined WRITE_WATER && defined MASKING
1808 vinfo(20)=
'mask_rho'
1811 vinfo(22)=
'coordinates'
1817 &
err(ng)%pioTrc(itrc)%vd, &
1818 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1822# ifdef ADJUST_BOUNDARY
1829 vinfo( 1)=
vname(1,ifield)
1830 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1831 IF (itrc.eq.
itemp)
THEN
1832 vinfo( 3)=
'Celsius2'
1833 ELSE IF (itrc.eq.
isalt)
THEN
1834 vinfo( 3)=
'nondimensional'
1838 vinfo(14)=
vname(4,ifield)
1842 IF (itrc.eq.
idsed(i))
THEN
1843 WRITE (vinfo(19),60) 1000.0_r8*
sd50(i,ng)
1847 vinfo(21)=
vname(6,ifield)
1848 aval(5)=real(
iinfo(1,ifield,ng),r8)
1853 &
err(ng)%pioVar(ifield)%vd, &
1854 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1855 & setfillval = .false.)
1860# ifdef ADJUST_STFLUX
1869 IF (itrc.eq.
itemp)
THEN
1870 vinfo(11)=
'upward flux, cooling'
1871 vinfo(12)=
'downward flux, heating'
1872 ELSE IF (itrc.eq.
isalt)
THEN
1873 vinfo(11)=
'upward flux, freshening (net precipitation)'
1874 vinfo(12)=
'downward flux, salting (net evaporation)'
1878# if defined WRITE_WATER && defined MASKING
1879 vinfo(20)=
'mask_rho'
1882 vinfo(22)=
'coordinates'
1889 &
pio_fout, nvd4, t3dfrc, aval, vinfo, ncname)
1895# ifdef ADJUST_WSTRESS
1901 vinfo( 3)=
'meter4 second-4'
1904# if defined WRITE_WATER && defined MASKING
1908 vinfo(22)=
'coordinates'
1915 &
pio_fout, nvd4, u3dfrc, aval, vinfo, ncname)
1923 vinfo( 3)=
'meter4 second4'
1926# if defined WRITE_WATER && defined MASKING
1930 vinfo(22)=
'coordinates'
1937 &
pio_fout, nvd4, v3dfrc, aval, vinfo, ncname)
1961 query:
IF (.not.
ldeferr(ng))
THEN
1968 WRITE (
stdout,70) trim(ncname)
1975 & piofile =
err(ng)%pioFile)
1981 & piofile =
err(ng)%pioFile)
1994 IF (trim(var_name(i)).eq.trim(
vname(1,
idtime)))
THEN
1999 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idfsur)))
THEN
2004 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idubar)))
THEN
2009 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvbar)))
THEN
2014# ifdef ADJUST_BOUNDARY
2015 ELSE IF (trim(var_name(i)).eq. &
2021 ELSE IF (trim(var_name(i)).eq. &
2027 ELSE IF (trim(var_name(i)).eq. &
2034# ifdef ADJUST_WSTRESS
2035 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idusms)))
THEN
2040 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvsms)))
THEN
2047 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iduvel)))
THEN
2052 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvvel)))
THEN
2057# ifdef ADJUST_BOUNDARY
2058 ELSE IF (trim(var_name(i)).eq. &
2064 ELSE IF (trim(var_name(i)).eq. &
2075 IF (trim(var_name(i)).eq.trim(
vname(1,
idtvar(itrc))))
THEN
2076 got_var(
idtvar(itrc))=.true.
2080# ifdef ADJUST_BOUNDARY
2081 ELSE IF (trim(var_name(i)).eq. &
2088# ifdef ADJUST_STFLUX
2089 ELSE IF (trim(var_name(i)).eq. &
2091 got_var(
idtsur(itrc))=.true.
2104 IF (.not.got_var(
idtime))
THEN
2110 IF (.not.got_var(
idfsur))
THEN
2116 IF (.not.got_var(
idubar))
THEN
2122 IF (.not.got_var(
idvbar))
THEN
2128# ifdef ADJUST_BOUNDARY
2148# ifdef ADJUST_WSTRESS
2149 IF (.not.got_var(
idusms))
THEN
2155 IF (.not.got_var(
idvsms))
THEN
2163 IF (.not.got_var(
iduvel))
THEN
2169 IF (.not.got_var(
idvvel))
THEN
2175# ifdef ADJUST_BOUNDARY
2192 IF (.not.got_var(
idtvar(itrc)))
THEN
2198# ifdef ADJUST_BOUNDARY
2207# ifdef ADJUST_STFLUX
2220 err(ng)%Rindex=rec_size
2223 10
FORMAT (2x,
'DEF_ERROR_PIO - creating error file,',t56, &
2224 &
'Grid ',i2.2,
': ',a)
2225 20
FORMAT (2x,
'DEF_ERROR_PIO - inquiring error file,',t56, &
2226 &
'Grid ',i2.2,
': ',a)
2227 30
FORMAT (/,
' DEF_ERROR_PIO - unable to create 4DVar error NetCDF' &
2229# if defined POSTERIOR_ERROR_I
2230 40
FORMAT (a,
', initial posterior error variance')
2231# elif defined POSTERIOR_ERROR_F
2232 40
FORMAT (a,
', final posterior error variance')
2234 50
FORMAT (
'(',a,
')^2')
2235 60
FORMAT (1pe11.4,1x,
'millimeter')
2236 70
FORMAT (/,
' DEF_ERROR_PIO - unable to open error NetCDF', &
2238 80
FORMAT (/,
' DEF_ERROR_PIO - unable to find variable: ',a,2x, &
2239 &
' in 4DVar error NetCDF file: ',a)