96 integer,
intent(in) :: ng, model
98 logical,
intent(in) :: ldef
102 logical :: got_var(
nv)
104 integer,
parameter :: natt = 25
106 integer :: i, j, ifield, itrc, nvd3, nvd4
107 integer :: recdim, status, varid
108# ifdef ADJUST_BOUNDARY
109 integer :: iorjdim, brecdim
111# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
115 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
116# ifdef ADJUST_BOUNDARY
121 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
122# ifdef ADJUST_BOUNDARY
129# ifdef ADJUST_WSTRESS
130 integer :: u3dfrc(4), v3dfrc(4)
135 character (len=256) :: ncname
136 character (len=MaxLen) :: vinfo(natt)
138 character (len=*),
parameter :: myfile = &
139 & __FILE__//
", tl_def_his_nf90"
152 WRITE (
stdout,10) ng, trim(ncname)
154 WRITE (
stdout,20) ng, trim(ncname)
162 define :
IF (ldef)
THEN
175 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'xi_rho', &
179 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'xi_u', &
183 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'xi_v', &
187 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'xi_psi', &
191 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'eta_rho', &
195 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'eta_u', &
199 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'eta_v', &
203 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'eta_psi', &
207# ifdef ADJUST_BOUNDARY
208 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'IorJ', &
213# if defined WRITE_WATER && defined MASKING
214 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'xy_rho', &
218 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'xy_u', &
222 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'xy_v', &
228# if defined WRITE_WATER && defined MASKING
229 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'xyz_rho', &
233 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'xyz_u', &
237 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'xyz_v', &
241 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'xyz_w', &
242 &
iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
246 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'N', &
250 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
's_rho', &
254 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
's_w', &
255 &
n(ng)+1, dimids(10))
258 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'tracer', &
259 &
nt(ng), dimids(11))
263 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'NST', &
267 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'Nbed', &
271# if defined WRITE_WATER && defined MASKING
272 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'xybed', &
279 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'Nbands', &
283 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'Nphy', &
287 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'Nbac', &
291 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'Ndom', &
295 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'Nfec', &
301 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'boundary', &
306 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'Nstate', &
311# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
312 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'frc_adjust', &
313 &
nfrec(ng), dimids(30))
317# ifdef ADJUST_BOUNDARY
318 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname,
'obc_adjust', &
319 &
nbrec(ng), dimids(31))
323 status=
def_dim(ng, model,
tlm(ng)%ncid, ncname, &
325 & nf90_unlimited, dimids(12))
329# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
332# ifdef ADJUST_BOUNDARY
338# if defined WRITE_WATER && defined MASKING
348# if defined WRITE_WATER && defined MASKING
372# ifdef ADJUST_BOUNDARY
388# if defined WRITE_WATER && defined MASKING
405# ifdef ADJUST_WSTRESS
415# if defined WRITE_WATER && defined MASKING
432# ifdef ADJUST_WSTRESS
443# if defined WRITE_WATER && defined MASKING
473 CALL def_info (ng, model,
tlm(ng)%ncid, ncname, dimids)
484 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
485 vinfo( 4)=trim(
rclock%calendar)
489 &
nf_type, 1, (/recdim/), aval, vinfo, ncname, &
490 & setparaccess = .false.)
497 vinfo( 1)=
'Ritz_rvalue'
498 vinfo( 2)=
'real Ritz eigenvalues'
500 & 1, (/recdim/), aval, vinfo, ncname, &
501 & setparaccess = .false.)
504# if defined FT_EIGENMODES
505 vinfo( 1)=
'Ritz_ivalue'
506 vinfo( 2)=
'imaginary Ritz eigenvalues'
508 & 1, (/recdim/), aval, vinfo, ncname, &
509 & setparaccess = .false.)
513 vinfo( 1)=
'Ritz_norm'
514 vinfo( 2)=
'Ritz eigenvectors Euclidean norm'
516 & 1, (/recdim/), aval, vinfo, ncname, &
517 & setparaccess = .false.)
520# ifdef ADJUST_WSTRESS
528 vinfo( 3)=
'meter2 second-2'
530# if defined WRITE_WATER && defined MASKING
533 vinfo(22)=
'coordinates'
536 &
nf_fout, nvd4, u3dfrc, aval, vinfo, ncname)
543 vinfo( 3)=
'meter2 second-2'
545# if defined WRITE_WATER && defined MASKING
548 vinfo(22)=
'coordinates'
551 &
nf_fout, nvd4, v3dfrc, aval, vinfo, ncname)
554# if defined FORCING_SV || defined STOCHASTIC_OPT || \
555 defined hessian_so || defined hessian_fsv
565# if defined WRITE_WATER && defined MASKING
569 vinfo(22)=
'coordinates'
572 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
584# if defined WRITE_WATER && defined MASKING
588 vinfo(22)=
'coordinates'
591 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
602 IF (itrc.eq.
itemp)
THEN
603 vinfo(11)=
'upward flux, cooling'
604 vinfo(12)=
'downward flux, heating'
605 ELSE IF (itrc.eq.
isalt)
THEN
606 vinfo(11)=
'upward flux, freshening (net precipitation)'
607 vinfo(12)=
'downward flux, salting (net evaporation)'
611# if defined WRITE_WATER && defined MASKING
615 vinfo(22)=
'coordinates'
619 & nvd3, t2dgrd, aval, vinfo, ncname)
624# if defined ADJUST_STFLUX && defined SOLVE3D
634 IF (itrc.eq.
itemp)
THEN
635 vinfo( 3)=
'Celsius meter second-1'
636 vinfo(11)=
'upward flux, cooling'
637 vinfo(12)=
'downward flux, heating'
638 ELSE IF (itrc.eq.
isalt)
THEN
639 vinfo( 3)=
'meter second-1'
640 vinfo(11)=
'upward flux, freshening (net precipitation)'
641 vinfo(12)=
'downward flux, salting (net evaporation)'
644# if defined WRITE_WATER && defined MASKING
647 vinfo(22)=
'coordinates'
651 & nvd4, t3dfrc, aval, vinfo, ncname)
666# if defined WRITE_WATER && defined MASKING
670 vinfo(22)=
'coordinates'
673 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname, &
674 & setfillval = .false.)
686# if defined WRITE_WATER && defined MASKING
690 vinfo(22)=
'coordinates'
693 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
694 & setfillval = .false.)
707# if !defined WET_DRY && (defined WRITE_WATER && defined MASKING)
711 vinfo(22)=
'coordinates'
715 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
716 & setfillval = .false.)
718 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
722# if defined FORWARD_WRITE && defined FORWARD_RHS
728# if defined WRITE_WATER && defined MASKING
732 vinfo(22)=
'coordinates'
735 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
739# ifdef ADJUST_BOUNDARY
745 vinfo( 1)=
vname(1,ifield)
746 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
747 vinfo( 3)=
vname(3,ifield)
748 vinfo(14)=
vname(4,ifield)
750 vinfo(21)=
vname(6,ifield)
751 aval(5)=real(
iinfo(1,ifield,ng),r8)
752 status=
def_var(ng, model,
tlm(ng)%ncid,
tlm(ng)%Vid(ifield), &
753 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
754 & setfillval = .false.)
767# if defined WRITE_WATER && defined MASKING
771 vinfo(22)=
'coordinates'
774 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
784# if defined WRITE_WATER && defined MASKING
788 vinfo(22)=
'coordinates'
792 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
802# if defined WRITE_WATER && defined MASKING
806 vinfo(22)=
'coordinates'
809 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
818# if defined WRITE_WATER && defined MASKING
822 vinfo(22)=
'coordinates'
825 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
833# if defined WRITE_WATER && defined MASKING
837 vinfo(22)=
'coordinates'
840 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
845# ifdef ADJUST_BOUNDARY
851 vinfo( 1)=
vname(1,ifield)
852 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
853 vinfo( 3)=
vname(3,ifield)
854 vinfo(14)=
vname(4,ifield)
856 vinfo(21)=
vname(6,ifield)
857 aval(5)=real(
iinfo(1,ifield,ng),r8)
858 status=
def_var(ng, model,
tlm(ng)%ncid,
tlm(ng)%Vid(ifield), &
859 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
860 & setfillval = .false.)
873# if defined WRITE_WATER && defined MASKING
877 vinfo(22)=
'coordinates'
880 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
890# if defined WRITE_WATER && defined MASKING
894 vinfo(22)=
'coordinates'
897 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
907# if defined WRITE_WATER && defined MASKING
911 vinfo(22)=
'coordinates'
914 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
923# if defined WRITE_WATER && defined MASKING
927 vinfo(22)=
'coordinates'
930 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
938# if defined WRITE_WATER && defined MASKING
942 vinfo(22)=
'coordinates'
945 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
950# ifdef ADJUST_BOUNDARY
956 vinfo( 1)=
vname(1,ifield)
957 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
958 vinfo( 3)=
vname(3,ifield)
959 vinfo(14)=
vname(4,ifield)
961 vinfo(21)=
vname(6,ifield)
962 aval(5)=real(
iinfo(1,ifield,ng),r8)
963 status=
def_var(ng, model,
tlm(ng)%ncid,
tlm(ng)%Vid(ifield), &
964 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
965 & setfillval = .false.)
979# if defined WRITE_WATER && defined MASKING
983 vinfo(22)=
'coordinates'
986 &
nf_fout, nvd4, u3dgrd, aval, vinfo, ncname)
989# if defined FORWARD_WRITE && defined FORWARD_RHS
995# if defined WRITE_WATER && defined MASKING
999 vinfo(22)=
'coordinates'
1002 &
nf_fout, nvd4, u3dgrd, aval, vinfo, ncname)
1006# ifdef ADJUST_BOUNDARY
1012 vinfo( 1)=
vname(1,ifield)
1013 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1014 vinfo( 3)=
vname(3,ifield)
1015 vinfo(14)=
vname(4,ifield)
1017 vinfo(21)=
vname(6,ifield)
1018 aval(5)=real(
iinfo(1,ifield,ng),r8)
1019 status=
def_var(ng, model,
tlm(ng)%ncid,
tlm(ng)%Vid(ifield), &
1020 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
1021 & setfillval = .false.)
1034# if defined WRITE_WATER && defined MASKING
1038 vinfo(22)=
'coordinates'
1041 &
nf_fout, nvd4, v3dgrd, aval, vinfo, ncname)
1044# if defined FORWARD_WRITE && defined FORWARD_RHS
1050# if defined WRITE_WATER && defined MASKING
1054 vinfo(22)=
'coordinates'
1057 &
nf_fout, nvd4, v3dgrd, aval, vinfo, ncname)
1061# ifdef ADJUST_BOUNDARY
1067 vinfo( 1)=
vname(1,ifield)
1068 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1069 vinfo( 3)=
vname(3,ifield)
1070 vinfo(14)=
vname(4,ifield)
1072 vinfo(21)=
vname(6,ifield)
1073 aval(5)=real(
iinfo(1,ifield,ng),r8)
1074 status=
def_var(ng, model,
tlm(ng)%ncid,
tlm(ng)%Vid(ifield), &
1075 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
1076 & setfillval = .false.)
1080# ifdef UV_DESTAGGERED
1090# if defined WRITE_WATER && defined MASKING
1091 vinfo(20)=
'mask_rho'
1094 vinfo(22)=
'coordinates'
1097 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1109# if defined WRITE_WATER && defined MASKING
1110 vinfo(20)=
'mask_rho'
1113 vinfo(22)=
'coordinates'
1116 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1130# ifdef SEDIMENT_NOT_YET
1132 IF (itrc.eq.
idsed(i))
THEN
1133 WRITE (vinfo(19),50) 1000.0_r8*
sd50(i,ng)
1137# if defined WRITE_WATER && defined MASKING
1138 vinfo(20)=
'mask_rho'
1141 vinfo(22)=
'coordinates'
1143 status=
def_var(ng, model,
tlm(ng)%ncid,
tlm(ng)%Tid(itrc), &
1144 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1148# ifdef ADJUST_BOUNDARY
1155 vinfo( 1)=
vname(1,ifield)
1156 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
1157 vinfo( 3)=
vname(3,ifield)
1158 vinfo(14)=
vname(4,ifield)
1162 IF (itrc.eq.
idsed(i))
THEN
1163 WRITE (vinfo(19),50) 1000.0_r8*
sd50(i,ng)
1167 vinfo(21)=
vname(6,ifield)
1168 aval(5)=real(
iinfo(1,ifield,ng),r8)
1169 status=
def_var(ng, model,
tlm(ng)%ncid,
tlm(ng)%Vid(ifield),&
1170 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
1171 & setfillval = .false.)
1185# if defined WRITE_WATER && defined MASKING
1186 vinfo(20)=
'mask_rho'
1189 vinfo(22)=
'coordinates'
1192 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1196# if defined FORWARD_MIXING && \
1197 (defined bvf_mixing || defined gls_mixing || \
1198 defined lmd_mixing || defined my25_mixing)
1209 vinfo(22)=
'coordinates'
1212 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1213 & setfillval = .false.)
1226 vinfo(22)=
'coordinates'
1229 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1230 & setfillval = .false.)
1244 vinfo(22)=
'coordinates'
1247 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1248 & setfillval = .false.)
1252# if defined GLS_MIXING_NOT_YET || defined MY25_MIXING_NOT_YET
1263 vinfo(22)=
'coordinates'
1266 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1267 & setfillval = .false.)
1275# if defined WRITE_WATER && defined MASKING
1276 vinfo(20)=
'mask_rho'
1279 vinfo(22)=
'coordinates'
1282 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
1295 vinfo(22)=
'coordinates'
1298 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1299 & setfillval = .false.)
1307# if defined WRITE_WATER && defined MASKING
1308 vinfo(20)=
'mask_rho'
1311 vinfo(22)=
'coordinates'
1314 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
1317# ifdef GLS_MIXING_NOT_YET
1323# if defined WRITE_WATER && defined MASKING
1324 vinfo(20)=
'mask_rho'
1327 vinfo(22)=
'coordinates'
1330 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
1358 query :
IF (.not.ldef)
THEN
1365 WRITE (
stdout,60) trim(ncname)
1372 & ncid =
tlm(ng)%ncid)
1378 & ncid =
tlm(ng)%ncid)
1411# ifdef ADJUST_BOUNDARY
1425# ifdef FORWARD_WRITE
1475# ifdef ADJUST_BOUNDARY
1485# ifdef UV_DESTAGGERED
1496# if defined FORWARD_MIXING && \
1497 (defined bvf_mixing || defined gls_mixing || \
1498 defined lmd_mixing || defined my25_mixing)
1510# if defined GLS_MIXING_NOT_YET || defined MY25_MIXING_NOT_YET
1523# ifdef GLS_MIXING_NOT_YET
1531# ifdef ADJUST_WSTRESS
1543 got_var(
idtvar(itrc))=.true.
1545# ifdef ADJUST_BOUNDARY
1551# ifdef ADJUST_STFLUX
1554 got_var(
idtsur(itrc))=.true.
1564 IF (.not.got_var(
idtime))
THEN
1602# ifdef ADJUST_BOUNDARY
1622# ifdef FORWARD_WRITE
1624 IF (.not.got_var(
idrzet))
THEN
1630 IF (.not.got_var(
idru2d))
THEN
1636 IF (.not.got_var(
idrv2d))
THEN
1645 IF (.not.got_var(
idruct))
THEN
1651 IF (.not.got_var(
idrvct))
THEN
1658 IF (.not.got_var(
idufx1))
THEN
1664 IF (.not.got_var(
idufx2))
THEN
1670 IF (.not.got_var(
idvfx1))
THEN
1676 IF (.not.got_var(
idvfx2))
THEN
1683 IF (.not.got_var(
idru3d))
THEN
1689 IF (.not.got_var(
idrv3d))
THEN
1711# ifdef ADJUST_BOUNDARY
1725# ifdef UV_DESTAGGERED
1745# if defined FORWARD_MIXING && \
1746 (defined bvf_mixing || defined gls_mixing || \
1747 defined lmd_mixing || defined my25_mixing)
1768# if defined GLS_MIXING_NOT_YET || defined MY25_MIXING_NOT_YET
1804# ifdef ADJUST_WSTRESS
1826# ifdef ADJUST_BOUNDARY
1835# ifdef ADJUST_STFLUX
1859 10
FORMAT (2x,
'TL_DEF_HIS_NF90 - creating tangent file,',t56, &
1860 &
'Grid ',i2.2,
': ',a)
1861 20
FORMAT (2x,
'TL_DEF_HIS_NF90 - inquiring tangent file,',t56, &
1862 &
'Grid ',i2.2,
': ',a)
1863 30
FORMAT (/,
' TL_DEF_HIS_NF90 - unable to create tangent NetCDF', &
1865 40
FORMAT (
'tangent linear',1x,a)
1866 50
FORMAT (1pe11.4,1x,
'millimeter')
1867 60
FORMAT (/,
' TL_DEF_HIS_NF90 - unable to open tangent NetCDF', &
1869 70
FORMAT (/,
' TL_DEF_HIS_NF90 - unable to find variable: ',a,2x, &
1870 &
' in tangent NetCDF file: ',a)
1885 integer,
intent(in) :: ng
1887 logical,
intent(in) :: ldef
1891 logical :: got_var(
nv)
1893 integer,
parameter :: natt = 25
1895 integer :: i, j, ifield, itrc, nvd3, nvd4
1896 integer :: recdim, status, varid
1897# ifdef ADJUST_BOUNDARY
1898 integer :: iorjdim, brecdim
1900# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1903 integer :: dimids(
ndimid)
1904 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
1905# ifdef ADJUST_BOUNDARY
1906 integer :: t2dobc(4)
1910 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
1911# ifdef ADJUST_BOUNDARY
1912 integer :: t3dobc(5)
1914# ifdef ADJUST_STFLUX
1915 integer :: t3dfrc(4)
1918# ifdef ADJUST_WSTRESS
1919 integer :: u3dfrc(4), v3dfrc(4)
1924 character (len=256) :: ncname
1925 character (len=MaxLen) :: vinfo(natt)
1927 character (len=*),
parameter :: myfile = &
1928 & __FILE__//
", tl_def_his_pio"
1930 TYPE (var_desc_t) :: vardesc
1943 WRITE (
stdout,10) ng, trim(ncname)
1945 WRITE (
stdout,20) ng, trim(ncname)
1953 define :
IF (ldef)
THEN
1966 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'xi_rho', &
1970 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'xi_u', &
1974 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'xi_v', &
1978 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'xi_psi', &
1982 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'eta_rho', &
1983 &
iobounds(ng)%eta_rho, dimids( 5))
1986 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'eta_u', &
1990 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'eta_v', &
1994 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'eta_psi', &
1995 &
iobounds(ng)%eta_psi, dimids( 8))
1998# ifdef ADJUST_BOUNDARY
1999 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'IorJ', &
2004# if defined WRITE_WATER && defined MASKING
2005 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'xy_rho', &
2009 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'xy_u', &
2013 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'xy_v', &
2019# if defined WRITE_WATER && defined MASKING
2020 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'xyz_rho', &
2021 &
iobounds(ng)%xy_rho*
n(ng), dimids(20))
2024 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'xyz_u', &
2028 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'xyz_v', &
2032 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'xyz_w', &
2033 &
iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
2037 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'N', &
2038 &
n(ng), dimids( 9))
2041 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
's_rho', &
2042 &
n(ng), dimids( 9))
2045 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
's_w', &
2046 &
n(ng)+1, dimids(10))
2049 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'tracer', &
2050 &
nt(ng), dimids(11))
2054 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'NST', &
2058 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'Nbed', &
2062# if defined WRITE_WATER && defined MASKING
2063 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'xybed', &
2074 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'Nphy', &
2078 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'Nbac', &
2082 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'Ndom', &
2086 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'Nfec', &
2092 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'boundary', &
2097 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'Nstate', &
2102# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
2103 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'frc_adjust',&
2104 &
nfrec(ng), dimids(30))
2108# ifdef ADJUST_BOUNDARY
2109 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname,
'obc_adjust',&
2110 &
nbrec(ng), dimids(31))
2114 status=
def_dim(ng, model,
tlm(ng)%pioFile, ncname, &
2116 & nf90_unlimited, dimids(12))
2120# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
2123# ifdef ADJUST_BOUNDARY
2129# if defined WRITE_WATER && defined MASKING
2139# if defined WRITE_WATER && defined MASKING
2140 t2dgrd(1)=dimids(17)
2141 t2dgrd(2)=dimids(12)
2143 t3dgrd(1)=dimids(20)
2144 t3dgrd(2)=dimids(12)
2147 t2dgrd(1)=dimids( 1)
2148 t2dgrd(2)=dimids( 5)
2149 t2dgrd(3)=dimids(12)
2151 t3dgrd(1)=dimids( 1)
2152 t3dgrd(2)=dimids( 5)
2153 t3dgrd(3)=dimids( 9)
2154 t3dgrd(4)=dimids(12)
2156# ifdef ADJUST_STFLUX
2157 t3dfrc(1)=dimids( 1)
2158 t3dfrc(2)=dimids( 5)
2160 t3dfrc(4)=dimids(12)
2163# ifdef ADJUST_BOUNDARY
2165 t2dobc(2)=dimids(14)
2167 t2dobc(4)=dimids(12)
2170 t3dobc(2)=dimids( 9)
2171 t3dobc(3)=dimids(14)
2173 t3dobc(5)=dimids(12)
2179# if defined WRITE_WATER && defined MASKING
2180 u2dgrd(1)=dimids(18)
2181 u2dgrd(2)=dimids(12)
2183 u3dgrd(1)=dimids(21)
2184 u3dgrd(2)=dimids(12)
2187 u2dgrd(1)=dimids( 2)
2188 u2dgrd(2)=dimids( 6)
2189 u2dgrd(3)=dimids(12)
2191 u3dgrd(1)=dimids( 2)
2192 u3dgrd(2)=dimids( 6)
2193 u3dgrd(3)=dimids( 9)
2194 u3dgrd(4)=dimids(12)
2196# ifdef ADJUST_WSTRESS
2197 u3dfrc(1)=dimids( 2)
2198 u3dfrc(2)=dimids( 6)
2200 u3dfrc(4)=dimids(12)
2206# if defined WRITE_WATER && defined MASKING
2207 v2dgrd(1)=dimids(19)
2208 v2dgrd(2)=dimids(12)
2210 v3dgrd(1)=dimids(22)
2211 v3dgrd(2)=dimids(12)
2214 v2dgrd(1)=dimids( 3)
2215 v2dgrd(2)=dimids( 7)
2216 v2dgrd(3)=dimids(12)
2218 v3dgrd(1)=dimids( 3)
2219 v3dgrd(2)=dimids( 7)
2220 v3dgrd(3)=dimids( 9)
2221 v3dgrd(4)=dimids(12)
2223# ifdef ADJUST_WSTRESS
2224 v3dfrc(1)=dimids( 3)
2225 v3dfrc(2)=dimids( 7)
2227 v3dfrc(4)=dimids(12)
2234# if defined WRITE_WATER && defined MASKING
2235 w3dgrd(1)=dimids(23)
2236 w3dgrd(2)=dimids(12)
2238 w3dgrd(1)=dimids( 1)
2239 w3dgrd(2)=dimids( 5)
2240 w3dgrd(3)=dimids(10)
2241 w3dgrd(4)=dimids(12)
2252 DO j=1,len(vinfo(1))
2264 CALL def_info (ng, model,
tlm(ng)%pioFile, ncname, dimids)
2275 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
2276 vinfo( 4)=trim(
rclock%calendar)
2284 & 1, (/recdim/), aval, vinfo, ncname, &
2285 & setparaccess = .false.)
2292 vinfo( 1)=
'Ritz_rvalue'
2293 vinfo( 2)=
'real Ritz eigenvalues'
2295 & 1, (/recdim/), aval, vinfo, ncname, &
2296 & setparaccess = .false.)
2299# if defined FT_EIGENMODES
2300 vinfo( 1)=
'Ritz_ivalue'
2301 vinfo( 2)=
'imaginary Ritz eigenvalues'
2303 & 1, (/recdim/), aval, vinfo, ncname, &
2304 & setparaccess = .false.)
2309 vinfo( 1)=
'Ritz_norm'
2310 vinfo( 2)=
'Ritz eigenvectors Euclidean norm'
2312 & 1, (/recdim/), aval, vinfo, ncname, &
2313 & setparaccess = .false.)
2316# ifdef ADJUST_WSTRESS
2324 vinfo( 3)=
'meter2 second-2'
2326# if defined WRITE_WATER && defined MASKING
2329 vinfo(22)=
'coordinates'
2336 &
pio_fout, nvd4, u3dfrc, aval, vinfo, ncname)
2343 vinfo( 3)=
'meter2 second-2'
2345# if defined WRITE_WATER && defined MASKING
2348 vinfo(22)=
'coordinates'
2355 &
pio_fout, nvd4, v3dfrc, aval, vinfo, ncname)
2358# if defined FORCING_SV || defined STOCHASTIC_OPT || \
2359 defined hessian_so || defined hessian_fsv
2369# if defined WRITE_WATER && defined MASKING
2373 vinfo(22)=
'coordinates'
2380 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
2392# if defined WRITE_WATER && defined MASKING
2396 vinfo(22)=
'coordinates'
2403 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
2414 IF (itrc.eq.
itemp)
THEN
2415 vinfo(11)=
'upward flux, cooling'
2416 vinfo(12)=
'downward flux, heating'
2417 ELSE IF (itrc.eq.
isalt)
THEN
2418 vinfo(11)=
'upward flux, freshening (net precipitation)'
2419 vinfo(12)=
'downward flux, salting (net evaporation)'
2423# if defined WRITE_WATER && defined MASKING
2424 vinfo(20)=
'mask_rho'
2427 vinfo(22)=
'coordinates'
2434 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
2439# if defined ADJUST_STFLUX && defined SOLVE3D
2449 IF (itrc.eq.
itemp)
THEN
2450 vinfo( 3)=
'Celsius meter second-1'
2451 vinfo(11)=
'upward flux, cooling'
2452 vinfo(12)=
'downward flux, heating'
2453 ELSE IF (itrc.eq.
isalt)
THEN
2454 vinfo( 3)=
'meter second-1'
2455 vinfo(11)=
'upward flux, freshening (net precipitation)'
2456 vinfo(12)=
'downward flux, salting (net evaporation)'
2459# if defined WRITE_WATER && defined MASKING
2460 vinfo(20)=
'mask_rho'
2462 vinfo(22)=
'coordinates'
2469 &
pio_fout, nvd4, t3dfrc, aval, vinfo, ncname)
2484# if defined WRITE_WATER && defined MASKING
2485 vinfo(20)=
'mask_rho'
2488 vinfo(22)=
'coordinates'
2495 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname, &
2496 & setfillval = .false.)
2508# if defined WRITE_WATER && defined MASKING
2509 vinfo(20)=
'mask_rho'
2512 vinfo(22)=
'coordinates'
2519 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
2520 & setfillval = .false.)
2533# if !defined WET_DRY && (defined WRITE_WATER && defined MASKING)
2534 vinfo(20)=
'mask_rho'
2537 vinfo(22)=
'coordinates'
2545 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
2546 & setfillval = .false.)
2548 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
2552# if defined FORWARD_WRITE && defined FORWARD_RHS
2559# if defined WRITE_WATER && defined MASKING
2560 vinfo(20)=
'mask_rho'
2563 vinfo(22)=
'coordinates'
2570 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
2575# ifdef ADJUST_BOUNDARY
2581 vinfo( 1)=
vname(1,ifield)
2582 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
2583 vinfo( 3)=
vname(3,ifield)
2584 vinfo(14)=
vname(4,ifield)
2586 vinfo(21)=
vname(6,ifield)
2587 aval(5)=real(
iinfo(1,ifield,ng),r8)
2592 &
tlm(ng)%pioVar(ifield)%vd, &
2593 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
2594 & setfillval = .false.)
2607# if defined WRITE_WATER && defined MASKING
2611 vinfo(22)=
'coordinates'
2618 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
2621# ifdef FORWARD_WRITE
2629# if defined WRITE_WATER && defined MASKING
2633 vinfo(22)=
'coordinates'
2640 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
2651# if defined WRITE_WATER && defined MASKING
2655 vinfo(22)=
'coordinates'
2662 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
2671# if defined WRITE_WATER && defined MASKING
2675 vinfo(22)=
'coordinates'
2682 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
2690# if defined WRITE_WATER && defined MASKING
2694 vinfo(22)=
'coordinates'
2701 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
2707# ifdef ADJUST_BOUNDARY
2713 vinfo( 1)=
vname(1,ifield)
2714 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
2715 vinfo( 3)=
vname(3,ifield)
2716 vinfo(14)=
vname(4,ifield)
2718 vinfo(21)=
vname(6,ifield)
2719 aval(5)=real(
iinfo(1,ifield,ng),r8)
2724 &
tlm(ng)%pioVar(ifield)%vd, &
2725 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
2726 & setfillval = .false.)
2739# if defined WRITE_WATER && defined MASKING
2743 vinfo(22)=
'coordinates'
2750 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
2753# ifdef FORWARD_WRITE
2761# if defined WRITE_WATER && defined MASKING
2765 vinfo(22)=
'coordinates'
2772 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
2783# if defined WRITE_WATER && defined MASKING
2787 vinfo(22)=
'coordinates'
2794 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
2803# if defined WRITE_WATER && defined MASKING
2807 vinfo(22)=
'coordinates'
2814 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
2822# if defined WRITE_WATER && defined MASKING
2826 vinfo(22)=
'coordinates'
2833 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
2839# ifdef ADJUST_BOUNDARY
2845 vinfo( 1)=
vname(1,ifield)
2846 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
2847 vinfo( 3)=
vname(3,ifield)
2848 vinfo(14)=
vname(4,ifield)
2850 vinfo(21)=
vname(6,ifield)
2851 aval(5)=real(
iinfo(1,ifield,ng),r8)
2856 &
tlm(ng)%pioVar(ifield)%vd, &
2857 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
2858 & setfillval = .false.)
2872# if defined WRITE_WATER && defined MASKING
2876 vinfo(22)=
'coordinates'
2883 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
2886# if defined FORWARD_WRITE && defined FORWARD_RHS
2893# if defined WRITE_WATER && defined MASKING
2897 vinfo(22)=
'coordinates'
2904 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
2909# ifdef ADJUST_BOUNDARY
2915 vinfo( 1)=
vname(1,ifield)
2916 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
2917 vinfo( 3)=
vname(3,ifield)
2918 vinfo(14)=
vname(4,ifield)
2920 vinfo(21)=
vname(6,ifield)
2921 aval(5)=real(
iinfo(1,ifield,ng),r8)
2926 &
tlm(ng)%pioVar(ifield)%vd, &
2927 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
2928 & setfillval = .false.)
2941# if defined WRITE_WATER && defined MASKING
2945 vinfo(22)=
'coordinates'
2952 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
2955# if defined FORWARD_WRITE && defined FORWARD_RHS
2962# if defined WRITE_WATER && defined MASKING
2966 vinfo(22)=
'coordinates'
2973 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
2978# ifdef ADJUST_BOUNDARY
2984 vinfo( 1)=
vname(1,ifield)
2985 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
2986 vinfo( 3)=
vname(3,ifield)
2987 vinfo(14)=
vname(4,ifield)
2989 vinfo(21)=
vname(6,ifield)
2990 aval(5)=real(
iinfo(1,ifield,ng),r8)
2995 &
tlm(ng)%pioVar(ifield)%vd, &
2996 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
2997 & setfillval = .false.)
3001# ifdef UV_DESTAGGERED
3011# if defined WRITE_WATER && defined MASKING
3012 vinfo(20)=
'mask_rho'
3015 vinfo(22)=
'coordinates'
3022 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3034# if defined WRITE_WATER && defined MASKING
3035 vinfo(20)=
'mask_rho'
3038 vinfo(22)=
'coordinates'
3045 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3059# ifdef SEDIMENT_NOT_YET
3061 IF (itrc.eq.
idsed(i))
THEN
3062 WRITE (vinfo(19),50) 1000.0_r8*
sd50(i,ng)
3066# if defined WRITE_WATER && defined MASKING
3067 vinfo(20)=
'mask_rho'
3070 vinfo(22)=
'coordinates'
3076 &
tlm(ng)%pioTrc(itrc)%vd, &
3077 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3082# ifdef ADJUST_BOUNDARY
3089 vinfo( 1)=
vname(1,ifield)
3090 WRITE (vinfo( 2),40) trim(
vname(2,ifield))
3091 vinfo( 3)=
vname(3,ifield)
3092 vinfo(14)=
vname(4,ifield)
3096 IF (itrc.eq.
idsed(i))
THEN
3097 WRITE (vinfo(19),50) 1000.0_r8*
sd50(i,ng)
3101 vinfo(21)=
vname(6,ifield)
3102 aval(5)=real(
iinfo(1,ifield,ng),r8)
3107 &
tlm(ng)%pioVar(ifield)%vd, &
3108 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
3109 & setfillval = .false.)
3123# if defined WRITE_WATER && defined MASKING
3124 vinfo(20)=
'mask_rho'
3127 vinfo(22)=
'coordinates'
3134 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3138# if defined FORWARD_MIXING && \
3139 (defined bvf_mixing || defined gls_mixing || \
3140 defined lmd_mixing || defined my25_mixing)
3151 vinfo(22)=
'coordinates'
3158 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
3159 & setfillval = .false.)
3172 vinfo(22)=
'coordinates'
3179 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
3180 & setfillval = .false.)
3195 vinfo(22)=
'coordinates'
3202 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
3203 & setfillval = .false.)
3207# if defined GLS_MIXING_NOT_YET || defined MY25_MIXING_NOT_YET
3218 vinfo(22)=
'coordinates'
3225 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
3226 & setfillval = .false.)
3235# if defined WRITE_WATER && defined MASKING
3236 vinfo(20)=
'mask_rho'
3238 vinfo(22)=
'coordinates'
3245 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
3258 vinfo(22)=
'coordinates'
3265 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
3266 & setfillval = .false.)
3274# if defined WRITE_WATER && defined MASKING
3275 vinfo(20)=
'mask_rho'
3278 vinfo(22)=
'coordinates'
3285 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
3288# ifdef GLS_MIXING_NOT_YET
3295# if defined WRITE_WATER && defined MASKING
3296 vinfo(20)=
'mask_rho'
3299 vinfo(22)=
'coordinates'
3306 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
3325 CALL wrt_info (ng, model,
tlm(ng)%pioFile, ncname)
3334 query :
IF (.not.ldef)
THEN
3341 WRITE (
stdout,60) trim(ncname)
3348 & piofile =
tlm(ng)%pioFile)
3354 & piofile =
tlm(ng)%pioFile)
3367 IF (trim(var_name(i)).eq.trim(
vname(1,
idtime)))
THEN
3373 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idpthr)))
THEN
3378 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idpthw)))
THEN
3384 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idfsur)))
THEN
3389 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idubar)))
THEN
3394 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvbar)))
THEN
3399# ifdef ADJUST_BOUNDARY
3400 ELSE IF (trim(var_name(i)).eq. &
3406 ELSE IF (trim(var_name(i)).eq. &
3412 ELSE IF (trim(var_name(i)).eq. &
3419# ifdef FORWARD_WRITE
3421 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrzet)))
THEN
3426 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idru2d)))
THEN
3431 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrv2d)))
THEN
3439 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idruct)))
THEN
3444 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrvct)))
THEN
3450 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idufx1)))
THEN
3455 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idufx2)))
THEN
3460 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvfx1)))
THEN
3465 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvfx2)))
THEN
3471 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idru3d)))
THEN
3476 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrv3d)))
THEN
3485 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iduvel)))
THEN
3490 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvvel)))
THEN
3495# ifdef ADJUST_BOUNDARY
3496 ELSE IF (trim(var_name(i)).eq. &
3502 ELSE IF (trim(var_name(i)).eq. &
3509# ifdef UV_DESTAGGERED
3510 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idu3de)))
THEN
3515 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idv3dn)))
THEN
3521 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iddano)))
THEN
3526# if defined FORWARD_MIXING && \
3527 (defined bvf_mixing || defined gls_mixing || \
3528 defined lmd_mixing || defined my25_mixing)
3529 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvvis)))
THEN
3534 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idtdif)))
THEN
3540 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idsdif)))
THEN
3546# if defined GLS_MIXING_NOT_YET || defined MY25_MIXING_NOT_YET
3547 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idmtke)))
THEN
3552 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvmkk)))
THEN
3557 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idmtls)))
THEN
3562 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvmls)))
THEN
3567# ifdef GLS_MIXING_NOT_YET
3568 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvmkp)))
THEN
3577# ifdef ADJUST_WSTRESS
3578 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idusms)))
THEN
3583 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvsms)))
THEN
3592 IF (trim(var_name(i)).eq.trim(
vname(1,
idtvar(itrc))))
THEN
3593 got_var(
idtvar(itrc))=.true.
3597# ifdef ADJUST_BOUNDARY
3598 ELSE IF (trim(var_name(i)).eq. &
3605# ifdef ADJUST_STFLUX
3606 ELSE IF (trim(var_name(i)).eq. &
3608 got_var(
idtsur(itrc))=.true.
3620 IF (.not.got_var(
idtime))
THEN
3658# ifdef ADJUST_BOUNDARY
3678# ifdef FORWARD_WRITE
3680 IF (.not.got_var(
idrzet))
THEN
3686 IF (.not.got_var(
idru2d))
THEN
3692 IF (.not.got_var(
idrv2d))
THEN
3701 IF (.not.got_var(
idruct))
THEN
3707 IF (.not.got_var(
idrvct))
THEN
3714 IF (.not.got_var(
idufx1))
THEN
3720 IF (.not.got_var(
idufx2))
THEN
3726 IF (.not.got_var(
idvfx1))
THEN
3732 IF (.not.got_var(
idvfx2))
THEN
3739 IF (.not.got_var(
idru3d))
THEN
3745 IF (.not.got_var(
idrv3d))
THEN
3767# ifdef ADJUST_BOUNDARY
3781# ifdef UV_DESTAGGERED
3801# if defined FORWARD_MIXING && \
3802 (defined bvf_mixing || defined gls_mixing || \
3803 defined lmd_mixing || defined my25_mixing)
3824# if defined GLS_MIXING_NOT_YET || defined MY25_MIXING_NOT_YET
3860# ifdef ADJUST_WSTRESS
3882# ifdef ADJUST_BOUNDARY
3891# ifdef ADJUST_STFLUX
3912 tlm(ng)%Rindex=min(
tlm(ng)%Rindex,rec_size)
3915 10
FORMAT (2x,
'TL_DEF_HIS_PIO - creating tangent file,',t56, &
3916 &
'Grid ',i2.2,
': ',a)
3917 20
FORMAT (2x,
'TL_DEF_HIS_PIO - inquiring tangent file,',t56, &
3918 &
'Grid ',i2.2,
': ',a)
3919 30
FORMAT (/,
' TL_DEF_HIS_PIO - unable to create tangent NetCDF', &
3921 40
FORMAT (
'tangent linear',1x,a)
3922 50
FORMAT (1pe11.4,1x,
'millimeter')
3923 60
FORMAT (/,
' TL_DEF_HIS_PIO - unable to open tangent NetCDF', &
3925 70
FORMAT (/,
' TL_DEF_HIS_PIO - unable to find variable: ',a,2x, &
3926 &
' in tangent NetCDF file: ',a)