46# if defined PIO_LIB && defined DISTRIBUTE
58 integer,
intent(in) :: ng
62 character (len=*),
parameter :: myfile = &
69 SELECT CASE (
lcz(ng)%IOtype)
73# if defined PIO_LIB && defined DISTRIBUTE
85 10
FORMAT (
' DEF_LANCZOS - Illegal output file type, io_type = ',i0, &
86 & /,15x,
'Check KeyWord ''OUT_LIB'' in ''roms.in''.')
99 integer,
intent(in) :: ng
103 logical :: got_var(
nv)
105 integer,
parameter :: natt = 25
107 integer :: i, j, ifield, itrc, nrec, nvd, nvd3, nvd4
108 integer :: recdim, status, varid
109# ifdef ADJUST_BOUNDARY
110 integer :: iorjdim, brecdim
112# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
115 integer :: minnerdim, ninnerdim, nouterdim
116 integer :: dimids(
ndimid), vardim(2)
117 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
118# ifdef ADJUST_BOUNDARY
122 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
123# ifdef ADJUST_BOUNDARY
130# ifdef ADJUST_WSTRESS
131 integer :: u3dfrc(4), v3dfrc(4)
136 character (len=256) :: ncname
137 character (len=MaxLen) :: vinfo(natt)
139 character (len=*),
parameter :: myfile = &
140 & __FILE__//
", def_lanczos_nf90"
153 WRITE (
stdout,10) ng, trim(ncname)
155 WRITE (
stdout,20) ng, trim(ncname)
208# ifdef ADJUST_BOUNDARY
214# if defined WRITE_WATER && defined MASKING
229# if defined WRITE_WATER && defined MASKING
243 &
iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
256 &
n(ng)+1, dimids(10))
260 &
nt(ng), dimids(11))
272# 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))
338 & nf90_unlimited, dimids(12))
342# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
345# ifdef ADJUST_BOUNDARY
351# if defined WRITE_WATER && defined MASKING
361# if defined WRITE_WATER && defined MASKING
385# ifdef ADJUST_BOUNDARY
401# if defined WRITE_WATER && defined MASKING
418# ifdef ADJUST_WSTRESS
428# if defined WRITE_WATER && defined MASKING
445# ifdef ADJUST_WSTRESS
456# if defined WRITE_WATER && defined MASKING
498 vinfo( 2)=
'conjugate gradient beta coefficient'
502 & 2, vardim, aval, vinfo, ncname)
506 vinfo( 2)=
'Lanczos algorithm delta coefficient'
510 & 2, vardim, aval, vinfo, ncname)
514 vinfo( 2)=
'Lanczos recurrence eigenvectors'
518 & 2, vardim, aval, vinfo, ncname)
525 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
526 vinfo( 4)=trim(
rclock%calendar)
530 &
nf_tout, 1, (/recdim/), aval, vinfo, ncname, &
531 & setparaccess = .true.)
538 vinfo( 3)=
'nondimensional'
541# if defined WRITE_WATER && defined MASKING
545 vinfo(22)=
'coordinates'
548 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
551# ifdef ADJUST_BOUNDARY
557 vinfo( 1)=
vname(1,ifield)
558 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
559 vinfo( 3)=
'nondimensional'
560 vinfo(14)=
vname(4,ifield)
562 vinfo(21)=
vname(6,ifield)
563 aval(5)=real(
iinfo(1,ifield,ng),r8)
565 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
566 & setfillval = .false.)
575 vinfo( 3)=
'nondimensional'
578# if defined WRITE_WATER && defined MASKING
582 vinfo(22)=
'coordinates'
585 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
588# ifdef ADJUST_BOUNDARY
594 vinfo( 1)=
vname(1,ifield)
595 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
596 vinfo( 3)=
'nondimensional'
597 vinfo(14)=
vname(4,ifield)
599 vinfo(21)=
vname(6,ifield)
600 aval(5)=real(
iinfo(1,ifield,ng),r8)
602 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
603 & setfillval = .false.)
612 vinfo( 3)=
'nondimensional'
615# if defined WRITE_WATER && defined MASKING
619 vinfo(22)=
'coordinates'
622 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
625# ifdef ADJUST_BOUNDARY
631 vinfo( 1)=
vname(1,ifield)
632 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
633 vinfo( 3)=
'nondimensional'
634 vinfo(14)=
vname(4,ifield)
636 vinfo(21)=
vname(6,ifield)
637 aval(5)=real(
iinfo(1,ifield,ng),r8)
639 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
640 & setfillval = .false.)
650 vinfo( 3)=
'nondimensional'
653# if defined WRITE_WATER && defined MASKING
657 vinfo(22)=
'coordinates'
660 &
nf_fout, nvd4, u3dgrd, aval, vinfo, ncname)
663# ifdef ADJUST_BOUNDARY
669 vinfo( 1)=
vname(1,ifield)
670 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
671 vinfo( 3)=
'nondimensional'
672 vinfo(14)=
vname(4,ifield)
674 vinfo(21)=
vname(6,ifield)
675 aval(5)=real(
iinfo(1,ifield,ng),r8)
677 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
678 & setfillval = .false.)
687 vinfo( 3)=
'nondimensional'
690# if defined WRITE_WATER && defined MASKING
694 vinfo(22)=
'coordinates'
697 &
nf_fout, nvd4, v3dgrd, aval, vinfo, ncname)
700# ifdef ADJUST_BOUNDARY
706 vinfo( 1)=
vname(1,ifield)
707 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
708 vinfo( 3)=
'nondimensional'
709 vinfo(14)=
vname(4,ifield)
711 vinfo(21)=
vname(6,ifield)
712 aval(5)=real(
iinfo(1,ifield,ng),r8)
714 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
715 & setfillval = .false.)
725 vinfo( 3)=
'nondimensional'
730 IF (itrc.eq.
idsed(i))
THEN
731 WRITE (vinfo(19),50) 1000.0_r8*
sd50(i,ng)
735# if defined WRITE_WATER && defined MASKING
739 vinfo(22)=
'coordinates'
742 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
746# ifdef ADJUST_BOUNDARY
753 vinfo( 1)=
vname(1,ifield)
754 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
755 vinfo( 3)=
'nondimensional'
756 vinfo(14)=
vname(4,ifield)
760 IF (itrc.eq.
idsed(i))
THEN
761 WRITE (vinfo(19),50) 1000.0_r8*
sd50(i,ng)
765 vinfo(21)=
vname(6,ifield)
766 aval(5)=real(
iinfo(1,ifield,ng),r8)
768 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
769 & setfillval = .false.)
782 vinfo( 3)=
'nondimensional'
783 IF (itrc.eq.
itemp)
THEN
784 vinfo(11)=
'upward flux, cooling'
785 vinfo(12)=
'downward flux, heating'
786 ELSE IF (itrc.eq.
isalt)
THEN
787 vinfo(11)=
'upward flux, freshening (net precipitation)'
788 vinfo(12)=
'downward flux, salting (net evaporation)'
792# if defined WRITE_WATER && defined MASKING
796 vinfo(22)=
'coordinates'
800 &
nf_fout, nvd4, t3dfrc, aval, vinfo, ncname)
806# ifdef ADJUST_WSTRESS
812 vinfo( 3)=
'nondimensional'
815# if defined WRITE_WATER && defined MASKING
819 vinfo(22)=
'coordinates'
822 &
nf_fout, nvd4, u3dfrc, aval, vinfo, ncname)
830 vinfo( 3)=
'nondimensional'
833# if defined WRITE_WATER && defined MASKING
837 vinfo(22)=
'coordinates'
840 &
nf_fout, nvd4, v3dfrc, aval, vinfo, ncname)
864 query:
IF (.not.
ldeflcz(ng))
THEN
871 WRITE (
stdout,60) trim(ncname)
878 & ncid =
lcz(ng)%ncid)
884 & ncid =
lcz(ng)%ncid)
909# ifdef ADJUST_BOUNDARY
923# ifdef ADJUST_WSTRESS
938# ifdef ADJUST_BOUNDARY
953 got_var(
idtvar(itrc))=.true.
955# ifdef ADJUST_BOUNDARY
964 got_var(
idtsur(itrc))=.true.
975 IF (.not.got_var(
idtime))
THEN
981 IF (.not.got_var(
idfsur))
THEN
987 IF (.not.got_var(
idubar))
THEN
993 IF (.not.got_var(
idvbar))
THEN
999# ifdef ADJUST_BOUNDARY
1019# ifdef ADJUST_WSTRESS
1020 IF (.not.got_var(
idusms))
THEN
1026 IF (.not.got_var(
idvsms))
THEN
1034 IF (.not.got_var(
iduvel))
THEN
1040 IF (.not.got_var(
idvvel))
THEN
1046# ifdef ADJUST_BOUNDARY
1063 IF (.not.got_var(
idtvar(itrc)))
THEN
1069# ifdef ADJUST_BOUNDARY
1078# ifdef ADJUST_STFLUX
1094 10
FORMAT (2x,
'DEF_LANCZOS_NF90 - creating Lanczos file,',t56, &
1095 &
'Grid ',i2.2,
': ',a)
1096 20
FORMAT (2x,
'DEF_LANCZOS_NF90 - inquiring Lanczos file,',t56, &
1097 &
'Grid ',i2.2,
': ',a)
1098 30
FORMAT (/,
' DEF_LANCZOS_NF90 - unable to create Lanczos NetCDF', &
1100 40
FORMAT (a,
', Lanczos vectors')
1101 50
FORMAT (1pe11.4,1x,
'millimeter')
1102 60
FORMAT (/,
' DEF_LANCZOS_NF90 - unable to open Lanczos NetCDF', &
1104 70
FORMAT (/,
' DEF_LANCZOS_NF90 - unable to find variable: ',a,2x, &
1105 &
' in Lanczos NetCDF file: ',a)
1110# if defined PIO_LIB && defined DISTRIBUTE
1120 integer,
intent(in) :: ng
1124 logical :: got_var(
nv)
1126 integer,
parameter :: natt = 25
1128 integer :: i, j, ifield, itrc, nrec, nvd, nvd3, nvd4
1129 integer :: recdim, status
1130# ifdef ADJUST_BOUNDARY
1131 integer :: iorjdim, brecdim
1133# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1136 integer :: minnerdim, ninnerdim, nouterdim
1137 integer :: dimids(
ndimid), vardim(2)
1138 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
1139# ifdef ADJUST_BOUNDARY
1140 integer :: t2dobc(4)
1143 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
1144# ifdef ADJUST_BOUNDARY
1145 integer :: t3dobc(5)
1147# ifdef ADJUST_STFLUX
1148 integer :: t3dfrc(4)
1151# ifdef ADJUST_WSTRESS
1152 integer :: u3dfrc(4), v3dfrc(4)
1157 character (len=256) :: ncname
1158 character (len=MaxLen) :: vinfo(natt)
1160 character (len=*),
parameter :: myfile = &
1161 & __FILE__//
", def_lanczos_pio"
1163 TYPE (var_desc_t) :: vardesc
1176 WRITE (
stdout,10) ng, trim(ncname)
1178 WRITE (
stdout,20) ng, trim(ncname)
1186 define :
IF (
ldeflcz(ng))
THEN
1216 &
iobounds(ng)%eta_rho, dimids( 5))
1228 &
iobounds(ng)%eta_psi, dimids( 8))
1231# ifdef ADJUST_BOUNDARY
1237# if defined WRITE_WATER && defined MASKING
1252# if defined WRITE_WATER && defined MASKING
1254 &
iobounds(ng)%xy_rho*
n(ng), dimids(20))
1266 &
iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
1271 &
n(ng), dimids( 9))
1275 &
n(ng), dimids( 9))
1279 &
n(ng)+1, dimids(10))
1283 &
nt(ng), dimids(11))
1295# if defined WRITE_WATER && defined MASKING
1335# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1336 status=
def_dim(ng,
iadm,
lcz(ng)%pioFile, ncname,
'frc_adjust', &
1337 &
nfrec(ng), dimids(30))
1341# ifdef ADJUST_BOUNDARY
1342 status=
def_dim(ng,
iadm,
lcz(ng)%pioFile, ncname,
'obc_adjust', &
1343 &
nbrec(ng), dimids(31))
1361 & pio_unlimited, dimids(12))
1365# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1368# ifdef ADJUST_BOUNDARY
1374# if defined WRITE_WATER && defined MASKING
1384# if defined WRITE_WATER && defined MASKING
1385 t2dgrd(1)=dimids(17)
1386 t2dgrd(2)=dimids(12)
1388 t3dgrd(1)=dimids(20)
1389 t3dgrd(2)=dimids(12)
1392 t2dgrd(1)=dimids( 1)
1393 t2dgrd(2)=dimids( 5)
1394 t2dgrd(3)=dimids(12)
1396 t3dgrd(1)=dimids( 1)
1397 t3dgrd(2)=dimids( 5)
1398 t3dgrd(3)=dimids( 9)
1399 t3dgrd(4)=dimids(12)
1401# ifdef ADJUST_STFLUX
1402 t3dfrc(1)=dimids( 1)
1403 t3dfrc(2)=dimids( 5)
1405 t3dfrc(4)=dimids(12)
1408# ifdef ADJUST_BOUNDARY
1410 t2dobc(2)=dimids(14)
1412 t2dobc(4)=dimids(12)
1415 t3dobc(2)=dimids( 9)
1416 t3dobc(3)=dimids(14)
1418 t3dobc(5)=dimids(12)
1424# if defined WRITE_WATER && defined MASKING
1425 u2dgrd(1)=dimids(18)
1426 u2dgrd(2)=dimids(12)
1428 u3dgrd(1)=dimids(21)
1429 u3dgrd(2)=dimids(12)
1432 u2dgrd(1)=dimids( 2)
1433 u2dgrd(2)=dimids( 6)
1434 u2dgrd(3)=dimids(12)
1436 u3dgrd(1)=dimids( 2)
1437 u3dgrd(2)=dimids( 6)
1438 u3dgrd(3)=dimids( 9)
1439 u3dgrd(4)=dimids(12)
1441# ifdef ADJUST_WSTRESS
1442 u3dfrc(1)=dimids( 2)
1443 u3dfrc(2)=dimids( 6)
1445 u3dfrc(4)=dimids(12)
1451# if defined WRITE_WATER && defined MASKING
1452 v2dgrd(1)=dimids(19)
1453 v2dgrd(2)=dimids(12)
1455 v3dgrd(1)=dimids(22)
1456 v3dgrd(2)=dimids(12)
1459 v2dgrd(1)=dimids( 3)
1460 v2dgrd(2)=dimids( 7)
1461 v2dgrd(3)=dimids(12)
1463 v3dgrd(1)=dimids( 3)
1464 v3dgrd(2)=dimids( 7)
1465 v3dgrd(3)=dimids( 9)
1466 v3dgrd(4)=dimids(12)
1468# ifdef ADJUST_WSTRESS
1469 v3dfrc(1)=dimids( 3)
1470 v3dfrc(2)=dimids( 7)
1472 v3dfrc(4)=dimids(12)
1479# if defined WRITE_WATER && defined MASKING
1480 w3dgrd(1)=dimids(23)
1481 w3dgrd(2)=dimids(12)
1483 w3dgrd(1)=dimids( 1)
1484 w3dgrd(2)=dimids( 5)
1485 w3dgrd(3)=dimids(10)
1486 w3dgrd(4)=dimids(12)
1497 DO j=1,len(vinfo(1))
1521 vinfo( 2)=
'conjugate gradient beta coefficient'
1525 & 2, vardim, aval, vinfo, ncname)
1528 vinfo( 1)=
'cg_delta'
1529 vinfo( 2)=
'Lanczos algorithm delta coefficient'
1533 & 2, vardim, aval, vinfo, ncname)
1537 vinfo( 2)=
'Lanczos recurrence eigenvectors'
1541 & 2, vardim, aval, vinfo, ncname)
1548 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
1549 vinfo( 4)=trim(
rclock%calendar)
1557 &
pio_tout, 1, (/recdim/), aval, vinfo, ncname, &
1558 & setparaccess = .true.)
1565 vinfo( 3)=
'nondimensional'
1568# if defined WRITE_WATER && defined MASKING
1569 vinfo(20)=
'mask_rho'
1572 vinfo(22)=
'coordinates'
1579 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1582# ifdef ADJUST_BOUNDARY
1588 vinfo( 1)=
vname(1,ifield)
1589 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1590 vinfo( 3)=
'nondimensional'
1591 vinfo(14)=
vname(4,ifield)
1593 vinfo(21)=
vname(6,ifield)
1594 aval(5)=real(
iinfo(1,ifield,ng),r8)
1599 &
lcz(ng)%pioVar(ifield)%vd, &
1600 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1601 & setfillval = .false.)
1610 vinfo( 3)=
'nondimensional'
1613# if defined WRITE_WATER && defined MASKING
1617 vinfo(22)=
'coordinates'
1624 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
1627# ifdef ADJUST_BOUNDARY
1633 vinfo( 1)=
vname(1,ifield)
1634 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1635 vinfo( 3)=
'nondimensional'
1636 vinfo(14)=
vname(4,ifield)
1638 vinfo(21)=
vname(6,ifield)
1639 aval(5)=real(
iinfo(1,ifield,ng),r8)
1644 &
lcz(ng)%pioVar(ifield)%vd, &
1645 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1646 & setfillval = .false.)
1655 vinfo( 3)=
'nondimensional'
1658# if defined WRITE_WATER && defined MASKING
1662 vinfo(22)=
'coordinates'
1669 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
1672# ifdef ADJUST_BOUNDARY
1678 vinfo( 1)=
vname(1,ifield)
1679 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1680 vinfo( 3)=
'nondimensional'
1681 vinfo(14)=
vname(4,ifield)
1683 vinfo(21)=
vname(6,ifield)
1684 aval(5)=real(
iinfo(1,ifield,ng),r8)
1689 &
lcz(ng)%pioVar(ifield)%vd, &
1690 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1691 & setfillval = .false.)
1701 vinfo( 3)=
'nondimensional'
1704# if defined WRITE_WATER && defined MASKING
1708 vinfo(22)=
'coordinates'
1715 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
1718# ifdef ADJUST_BOUNDARY
1724 vinfo( 1)=
vname(1,ifield)
1725 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1726 vinfo( 3)=
'nondimensional'
1727 vinfo(14)=
vname(4,ifield)
1729 vinfo(21)=
vname(6,ifield)
1730 aval(5)=real(
iinfo(1,ifield,ng),r8)
1735 &
lcz(ng)%pioVar(ifield)%vd, &
1736 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1737 & setfillval = .false.)
1746 vinfo( 3)=
'nondimensional'
1749# if defined WRITE_WATER && defined MASKING
1753 vinfo(22)=
'coordinates'
1760 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
1763# ifdef ADJUST_BOUNDARY
1769 vinfo( 1)=
vname(1,ifield)
1770 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1771 vinfo( 3)=
'nondimensional'
1772 vinfo(14)=
vname(4,ifield)
1774 vinfo(21)=
vname(6,ifield)
1775 aval(5)=real(
iinfo(1,ifield,ng),r8)
1780 &
lcz(ng)%pioVar(ifield)%vd, &
1781 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1782 & setfillval = .false.)
1792 vinfo( 3)=
'nondimensional'
1797 IF (itrc.eq.
idsed(i))
THEN
1798 WRITE (vinfo(19),50) 1000.0_r8*
sd50(i,ng)
1802# if defined WRITE_WATER && defined MASKING
1803 vinfo(20)=
'mask_rho'
1806 vinfo(22)=
'coordinates'
1812 &
lcz(ng)%pioTrc(itrc)%vd, &
1813 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1817# ifdef ADJUST_BOUNDARY
1824 vinfo( 1)=
vname(1,ifield)
1825 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1826 vinfo( 3)=
'nondimensional'
1827 vinfo(14)=
vname(4,ifield)
1831 IF (itrc.eq.
idsed(i))
THEN
1832 WRITE (vinfo(19),50) 1000.0_r8*
sd50(i,ng)
1836 vinfo(21)=
vname(6,ifield)
1837 aval(5)=real(
iinfo(1,ifield,ng),r8)
1842 &
lcz(ng)%pioVar(ifield)%vd, &
1843 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1844 & setfillval = .false.)
1849# ifdef ADJUST_STFLUX
1857 vinfo( 3)=
'nondimensional'
1858 IF (itrc.eq.
itemp)
THEN
1859 vinfo(11)=
'upward flux, cooling'
1860 vinfo(12)=
'downward flux, heating'
1861 ELSE IF (itrc.eq.
isalt)
THEN
1862 vinfo(11)=
'upward flux, freshening (net precipitation)'
1863 vinfo(12)=
'downward flux, salting (net evaporation)'
1867# if defined WRITE_WATER && defined MASKING
1868 vinfo(20)=
'mask_rho'
1871 vinfo(22)=
'coordinates'
1878 &
pio_fout, nvd4, t3dfrc, aval, vinfo, ncname)
1884# ifdef ADJUST_WSTRESS
1890 vinfo( 3)=
'nondimensional'
1893# if defined WRITE_WATER && defined MASKING
1897 vinfo(22)=
'coordinates'
1904 &
pio_fout, nvd4, u3dfrc, aval, vinfo, ncname)
1912 vinfo( 3)=
'nondimensional'
1915# if defined WRITE_WATER && defined MASKING
1919 vinfo(22)=
'coordinates'
1926 &
pio_fout, nvd4, v3dfrc, aval, vinfo, ncname)
1950 query:
IF (.not.
ldeflcz(ng))
THEN
1957 WRITE (
stdout,60) trim(ncname)
1964 & piofile =
lcz(ng)%pioFile)
1970 & piofile =
lcz(ng)%pioFile)
1983 IF (trim(var_name(i)).eq.trim(
vname(1,
idtime)))
THEN
1988 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idfsur)))
THEN
1993 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idubar)))
THEN
1998 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvbar)))
THEN
2003# ifdef ADJUST_BOUNDARY
2004 ELSE IF (trim(var_name(i)).eq. &
2010 ELSE IF (trim(var_name(i)).eq. &
2016 ELSE IF (trim(var_name(i)).eq. &
2023# ifdef ADJUST_WSTRESS
2024 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idusms)))
THEN
2029 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvsms)))
THEN
2036 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iduvel)))
THEN
2041 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvvel)))
THEN
2046# ifdef ADJUST_BOUNDARY
2047 ELSE IF (trim(var_name(i)).eq. &
2053 ELSE IF (trim(var_name(i)).eq. &
2064 IF (trim(var_name(i)).eq.trim(
vname(1,
idtvar(itrc))))
THEN
2065 got_var(
idtvar(itrc))=.true.
2069# ifdef ADJUST_BOUNDARY
2070 ELSE IF (trim(var_name(i)).eq. &
2077# ifdef ADJUST_STFLUX
2078 ELSE IF (trim(var_name(i)).eq. &
2080 got_var(
idtsur(itrc))=.true.
2093 IF (.not.got_var(
idtime))
THEN
2099 IF (.not.got_var(
idfsur))
THEN
2105 IF (.not.got_var(
idubar))
THEN
2111 IF (.not.got_var(
idvbar))
THEN
2117# ifdef ADJUST_BOUNDARY
2137# ifdef ADJUST_WSTRESS
2138 IF (.not.got_var(
idusms))
THEN
2144 IF (.not.got_var(
idvsms))
THEN
2152 IF (.not.got_var(
iduvel))
THEN
2158 IF (.not.got_var(
idvvel))
THEN
2164# ifdef ADJUST_BOUNDARY
2181 IF (.not.got_var(
idtvar(itrc)))
THEN
2187# ifdef ADJUST_BOUNDARY
2196# ifdef ADJUST_STFLUX
2209 lcz(ng)%Rindex=rec_size
2212 10
FORMAT (2x,
'DEF_LANCZOS_PIO - creating Lanczos file,',t56, &
2213 &
'Grid ',i2.2,
': ',a)
2214 20
FORMAT (2x,
'DEF_LANCZOS_PIO - inquiring Lanczos file,',t56, &
2215 &
'Grid ',i2.2,
': ',a)
2216 30
FORMAT (/,
' DEF_LANCZOS_PIO - unable to create Lanczos NetCDF', &
2218 40
FORMAT (a,
', Lanczos vectors')
2219 50
FORMAT (1pe11.4,1x,
'millimeter')
2220 60
FORMAT (/,
' DEF_LANCZOS_PIO - unable to open Lanczos NetCDF', &
2222 70
FORMAT (/,
' DEF_LANCZOS_PIO - unable to find variable: ',a,2x, &
2223 &
' in Lanczos NetCDF file: ',a)
subroutine, public def_lanczos(ng)
subroutine, private def_lanczos_pio(ng)
subroutine, private def_lanczos_nf90(ng)
integer, parameter nbands
integer, dimension(:), allocatable nstatevar
type(t_io), dimension(:), allocatable lcz
character(len=256) sourcefile
integer, parameter io_nf90
integer, dimension(:), allocatable idsbry
integer, parameter io_pio
integer, dimension(:), allocatable idtsur
integer, dimension(:), allocatable idtvar
integer, dimension(:), allocatable istvar
character(len=maxlen), dimension(6, 0:nv) vname
integer, dimension(:,:,:), allocatable iinfo
integer, parameter ndimid
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, parameter nf_frst
integer, parameter u2dobc
integer, parameter v3dobc
integer, parameter r2dobc
integer, dimension(:), allocatable n
integer, parameter r3dvar
integer, parameter r3dobc
integer, parameter v2dobc
type(t_iobounds), dimension(:), allocatable iobounds
integer, parameter u3dobc
integer, parameter u3dvar
integer, parameter u2dvar
integer, dimension(:), allocatable nt
integer, parameter r2dvar
integer, parameter v2dvar
integer, parameter v3dvar
integer, parameter pio_fout
type(var_desc_t), dimension(:), pointer var_desc
integer, parameter pio_frst
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)
logical, dimension(:,:,:), allocatable lobc
logical, dimension(:,:), allocatable lstflux
integer, dimension(:), allocatable nfrec
integer, dimension(:), allocatable nbrec
logical, dimension(:), allocatable ldeflcz
integer, dimension(:), allocatable idsed
real(r8), dimension(:,:), allocatable sd50
logical function, public founderror(flag, noerr, line, routine)