119 logical,
intent(in) :: ldef
120 integer,
intent(in) :: ng, model
124 logical :: got_var(
nv)
126 integer,
parameter :: natt = 25
128 integer :: i, j, ifield, itrc, nvd3, nvd4, varid
129 integer :: recdim, status
130#ifdef ADJUST_BOUNDARY
131 integer :: iorjdim, brecdim
134 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
135#ifdef ADJUST_BOUNDARY
143 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
144# ifdef ADJUST_BOUNDARY
149 integer :: sp2dgrd(3)
154 character (len=256) :: ncname
155 character (len=MaxLen) :: vinfo(natt)
157 character (len=*),
parameter :: myfile = &
158 & __FILE__//
", def_his_nf90"
171 WRITE (
stdout,10) ng, trim(ncname)
173 WRITE (
stdout,20) ng, trim(ncname)
181 define :
IF (ldef)
THEN
194 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'xi_rho', &
198 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'xi_u', &
202 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'xi_v', &
206 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'xi_psi', &
210 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'eta_rho', &
214 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'eta_u', &
218 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'eta_v', &
222 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'eta_psi', &
226#ifdef ADJUST_BOUNDARY
227 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'IorJ', &
232#if defined WRITE_WATER && defined MASKING
233 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'xy_rho', &
237 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'xy_u', &
241 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'xy_v', &
247# if defined WRITE_WATER && defined MASKING
248 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'xyz_rho', &
252 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'xyz_u', &
256 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'xyz_v', &
260 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'xyz_w', &
261 &
iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
265 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'N', &
269 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
's_rho', &
273 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
's_w', &
274 &
n(ng)+1, dimids(10))
277 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'tracer', &
278 &
nt(ng), dimids(11))
282 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'NST', &
286 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'Nbed', &
290# if defined WRITE_WATER && defined MASKING
291 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'xybed', &
298 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'Nbands', &
302 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'Nphy', &
306 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'Nbac', &
310 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'Ndom', &
314 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'Nfec', &
320 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'boundary', &
325 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'Nstate', &
330#ifdef ADJUST_BOUNDARY
331 status=
def_dim(ng, model,
his(ng)%ncid, ncname,
'obc_adjust', &
332 &
nbrec(ng), dimids(31))
336 status=
def_dim(ng, model,
his(ng)%ncid, ncname, &
338 & nf90_unlimited, dimids(12))
342#ifdef ADJUST_BOUNDARY
348#if defined WRITE_WATER && defined MASKING
358#if defined WRITE_WATER && defined MASKING
376#ifdef ADJUST_BOUNDARY
393 sp2dgrd(1)=dimids( 4)
394 sp2dgrd(2)=dimids( 8)
395 sp2dgrd(3)=dimids(12)
400#if defined WRITE_WATER && defined MASKING
421#if defined WRITE_WATER && defined MASKING
443# if defined WRITE_WATER && defined MASKING
456# if defined WRITE_WATER && defined MASKING
487 CALL def_info (ng, model,
his(ng)%ncid, ncname, dimids)
498 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
499 vinfo( 4)=trim(
rclock%calendar)
503 &
nf_tout, 1, (/recdim/), aval, vinfo, ncname, &
504 & setparaccess = .true.)
511 vinfo( 1)=
'Ritz_rvalue'
512 vinfo( 2)=
'real Ritz eigenvalues'
514 & 1, (/recdim/), aval, vinfo, ncname, &
515 & setparaccess = .true.)
518 vinfo( 1)=
'Ritz_norm'
519 vinfo( 2)=
'Ritz eigenvectors Euclidean norm'
521 & 1, (/recdim/), aval, vinfo, ncname, &
522 & setparaccess = .true.)
538 vinfo(22)=
'coordinates'
541 &
nf_fout, nvd3, sp2dgrd, aval, vinfo, ncname, &
542 & setfillval = .false.)
555 vinfo(22)=
'coordinates'
558 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
559 & setfillval = .false.)
572 vinfo(22)=
'coordinates'
575 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname, &
576 & setfillval = .false.)
589 vinfo(22)=
'coordinates'
592 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname, &
593 & setfillval = .false.)
606# if defined WRITE_WATER && defined MASKING
610 vinfo(22)=
'coordinates'
613 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname, &
614 & setfillval = .false.)
626# if defined WRITE_WATER && defined MASKING
630 vinfo(22)=
'coordinates'
633 &
nf_fout, nvd4, u3dgrd, aval, vinfo, ncname, &
634 & setfillval = .false.)
646# if defined WRITE_WATER && defined MASKING
650 vinfo(22)=
'coordinates'
653 &
nf_fout, nvd4, v3dgrd, aval, vinfo, ncname, &
654 & setfillval = .false.)
666# if defined WRITE_WATER && defined MASKING
670 vinfo(22)=
'coordinates'
673 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
674 & setfillval = .false.)
687#if defined WRITE_WATER && defined MASKING
691 vinfo(22)=
'coordinates'
695 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
696 & setfillval = .false.)
698 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
702#if defined FORWARD_WRITE && defined FORWARD_RHS
709# if defined WRITE_WATER && defined MASKING
713 vinfo(22)=
'coordinates'
716 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
721#ifdef ADJUST_BOUNDARY
727 vinfo( 1)=
vname(1,ifield)
728 vinfo( 2)=
vname(2,ifield)
729 vinfo( 3)=
vname(3,ifield)
730 vinfo(14)=
vname(4,ifield)
732 vinfo(21)=
vname(6,ifield)
733 aval(5)=real(
iinfo(1,ifield,ng),r8)
734 status=
def_var(ng, model,
his(ng)%ncid,
his(ng)%Vid(ifield), &
735 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
736 & setfillval = .false.)
749#if defined WRITE_WATER && defined MASKING
753 vinfo(22)=
'coordinates'
756 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
767# if defined WRITE_WATER && defined MASKING
771 vinfo(22)=
'coordinates'
774 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
785# if defined WRITE_WATER && defined MASKING
789 vinfo(22)=
'coordinates'
792 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
801# if defined WRITE_WATER && defined MASKING
805 vinfo(22)=
'coordinates'
808 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
816# if defined WRITE_WATER && defined MASKING
820 vinfo(22)=
'coordinates'
823 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
829#ifdef ADJUST_BOUNDARY
835 vinfo( 1)=
vname(1,ifield)
836 vinfo( 2)=
vname(2,ifield)
837 vinfo( 3)=
vname(3,ifield)
838 vinfo(14)=
vname(4,ifield)
840 vinfo(21)=
vname(6,ifield)
841 aval(5)=real(
iinfo(1,ifield,ng),r8)
842 status=
def_var(ng, model,
his(ng)%ncid,
his(ng)%Vid(ifield), &
843 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
844 & setfillval = .false.)
857#if defined WRITE_WATER && defined MASKING
861 vinfo(22)=
'coordinates'
864 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
875# if defined WRITE_WATER && defined MASKING
879 vinfo(22)=
'coordinates'
882 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
893# if defined WRITE_WATER && defined MASKING
897 vinfo(22)=
'coordinates'
900 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
909# if defined WRITE_WATER && defined MASKING
913 vinfo(22)=
'coordinates'
916 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
924# if defined WRITE_WATER && defined MASKING
928 vinfo(22)=
'coordinates'
931 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
937#ifdef ADJUST_BOUNDARY
943 vinfo( 1)=
vname(1,ifield)
944 vinfo( 2)=
vname(2,ifield)
945 vinfo( 3)=
vname(3,ifield)
946 vinfo(14)=
vname(4,ifield)
948 vinfo(21)=
vname(6,ifield)
949 aval(5)=real(
iinfo(1,ifield,ng),r8)
950 status=
def_var(ng, model,
his(ng)%ncid,
his(ng)%Vid(ifield), &
951 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
952 & setfillval = .false.)
965#if defined WRITE_WATER && defined MASKING
969 vinfo(22)=
'coordinates'
972 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
984#if defined WRITE_WATER && defined MASKING
988 vinfo(22)=
'coordinates'
991 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1005# if defined WRITE_WATER && defined MASKING
1009 vinfo(22)=
'coordinates'
1012 &
nf_fout, nvd4, u3dgrd, aval, vinfo, ncname)
1015# if defined FORWARD_WRITE && defined FORWARD_RHS
1022# if defined WRITE_WATER && defined MASKING
1026 vinfo(22)=
'coordinates'
1029 &
nf_fout, nvd4, u3dgrd, aval, vinfo, ncname)
1034# ifdef ADJUST_BOUNDARY
1040 vinfo( 1)=
vname(1,ifield)
1041 vinfo( 2)=
vname(2,ifield)
1042 vinfo( 3)=
vname(3,ifield)
1043 vinfo(14)=
vname(4,ifield)
1045 vinfo(21)=
vname(6,ifield)
1046 aval(5)=real(
iinfo(1,ifield,ng),r8)
1047 status=
def_var(ng, model,
his(ng)%ncid,
his(ng)%Vid(ifield), &
1048 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
1049 & setfillval = .false.)
1062# if defined WRITE_WATER && defined MASKING
1066 vinfo(22)=
'coordinates'
1069 &
nf_fout, nvd4, v3dgrd, aval, vinfo, ncname)
1072# if defined FORWARD_WRITE && defined FORWARD_RHS
1079# if defined WRITE_WATER && defined MASKING
1083 vinfo(22)=
'coordinates'
1086 &
nf_fout, nvd4, v3dgrd, aval, vinfo, ncname)
1091# ifdef ADJUST_BOUNDARY
1097 vinfo( 1)=
vname(1,ifield)
1098 vinfo( 2)=
vname(2,ifield)
1099 vinfo( 3)=
vname(3,ifield)
1100 vinfo(14)=
vname(4,ifield)
1102 vinfo(21)=
vname(6,ifield)
1103 aval(5)=real(
iinfo(1,ifield,ng),r8)
1104 status=
def_var(ng, model,
his(ng)%ncid,
his(ng)%Vid(ifield), &
1105 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
1106 & setfillval = .false.)
1119# if defined WRITE_WATER && defined MASKING
1120 vinfo(20)=
'mask_rho'
1123 vinfo(22)=
'coordinates'
1126 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1138# if defined WRITE_WATER && defined MASKING
1139 vinfo(20)=
'mask_rho'
1142 vinfo(22)=
'coordinates'
1145 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1157# if defined WRITE_WATER && defined MASKING
1158 vinfo(20)=
'mask_rho'
1161 vinfo(22)=
'coordinates'
1164 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
1173 vinfo( 3)=
'meter second-1'
1176# if defined WRITE_WATER && defined MASKING
1177 vinfo(20)=
'mask_rho'
1180 vinfo(22)=
'coordinates'
1183 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
1187# ifdef OMEGA_IMPLICIT
1194 vinfo( 3)=
'meter second-1'
1197# if defined WRITE_WATER && defined MASKING
1198 vinfo(20)=
'mask_rho'
1201 vinfo(22)=
'coordinates'
1204 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
1220 IF (itrc.eq.
idsed(i))
THEN
1221 WRITE (vinfo(19),50) 1000.0_r8*
sd50(i,ng)
1225# if defined WRITE_WATER && defined MASKING
1226 vinfo(20)=
'mask_rho'
1229 vinfo(22)=
'coordinates'
1231 status=
def_var(ng, model,
his(ng)%ncid,
his(ng)%Tid(itrc), &
1232 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1237# ifdef ADJUST_BOUNDARY
1244 vinfo( 1)=
vname(1,ifield)
1245 vinfo( 2)=
vname(2,ifield)
1246 vinfo( 3)=
vname(3,ifield)
1247 vinfo(14)=
vname(4,ifield)
1251 IF (itrc.eq.
idsed(i))
THEN
1252 WRITE (vinfo(19),60) 1000.0_r8*
sd50(i,ng)
1256 vinfo(21)=
vname(6,ifield)
1257 aval(5)=real(
iinfo(1,ifield,ng),r8)
1258 status=
def_var(ng, model,
his(ng)%ncid,
his(ng)%Vid(ifield),&
1259 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
1260 & setfillval = .false.)
1274# if defined WRITE_WATER && defined MASKING
1275 vinfo(20)=
'mask_rho'
1278 vinfo(22)=
'coordinates'
1281 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1295# if defined WRITE_WATER && defined MASKING
1296 vinfo(20)=
'mask_rho'
1299 vinfo(22)=
'coordinates'
1302 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1316# if defined WRITE_WATER && defined MASKING
1317 vinfo(20)=
'mask_rho'
1320 vinfo(22)=
'coordinates'
1323 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1327# if defined FORWARD_WRITE && defined LMD_NONLOCAL
1338# if defined WRITE_WATER && defined MASKING
1339 vinfo(20)=
'mask_rho'
1342 vinfo(22)=
'coordinates'
1346 & nvd4, w3dgrd, aval, vinfo, ncname)
1360# if defined WRITE_WATER && defined MASKING
1361 vinfo(20)=
'mask_rho'
1364 vinfo(22)=
'coordinates'
1367 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1368 & setfillval = .false.)
1380# if defined WRITE_WATER && defined MASKING
1381 vinfo(20)=
'mask_rho'
1384 vinfo(22)=
'coordinates'
1387 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1388 & setfillval = .false.)
1402# if defined WRITE_WATER && defined MASKING
1403 vinfo(20)=
'mask_rho'
1406 vinfo(22)=
'coordinates'
1409 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1410 & setfillval = .false.)
1414# if defined GLS_MIXING || defined MY25_MIXING
1424# if defined WRITE_WATER && defined MASKING
1425 vinfo(20)=
'mask_rho'
1428 vinfo(22)=
'coordinates'
1431 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1432 & setfillval = .false.)
1435# ifdef FORWARD_WRITE
1442# if defined WRITE_WATER && defined MASKING
1443 vinfo(20)=
'mask_rho'
1446 vinfo(22)=
'coordinates'
1449 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
1462# if defined WRITE_WATER && defined MASKING
1463 vinfo(20)=
'mask_rho'
1466 vinfo(22)=
'coordinates'
1469 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
1470 & setfillval = .false.)
1473# ifdef FORWARD_WRITE
1480# if defined WRITE_WATER && defined MASKING
1481 vinfo(20)=
'mask_rho'
1484 vinfo(22)=
'coordinates'
1487 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
1490# if defined FORWARD_WRITE && defined GLS_MIXING
1497# if defined WRITE_WATER && defined MASKING
1498 vinfo(20)=
'mask_rho'
1501 vinfo(22)=
'coordinates'
1504 &
nf_fout, nvd4, w3dgrd, aval, vinfo, ncname)
1509# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
1519# if defined WRITE_WATER && defined MASKING
1520 vinfo(20)=
'mask_rho'
1523 vinfo(22)=
'coordinates'
1526 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1530# if defined BULK_FLUXES || defined ECOSIM
1540# if defined WRITE_WATER && defined MASKING
1541 vinfo(20)=
'mask_rho'
1544 vinfo(22)=
'coordinates'
1547 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1557# if defined WRITE_WATER && defined MASKING
1558 vinfo(20)=
'mask_rho'
1561 vinfo(22)=
'coordinates'
1564 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1576# if defined WRITE_WATER && defined MASKING
1577 vinfo(20)=
'mask_rho'
1580 vinfo(22)=
'coordinates'
1583 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1593# if defined WRITE_WATER && defined MASKING
1594 vinfo(20)=
'mask_rho'
1597 vinfo(22)=
'coordinates'
1600 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1612 IF (itrc.eq.
itemp)
THEN
1613 vinfo(11)=
'upward flux, cooling'
1614 vinfo(12)=
'downward flux, heating'
1615 ELSE IF (itrc.eq.
isalt)
THEN
1616 vinfo(11)=
'upward flux, freshening (net precipitation)'
1617 vinfo(12)=
'downward flux, salting (net evaporation)'
1621# if defined WRITE_WATER && defined MASKING
1622 vinfo(20)=
'mask_rho'
1625 vinfo(22)=
'coordinates'
1629 & nvd3, t2dgrd, aval, vinfo, ncname)
1634# if defined BULK_FLUXES || defined FRC_COUPLING
1642 vinfo(11)=
'upward flux, cooling'
1643 vinfo(12)=
'downward flux, heating'
1646# if defined WRITE_WATER && defined MASKING
1647 vinfo(20)=
'mask_rho'
1650 vinfo(22)=
'coordinates'
1653 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1663 vinfo(11)=
'upward flux, cooling'
1664 vinfo(12)=
'downward flux, heating'
1667# if defined WRITE_WATER && defined MASKING
1668 vinfo(20)=
'mask_rho'
1671 vinfo(22)=
'coordinates'
1674 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1684 vinfo(11)=
'upward flux, cooling'
1685 vinfo(12)=
'downward flux, heating'
1688# if defined WRITE_WATER && defined MASKING
1689 vinfo(20)=
'mask_rho'
1692 vinfo(22)=
'coordinates'
1695 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1700# if defined BULK_FLUXES
1710# if defined WRITE_WATER && defined MASKING
1711 vinfo(20)=
'mask_rho'
1714 vinfo(22)=
'coordinates'
1717 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1729 vinfo(11)=
'downward flux, freshening (condensation)'
1730 vinfo(12)=
'upward flux, salting (evaporation)'
1733# if defined WRITE_WATER && defined MASKING
1734 vinfo(20)=
'mask_rho'
1737 vinfo(22)=
'coordinates'
1740 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1750 vinfo(11)=
'upward flux, salting (NOT POSSIBLE)'
1751 vinfo(12)=
'downward flux, freshening (precipitation)'
1754# if defined WRITE_WATER && defined MASKING
1755 vinfo(20)=
'mask_rho'
1758 vinfo(22)=
'coordinates'
1761 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1773 vinfo(11)=
'upward flux, freshening (net precipitation)'
1774 vinfo(12)=
'downward flux, salting (net evaporation)'
1777# if defined WRITE_WATER && defined MASKING
1778 vinfo(20)=
'mask_rho'
1781 vinfo(22)=
'coordinates'
1784 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1796 vinfo(11)=
'upward flux, cooling'
1797 vinfo(12)=
'downward flux, heating'
1800# if defined WRITE_WATER && defined MASKING
1801 vinfo(20)=
'mask_rho'
1804 vinfo(22)=
'coordinates'
1807 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1821#if defined WRITE_WATER && defined MASKING
1825 vinfo(22)=
'coordinates'
1828 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
1840#if defined WRITE_WATER && defined MASKING
1844 vinfo(22)=
'coordinates'
1847 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
1859#if defined WRITE_WATER && defined MASKING
1863 vinfo(22)=
'coordinates'
1866 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
1878#if defined WRITE_WATER && defined MASKING
1882 vinfo(22)=
'coordinates'
1885 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
1889#if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
1896 & t2dgrd, u2dgrd, v2dgrd)
1900#if defined ICE_MODEL && defined SOLVE3D
1906 CALL ice_def_nf90 (ng, model, ldef,
hout,
his, &
1907 & t2dgrd, u2dgrd, v2dgrd)
1911#if defined SEDIMENT && defined SOLVE3D
1918 & t2dgrd, u2dgrd, v2dgrd, &
1923#if defined WEC_VF && defined SOLVE3D
1929 CALL wec_def_nf90 (ng, model, ldef,
hout,
his, &
1930 & t2dgrd, u2dgrd, v2dgrd, &
1931 & t3dgrd, u3dgrd, v3dgrd, w3dgrd)
1956 query :
IF (.not.ldef)
THEN
1963 WRITE (
stdout,60) trim(ncname)
1970 & ncid =
his(ng)%ncid)
1976 & ncid =
his(ng)%ncid)
2029#ifdef ADJUST_BOUNDARY
2099# ifdef ADJUST_BOUNDARY
2121# ifdef OMEGA_IMPLICIT
2148# if defined GLS_MIXING || defined MY25_MIXING
2156# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
2161# if defined BULK_FLUXES || defined ECOSIM
2175# if defined BULK_FLUXES || defined FRC_COUPLING
2224 got_var(
idtvar(itrc))=.true.
2226# ifdef ADJUST_BOUNDARY
2236 got_var(
idtsur(itrc))=.true.
2238# if defined FORWARD_WRITE && defined LMD_NONLOCAL
2241 got_var(
idghat(itrc))=.true.
2251 IF (.not.got_var(
idtime))
THEN
2258 IF (.not.got_var(
idpwet))
THEN
2264 IF (.not.got_var(
idrwet))
THEN
2270 IF (.not.got_var(
iduwet))
THEN
2276 IF (.not.got_var(
idvwet))
THEN
2327#ifdef ADJUST_BOUNDARY
2388 IF (.not.got_var(idrcvt).and.
hout(idrcvt,ng))
THEN
2448# ifdef ADJUST_BOUNDARY
2486# ifdef OMEGA_IMPLICIT
2536# if defined GLS_MIXING || defined MY25_MIXING
2550# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
2558# if defined BULK_FLUXES || defined ECOSIM
2584# if defined BULK_FLUXES || defined FRC_COUPLING
2673# ifdef ADJUST_BOUNDARY
2690# if defined FORWARD_WRITE && defined LMD_NONLOCAL
2701#if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
2710#if defined ICE_MODEL && defined SOLVE3D
2715 CALL ice_def_nf90 (ng, model, ldef,
hout,
his)
2719#if defined SEDIMENT && defined SOLVE3D
2728#if defined WEC_VF && defined SOLVE3D
2733 CALL wec_def_nf90 (ng, model, ldef,
hout,
his)
2749 10
FORMAT (2x,
'DEF_HIS_NF90 - creating history file,',t56, &
2750 &
'Grid ',i2.2,
': ',a)
2751 20
FORMAT (2x,
'DEF_HIS_NF90 - inquiring history file,',t56, &
2752 &
'Grid ',i2.2,
': ',a)
2753 30
FORMAT (/,
' DEF_HIS_NF90 - unable to create history NetCDF', &
2755 40
FORMAT (
'time dependent',1x,a)
2756 50
FORMAT (1pe11.4,1x,
'millimeter')
2757 60
FORMAT (/,
' DEF_HIS_NF90 - unable to open history NetCDF', &
2759 70
FORMAT (/,
' DEF_HIS_NF90 - unable to find variable: ',a,2x, &
2760 &
' in history NetCDF file: ',a)
2775 logical,
intent(in) :: ldef
2776 integer,
intent(in) :: ng, model
2780 logical :: got_var(
nv)
2782 integer,
parameter :: natt = 25
2784 integer :: i, j, ifield, itrc, nvd3, nvd4
2785 integer :: recdim, status
2786# ifdef ADJUST_BOUNDARY
2787 integer :: iorjdim, brecdim
2789 integer :: dimids(
ndimid)
2790 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
2791# ifdef ADJUST_BOUNDARY
2792 integer :: t2dobc(4)
2797 integer :: b3dgrd(4)
2799 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
2800# ifdef ADJUST_BOUNDARY
2801 integer :: t3dobc(5)
2805 integer :: sp2dgrd(3)
2810 character (len=256) :: ncname
2811 character (len=MaxLen) :: vinfo(natt)
2813 character (len=*),
parameter :: myfile = &
2814 & __FILE__//
", def_his_pio"
2816 TYPE (var_desc_t) :: vardesc
2829 WRITE (
stdout,10) ng, trim(ncname)
2831 WRITE (
stdout,20) ng, trim(ncname)
2839 define :
IF (ldef)
THEN
2852 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'xi_rho', &
2856 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'xi_u', &
2860 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'xi_v', &
2864 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'xi_psi', &
2868 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'eta_rho', &
2869 &
iobounds(ng)%eta_rho, dimids( 5))
2872 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'eta_u', &
2876 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'eta_v', &
2880 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'eta_psi', &
2881 &
iobounds(ng)%eta_psi, dimids( 8))
2884# ifdef ADJUST_BOUNDARY
2885 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'IorJ', &
2890# if defined WRITE_WATER && defined MASKING
2891 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'xy_rho', &
2895 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'xy_u', &
2899 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'xy_v', &
2905# if defined WRITE_WATER && defined MASKING
2906 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'xyz_rho', &
2907 &
iobounds(ng)%xy_rho*
n(ng), dimids(20))
2910 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'xyz_u', &
2914 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'xyz_v', &
2918 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'xyz_w', &
2919 &
iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
2923 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'N', &
2924 &
n(ng), dimids( 9))
2927 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
's_rho', &
2928 &
n(ng), dimids( 9))
2931 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
's_w', &
2932 &
n(ng)+1, dimids(10))
2935 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'tracer', &
2936 &
nt(ng), dimids(11))
2940 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'NST', &
2944 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'Nbed', &
2948# if defined WRITE_WATER && defined MASKING
2949 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'xybed', &
2956 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'Nbands', &
2960 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'Nphy', &
2964 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'Nbac', &
2968 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'Ndom', &
2972 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'Nfec', &
2978 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'boundary', &
2983 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'Nstate', &
2988# ifdef ADJUST_BOUNDARY
2989 status=
def_dim(ng, model,
his(ng)%pioFile, ncname,
'obc_adjust',&
2990 &
nbrec(ng), dimids(31))
2994 status=
def_dim(ng, model,
his(ng)%pioFile, ncname, &
2996 & pio_unlimited, dimids(12))
3000# ifdef ADJUST_BOUNDARY
3006# if defined WRITE_WATER && defined MASKING
3016# if defined WRITE_WATER && defined MASKING
3017 t2dgrd(1)=dimids(17)
3018 t2dgrd(2)=dimids(12)
3020 t3dgrd(1)=dimids(20)
3021 t3dgrd(2)=dimids(12)
3024 t2dgrd(1)=dimids( 1)
3025 t2dgrd(2)=dimids( 5)
3026 t2dgrd(3)=dimids(12)
3028 t3dgrd(1)=dimids( 1)
3029 t3dgrd(2)=dimids( 5)
3030 t3dgrd(3)=dimids( 9)
3031 t3dgrd(4)=dimids(12)
3034# ifdef ADJUST_BOUNDARY
3036 t2dobc(2)=dimids(14)
3038 t2dobc(4)=dimids(12)
3041 t3dobc(2)=dimids( 9)
3042 t3dobc(3)=dimids(14)
3044 t3dobc(5)=dimids(12)
3051 sp2dgrd(1)=dimids( 4)
3052 sp2dgrd(2)=dimids( 8)
3053 sp2dgrd(3)=dimids(12)
3058# if defined WRITE_WATER && defined MASKING
3059 u2dgrd(1)=dimids(18)
3060 u2dgrd(2)=dimids(12)
3062 u3dgrd(1)=dimids(21)
3063 u3dgrd(2)=dimids(12)
3066 u2dgrd(1)=dimids( 2)
3067 u2dgrd(2)=dimids( 6)
3068 u2dgrd(3)=dimids(12)
3070 u3dgrd(1)=dimids( 2)
3071 u3dgrd(2)=dimids( 6)
3072 u3dgrd(3)=dimids( 9)
3073 u3dgrd(4)=dimids(12)
3079# if defined WRITE_WATER && defined MASKING
3080 v2dgrd(1)=dimids(19)
3081 v2dgrd(2)=dimids(12)
3083 v3dgrd(1)=dimids(22)
3084 v3dgrd(2)=dimids(12)
3087 v2dgrd(1)=dimids( 3)
3088 v2dgrd(2)=dimids( 7)
3089 v2dgrd(3)=dimids(12)
3091 v3dgrd(1)=dimids( 3)
3092 v3dgrd(2)=dimids( 7)
3093 v3dgrd(3)=dimids( 9)
3094 v3dgrd(4)=dimids(12)
3101# if defined WRITE_WATER && defined MASKING
3102 w3dgrd(1)=dimids(23)
3103 w3dgrd(2)=dimids(12)
3105 w3dgrd(1)=dimids( 1)
3106 w3dgrd(2)=dimids( 5)
3107 w3dgrd(3)=dimids(10)
3108 w3dgrd(4)=dimids(12)
3114# if defined WRITE_WATER && defined MASKING
3115 b3dgrd(1)=dimids(24)
3116 b3dgrd(2)=dimids(12)
3118 b3dgrd(1)=dimids( 1)
3119 b3dgrd(2)=dimids( 5)
3120 b3dgrd(3)=dimids(16)
3121 b3dgrd(4)=dimids(12)
3133 DO j=1,len(vinfo(1))
3145 CALL def_info (ng, model,
his(ng)%pioFile, ncname, dimids)
3156 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
3157 vinfo( 4)=trim(
rclock%calendar)
3165 &
pio_tout, 1, (/recdim/), aval, vinfo, ncname, &
3166 & setparaccess = .true.)
3173 vinfo( 1)=
'Ritz_rvalue'
3174 vinfo( 2)=
'real Ritz eigenvalues'
3176 & 1, (/recdim/), aval, vinfo, ncname, &
3177 & setparaccess = .true.)
3180 vinfo( 1)=
'Ritz_norm'
3181 vinfo( 2)=
'Ritz eigenvectors Euclidean norm'
3183 & 1, (/recdim/), aval, vinfo, ncname, &
3184 & setparaccess = .true.)
3199 vinfo(22)=
'coordinates'
3206 &
pio_fout, nvd3, sp2dgrd, aval, vinfo, ncname, &
3207 & setfillval = .false.)
3220 vinfo(22)=
'coordinates'
3227 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
3228 & setfillval = .false.)
3241 vinfo(22)=
'coordinates'
3248 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname, &
3249 & setfillval = .false.)
3262 vinfo(22)=
'coordinates'
3269 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname, &
3270 & setfillval = .false.)
3283# if defined WRITE_WATER && defined MASKING
3284 vinfo(20)=
'mask_rho'
3287 vinfo(22)=
'coordinates'
3294 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname, &
3295 & setfillval = .false.)
3307# if defined WRITE_WATER && defined MASKING
3311 vinfo(22)=
'coordinates'
3318 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname, &
3319 & setfillval = .false.)
3331# if defined WRITE_WATER && defined MASKING
3335 vinfo(22)=
'coordinates'
3342 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname, &
3343 & setfillval = .false.)
3355# if defined WRITE_WATER && defined MASKING
3356 vinfo(20)=
'mask_rho'
3359 vinfo(22)=
'coordinates'
3366 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
3367 & setfillval = .false.)
3380# if defined WRITE_WATER && defined MASKING
3381 vinfo(20)=
'mask_rho'
3384 vinfo(22)=
'coordinates'
3392 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
3393 & setfillval = .false.)
3395 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3399# if defined FORWARD_WRITE && defined FORWARD_RHS
3406# if defined WRITE_WATER && defined MASKING
3407 vinfo(20)=
'mask_rho'
3410 vinfo(22)=
'coordinates'
3417 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3422# ifdef ADJUST_BOUNDARY
3428 vinfo( 1)=
vname(1,ifield)
3429 vinfo( 2)=
vname(2,ifield)
3430 vinfo( 3)=
vname(3,ifield)
3431 vinfo(14)=
vname(4,ifield)
3433 vinfo(21)=
vname(6,ifield)
3434 aval(5)=real(
iinfo(1,ifield,ng),r8)
3439 &
his(ng)%pioVar(ifield)%vd, &
3440 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
3441 & setfillval = .false.)
3454# if defined WRITE_WATER && defined MASKING
3458 vinfo(22)=
'coordinates'
3465 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3468# ifdef FORWARD_WRITE
3476# if defined WRITE_WATER && defined MASKING
3480 vinfo(22)=
'coordinates'
3487 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3498# if defined WRITE_WATER && defined MASKING
3502 vinfo(22)=
'coordinates'
3509 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3518# if defined WRITE_WATER && defined MASKING
3522 vinfo(22)=
'coordinates'
3529 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3537# if defined WRITE_WATER && defined MASKING
3541 vinfo(22)=
'coordinates'
3548 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3554# ifdef ADJUST_BOUNDARY
3560 vinfo( 1)=
vname(1,ifield)
3561 vinfo( 2)=
vname(2,ifield)
3562 vinfo( 3)=
vname(3,ifield)
3563 vinfo(14)=
vname(4,ifield)
3565 vinfo(21)=
vname(6,ifield)
3566 aval(5)=real(
iinfo(1,ifield,ng),r8)
3571 &
his(ng)%pioVar(ifield)%vd, &
3572 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
3573 & setfillval = .false.)
3586# if defined WRITE_WATER && defined MASKING
3590 vinfo(22)=
'coordinates'
3597 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3600# ifdef FORWARD_WRITE
3608# if defined WRITE_WATER && defined MASKING
3612 vinfo(22)=
'coordinates'
3619 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3630# if defined WRITE_WATER && defined MASKING
3634 vinfo(22)=
'coordinates'
3641 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3650# if defined WRITE_WATER && defined MASKING
3654 vinfo(22)=
'coordinates'
3661 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3669# if defined WRITE_WATER && defined MASKING
3673 vinfo(22)=
'coordinates'
3680 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3686# ifdef ADJUST_BOUNDARY
3692 vinfo( 1)=
vname(1,ifield)
3693 vinfo( 2)=
vname(2,ifield)
3694 vinfo( 3)=
vname(3,ifield)
3695 vinfo(14)=
vname(4,ifield)
3697 vinfo(21)=
vname(6,ifield)
3698 aval(5)=real(
iinfo(1,ifield,ng),r8)
3703 &
his(ng)%pioVar(ifield)%vd, &
3704 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
3705 & setfillval = .false.)
3718# if defined WRITE_WATER && defined MASKING
3719 vinfo(20)=
'mask_rho'
3722 vinfo(22)=
'coordinates'
3729 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3741# if defined WRITE_WATER && defined MASKING
3742 vinfo(20)=
'mask_rho'
3745 vinfo(22)=
'coordinates'
3752 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3766# if defined WRITE_WATER && defined MASKING
3770 vinfo(22)=
'coordinates'
3777 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
3780# if defined FORWARD_WRITE && defined FORWARD_RHS
3787# if defined WRITE_WATER && defined MASKING
3791 vinfo(22)=
'coordinates'
3798 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
3803# ifdef ADJUST_BOUNDARY
3809 vinfo( 1)=
vname(1,ifield)
3810 vinfo( 2)=
vname(2,ifield)
3811 vinfo( 3)=
vname(3,ifield)
3812 vinfo(14)=
vname(4,ifield)
3814 vinfo(21)=
vname(6,ifield)
3815 aval(5)=real(
iinfo(1,ifield,ng),r8)
3820 &
his(ng)%pioVar(ifield)%vd, &
3821 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
3822 & setfillval = .false.)
3835# if defined WRITE_WATER && defined MASKING
3839 vinfo(22)=
'coordinates'
3846 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
3849# if defined FORWARD_WRITE && defined FORWARD_RHS
3856# if defined WRITE_WATER && defined MASKING
3860 vinfo(22)=
'coordinates'
3867 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
3872# ifdef ADJUST_BOUNDARY
3878 vinfo( 1)=
vname(1,ifield)
3879 vinfo( 2)=
vname(2,ifield)
3880 vinfo( 3)=
vname(3,ifield)
3881 vinfo(14)=
vname(4,ifield)
3883 vinfo(21)=
vname(6,ifield)
3884 aval(5)=real(
iinfo(1,ifield,ng),r8)
3889 &
his(ng)%pioVar(ifield)%vd, &
3890 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
3891 & setfillval = .false.)
3904# if defined WRITE_WATER && defined MASKING
3905 vinfo(20)=
'mask_rho'
3908 vinfo(22)=
'coordinates'
3915 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3927# if defined WRITE_WATER && defined MASKING
3928 vinfo(20)=
'mask_rho'
3931 vinfo(22)=
'coordinates'
3938 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3950# if defined WRITE_WATER && defined MASKING
3951 vinfo(20)=
'mask_rho'
3954 vinfo(22)=
'coordinates'
3961 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
3970 vinfo( 3)=
'meter second-1'
3973# if defined WRITE_WATER && defined MASKING
3974 vinfo(20)=
'mask_rho'
3977 vinfo(22)=
'coordinates'
3984 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
3988# ifdef OMEGA_IMPLICIT
3995 vinfo( 3)=
'meter second-1'
3998# if defined WRITE_WATER && defined MASKING
3999 vinfo(20)=
'mask_rho'
4002 vinfo(22)=
'coordinates'
4009 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
4025 IF (itrc.eq.
idsed(i))
THEN
4026 WRITE (vinfo(19),50) 1000.0_r8*
sd50(i,ng)
4030# if defined WRITE_WATER && defined MASKING
4031 vinfo(20)=
'mask_rho'
4034 vinfo(22)=
'coordinates'
4040 &
his(ng)%pioTrc(itrc)%vd, &
4041 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
4046# ifdef ADJUST_BOUNDARY
4053 vinfo( 1)=
vname(1,ifield)
4054 vinfo( 2)=
vname(2,ifield)
4055 vinfo( 3)=
vname(3,ifield)
4056 vinfo(14)=
vname(4,ifield)
4060 IF (itrc.eq.
idsed(i))
THEN
4061 WRITE (vinfo(19),60) 1000.0_r8*
sd50(i,ng)
4065 vinfo(21)=
vname(6,ifield)
4066 aval(5)=real(
iinfo(1,ifield,ng),r8)
4071 &
his(ng)%pioVar(ifield)%vd, &
4072 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
4073 & setfillval = .false.)
4087# if defined WRITE_WATER && defined MASKING
4088 vinfo(20)=
'mask_rho'
4091 vinfo(22)=
'coordinates'
4098 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
4112# if defined WRITE_WATER && defined MASKING
4113 vinfo(20)=
'mask_rho'
4116 vinfo(22)=
'coordinates'
4123 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4137# if defined WRITE_WATER && defined MASKING
4138 vinfo(20)=
'mask_rho'
4141 vinfo(22)=
'coordinates'
4148 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4152# if defined FORWARD_WRITE && defined LMD_NONLOCAL
4163# if defined WRITE_WATER && defined MASKING
4164 vinfo(20)=
'mask_rho'
4167 vinfo(22)=
'coordinates'
4174 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
4188# if defined WRITE_WATER && defined MASKING
4189 vinfo(20)=
'mask_rho'
4192 vinfo(22)=
'coordinates'
4199 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4200 & setfillval = .false.)
4212# if defined WRITE_WATER && defined MASKING
4213 vinfo(20)=
'mask_rho'
4216 vinfo(22)=
'coordinates'
4223 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4224 & setfillval = .false.)
4238# if defined WRITE_WATER && defined MASKING
4239 vinfo(20)=
'mask_rho'
4242 vinfo(22)=
'coordinates'
4249 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4250 & setfillval = .false.)
4254# if defined GLS_MIXING || defined MY25_MIXING
4264# if defined WRITE_WATER && defined MASKING
4265 vinfo(20)=
'mask_rho'
4268 vinfo(22)=
'coordinates'
4275 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4276 & setfillval = .false.)
4279# ifdef FORWARD_WRITE
4286# if defined WRITE_WATER && defined MASKING
4287 vinfo(20)=
'mask_rho'
4290 vinfo(22)=
'coordinates'
4297 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
4310# if defined WRITE_WATER && defined MASKING
4311 vinfo(20)=
'mask_rho'
4314 vinfo(22)=
'coordinates'
4321 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4322 & setfillval = .false.)
4325# ifdef FORWARD_WRITE
4332# if defined WRITE_WATER && defined MASKING
4333 vinfo(20)=
'mask_rho'
4336 vinfo(22)=
'coordinates'
4343 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
4346# if defined FORWARD_WRITE && defined GLS_MIXING
4353# if defined WRITE_WATER && defined MASKING
4354 vinfo(20)=
'mask_rho'
4357 vinfo(22)=
'coordinates'
4364 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
4369# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
4379# if defined WRITE_WATER && defined MASKING
4380 vinfo(20)=
'mask_rho'
4383 vinfo(22)=
'coordinates'
4390 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4394# if defined BULK_FLUXES || defined ECOSIM
4404# if defined WRITE_WATER && defined MASKING
4405 vinfo(20)=
'mask_rho'
4408 vinfo(22)=
'coordinates'
4415 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4425# if defined WRITE_WATER && defined MASKING
4426 vinfo(20)=
'mask_rho'
4429 vinfo(22)=
'coordinates'
4436 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4448# if defined WRITE_WATER && defined MASKING
4449 vinfo(20)=
'mask_rho'
4452 vinfo(22)=
'coordinates'
4459 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4469# if defined WRITE_WATER && defined MASKING
4470 vinfo(20)=
'mask_rho'
4473 vinfo(22)=
'coordinates'
4480 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4492 IF (itrc.eq.
itemp)
THEN
4493 vinfo(11)=
'upward flux, cooling'
4494 vinfo(12)=
'downward flux, heating'
4495 ELSE IF (itrc.eq.
isalt)
THEN
4496 vinfo(11)=
'upward flux, freshening (net precipitation)'
4497 vinfo(12)=
'downward flux, salting (net evaporation)'
4501# if defined WRITE_WATER && defined MASKING
4502 vinfo(20)=
'mask_rho'
4505 vinfo(22)=
'coordinates'
4512 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4517# if defined BULK_FLUXES || defined FRC_COUPLING
4525 vinfo(11)=
'upward flux, cooling'
4526 vinfo(12)=
'downward flux, heating'
4529# if defined WRITE_WATER && defined MASKING
4530 vinfo(20)=
'mask_rho'
4533 vinfo(22)=
'coordinates'
4540 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4550 vinfo(11)=
'upward flux, cooling'
4551 vinfo(12)=
'downward flux, heating'
4554# if defined WRITE_WATER && defined MASKING
4555 vinfo(20)=
'mask_rho'
4558 vinfo(22)=
'coordinates'
4565 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4575 vinfo(11)=
'upward flux, cooling'
4576 vinfo(12)=
'downward flux, heating'
4579# if defined WRITE_WATER && defined MASKING
4580 vinfo(20)=
'mask_rho'
4583 vinfo(22)=
'coordinates'
4590 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4595# if defined BULK_FLUXES
4605# if defined WRITE_WATER && defined MASKING
4606 vinfo(20)=
'mask_rho'
4609 vinfo(22)=
'coordinates'
4616 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4628 vinfo(11)=
'downward flux, freshening (condensation)'
4629 vinfo(12)=
'upward flux, salting (evaporation)'
4632# if defined WRITE_WATER && defined MASKING
4633 vinfo(20)=
'mask_rho'
4636 vinfo(22)=
'coordinates'
4643 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4653 vinfo(11)=
'upward flux, salting (NOT POSSIBLE)'
4654 vinfo(12)=
'downward flux, freshening (precipitation)'
4657# if defined WRITE_WATER && defined MASKING
4658 vinfo(20)=
'mask_rho'
4661 vinfo(22)=
'coordinates'
4668 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4680 vinfo(11)=
'upward flux, freshening (net precipitation)'
4681 vinfo(12)=
'downward flux, salting (net evaporation)'
4684# if defined WRITE_WATER && defined MASKING
4685 vinfo(20)=
'mask_rho'
4688 vinfo(22)=
'coordinates'
4695 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4707 vinfo(11)=
'upward flux, cooling'
4708 vinfo(12)=
'downward flux, heating'
4711# if defined WRITE_WATER && defined MASKING
4712 vinfo(20)=
'mask_rho'
4715 vinfo(22)=
'coordinates'
4722 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4736# if defined WRITE_WATER && defined MASKING
4740 vinfo(22)=
'coordinates'
4747 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
4759# if defined WRITE_WATER && defined MASKING
4763 vinfo(22)=
'coordinates'
4770 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
4782# if defined WRITE_WATER && defined MASKING
4786 vinfo(22)=
'coordinates'
4793 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
4805# if defined WRITE_WATER && defined MASKING
4809 vinfo(22)=
'coordinates'
4816 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
4820# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
4827 & t2dgrd, u2dgrd, v2dgrd)
4831# if defined ICE_MODEL && defined SOLVE3D
4837 CALL ice_def_pio (ng, model, ldef,
hout,
his, &
4838 & t2dgrd, u2dgrd, v2dgrd)
4842# if defined SEDIMENT && defined SOLVE3D
4849 & t2dgrd, u2dgrd, v2dgrd)
4853# if defined WEC_VF && defined SOLVE3D
4859 CALL wec_def_pio (ng, model, ldef,
hout,
his, &
4860 & t2dgrd, u2dgrd, v2dgrd, &
4861 & t3dgrd, u3dgrd, v3dgrd, w3dgrd)
4876 CALL wrt_info (ng, model,
his(ng)%pioFile, ncname)
4885 query :
IF (.not.ldef)
THEN
4892 WRITE (
stdout,60) trim(ncname)
4899 & piofile =
his(ng)%pioFile)
4905 & piofile =
his(ng)%pioFile)
4918 IF (trim(var_name(i)).eq.trim(
vname(1,
idtime)))
THEN
4924 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idpwet)))
THEN
4929 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrwet)))
THEN
4934 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iduwet)))
THEN
4939 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvwet)))
THEN
4946 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idpthr)))
THEN
4951 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idpthu)))
THEN
4956 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idpthv)))
THEN
4961 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idpthw)))
THEN
4967 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idfsur)))
THEN
4972 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idubar)))
THEN
4977 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvbar)))
THEN
4982# ifdef ADJUST_BOUNDARY
4983 ELSE IF (trim(var_name(i)).eq. &
4989 ELSE IF (trim(var_name(i)).eq. &
4995 ELSE IF (trim(var_name(i)).eq. &
5002 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idu2de)))
THEN
5007 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idv2dn)))
THEN
5012# ifdef FORWARD_WRITE
5014 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrzet)))
THEN
5019 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idru2d)))
THEN
5024 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrv2d)))
THEN
5032 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idruct)))
THEN
5037 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrvct)))
THEN
5043 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idufx1)))
THEN
5048 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idufx2)))
THEN
5053 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvfx1)))
THEN
5058 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvfx2)))
THEN
5064 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idru3d)))
THEN
5069 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrv3d)))
THEN
5078 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iduvel)))
THEN
5083 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvvel)))
THEN
5088# ifdef ADJUST_BOUNDARY
5089 ELSE IF (trim(var_name(i)).eq. &
5095 ELSE IF (trim(var_name(i)).eq. &
5102 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idu3de)))
THEN
5107 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idv3dn)))
THEN
5112 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idwvel)))
THEN
5117 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idovel)))
THEN
5122# ifdef OMEGA_IMPLICIT
5123 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idovil)))
THEN
5129 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iddano)))
THEN
5135 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idhsbl)))
THEN
5142 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idhbbl)))
THEN
5148 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvvis)))
THEN
5153 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idtdif)))
THEN
5158 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idsdif)))
THEN
5163# if defined GLS_MIXING || defined MY25_MIXING
5164 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idmtke)))
THEN
5169 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idmtls)))
THEN
5175# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
5176 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idpair)))
THEN
5182# if defined BULK_FLUXES || defined ECOSIM
5183 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iduair)))
THEN
5188 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvair)))
THEN
5193 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iduaie)))
THEN
5198 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvain)))
THEN
5204# if defined BULK_FLUXES || defined FRC_COUPLING
5205 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idlhea)))
THEN
5210 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idshea)))
THEN
5215 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idlrad)))
THEN
5222 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idtair)))
THEN
5228 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idevap)))
THEN
5233 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrain)))
THEN
5240 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idempf)))
THEN
5246 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idsrad)))
THEN
5253 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idusms)))
THEN
5258 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvsms)))
THEN
5263 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idubms)))
THEN
5268 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvbms)))
THEN
5276 IF (trim(var_name(i)).eq.trim(
vname(1,
idtvar(itrc))))
THEN
5277 got_var(
idtvar(itrc))=.true.
5281# ifdef ADJUST_BOUNDARY
5282 ELSE IF (trim(var_name(i)).eq. &
5292 IF (trim(var_name(i)).eq.trim(
vname(1,
idtsur(itrc))))
THEN
5293 got_var(
idtsur(itrc))=.true.
5297# if defined FORWARD_WRITE && defined LMD_NONLOCAL
5298 ELSE IF (trim(var_name(i)).eq. &
5300 got_var(
idghat(itrc))=.true.
5312 IF (.not.got_var(
idtime))
THEN
5319 IF (.not.got_var(
idpwet))
THEN
5325 IF (.not.got_var(
idrwet))
THEN
5331 IF (.not.got_var(
iduwet))
THEN
5337 IF (.not.got_var(
idvwet))
THEN
5388# ifdef ADJUST_BOUNDARY
5420# ifdef FORWARD_WRITE
5449 IF (.not.got_var(idrcvt).and.
hout(idrcvt,ng))
THEN
5509# ifdef ADJUST_BOUNDARY
5547# ifdef OMEGA_IMPLICIT
5597# if defined GLS_MIXING || defined MY25_MIXING
5611# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
5619# if defined BULK_FLUXES || defined ECOSIM
5645# if defined BULK_FLUXES || defined FRC_COUPLING
5734# ifdef ADJUST_BOUNDARY
5751# if defined FORWARD_WRITE && defined LMD_NONLOCAL
5762# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
5771# if defined ICE_MODEL && defined SOLVE3D
5776 CALL ice_def_pio (ng, model, ldef,
hout,
his)
5780# if defined SEDIMENT && defined SOLVE3D
5789# if defined WEC || defined WEC_VF
5794 CALL wec_def_pio (ng, model, ldef,
hout,
his)
5807 his(ng)%Rindex=min(
his(ng)%Rindex,rec_size)
5810 10
FORMAT (2x,
'DEF_HIS_PIO - creating history file,',t56, &
5811 &
'Grid ',i2.2,
': ',a)
5812 20
FORMAT (2x,
'DEF_HIS_PIO - inquiring history file,',t56, &
5813 &
'Grid ',i2.2,
': ',a)
5814 30
FORMAT (/,
' DEF_HIS_PIO - unable to create history NetCDF', &
5816 40
FORMAT (
'time dependent',1x,a)
5817 50
FORMAT (1pe11.4,1x,
'millimeter')
5818 60
FORMAT (/,
' DEF_HIS_PIO - unable to open history NetCDF file: ',a)
5819 70
FORMAT (/,
' DEF_HIS_PIO - unable to find variable: ',a,2x, &
5820 &
' in history NetCDF file: ',a)