104 integer,
intent(in) :: ng, model
108 logical :: ldefine, got_var(
nv)
110 integer,
parameter :: natt = 25
112 integer :: i, j, nvd3, nvd4, nvd5
113 integer :: recdim, status, varid
116 integer :: r2dgrd(4), ru2dgrd(4), rv2dgrd(4)
117 integer :: sp2dgrd(3), sr2dgrd(3), su2dgrd(3), sv2dgrd(3)
118 integer :: sr3dgrd(4), su3dgrd(4), sv3dgrd(4)
119 integer :: t2dgrd(4), u2dgrd(4), v2dgrd(4)
124 integer :: k3dgrd(5), t3dgrd(5)
125 integer :: r3dgrd(4), ru3dgrd(5), rv3dgrd(5)
126 integer :: u3dgrd(5), v3dgrd(5), w3dgrd(4)
131 character (len=256) :: ncname
132 character (len=MaxLen) :: vinfo(natt)
134 character (len=*),
parameter :: myfile = &
135 & __FILE__//
", def_rst_nf90"
151 & ((
nrrec(ng).ne.0).and. &
152 & (trim(ncname).ne.trim(
ini(ng)%name))))
THEN
158 WRITE (
stdout,10) ng, trim(ncname)
160 WRITE (
stdout,20) ng, trim(ncname)
168 define :
IF (ldefine)
THEN
181 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'xi_rho', &
185 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'xi_u', &
189 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'xi_v', &
193 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'xi_psi', &
197 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'eta_rho', &
201 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'eta_u', &
205 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'eta_v', &
209 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'eta_psi', &
213#if !defined PERFECT_RESTART && \
214 (defined write_water && defined masking)
215 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'xy_rho', &
219 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'xy_u', &
223 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'xy_v', &
229# if !defined PERFECT_RESTART && \
230 (defined write_water && defined masking)
231 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'xyz_rho', &
235 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'xyz_u', &
239 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'xyz_v', &
243 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'xyz_w', &
244 &
iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
248 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'N', &
252 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
's_rho', &
256 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
's_w', &
257 &
n(ng)+1, dimids(10))
260 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'tracer', &
261 &
nt(ng), dimids(11))
265 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'NST', &
269 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'Nbed', &
273# if !defined PERFECT_RESTART && \
274 (defined write_water && defined masking)
275 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'xybed', &
282 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'Nbands', &
286 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'Nphy', &
290 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'Nbac', &
294 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'Ndom', &
298 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'Nfec', &
304 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'boundary', &
309 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'Nstate', &
314#ifdef PERFECT_RESTART
315 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'two', &
319 status=
def_dim(ng, model,
rst(ng)%ncid, ncname,
'three', &
324 status=
def_dim(ng, model,
rst(ng)%ncid, ncname, &
326 & nf90_unlimited, dimids(12))
333#if !defined PERFECT_RESTART && \
334 (defined write_water && defined masking)
346#if !defined PERFECT_RESTART && \
347 (defined write_water && defined masking)
350 sr2dgrd(1)=dimids(17)
351 sr2dgrd(2)=dimids(12)
361 sr2dgrd(1)=dimids( 1)
362 sr2dgrd(2)=dimids( 5)
363 sr2dgrd(3)=dimids(12)
364# ifdef PERFECT_RESTART
377# ifdef PERFECT_RESTART
389 sp2dgrd(1)=dimids( 4)
390 sp2dgrd(2)=dimids( 8)
391 sp2dgrd(3)=dimids(12)
395#if !defined PERFECT_RESTART && \
396 (defined write_water && defined masking)
406# ifdef PERFECT_RESTART
416# ifdef PERFECT_RESTART
427#if !defined PERFECT_RESTART && \
428 (defined write_water && defined masking)
438# ifdef PERFECT_RESTART
448# ifdef PERFECT_RESTART
456#ifdef PERFECT_RESTART
460# if !defined PERFECT_RESTART && \
461 (defined write_water && defined masking)
473# if !defined PERFECT_RESTART && \
474 (defined write_water && defined masking)
475 ru2dgrd(1)=dimids(18)
476 ru2dgrd(2)=dimids(12)
478 ru2dgrd(1)=dimids(21)
479 ru2dgrd(2)=dimids(12)
482 ru2dgrd(1)=dimids( 2)
483 ru2dgrd(2)=dimids( 6)
484 ru2dgrd(3)=dimids(30)
485 ru2dgrd(4)=dimids(12)
487 ru3dgrd(1)=dimids( 2)
488 ru3dgrd(2)=dimids( 6)
489 ru3dgrd(3)=dimids(10)
490 ru3dgrd(4)=dimids(30)
491 ru3dgrd(5)=dimids(12)
497# if !defined PERFECT_RESTART && \
498 (defined write_water && defined masking)
499 rv2dgrd(1)=dimids(19)
500 rv2dgrd(2)=dimids(12)
502 rv3dgrd(1)=dimids(22)
503 rv3dgrd(2)=dimids(12)
506 rv2dgrd(1)=dimids( 3)
507 rv2dgrd(2)=dimids( 7)
508 rv2dgrd(3)=dimids(30)
509 rv2dgrd(4)=dimids(12)
511 rv3dgrd(1)=dimids( 3)
512 rv3dgrd(2)=dimids( 7)
513 rv3dgrd(3)=dimids(10)
514 rv3dgrd(4)=dimids(30)
515 rv3dgrd(5)=dimids(12)
523# if !defined PERFECT_RESTART && \
524 (defined write_water && defined masking)
527# ifdef PERFECT_RESTART
536# ifdef PERFECT_RESTART
548#if !defined PERFECT_RESTART && \
549 (defined write_water && defined masking)
550 su2dgrd(1)=dimids(18)
551 su2dgrd(2)=dimids(12)
552 sv2dgrd(1)=dimids(19)
553 sv2dgrd(2)=dimids(12)
555 su2dgrd(1)=dimids( 2)
556 su2dgrd(2)=dimids( 6)
557 su2dgrd(3)=dimids(12)
558 sv2dgrd(1)=dimids( 3)
559 sv2dgrd(2)=dimids( 7)
560 sv2dgrd(3)=dimids(12)
563# if !defined PERFECT_RESTART && \
564 (defined write_water && defined masking)
565 sr3dgrd(1)=dimids(24)
566 sr3dgrd(2)=dimids(12)
567 su3dgrd(1)=dimids(21)
568 su3dgrd(2)=dimids(12)
569 sv3dgrd(1)=dimids(22)
570 sv3dgrd(2)=dimids(12)
572 sr3dgrd(1)=dimids( 1)
573 sr3dgrd(2)=dimids( 5)
574 sr3dgrd(3)=dimids(16)
575 sr3dgrd(4)=dimids(12)
576 su3dgrd(1)=dimids( 2)
577 su3dgrd(2)=dimids( 6)
578 su3dgrd(3)=dimids( 9)
579 su3dgrd(4)=dimids(12)
580 sv3dgrd(1)=dimids( 3)
581 sv3dgrd(2)=dimids( 7)
582 sv3dgrd(3)=dimids( 9)
583 sv3dgrd(4)=dimids(12)
606 CALL def_info (ng, model,
rst(ng)%ncid, ncname, dimids)
613#ifdef PERFECT_RESTART
619 vinfo( 2)=
'3D equations time level index, nstp'
620 status=
def_var(ng, model,
rst(ng)%ncid, varid, nf90_int, &
621 & 1, (/recdim/), aval, vinfo, ncname, &
622 & setparaccess = .true.)
626 vinfo( 2)=
'3D equations time level index, nrhs'
627 status=
def_var(ng, model,
rst(ng)%ncid, varid, nf90_int, &
628 & 1, (/recdim/), aval, vinfo, ncname, &
629 & setparaccess = .true.)
633 vinfo( 2)=
'3D equations time level index, nnew'
634 status=
def_var(ng, model,
rst(ng)%ncid, varid, nf90_int, &
635 & 1, (/recdim/), aval, vinfo, ncname, &
636 & setparaccess = .true.)
640 vinfo( 2)=
'3D equations time level index, kstp'
641 status=
def_var(ng, model,
rst(ng)%ncid, varid, nf90_int, &
642 & 1, (/recdim/), aval, vinfo, ncname, &
643 & setparaccess = .true.)
647 vinfo( 2)=
'3D equations time level index, krhs'
648 status=
def_var(ng, model,
rst(ng)%ncid, varid, nf90_int, &
649 & 1, (/recdim/), aval, vinfo, ncname, &
650 & setparaccess = .true.)
654 vinfo( 2)=
'3D equations time level index, knew'
655 status=
def_var(ng, model,
rst(ng)%ncid, varid, nf90_int, &
656 & 1, (/recdim/), aval, vinfo, ncname, &
657 & setparaccess = .true.)
665 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
666 vinfo( 4)=trim(
rclock%calendar)
670 &
nf_tout, 1, (/recdim/), aval, vinfo, ncname, &
671 & setparaccess = .true.)
686 vinfo(22)=
'coordinates'
689 &
nf_frst, nvd3, sp2dgrd, aval, vinfo, ncname, &
690 & setfillval = .false.)
703 vinfo(22)=
'coordinates'
706 &
nf_frst, nvd3, sr2dgrd, aval, vinfo, ncname, &
707 & setfillval = .false.)
720 vinfo(22)=
'coordinates'
723 &
nf_frst, nvd3, su2dgrd, aval, vinfo, ncname, &
724 & setfillval = .false.)
737 vinfo(22)=
'coordinates'
740 &
nf_frst, nvd3, sv2dgrd, aval, vinfo, ncname, &
741 & setfillval = .false.)
744#if defined SEDIMENT && defined SED_MORPH
754 vinfo(22)=
'coordinates'
757 &
nf_frst, nvd3, t2dgrd, aval, vinfo, ncname, &
758 & setfillval = .false.)
769#if defined WRITE_WATER && defined MASKING
770# if !defined WET_DRY && defined PERFECT_RESTART
771 vinfo(24)=
'_FillValue'
778 vinfo(22)=
'coordinates'
780#ifdef PERFECT_RESTART
783 &
nf_frst, nvd4, t2dgrd, aval, vinfo, ncname, &
784 & setfillval = .false.)
786 &
nf_frst, nvd4, t2dgrd, aval, vinfo, ncname)
791 &
nf_frst, nvd3, t2dgrd, aval, vinfo, ncname, &
792 & setfillval = .false.)
794 &
nf_frst, nvd3, t2dgrd, aval, vinfo, ncname)
800#ifdef PERFECT_RESTART
809# if defined WRITE_WATER && defined MASKING
810# if defined PERFECT_RESTART
811 vinfo(24)=
'_FillValue'
818 vinfo(22)=
'coordinates'
821 &
nf_frst, nvd4, r2dgrd, aval, vinfo, ncname)
832#if defined WRITE_WATER && defined MASKING
833# if defined PERFECT_RESTART
834 vinfo(24)=
'_FillValue'
841 vinfo(22)=
'coordinates'
843#ifdef PERFECT_RESTART
845 &
nf_frst, nvd4, u2dgrd, aval, vinfo, ncname)
848 &
nf_frst, nvd3, u2dgrd, aval, vinfo, ncname)
852#ifdef PERFECT_RESTART
861# if defined WRITE_WATER && defined MASKING
862# if defined PERFECT_RESTART
863 vinfo(24)=
'_FillValue'
870 vinfo(22)=
'coordinates'
873 &
nf_frst, nvd4, ru2dgrd, aval, vinfo, ncname)
884#if defined WRITE_WATER && defined MASKING
885# if defined PERFECT_RESTART
886 vinfo(24)=
'_FillValue'
893 vinfo(22)=
'coordinates'
895#ifdef PERFECT_RESTART
897 &
nf_frst, nvd4, v2dgrd, aval, vinfo, ncname)
900 &
nf_frst, nvd3, v2dgrd, aval, vinfo, ncname)
904#ifdef PERFECT_RESTART
913# if defined WRITE_WATER && defined MASKING
914# if defined PERFECT_RESTART
915 vinfo(24)=
'_FillValue'
922 vinfo(22)=
'coordinates'
925 &
nf_frst, nvd4, rv2dgrd, aval, vinfo, ncname)
937# if defined WRITE_WATER && defined MASKING
938# if defined PERFECT_RESTART
939 vinfo(24)=
'_FillValue'
946 vinfo(22)=
'coordinates'
948# ifdef PERFECT_RESTART
950 &
nf_frst, nvd5, u3dgrd, aval, vinfo, ncname)
953 &
nf_frst, nvd4, u3dgrd, aval, vinfo, ncname)
957# ifdef PERFECT_RESTART
969# if defined WRITE_WATER && defined MASKING
970# if defined PERFECT_RESTART
971 vinfo(24)=
'_FillValue'
978 vinfo(22)=
'coordinates'
981 &
nf_frst, nvd5, ru3dgrd, aval, vinfo, ncname)
992# if defined WRITE_WATER && defined MASKING
993# if defined PERFECT_RESTART
994 vinfo(24)=
'_FillValue'
1001 vinfo(22)=
'coordinates'
1003# ifdef PERFECT_RESTART
1005 &
nf_frst, nvd5, v3dgrd, aval, vinfo, ncname)
1008 &
nf_frst, nvd4, v3dgrd, aval, vinfo, ncname)
1012# ifdef PERFECT_RESTART
1024# if defined WRITE_WATER && defined MASKING
1025# if defined PERFECT_RESTART
1026 vinfo(24)=
'_FillValue'
1033 vinfo(22)=
'coordinates'
1036 &
nf_frst, nvd5, rv3dgrd, aval, vinfo, ncname)
1050 IF (itrc.eq.
idsed(i))
THEN
1051 WRITE (vinfo(19),40) 1000.0_r8*
sd50(i,ng)
1055# if defined WRITE_WATER && defined MASKING
1056# if defined PERFECT_RESTART
1057 vinfo(24)=
'_FillValue'
1060 vinfo(20)=
'mask_rho'
1064 vinfo(22)=
'coordinates'
1066# ifdef PERFECT_RESTART
1067 status=
def_var(ng, model,
rst(ng)%ncid,
rst(ng)%Tid(itrc), &
1068 &
nf_frst, nvd5, t3dgrd, aval, vinfo, ncname)
1070 status=
def_var(ng, model,
rst(ng)%ncid,
rst(ng)%Tid(itrc), &
1071 &
nf_frst, nvd4, t3dgrd, aval, vinfo, ncname)
1083# if defined WRITE_WATER && defined MASKING
1084# if defined PERFECT_RESTART
1085 vinfo(24)=
'_FillValue'
1088 vinfo(20)=
'mask_rho'
1092 vinfo(22)=
'coordinates'
1095 &
nf_frst, nvd4, r3dgrd, aval, vinfo, ncname)
1107# if defined WRITE_WATER && defined MASKING
1108# if defined PERFECT_RESTART
1109 vinfo(24)=
'_FillValue'
1112 vinfo(20)=
'mask_rho'
1116 vinfo(22)=
'coordinates'
1119 &
nf_frst, nvd3, sr2dgrd, aval, vinfo, ncname)
1132# if defined WRITE_WATER && defined MASKING
1133# if defined PERFECT_RESTART
1134 vinfo(24)=
'_FillValue'
1137 vinfo(20)=
'mask_rho'
1141 vinfo(22)=
'coordinates'
1144 &
nf_frst, nvd3, sr2dgrd, aval, vinfo, ncname)
1147# if defined PERFECT_RESTART && defined LMD_NONLOCAL
1157# if defined WRITE_WATER && defined MASKING
1158 vinfo(20)=
'mask_rho'
1161 vinfo(22)=
'coordinates'
1165 & nvd4, w3dgrd, aval, vinfo, ncname)
1169# if defined BVF_MIXING || defined LMD_MIXING || \
1170 defined gls_mixing || defined my25_mixing
1180 vinfo(22)=
'coordinates'
1183 &
nf_frst, nvd4, w3dgrd, aval, vinfo, ncname, &
1184 & setfillval = .false.)
1195 vinfo(22)=
'coordinates'
1198 &
nf_frst, nvd4, w3dgrd, aval, vinfo, ncname, &
1199 & setfillval = .false.)
1212 vinfo(22)=
'coordinates'
1215 &
nf_frst, nvd4, w3dgrd, aval, vinfo, ncname, &
1216 & setfillval = .false.)
1220# if defined PERFECT_RESTART && \
1221 (defined gls_mixing || defined my25_mixing)
1231 vinfo(22)=
'coordinates'
1234 &
nf_frst, nvd5, k3dgrd, aval, vinfo, ncname, &
1235 & setfillval = .false.)
1246 vinfo(22)=
'coordinates'
1249 &
nf_frst, nvd5, k3dgrd, aval, vinfo, ncname, &
1250 & setfillval = .false.)
1260# if defined WRITE_WATER && defined MASKING
1261# if defined PERFECT_RESTART
1262 vinfo(24)=
'_FillValue'
1265 vinfo(20)=
'mask_rho'
1269 vinfo(22)=
'coordinates'
1272 &
nf_frst, nvd4, w3dgrd, aval, vinfo, ncname)
1282# if defined WRITE_WATER && defined MASKING
1283# if defined PERFECT_RESTART
1284 vinfo(24)=
'_FillValue'
1287 vinfo(20)=
'mask_rho'
1291 vinfo(22)=
'coordinates'
1294 &
nf_frst, nvd4, w3dgrd, aval, vinfo, ncname)
1306# if defined WRITE_WATER && defined MASKING
1307# if defined PERFECT_RESTART
1308 vinfo(24)=
'_FillValue'
1311 vinfo(20)=
'mask_rho'
1315 vinfo(22)=
'coordinates'
1318 &
nf_frst, nvd4, w3dgrd, aval, vinfo, ncname)
1333# if defined WRITE_WATER && defined MASKING
1334# if defined PERFECT_RESTART
1335 vinfo(24)=
'_FillValue'
1342 vinfo(22)=
'coordinates'
1346 & nvd3, su2dgrd, aval, vinfo, ncname)
1356# if defined WRITE_WATER && defined MASKING
1357# if defined PERFECT_RESTART
1358 vinfo(24)=
'_FillValue'
1365 vinfo(22)=
'coordinates'
1369 & nvd3, sv2dgrd, aval, vinfo, ncname)
1382 WRITE (vinfo(19),40) 1000.0_r8*
sd50(i,ng)
1383# if defined WRITE_WATER && defined MASKING
1384# if defined PERFECT_RESTART
1385 vinfo(24)=
'_FillValue'
1388 vinfo(20)=
'mask_rho'
1392 vinfo(22)=
'coordinates'
1396 & nvd4, sr3dgrd, aval, vinfo, ncname)
1408 WRITE (vinfo(19),40) 1000.0_r8*
sd50(i,ng)
1409# if defined WRITE_WATER && defined MASKING
1410# if defined PERFECT_RESTART
1411 vinfo(24)=
'_FillValue'
1414 vinfo(20)=
'mask_rho'
1418 vinfo(22)=
'coordinates'
1422 & nvd4, sr3dgrd, aval, vinfo, ncname)
1434# if defined WRITE_WATER && defined MASKING
1435# if defined PERFECT_RESTART
1436 vinfo(24)=
'_FillValue'
1439 vinfo(20)=
'mask_rho'
1443 vinfo(22)=
'coordinates'
1447 & nvd4, sr3dgrd, aval, vinfo, ncname)
1451# if defined SEDIMENT || defined BBL_MODEL
1464# if defined WRITE_WATER && defined MASKING
1465# if defined PERFECT_RESTART
1466 vinfo(24)=
'_FillValue'
1469 vinfo(20)=
'mask_rho'
1473 vinfo(22)=
'coordinates'
1477 & nvd3, sr2dgrd, aval, vinfo, ncname)
1491# if defined WRITE_WATER && defined MASKING
1492# if defined PERFECT_RESTART
1493 vinfo(24)=
'_FillValue'
1500 vinfo(22)=
'coordinates'
1503 &
nf_frst, nvd3, su2dgrd, aval, vinfo, ncname)
1513# if defined WRITE_WATER && defined MASKING
1514# if defined PERFECT_RESTART
1515 vinfo(24)=
'_FillValue'
1522 vinfo(22)=
'coordinates'
1525 &
nf_frst, nvd3, sv2dgrd, aval, vinfo, ncname)
1537# if defined WRITE_WATER && defined MASKING
1538# if defined PERFECT_RESTART
1539 vinfo(24)=
'_FillValue'
1546 vinfo(22)=
'coordinates'
1549 &
nf_frst, nvd4, su3dgrd, aval, vinfo, ncname)
1559# if defined WRITE_WATER && defined MASKING
1560# if defined PERFECT_RESTART
1561 vinfo(24)=
'_FillValue'
1568 vinfo(22)=
'coordinates'
1571 &
nf_frst, nvd4, sv3dgrd, aval, vinfo, ncname)
1581 CALL ice_def_nf90 (ng, model, ldefine,
hout,
rst, &
1582 t2dgrd, u2dgrd, v2dgrd)
1607 query :
IF (.not.ldefine)
THEN
1614 WRITE (
stdout,50) trim(ncname)
1621 & ncid =
rst(ng)%ncid)
1627 & ncid =
rst(ng)%ncid)
1643#if defined SEDIMENT && defined SED_MORPH
1665#ifdef PERFECT_RESTART
1673#ifdef PERFECT_RESTART
1681#ifdef PERFECT_RESTART
1690# ifdef PERFECT_RESTART
1698# ifdef PERFECT_RESTART
1716# if defined PERFECT_RESTART && defined LMD_NONLOCAL
1737# if defined PERFECT_RESTART && \
1738 (defined gls_mixing || defined my25_mixing)
1778 got_var(
idtvar(itrc))=.true.
1786 got_var(
idfrac(itrc))=.true.
1790 got_var(
idbmas(itrc))=.true.
1795 got_var(
idubld(itrc))=.true.
1799 got_var(
idvbld(itrc))=.true.
1806 got_var(
idsbed(itrc))=.true.
1811# if defined SEDIMENT || defined BBL_MODEL
1814 got_var(
idbott(itrc))=.true.
1825 IF (.not.got_var(
idtime))
THEN
1831#if defined SEDIMENT && defined SED_MORPH
1832 IF (.not.got_var(
idbath))
THEN
1840 IF (.not.got_var(
idrwet))
THEN
1846 IF (.not.got_var(
iduwet))
THEN
1852 IF (.not.got_var(
idvwet))
THEN
1858 IF (.not.got_var(
idpwet))
THEN
1865 IF (.not.got_var(
idfsur))
THEN
1871#ifdef PERFECT_RESTART
1872 IF (.not.got_var(
idrzet))
THEN
1879 IF (.not.got_var(
idubar))
THEN
1885#ifdef PERFECT_RESTART
1886 IF (.not.got_var(
idru2d))
THEN
1893 IF (.not.got_var(
idvbar))
THEN
1899#ifdef PERFECT_RESTART
1900 IF (.not.got_var(
idrv2d))
THEN
1908 IF (.not.got_var(
iduvel))
THEN
1914# ifdef PERFECT_RESTART
1915 IF (.not.got_var(
idru3d))
THEN
1922 IF (.not.got_var(
idvvel))
THEN
1928# ifdef PERFECT_RESTART
1929 IF (.not.got_var(
idrv3d))
THEN
1936 IF (.not.got_var(
iddano))
THEN
1942# if defined PERFECT_RESTART && \
1943 (defined gls_mixing || defined my25_mixing)
1944 IF (.not.got_var(
idmtke))
THEN
1950 IF (.not.got_var(
idmtls))
THEN
1956 IF (.not.got_var(
idvmls))
THEN
1962 IF (.not.got_var(
idvmkk))
THEN
1969 IF (.not.got_var(
idvmkp))
THEN
1979 IF (.not.got_var(
idu2sd))
THEN
1985 IF (.not.got_var(
idv2sd))
THEN
1992 IF (.not.got_var(
idu3sd))
THEN
1998 IF (.not.got_var(
idv3sd))
THEN
2008 IF (.not.got_var(
idtvar(itrc)))
THEN
2017 IF (.not.got_var(
idfrac(i)))
THEN
2023 IF (.not.got_var(
idbmas(i)))
THEN
2030 IF (.not.got_var(
idubld(i)))
THEN
2036 IF (.not.got_var(
idvbld(i)))
THEN
2045 IF (.not.got_var(
idsbed(i)))
THEN
2053# if defined SEDIMENT || defined BBL_MODEL
2055 IF (.not.got_var(
idbott(i)))
THEN
2069 CALL ice_def_nf90 (ng, model, ldefine,
hout,
rst)
2081 10
FORMAT (2x,
'DEF_RST_NF90 - creating restart file,',t56, &
2082 &
'Grid ',i2.2,
': ',a)
2083 20
FORMAT (2x,
'DEF_RST_NF90 - inquiring restart file,',t56, &
2084 &
'Grid ',i2.2,
': ',a)
2085 30
FORMAT (/,
' DEF_RST_NF90 - unable to create restart NetCDF', &
2087 40
FORMAT (1pe11.4,1x,
'millimeter')
2088 50
FORMAT (/,
' DEF_RST_NF90 - unable to open restart NetCDF', &
2090 60
FORMAT (/,
' DEF_RST_NF90 - unable to find variable: ',a,2x, &
2091 &
' in restart NetCDF file: ',a)
2106 integer,
intent(in) :: ng, model
2110 logical :: ldefine, got_var(
nv)
2112 integer,
parameter :: natt = 25
2114 integer :: i, j, nvd3, nvd4, nvd5
2115 integer :: recdim, status
2117 integer :: dimids(
ndimid)
2118 integer :: r2dgrd(4), ru2dgrd(4), rv2dgrd(4)
2119 integer :: sp2dgrd(3), sr2dgrd(3), su2dgrd(3), sv2dgrd(3)
2120 integer :: sr3dgrd(4), su3dgrd(4), sv3dgrd(4)
2121 integer :: t2dgrd(4), u2dgrd(4), v2dgrd(4)
2126 integer :: k3dgrd(5), t3dgrd(5)
2127 integer :: r3dgrd(4), ru3dgrd(5), rv3dgrd(5)
2128 integer :: u3dgrd(5), v3dgrd(5), w3dgrd(4)
2133 character (len=256) :: ncname
2134 character (len=MaxLen) :: vinfo(natt)
2136 character (len=*),
parameter :: myfile = &
2137 & __FILE__//
", def_rst_pio"
2139 TYPE (var_desc_t) :: vardesc
2155 & ((
nrrec(ng).ne.0).and. &
2156 & (trim(ncname).ne.trim(
ini(ng)%name))))
THEN
2162 WRITE (
stdout,10) ng, trim(ncname)
2164 WRITE (
stdout,20) ng, trim(ncname)
2172 define :
IF (ldefine)
THEN
2185 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'xi_rho', &
2189 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'xi_u', &
2193 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'xi_v', &
2197 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'xi_psi', &
2201 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'eta_rho', &
2202 &
iobounds(ng)%eta_rho, dimids( 5))
2205 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'eta_u', &
2209 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'eta_v', &
2213 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'eta_psi', &
2214 &
iobounds(ng)%eta_psi, dimids( 8))
2217# if !defined PERFECT_RESTART && \
2218 (defined write_water && defined masking)
2219 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'xy_rho', &
2223 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'xy_u', &
2227 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'xy_v', &
2233# if !defined PERFECT_RESTART && \
2234 (defined write_water && defined masking)
2235 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'xyz_rho', &
2236 &
iobounds(ng)%xy_rho*
n(ng), dimids(20))
2239 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'xyz_u', &
2243 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'xyz_v', &
2247 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'xyz_w', &
2248 &
iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
2252 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'N', &
2253 &
n(ng), dimids( 9))
2256 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
's_rho', &
2257 &
n(ng), dimids( 9))
2260 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
's_w', &
2261 &
n(ng)+1, dimids(10))
2264 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'tracer', &
2265 &
nt(ng), dimids(11))
2269 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'NST', &
2273 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'Nbed', &
2277# if !defined PERFECT_RESTART && \
2278 (defined write_water && defined masking)
2279 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'xybed', &
2286 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'Nbands', &
2290 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'Nphy', &
2294 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'Nbac', &
2298 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'Ndom', &
2302 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'Nfec', &
2308 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'boundary', &
2313 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'Nstate', &
2318# ifdef PERFECT_RESTART
2319 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'two', &
2323 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname,
'three', &
2328 status=
def_dim(ng, model,
rst(ng)%pioFile, ncname, &
2330 & pio_unlimited, dimids(12))
2337# if !defined PERFECT_RESTART && \
2338 (defined write_water && defined masking)
2350# if !defined PERFECT_RESTART && \
2351 (defined write_water && defined masking)
2352 t2dgrd(1)=dimids(17)
2353 t2dgrd(2)=dimids(12)
2354 sr2dgrd(1)=dimids(17)
2355 sr2dgrd(2)=dimids(12)
2357 t3dgrd(1)=dimids(20)
2358 t3dgrd(2)=dimids(12)
2359 r3dgrd(1)=dimids(20)
2360 r3dgrd(2)=dimids(12)
2363 t2dgrd(1)=dimids( 1)
2364 t2dgrd(2)=dimids( 5)
2365 sr2dgrd(1)=dimids( 1)
2366 sr2dgrd(2)=dimids( 5)
2367 sr2dgrd(3)=dimids(12)
2368# ifdef PERFECT_RESTART
2369 t2dgrd(3)=dimids(31)
2370 t2dgrd(4)=dimids(12)
2372 t2dgrd(3)=dimids(12)
2375 t3dgrd(1)=dimids( 1)
2376 t3dgrd(2)=dimids( 5)
2377 t3dgrd(3)=dimids( 9)
2378 r3dgrd(1)=dimids( 1)
2379 r3dgrd(2)=dimids( 5)
2380 r3dgrd(3)=dimids( 9)
2381# ifdef PERFECT_RESTART
2382 t3dgrd(4)=dimids(30)
2383 t3dgrd(5)=dimids(12)
2385 t3dgrd(4)=dimids(12)
2387 r3dgrd(4)=dimids(12)
2393 sp2dgrd(1)=dimids( 4)
2394 sp2dgrd(2)=dimids( 8)
2395 sp2dgrd(3)=dimids(12)
2399# if !defined PERFECT_RESTART && \
2400 (defined write_water && defined masking)
2401 u2dgrd(1)=dimids(18)
2402 u2dgrd(2)=dimids(12)
2404 u3dgrd(1)=dimids(21)
2405 u3dgrd(2)=dimids(12)
2408 u2dgrd(1)=dimids( 2)
2409 u2dgrd(2)=dimids( 6)
2410# ifdef PERFECT_RESTART
2411 u2dgrd(3)=dimids(31)
2412 u2dgrd(4)=dimids(12)
2414 u2dgrd(3)=dimids(12)
2417 u3dgrd(1)=dimids( 2)
2418 u3dgrd(2)=dimids( 6)
2419 u3dgrd(3)=dimids( 9)
2420# ifdef PERFECT_RESTART
2421 u3dgrd(4)=dimids(30)
2422 u3dgrd(5)=dimids(12)
2424 u3dgrd(4)=dimids(12)
2431# if !defined PERFECT_RESTART && \
2432 (defined write_water && defined masking)
2433 v2dgrd(1)=dimids(19)
2434 v2dgrd(2)=dimids(12)
2436 v3dgrd(1)=dimids(22)
2437 v3dgrd(2)=dimids(12)
2440 v2dgrd(1)=dimids( 3)
2441 v2dgrd(2)=dimids( 7)
2442# ifdef PERFECT_RESTART
2443 v2dgrd(3)=dimids(31)
2444 v2dgrd(4)=dimids(12)
2446 v2dgrd(3)=dimids(12)
2449 v3dgrd(1)=dimids( 3)
2450 v3dgrd(2)=dimids( 7)
2451 v3dgrd(3)=dimids( 9)
2452# ifdef PERFECT_RESTART
2453 v3dgrd(4)=dimids(30)
2454 v3dgrd(5)=dimids(12)
2456 v3dgrd(4)=dimids(12)
2460# ifdef PERFECT_RESTART
2464# if !defined PERFECT_RESTART && \
2465 (defined write_water && defined masking)
2466 r2dgrd(1)=dimids(17)
2467 r2dgrd(2)=dimids(12)
2469 r2dgrd(1)=dimids( 1)
2470 r2dgrd(2)=dimids( 5)
2471 r2dgrd(3)=dimids(30)
2472 r2dgrd(4)=dimids(12)
2477# if !defined PERFECT_RESTART && \
2478 (defined write_water && defined masking)
2479 ru2dgrd(1)=dimids(18)
2480 ru2dgrd(2)=dimids(12)
2482 ru2dgrd(1)=dimids(21)
2483 ru2dgrd(2)=dimids(12)
2486 ru2dgrd(1)=dimids( 2)
2487 ru2dgrd(2)=dimids( 6)
2488 ru2dgrd(3)=dimids(30)
2489 ru2dgrd(4)=dimids(12)
2491 ru3dgrd(1)=dimids( 2)
2492 ru3dgrd(2)=dimids( 6)
2493 ru3dgrd(3)=dimids(10)
2494 ru3dgrd(4)=dimids(30)
2495 ru3dgrd(5)=dimids(12)
2501# if !defined PERFECT_RESTART && \
2502 (defined write_water && defined masking)
2503 rv2dgrd(1)=dimids(19)
2504 rv2dgrd(2)=dimids(12)
2506 rv3dgrd(1)=dimids(22)
2507 rv3dgrd(2)=dimids(12)
2510 rv2dgrd(1)=dimids( 3)
2511 rv2dgrd(2)=dimids( 7)
2512 rv2dgrd(3)=dimids(30)
2513 rv2dgrd(4)=dimids(12)
2515 rv3dgrd(1)=dimids( 3)
2516 rv3dgrd(2)=dimids( 7)
2517 rv3dgrd(3)=dimids(10)
2518 rv3dgrd(4)=dimids(30)
2519 rv3dgrd(5)=dimids(12)
2527# if !defined PERFECT_RESTART && \
2528 (defined write_water && defined masking)
2529 w3dgrd(1)=dimids(23)
2530 w3dgrd(2)=dimids(12)
2531# ifdef PERFECT_RESTART
2532 k3dgrd(1)=dimids(23)
2533 k3dgrd(2)=dimids(12)
2536 w3dgrd(1)=dimids( 1)
2537 w3dgrd(2)=dimids( 5)
2538 w3dgrd(3)=dimids(10)
2539 w3dgrd(4)=dimids(12)
2540# ifdef PERFECT_RESTART
2541 k3dgrd(1)=dimids( 1)
2542 k3dgrd(2)=dimids( 5)
2543 k3dgrd(3)=dimids(10)
2544 k3dgrd(4)=dimids(30)
2545 k3dgrd(5)=dimids(12)
2552# if !defined PERFECT_RESTART && \
2553 (defined write_water && defined masking)
2554 su2dgrd(1)=dimids(18)
2555 su2dgrd(2)=dimids(12)
2556 sv2dgrd(1)=dimids(19)
2557 sv2dgrd(2)=dimids(12)
2559 su2dgrd(1)=dimids( 2)
2560 su2dgrd(2)=dimids( 6)
2561 su2dgrd(3)=dimids(12)
2562 sv2dgrd(1)=dimids( 3)
2563 sv2dgrd(2)=dimids( 7)
2564 sv2dgrd(3)=dimids(12)
2567# if !defined PERFECT_RESTART && \
2568 (defined write_water && defined masking)
2569 sr3dgrd(1)=dimids(24)
2570 sr3dgrd(2)=dimids(12)
2571 su3dgrd(1)=dimids(21)
2572 su3dgrd(2)=dimids(12)
2573 sv3dgrd(1)=dimids(22)
2574 sv3dgrd(2)=dimids(12)
2576 sr3dgrd(1)=dimids( 1)
2577 sr3dgrd(2)=dimids( 5)
2578 sr3dgrd(3)=dimids(16)
2579 sr3dgrd(4)=dimids(12)
2580 su3dgrd(1)=dimids( 2)
2581 su3dgrd(2)=dimids( 6)
2582 su3dgrd(3)=dimids( 9)
2583 su3dgrd(4)=dimids(12)
2584 sv3dgrd(1)=dimids( 3)
2585 sv3dgrd(2)=dimids( 7)
2586 sv3dgrd(3)=dimids( 9)
2587 sv3dgrd(4)=dimids(12)
2598 DO j=1,len(vinfo(1))
2610 CALL def_info (ng, model,
rst(ng)%pioFile, ncname, dimids)
2617# ifdef PERFECT_RESTART
2623 vinfo( 2)=
'3D equations time level index, nstp'
2624 status=
def_var(ng, model,
rst(ng)%pioFile, vardesc, pio_int, &
2625 & 1, (/recdim/), aval, vinfo, ncname, &
2626 & setparaccess = .true.)
2630 vinfo( 2)=
'3D equations time level index, nrhs'
2631 status=
def_var(ng, model,
rst(ng)%pioFile, vardesc, pio_int, &
2632 & 1, (/recdim/), aval, vinfo, ncname, &
2633 & setparaccess = .true.)
2637 vinfo( 2)=
'3D equations time level index, nnew'
2638 status=
def_var(ng, model,
rst(ng)%pioFile, vardesc, pio_int, &
2639 & 1, (/recdim/), aval, vinfo, ncname, &
2640 & setparaccess = .true.)
2645 vinfo( 2)=
'3D equations time level index, kstp'
2646 status=
def_var(ng, model,
rst(ng)%pioFile, vardesc, pio_int, &
2647 & 1, (/recdim/), aval, vinfo, ncname, &
2648 & setparaccess = .true.)
2652 vinfo( 2)=
'3D equations time level index, krhs'
2653 status=
def_var(ng, model,
rst(ng)%pioFile, vardesc, pio_int, &
2654 & 1, (/recdim/), aval, vinfo, ncname, &
2655 & setparaccess = .true.)
2659 vinfo( 2)=
'3D equations time level index, knew'
2660 status=
def_var(ng, model,
rst(ng)%pioFile, vardesc, pio_int, &
2661 & 1, (/recdim/), aval, vinfo, ncname, &
2662 & setparaccess = .true.)
2670 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
2671 vinfo( 4)=trim(
rclock%calendar)
2679 &
pio_tout, 1, (/recdim/), aval, vinfo, ncname, &
2680 & setparaccess = .true.)
2695 vinfo(22)=
'coordinates'
2702 &
pio_frst, nvd3, sp2dgrd, aval, vinfo, ncname, &
2703 & setfillval = .false.)
2716 vinfo(22)=
'coordinates'
2723 &
pio_frst, nvd3, sr2dgrd, aval, vinfo, ncname, &
2724 & setfillval = .false.)
2737 vinfo(22)=
'coordinates'
2744 &
pio_frst, nvd3, su2dgrd, aval, vinfo, ncname, &
2745 & setfillval = .false.)
2758 vinfo(22)=
'coordinates'
2765 &
pio_frst, nvd3, sv2dgrd, aval, vinfo, ncname, &
2766 & setfillval = .false.)
2769# if defined SEDIMENT && defined SED_MORPH
2779 vinfo(22)=
'coordinates'
2786 &
pio_frst, nvd3, t2dgrd, aval, vinfo, ncname, &
2787 & setfillval = .false.)
2798# if defined WRITE_WATER && defined MASKING
2799# if !defined WET_DRY && defined PERFECT_RESTART
2800 vinfo(24)=
'_FillValue'
2803 vinfo(20)=
'mask_rho'
2807 vinfo(22)=
'coordinates'
2812# ifdef PERFECT_RESTART
2816 &
pio_frst, nvd4, t2dgrd, aval, vinfo, ncname, &
2817 & setfillval = .false.)
2819 &
pio_frst, nvd4, t2dgrd, aval, vinfo, ncname)
2825 &
pio_frst, nvd3, t2dgrd, aval, vinfo, ncname, &
2826 & setfillval = .false.)
2828 &
pio_frst, nvd3, t2dgrd, aval, vinfo, ncname)
2834# ifdef PERFECT_RESTART
2843# if defined WRITE_WATER && defined MASKING
2844# if defined PERFECT_RESTART
2845 vinfo(24)=
'_FillValue'
2848 vinfo(20)=
'mask_rho'
2852 vinfo(22)=
'coordinates'
2859 &
pio_frst, nvd4, r2dgrd, aval, vinfo, ncname)
2870# if defined WRITE_WATER && defined MASKING
2871# if defined PERFECT_RESTART
2872 vinfo(24)=
'_FillValue'
2879 vinfo(22)=
'coordinates'
2884# ifdef PERFECT_RESTART
2887 &
pio_frst, nvd4, u2dgrd, aval, vinfo, ncname)
2891 &
pio_frst, nvd3, u2dgrd, aval, vinfo, ncname)
2895# ifdef PERFECT_RESTART
2904# if defined WRITE_WATER && defined MASKING
2905# if defined PERFECT_RESTART
2906 vinfo(24)=
'_FillValue'
2913 vinfo(22)=
'coordinates'
2920 &
pio_frst, nvd4, ru2dgrd, aval, vinfo, ncname)
2931# if defined WRITE_WATER && defined MASKING
2932# if defined PERFECT_RESTART
2933 vinfo(24)=
'_FillValue'
2940 vinfo(22)=
'coordinates'
2945# ifdef PERFECT_RESTART
2948 &
pio_frst, nvd4, v2dgrd, aval, vinfo, ncname)
2952 &
pio_frst, nvd3, v2dgrd, aval, vinfo, ncname)
2956# ifdef PERFECT_RESTART
2965# if defined WRITE_WATER && defined MASKING
2966# if defined PERFECT_RESTART
2967 vinfo(24)=
'_FillValue'
2974 vinfo(22)=
'coordinates'
2981 &
pio_frst, nvd4, rv2dgrd, aval, vinfo, ncname)
2993# if defined WRITE_WATER && defined MASKING
2994# if defined PERFECT_RESTART
2995 vinfo(24)=
'_FillValue'
3002 vinfo(22)=
'coordinates'
3007# ifdef PERFECT_RESTART
3010 &
pio_frst, nvd5, u3dgrd, aval, vinfo, ncname)
3014 &
pio_frst, nvd4, u3dgrd, aval, vinfo, ncname)
3018# ifdef PERFECT_RESTART
3030# if defined WRITE_WATER && defined MASKING
3031# if defined PERFECT_RESTART
3032 vinfo(24)=
'_FillValue'
3039 vinfo(22)=
'coordinates'
3046 &
pio_frst, nvd5, ru3dgrd, aval, vinfo, ncname)
3057# if defined WRITE_WATER && defined MASKING
3058# if defined PERFECT_RESTART
3059 vinfo(24)=
'_FillValue'
3066 vinfo(22)=
'coordinates'
3071# ifdef PERFECT_RESTART
3074 &
pio_frst, nvd5, v3dgrd, aval, vinfo, ncname)
3078 &
pio_frst, nvd4, v3dgrd, aval, vinfo, ncname)
3082# ifdef PERFECT_RESTART
3094# if defined WRITE_WATER && defined MASKING
3095# if defined PERFECT_RESTART
3096 vinfo(24)=
'_FillValue'
3103 vinfo(22)=
'coordinates'
3110 &
pio_frst, nvd5, rv3dgrd, aval, vinfo, ncname)
3124 IF (itrc.eq.
idsed(i))
THEN
3125 WRITE (vinfo(19),40) 1000.0_r8*
sd50(i,ng)
3129# if defined WRITE_WATER && defined MASKING
3130# if defined PERFECT_RESTART
3131 vinfo(24)=
'_FillValue'
3134 vinfo(20)=
'mask_rho'
3138 vinfo(22)=
'coordinates'
3143# ifdef PERFECT_RESTART
3145 &
rst(ng)%pioTrc(itrc)%vd, &
3146 &
pio_frst, nvd5, t3dgrd, aval, vinfo, ncname)
3149 &
rst(ng)%pioTrc(itrc)%vd, &
3150 &
pio_frst, nvd4, t3dgrd, aval, vinfo, ncname)
3162# if defined WRITE_WATER && defined MASKING
3163# if defined PERFECT_RESTART
3164 vinfo(24)=
'_FillValue'
3167 vinfo(20)=
'mask_rho'
3171 vinfo(22)=
'coordinates'
3178 &
pio_frst, nvd4, r3dgrd, aval, vinfo, ncname)
3190# if defined WRITE_WATER && defined MASKING
3191# if defined PERFECT_RESTART
3192 vinfo(24)=
'_FillValue'
3195 vinfo(20)=
'mask_rho'
3199 vinfo(22)=
'coordinates'
3206 &
pio_frst, nvd3, sr2dgrd, aval, vinfo, ncname)
3219# if defined WRITE_WATER && defined MASKING
3220# if defined PERFECT_RESTART
3221 vinfo(24)=
'_FillValue'
3224 vinfo(20)=
'mask_rho'
3228 vinfo(22)=
'coordinates'
3235 &
pio_frst, nvd3, sr2dgrd, aval, vinfo, ncname)
3238# if defined PERFECT_RESTART && defined LMD_NONLOCAL
3248# if defined WRITE_WATER && defined MASKING
3249 vinfo(20)=
'mask_rho'
3252 vinfo(22)=
'coordinates'
3259 &
pio_frst, nvd4, w3dgrd, aval, vinfo, ncname)
3263# if defined BVF_MIXING || defined LMD_MIXING || \
3264 defined gls_mixing || defined my25_mixing
3274 vinfo(22)=
'coordinates'
3281 &
pio_frst, nvd4, w3dgrd, aval, vinfo, ncname, &
3282 & setfillval = .false.)
3293 vinfo(22)=
'coordinates'
3300 &
pio_frst, nvd4, w3dgrd, aval, vinfo, ncname, &
3301 & setfillval = .false.)
3314 vinfo(22)=
'coordinates'
3321 &
pio_frst, nvd4, w3dgrd, aval, vinfo, ncname, &
3322 & setfillval = .false.)
3326# if defined PERFECT_RESTART && \
3327 (defined gls_mixing || defined my25_mixing)
3337 vinfo(22)=
'coordinates'
3344 &
pio_frst, nvd5, k3dgrd, aval, vinfo, ncname, &
3345 & setfillval = .false.)
3356 vinfo(22)=
'coordinates'
3363 &
pio_frst, nvd5, k3dgrd, aval, vinfo, ncname, &
3364 & setfillval = .false.)
3374# if defined WRITE_WATER && defined MASKING
3375# if defined PERFECT_RESTART
3376 vinfo(24)=
'_FillValue'
3379 vinfo(20)=
'mask_rho'
3383 vinfo(22)=
'coordinates'
3390 &
pio_frst, nvd4, w3dgrd, aval, vinfo, ncname)
3400# if defined WRITE_WATER && defined MASKING
3401# if defined PERFECT_RESTART
3402 vinfo(24)=
'_FillValue'
3405 vinfo(20)=
'mask_rho'
3409 vinfo(22)=
'coordinates'
3416 &
pio_frst, nvd4, w3dgrd, aval, vinfo, ncname)
3428# if defined WRITE_WATER && defined MASKING
3429# if defined PERFECT_RESTART
3430 vinfo(24)=
'_FillValue'
3433 vinfo(20)=
'mask_rho'
3437 vinfo(22)=
'coordinates'
3444 &
pio_frst, nvd4, w3dgrd, aval, vinfo, ncname)
3459# if defined WRITE_WATER && defined MASKING
3460# if defined PERFECT_RESTART
3461 vinfo(24)=
'_FillValue'
3468 vinfo(22)=
'coordinates'
3475 &
pio_frst, nvd3, su2dgrd, aval, vinfo, ncname)
3485# if defined WRITE_WATER && defined MASKING
3486# if defined PERFECT_RESTART
3487 vinfo(24)=
'_FillValue'
3494 vinfo(22)=
'coordinates'
3501 &
pio_frst, nvd3, sv2dgrd, aval, vinfo, ncname)
3514 WRITE (vinfo(19),40) 1000.0_r8*
sd50(i,ng)
3515# if defined WRITE_WATER && defined MASKING
3516# if defined PERFECT_RESTART
3517 vinfo(24)=
'_FillValue'
3520 vinfo(20)=
'mask_rho'
3524 vinfo(22)=
'coordinates'
3531 &
pio_frst, nvd4, sr3dgrd, aval, vinfo, ncname)
3543 WRITE (vinfo(19),40) 1000.0_r8*
sd50(i,ng)
3544# if defined WRITE_WATER && defined MASKING
3545# if defined PERFECT_RESTART
3546 vinfo(24)=
'_FillValue'
3549 vinfo(20)=
'mask_rho'
3553 vinfo(22)=
'coordinates'
3560 &
pio_frst, nvd4, sr3dgrd, aval, vinfo, ncname)
3572# if defined WRITE_WATER && defined MASKING
3573# if defined PERFECT_RESTART
3574 vinfo(24)=
'_FillValue'
3577 vinfo(20)=
'mask_rho'
3581 vinfo(22)=
'coordinates'
3588 &
pio_frst, nvd4, sr3dgrd, aval, vinfo, ncname)
3592# if defined SEDIMENT || defined BBL_MODEL
3605# if defined WRITE_WATER && defined MASKING
3606# if defined PERFECT_RESTART
3607 vinfo(24)=
'_FillValue'
3610 vinfo(20)=
'mask_rho'
3614 vinfo(22)=
'coordinates'
3621 &
pio_frst, nvd3, sr2dgrd, aval, vinfo, ncname)
3635# if defined WRITE_WATER && defined MASKING
3639 vinfo(22)=
'coordinates'
3646 &
pio_frst, nvd3, u2dgrd, aval, vinfo, ncname)
3656# if defined WRITE_WATER && defined MASKING
3660 vinfo(22)=
'coordinates'
3667 &
pio_frst, nvd3, u2dgrd, aval, vinfo, ncname)
3679# if defined WRITE_WATER && defined MASKING
3683 vinfo(22)=
'coordinates'
3690 &
pio_frst, nvd4, u3dgrd, aval, vinfo, ncname)
3700# if defined WRITE_WATER && defined MASKING
3704 vinfo(22)=
'coordinates'
3711 &
pio_frst, nvd4, v3dgrd, aval, vinfo, ncname)
3722 CALL ice_def_pio (ng, model, ldefine,
hout,
rst, &
3723 & t2dgrd, u2dgrd, v2dgrd)
3738 CALL wrt_info (ng, model,
rst(ng)%pioFile, ncname)
3748 query :
IF (.not.ldefine)
THEN
3755 WRITE (
stdout,50) trim(ncname)
3762 & piofile =
rst(ng)%pioFile)
3768 & piofile =
rst(ng)%pioFile)
3781 IF (trim(var_name(i)).eq.trim(
vname(1,
idtime)))
THEN
3786# if defined SEDIMENT && defined SED_MORPH
3787 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idbath)))
THEN
3794 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrwet)))
THEN
3799 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iduwet)))
THEN
3804 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvwet)))
THEN
3809 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idpwet)))
THEN
3815 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idfsur)))
THEN
3820# ifdef PERFECT_RESTART
3821 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrzet)))
THEN
3827 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idubar)))
THEN
3832# ifdef PERFECT_RESTART
3833 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idru2d)))
THEN
3839 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvbar)))
THEN
3844# ifdef PERFECT_RESTART
3845 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrv2d)))
THEN
3852 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iduvel)))
THEN
3857# ifdef PERFECT_RESTART
3858 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idru3d)))
THEN
3864 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvvel)))
THEN
3869# ifdef PERFECT_RESTART
3870 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idrv3d)))
THEN
3876 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iddano)))
THEN
3882 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idhsbl)))
THEN
3889 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idhbbl)))
THEN
3895# if defined PERFECT_RESTART && defined LMD_NONLOCAL
3896 ELSE IF (trim(var_name(i)).eq. &
3903 ELSE IF (trim(var_name(i)).eq. &
3911 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvvis)))
THEN
3916 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idtdif)))
THEN
3921 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idsdif)))
THEN
3926# if defined PERFECT_RESTART && \
3927 (defined gls_mixing || defined my25_mixing)
3928 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idmtke)))
THEN
3933 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idmtls)))
THEN
3938 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvmls)))
THEN
3943 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvmkk)))
THEN
3949 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvmkp)))
THEN
3958 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idu2sd)))
THEN
3963 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idv2sd)))
THEN
3969 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idu3sd)))
THEN
3974 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idv3sd)))
THEN
3984 IF (trim(var_name(i)).eq.trim(
vname(1,
idtvar(itrc))))
THEN
3985 got_var(
idtvar(itrc))=.true.
3993 IF (trim(var_name(i)).eq. &
3995 got_var(
idfrac(itrc))=.true.
3999 ELSE IF (trim(var_name(i)).eq. &
4001 got_var(
idbmas(itrc))=.true.
4006 ELSE IF (trim(var_name(i)).eq. &
4008 got_var(
idubld(itrc))=.true.
4012 ELSE IF (trim(var_name(i)).eq. &
4014 got_var(
idvbld(itrc))=.true.
4022 IF (trim(var_name(i)).eq.trim(
vname(1,
idsbed(itrc))))
THEN
4023 got_var(
idsbed(itrc))=.true.
4030# if defined SEDIMENT || defined BBL_MODEL
4032 IF (trim(var_name(i)).eq.trim(
vname(1,
idbott(itrc))))
THEN
4033 got_var(
idbott(itrc))=.true.
4046 IF (.not.got_var(
idtime))
THEN
4052# if defined SEDIMENT && defined SED_MORPH
4053 IF (.not.got_var(
idbath))
THEN
4061 IF (.not.got_var(
idrwet))
THEN
4067 IF (.not.got_var(
iduwet))
THEN
4073 IF (.not.got_var(
idvwet))
THEN
4079 IF (.not.got_var(
idpwet))
THEN
4086 IF (.not.got_var(
idfsur))
THEN
4092# ifdef PERFECT_RESTART
4093 IF (.not.got_var(
idrzet))
THEN
4100 IF (.not.got_var(
idubar))
THEN
4106# ifdef PERFECT_RESTART
4107 IF (.not.got_var(
idru2d))
THEN
4114 IF (.not.got_var(
idvbar))
THEN
4120# ifdef PERFECT_RESTART
4121 IF (.not.got_var(
idrv2d))
THEN
4129 IF (.not.got_var(
iduvel))
THEN
4135# ifdef PERFECT_RESTART
4136 IF (.not.got_var(
idru3d))
THEN
4143 IF (.not.got_var(
idvvel))
THEN
4149# ifdef PERFECT_RESTART
4150 IF (.not.got_var(
idrv3d))
THEN
4157 IF (.not.got_var(
iddano))
THEN
4163# if defined PERFECT_RESTART && \
4164 (defined gls_mixing || defined my25_mixing)
4165 IF (.not.got_var(
idmtke))
THEN
4171 IF (.not.got_var(
idmtls))
THEN
4177 IF (.not.got_var(
idvmls))
THEN
4183 IF (.not.got_var(
idvmkk))
THEN
4190 IF (.not.got_var(
idvmkp))
THEN
4200 IF (.not.got_var(
idu2sd))
THEN
4206 IF (.not.got_var(
idv2sd))
THEN
4213 IF (.not.got_var(
idu3sd))
THEN
4219 IF (.not.got_var(
idv3sd))
THEN
4229 IF (.not.got_var(
idtvar(itrc)))
THEN
4238 IF (.not.got_var(
idfrac(i)))
THEN
4244 IF (.not.got_var(
idbmas(i)))
THEN
4251 IF (.not.got_var(
idubld(i)))
THEN
4257 IF (.not.got_var(
idvbld(i)))
THEN
4266 IF (.not.got_var(
idsbed(i)))
THEN
4274# if defined SEDIMENT || defined BBL_MODEL
4276 IF (.not.got_var(
idbott(i)))
THEN
4290 CALL ice_def_pio (ng, model, ldefine,
hout,
rst)
4298 rst(ng)%Rindex=rec_size
4302 10
FORMAT (2x,
'DEF_RST_PIO - creating restart file,',t56, &
4303 &
'Grid ',i2.2,
': ',a)
4304 20
FORMAT (2x,
'DEF_RST_PIO - inquiring restart file,',t56, &
4305 &
'Grid ',i2.2,
': ',a)
4306 30
FORMAT (/,
' DEF_RST_PIO - unable to create restart NetCDF', &
4308 40
FORMAT (1pe11.4,1x,
'millimeter')
4309 50
FORMAT (/,
' DEF_RST_PIO - unable to open restart NetCDF', &
4311 60
FORMAT (/,
' DEF_RST_PIO - unable to find variable: ',a,2x, &
4312 &
' in restart NetCDF file: ',a)