108 logical,
intent(in) :: lcreate, lclose
110 integer,
intent(in) :: ng, model
112 character (len=*),
intent(in) :: label
118 logical :: got_var(
nv)
120 integer,
parameter :: natt = 25
122 integer :: i, j, ifield, itrc, nrec, nvd, nvd3, nvd4
123 integer :: recdim, status, varid
124#ifdef ADJUST_BOUNDARY
125 integer :: iorjdim, brecdim
127#if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
131 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
132#ifdef ADJUST_BOUNDARY
136 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
137# ifdef ADJUST_BOUNDARY
145 integer :: u3dfrc(4), v3dfrc(4)
150 character (len=256) :: ncname
151 character (len=MaxLen) :: vinfo(natt)
153 character (len=*),
parameter :: myfile = &
167 WRITE (
stdout,10) trim(label), ng, trim(ncname)
169 WRITE (
stdout,20) trim(label), ng, trim(ncname)
177 define :
IF (lcreate)
THEN
190 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'xi_rho', &
194 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'xi_u', &
198 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'xi_v', &
202 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'xi_psi', &
206 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'eta_rho', &
210 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'eta_u', &
214 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'eta_v', &
218 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'eta_psi', &
222#ifdef ADJUST_BOUNDARY
223 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'IorJ', &
228#if defined WRITE_WATER && defined MASKING
229 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'xy_rho', &
233 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'xy_u', &
237 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'xy_v', &
242# if defined WRITE_WATER && defined MASKING
243 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'xyz_rho', &
247 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'xyz_u', &
251 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'xyz_v', &
255 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'xyz_w', &
256 &
iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
260 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'N', &
264 status=
def_dim(ng, model, s(ng)%ncid, ncname,
's_rho', &
268 status=
def_dim(ng, model, s(ng)%ncid, ncname,
's_w', &
269 &
n(ng)+1, dimids(10))
272 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'tracer', &
273 &
nt(ng), dimids(11))
277 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'NST', &
281 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'Nbed', &
285# if defined WRITE_WATER && defined MASKING
286 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'xybed', &
293 status=
def_dim(ng,
inlm, s(ng)%ncid, ncname,
'Nbands', &
297 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'Nphy', &
301 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'Nbac', &
305 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'Ndom', &
309 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'Nfec', &
315 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'boundary', &
320 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'Nstate', &
325#if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
326 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'frc_adjust', &
327 &
nfrec(ng), dimids(30))
331#ifdef ADJUST_BOUNDARY
332 status=
def_dim(ng, model, s(ng)%ncid, ncname,
'obc_adjust', &
333 &
nbrec(ng), dimids(31))
337 status=
def_dim(ng, model, s(ng)%ncid, ncname, &
339 & nf90_unlimited, dimids(12))
343#if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
346#ifdef ADJUST_BOUNDARY
352#if defined WRITE_WATER && defined MASKING
362#if defined WRITE_WATER && defined MASKING
386#ifdef ADJUST_BOUNDARY
402#if defined WRITE_WATER && defined MASKING
419# ifdef ADJUST_WSTRESS
429#if defined WRITE_WATER && defined MASKING
446# ifdef ADJUST_WSTRESS
457# if defined WRITE_WATER && defined MASKING
487 CALL def_info (ng, model, s(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( 3)=
'nondimensional'
514#if defined WRITE_WATER && defined MASKING
518 vinfo(22)=
'coordinates'
521 &
nf_fout, nvd3, t2dgrd, aval, vinfo, ncname)
524#ifdef ADJUST_BOUNDARY
530 vinfo( 1)=
vname(1,ifield)
531 vinfo( 2)=
vname(2,ifield)
532 vinfo( 3)=
'nondimensional'
533 vinfo(14)=
vname(4,ifield)
535 vinfo(21)=
vname(6,ifield)
536 aval(5)=real(
iinfo(1,ifield,ng),r8)
537 status=
def_var(ng, model, s(ng)%ncid, s(ng)%Vid(ifield), &
538 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
539 & setfillval = .false.)
548 vinfo( 3)=
'nondimensional'
551#if defined WRITE_WATER && defined MASKING
555 vinfo(22)=
'coordinates'
558 &
nf_fout, nvd3, u2dgrd, aval, vinfo, ncname)
561#ifdef ADJUST_BOUNDARY
567 vinfo( 1)=
vname(1,ifield)
568 vinfo( 2)=
vname(2,ifield)
569 vinfo( 3)=
'nondimensional'
570 vinfo(14)=
vname(4,ifield)
572 vinfo(21)=
vname(6,ifield)
573 aval(5)=real(
iinfo(1,ifield,ng),r8)
574 status=
def_var(ng, model, s(ng)%ncid, s(ng)%Vid(ifield), &
575 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
576 & setfillval = .false.)
585 vinfo( 3)=
'nondimensional'
588#if defined WRITE_WATER && defined MASKING
592 vinfo(22)=
'coordinates'
595 &
nf_fout, nvd3, v2dgrd, aval, vinfo, ncname)
598#ifdef ADJUST_BOUNDARY
604 vinfo( 1)=
vname(1,ifield)
605 vinfo( 2)=
vname(2,ifield)
606 vinfo( 3)=
'nondimensional'
607 vinfo(14)=
vname(4,ifield)
609 vinfo(21)=
vname(6,ifield)
610 aval(5)=real(
iinfo(1,ifield,ng),r8)
611 status=
def_var(ng, model, s(ng)%ncid, s(ng)%Vid(ifield), &
612 &
nf_fout, 4, t2dobc, aval, vinfo, ncname, &
613 & setfillval = .false.)
623 vinfo( 3)=
'nondimensional'
626# if defined WRITE_WATER && defined MASKING
630 vinfo(22)=
'coordinates'
633 &
nf_fout, nvd4, u3dgrd, aval, vinfo, ncname)
636# ifdef ADJUST_BOUNDARY
642 vinfo( 1)=
vname(1,ifield)
643 vinfo( 2)=
vname(2,ifield)
644 vinfo( 3)=
'nondimensional'
645 vinfo(14)=
vname(4,ifield)
647 vinfo(21)=
vname(6,ifield)
648 aval(5)=real(
iinfo(1,ifield,ng),r8)
649 status=
def_var(ng, model, s(ng)%ncid, s(ng)%Vid(ifield), &
650 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
651 & setfillval = .false.)
660 vinfo( 3)=
'nondimensional'
663# if defined WRITE_WATER && defined MASKING
667 vinfo(22)=
'coordinates'
670 &
nf_fout, nvd4, v3dgrd, aval, vinfo, ncname)
673# ifdef ADJUST_BOUNDARY
679 vinfo( 1)=
vname(1,ifield)
680 vinfo( 2)=
vname(2,ifield)
681 vinfo( 3)=
'nondimensional'
682 vinfo(14)=
vname(4,ifield)
684 vinfo(21)=
vname(6,ifield)
685 aval(5)=real(
iinfo(1,ifield,ng),r8)
686 status=
def_var(ng, model, s(ng)%ncid, s(ng)%Vid(ifield), &
687 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
688 & setfillval = .false.)
698 vinfo( 3)=
'nondimensional'
703 IF (itrc.eq.
idsed(i))
THEN
704 WRITE (vinfo(19),40) 1000.0_r8*
sd50(i,ng)
708# if defined WRITE_WATER && defined MASKING
712 vinfo(22)=
'coordinates'
714 status=
def_var(ng, model, s(ng)%ncid, s(ng)%Tid(itrc), &
715 &
nf_fout, nvd4, t3dgrd, aval, vinfo, ncname)
719# ifdef ADJUST_BOUNDARY
726 vinfo( 1)=
vname(1,ifield)
727 vinfo( 2)=
vname(2,ifield)
728 vinfo( 3)=
'nondimensional'
729 vinfo(14)=
vname(4,ifield)
733 IF (itrc.eq.
idsed(i))
THEN
734 WRITE (vinfo(19),40) 1000.0_r8*
sd50(i,ng)
738 vinfo(21)=
vname(6,ifield)
739 aval(5)=real(
iinfo(1,ifield,ng),r8)
740 status=
def_var(ng, model, s(ng)%ncid, s(ng)%Vid(ifield), &
741 &
nf_fout, 5, t3dobc, aval, vinfo, ncname, &
742 & setfillval = .false.)
755 vinfo( 3)=
'nondimensional'
756 IF (itrc.eq.
itemp)
THEN
757 vinfo(11)=
'upward flux, cooling'
758 vinfo(12)=
'downward flux, heating'
759 ELSE IF (itrc.eq.
isalt)
THEN
760 vinfo(11)=
'upward flux, freshening (net precipitation)'
761 vinfo(12)=
'downward flux, salting (net evaporation)'
765# if defined WRITE_WATER && defined MASKING
769 vinfo(22)=
'coordinates'
771 status=
def_var(ng, model, s(ng)%ncid, &
772 & s(ng)%Vid(
idtsur(itrc)), &
773 &
nf_fout, nvd4, t3dfrc, aval, vinfo, ncname)
785 vinfo( 3)=
'nondimensional'
788# if defined WRITE_WATER && defined MASKING
792 vinfo(22)=
'coordinates'
795 &
nf_fout, nvd4, u3dfrc, aval, vinfo, ncname)
802 vinfo( 3)=
'nondimensional'
805# if defined WRITE_WATER && defined MASKING
809 vinfo(22)=
'coordinates'
812 &
nf_fout, nvd4, v3dfrc, aval, vinfo, ncname)
827 CALL wrt_info (ng, model, s(ng)%ncid, ncname)
835 CALL netcdf_close (ng, model, s(ng)%ncid, ncname, .false.)
846 query:
IF (.not.lcreate)
THEN
851 CALL netcdf_open (ng, model, ncname, 1, s(ng)%ncid)
853 WRITE (
stdout,50) trim(label), trim(ncname)
891#ifdef ADJUST_BOUNDARY
920# ifdef ADJUST_BOUNDARY
935 got_var(
idtvar(itrc))=.true.
937# ifdef ADJUST_BOUNDARY
946 got_var(
idtsur(itrc))=.true.
956 IF (.not.got_var(
idtime))
THEN
958 & trim(label), trim(ncname)
962 IF (.not.got_var(
idfsur))
THEN
964 & trim(label), trim(ncname)
968 IF (.not.got_var(
idubar))
THEN
970 & trim(label), trim(ncname)
974 IF (.not.got_var(
idvbar))
THEN
976 & trim(label), trim(ncname)
980#ifdef ADJUST_BOUNDARY
983 & trim(label), trim(ncname)
989 & trim(label), trim(ncname)
995 & trim(label), trim(ncname)
1000#ifdef ADJUST_WSTRESS
1001 IF (.not.got_var(
idusms))
THEN
1003 & trim(label), trim(ncname)
1007 IF (.not.got_var(
idvsms))
THEN
1009 & trim(label), trim(ncname)
1015 IF (.not.got_var(
iduvel))
THEN
1017 & trim(label), trim(ncname)
1021 IF (.not.got_var(
idvvel))
THEN
1023 & trim(label), trim(ncname)
1027# ifdef ADJUST_BOUNDARY
1030 & trim(label), trim(ncname)
1036 & trim(label), trim(ncname)
1043 IF (.not.got_var(
idtvar(itrc)))
THEN
1045 & trim(label), trim(ncname)
1049# ifdef ADJUST_BOUNDARY
1053 & trim(label), trim(ncname)
1058# ifdef ADJUST_STFLUX
1061 & trim(label), trim(ncname)
1074 10
FORMAT (2x,
'DEF_STATE_NF90 - creating ',a,
' file,',t56, &
1075 &
'Grid ',i2.2,
': ',a)
1076 20
FORMAT (2x,
'DEF_STATE_NF90 - inquiring ',a,
' file,',t56, &
1077 &
'Grid ',i2.2,
': ',a)
1078 30
FORMAT (/,
' DEF_STATE_NF90 - unable to create ',a, &
1079 &
' NetCDF file:',1x,a)
1080 40
FORMAT (1pe11.4,1x,
'millimeter')
1081 50
FORMAT (/,
' DEF_STATE_NF90 - unable to open ',a, &
1082 &
' NetCDF file: ',a)
1083 60
FORMAT (/,
' DEF_STATE_NF90 - unable to find variable: ',a,2x, &
1084 &
' in ',a,
' NetCDF file: ',a)
1099 logical,
intent(in) :: lcreate, lclose
1101 integer,
intent(in) :: ng, model
1103 character (len=*),
intent(in) :: label
1109 logical :: got_var(
nv)
1111 integer,
parameter :: natt = 25
1113 integer :: i, j, ifield, itrc, nrec, nvd, nvd3, nvd4
1114 integer :: recdim, status, varid
1115# ifdef ADJUST_BOUNDARY
1116 integer :: iorjdim, brecdim
1118# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1121 integer :: dimids(
ndimid)
1122 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
1123# ifdef ADJUST_BOUNDARY
1124 integer :: t2dobc(4)
1127 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
1128# ifdef ADJUST_BOUNDARY
1129 integer :: t3dobc(5)
1131# ifdef ADJUST_STFLUX
1132 integer :: t3dfrc(4)
1135# ifdef ADJUST_WSTRESS
1136 integer :: u3dfrc(4), v3dfrc(4)
1141 character (len=256) :: ncname
1142 character (len=MaxLen) :: vinfo(natt)
1144 character (len=*),
parameter :: myfile = &
1145 & __FILE__//
", def_state_pio"
1158 WRITE (
stdout,10) trim(label), ng, trim(ncname)
1160 WRITE (
stdout,20) trim(label), ng, trim(ncname)
1168 define :
IF (lcreate)
THEN
1171 IF (
master)
WRITE (
stdout,30) trim(label), trim(ncname)
1181 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'xi_rho', &
1185 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'xi_u', &
1189 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'xi_v', &
1193 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'xi_psi', &
1197 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'eta_rho', &
1198 &
iobounds(ng)%eta_rho, dimids( 5))
1201 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'eta_u', &
1205 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'eta_v', &
1209 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'eta_psi', &
1210 &
iobounds(ng)%eta_psi, dimids( 8))
1213# ifdef ADJUST_BOUNDARY
1214 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'IorJ', &
1219# if defined WRITE_WATER && defined MASKING
1220 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'xy_rho', &
1224 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'xy_u', &
1228 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'xy_v', &
1233# if defined WRITE_WATER && defined MASKING
1234 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'xyz_rho', &
1235 &
iobounds(ng)%xy_rho*
n(ng), dimids(20))
1238 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'xyz_u', &
1242 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'xyz_v', &
1246 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'xyz_w', &
1247 &
iobounds(ng)%xy_rho*(
n(ng)+1), dimids(23))
1251 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'N', &
1252 &
n(ng), dimids( 9))
1255 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
's_rho', &
1256 &
n(ng), dimids( 9))
1259 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
's_w', &
1260 &
n(ng)+1, dimids(10))
1263 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'tracer', &
1264 &
nt(ng), dimids(11))
1268 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'NST', &
1272 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'Nbed', &
1276# if defined WRITE_WATER && defined MASKING
1277 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'xybed', &
1284 status=
def_dim(ng,
inlm, s(ng)%pioFile, ncname,
'Nbands', &
1288 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'Nphy', &
1292 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'Nbac', &
1296 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'Ndom', &
1300 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'Nfec', &
1306 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'boundary', &
1311 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'Nstate', &
1316# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1317 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'frc_adjust', &
1318 &
nfrec(ng), dimids(30))
1322# ifdef ADJUST_BOUNDARY
1323 status=
def_dim(ng, model, s(ng)%pioFile, ncname,
'obc_adjust', &
1324 &
nbrec(ng), dimids(31))
1328 status=
def_dim(ng, model, s(ng)%pioFile, ncname, &
1330 & pio_unlimited, dimids(12))
1334# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
1337# ifdef ADJUST_BOUNDARY
1343# if defined WRITE_WATER && defined MASKING
1353# if defined WRITE_WATER && defined MASKING
1354 t2dgrd(1)=dimids(17)
1355 t2dgrd(2)=dimids(12)
1357 t3dgrd(1)=dimids(20)
1358 t3dgrd(2)=dimids(12)
1361 t2dgrd(1)=dimids( 1)
1362 t2dgrd(2)=dimids( 5)
1363 t2dgrd(3)=dimids(12)
1365 t3dgrd(1)=dimids( 1)
1366 t3dgrd(2)=dimids( 5)
1367 t3dgrd(3)=dimids( 9)
1368 t3dgrd(4)=dimids(12)
1370# ifdef ADJUST_STFLUX
1371 t3dfrc(1)=dimids( 1)
1372 t3dfrc(2)=dimids( 5)
1374 t3dfrc(4)=dimids(12)
1377# ifdef ADJUST_BOUNDARY
1379 t2dobc(2)=dimids(14)
1381 t2dobc(4)=dimids(12)
1384 t3dobc(2)=dimids( 9)
1385 t3dobc(3)=dimids(14)
1387 t3dobc(5)=dimids(12)
1393# if defined WRITE_WATER && defined MASKING
1394 u2dgrd(1)=dimids(18)
1395 u2dgrd(2)=dimids(12)
1397 u3dgrd(1)=dimids(21)
1398 u3dgrd(2)=dimids(12)
1401 u2dgrd(1)=dimids( 2)
1402 u2dgrd(2)=dimids( 6)
1403 u2dgrd(3)=dimids(12)
1405 u3dgrd(1)=dimids( 2)
1406 u3dgrd(2)=dimids( 6)
1407 u3dgrd(3)=dimids( 9)
1408 u3dgrd(4)=dimids(12)
1410# ifdef ADJUST_WSTRESS
1411 u3dfrc(1)=dimids( 2)
1412 u3dfrc(2)=dimids( 6)
1414 u3dfrc(4)=dimids(12)
1420# if defined WRITE_WATER && defined MASKING
1421 v2dgrd(1)=dimids(19)
1422 v2dgrd(2)=dimids(12)
1424 v3dgrd(1)=dimids(22)
1425 v3dgrd(2)=dimids(12)
1428 v2dgrd(1)=dimids( 3)
1429 v2dgrd(2)=dimids( 7)
1430 v2dgrd(3)=dimids(12)
1432 v3dgrd(1)=dimids( 3)
1433 v3dgrd(2)=dimids( 7)
1434 v3dgrd(3)=dimids( 9)
1435 v3dgrd(4)=dimids(12)
1437# ifdef ADJUST_WSTRESS
1438 v3dfrc(1)=dimids( 3)
1439 v3dfrc(2)=dimids( 7)
1441 v3dfrc(4)=dimids(12)
1448# if defined WRITE_WATER && defined MASKING
1449 w3dgrd(1)=dimids(23)
1450 w3dgrd(2)=dimids(12)
1452 w3dgrd(1)=dimids( 1)
1453 w3dgrd(2)=dimids( 5)
1454 w3dgrd(3)=dimids(10)
1455 w3dgrd(4)=dimids(12)
1466 DO j=1,len(vinfo(1))
1478 CALL def_info (ng, model, s(ng)%pioFile, ncname, dimids)
1489 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
1490 vinfo( 4)=trim(
rclock%calendar)
1494 s(ng)%pioVar(
idtime)%gtype=0
1496 status=
def_var(ng, model, s(ng)%pioFile, &
1497 & s(ng)%pioVar(
idtime)%vd, &
1498 &
pio_tout, 1, (/recdim/), aval, vinfo,ncname, &
1499 & setparaccess = .true.)
1506 vinfo( 3)=
'nondimensional'
1509# if defined WRITE_WATER && defined MASKING
1510 vinfo(20)=
'mask_rho'
1513 vinfo(22)=
'coordinates'
1518 status=
def_var(ng, model, s(ng)%pioFile, &
1519 & s(ng)%pioVar(
idfsur)%vd, &
1520 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
1523# ifdef ADJUST_BOUNDARY
1529 vinfo( 1)=
vname(1,ifield)
1530 vinfo( 2)=
vname(2,ifield)
1531 vinfo( 3)=
'nondimensional'
1532 vinfo(14)=
vname(4,ifield)
1534 vinfo(21)=
vname(6,ifield)
1535 aval(5)=real(
iinfo(1,ifield,ng),r8)
1536 s(ng)%pioVar(ifield)%dkind=
pio_fout
1537 s(ng)%pioVar(ifield)%gtype=
r2dobc
1539 status=
def_var(ng, model, s(ng)%pioFile, &
1540 & s(ng)%pioVar(ifield)%vd, &
1541 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1542 & setfillval = .false.)
1551 vinfo( 3)=
'nondimensional'
1554# if defined WRITE_WATER && defined MASKING
1558 vinfo(22)=
'coordinates'
1563 status=
def_var(ng, model, s(ng)%pioFile, &
1564 & s(ng)%pioVar(
idubar)%vd, &
1565 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
1568# ifdef ADJUST_BOUNDARY
1574 vinfo( 1)=
vname(1,ifield)
1575 vinfo( 2)=
vname(2,ifield)
1576 vinfo( 3)=
'nondimensional'
1577 vinfo(14)=
vname(4,ifield)
1579 vinfo(21)=
vname(6,ifield)
1580 aval(5)=real(
iinfo(1,ifield,ng),r8)
1581 s(ng)%pioVar(ifield)%dkind=
pio_fout
1582 s(ng)%pioVar(ifield)%gtype=
u2dobc
1584 status=
def_var(ng, model, s(ng)%pioFile, &
1585 & s(ng)%pioVar(ifield)%vd, &
1586 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1587 & setfillval = .false.)
1596 vinfo( 3)=
'nondimensional'
1599# if defined WRITE_WATER && defined MASKING
1603 vinfo(22)=
'coordinates'
1608 status=
def_var(ng, model, s(ng)%pioFile, &
1609 & s(ng)%pioVar(
idvbar)%vd, &
1610 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
1613# ifdef ADJUST_BOUNDARY
1619 vinfo( 1)=
vname(1,ifield)
1620 vinfo( 2)=
vname(2,ifield)
1621 vinfo( 3)=
'nondimensional'
1622 vinfo(14)=
vname(4,ifield)
1624 vinfo(21)=
vname(6,ifield)
1625 aval(5)=real(
iinfo(1,ifield,ng),r8)
1626 s(ng)%pioVar(ifield)%dkind=
pio_fout
1627 s(ng)%pioVar(ifield)%gtype=
v2dobc
1629 status=
def_var(ng, model, s(ng)%pioFile, &
1630 & s(ng)%pioVar(ifield)%vd, &
1631 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
1632 & setfillval = .false.)
1642 vinfo( 3)=
'nondimensional'
1645# if defined WRITE_WATER && defined MASKING
1649 vinfo(22)=
'coordinates'
1654 status=
def_var(ng, model, s(ng)%pioFile, &
1655 & s(ng)%pioVar(
iduvel)%vd, &
1656 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
1659# ifdef ADJUST_BOUNDARY
1665 vinfo( 1)=
vname(1,ifield)
1666 vinfo( 2)=
vname(2,ifield)
1667 vinfo( 3)=
'nondimensional'
1668 vinfo(14)=
vname(4,ifield)
1670 vinfo(21)=
vname(6,ifield)
1671 aval(5)=real(
iinfo(1,ifield,ng),r8)
1672 s(ng)%pioVar(ifield)%dkind=
pio_fout
1673 s(ng)%pioVar(ifield)%gtype=
u3dobc
1675 status=
def_var(ng, model, s(ng)%pioFile, &
1676 & s(ng)%pioVar(ifield)%vd, &
1677 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1678 & setfillval = .false.)
1687 vinfo( 3)=
'nondimensional'
1690# if defined WRITE_WATER && defined MASKING
1694 vinfo(22)=
'coordinates'
1699 status=
def_var(ng, model, s(ng)%pioFile, &
1700 & s(ng)%pioVar(
idvvel)%vd, &
1701 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
1704# ifdef ADJUST_BOUNDARY
1710 vinfo( 1)=
vname(1,ifield)
1711 vinfo( 2)=
vname(2,ifield)
1712 vinfo( 3)=
'nondimensional'
1713 vinfo(14)=
vname(4,ifield)
1715 vinfo(21)=
vname(6,ifield)
1716 aval(5)=real(
iinfo(1,ifield,ng),r8)
1717 s(ng)%pioVar(ifield)%dkind=
pio_fout
1718 s(ng)%pioVar(ifield)%gtype=
v3dobc
1720 status=
def_var(ng, model, s(ng)%pioFile, &
1721 & s(ng)%pioVar(ifield)%vd, &
1722 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1723 & setfillval = .false.)
1733 vinfo( 3)=
'nondimensional'
1738 IF (itrc.eq.
idsed(i))
THEN
1739 WRITE (vinfo(19),40) 1000.0_r8*
sd50(i,ng)
1743# if defined WRITE_WATER && defined MASKING
1744 vinfo(20)=
'mask_rho'
1747 vinfo(22)=
'coordinates'
1750 s(ng)%pioTrc(itrc)%gtype=
r3dvar
1752 status=
def_var(ng, model, s(ng)%pioFile, &
1753 & s(ng)%pioTrc(itrc)%vd, &
1754 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
1758# ifdef ADJUST_BOUNDARY
1765 vinfo( 1)=
vname(1,ifield)
1766 vinfo( 2)=
vname(2,ifield)
1767 vinfo( 3)=
'nondimensional'
1768 vinfo(14)=
vname(4,ifield)
1772 IF (itrc.eq.
idsed(i))
THEN
1773 WRITE (vinfo(19),40) 1000.0_r8*
sd50(i,ng)
1777 vinfo(21)=
vname(6,ifield)
1778 aval(5)=real(
iinfo(1,ifield,ng),r8)
1779 s(ng)%pioVar(ifield)%dkind=
pio_fout
1780 s(ng)%pioVar(ifield)%gtype=
r3dobc
1782 status=
def_var(ng, model, s(ng)%pioFile, &
1783 & s(ng)%pioVar(ifield)%vd, &
1784 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
1785 & setfillval = .false.)
1790# ifdef ADJUST_STFLUX
1798 vinfo( 3)=
'nondimensional'
1799 IF (itrc.eq.
itemp)
THEN
1800 vinfo(11)=
'upward flux, cooling'
1801 vinfo(12)=
'downward flux, heating'
1802 ELSE IF (itrc.eq.
isalt)
THEN
1803 vinfo(11)=
'upward flux, freshening (net precipitation)'
1804 vinfo(12)=
'downward flux, salting (net evaporation)'
1808# if defined WRITE_WATER && defined MASKING
1809 vinfo(20)=
'mask_rho'
1812 vinfo(22)=
'coordinates'
1817 status=
def_var(ng, model, s(ng)%pioFile, &
1818 & s(ng)%pioVar(
idtsur(itrc))%vd, &
1819 &
pio_fout, nvd4, t3dfrc, aval, vinfo, ncname)
1825# ifdef ADJUST_WSTRESS
1831 vinfo( 3)=
'nondimensional'
1834# if defined WRITE_WATER && defined MASKING
1838 vinfo(22)=
'coordinates'
1843 status=
def_var(ng, model, s(ng)%pioFile, &
1844 & s(ng)%pioVar(
idusms)%vd, &
1845 &
pio_fout, nvd4, u3dfrc, aval, vinfo, ncname)
1852 vinfo( 3)=
'nondimensional'
1855# if defined WRITE_WATER && defined MASKING
1859 vinfo(22)=
'coordinates'
1864 status=
def_var(ng, model, s(ng)%pioFile, &
1865 & s(ng)%pioVar(
idvsms)%vd, &
1866 &
pio_fout, nvd4, v3dfrc, aval, vinfo, ncname)
1881 CALL wrt_info (ng, model, s(ng)%pioFile, ncname)
1901 query:
IF (.not.lcreate)
THEN
1908 WRITE (
stdout,50) trim(label), trim(ncname)
1915 & piofile = s(ng)%pioFile)
1921 & piofile = s(ng)%pioFile)
1934 IF (trim(var_name(i)).eq.trim(
vname(1,
idtime)))
THEN
1938 s(ng)%pioVar(
idtime)%gtype=0
1939 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idfsur)))
THEN
1944 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idubar)))
THEN
1949 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvbar)))
THEN
1954# ifdef ADJUST_BOUNDARY
1955 ELSE IF (trim(var_name(i)).eq. &
1961 ELSE IF (trim(var_name(i)).eq. &
1967 ELSE IF (trim(var_name(i)).eq. &
1974# ifdef ADJUST_WSTRESS
1975 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idusms)))
THEN
1980 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvsms)))
THEN
1987 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
iduvel)))
THEN
1992 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idvvel)))
THEN
1997# ifdef ADJUST_BOUNDARY
1998 ELSE IF (trim(var_name(i)).eq. &
2004 ELSE IF (trim(var_name(i)).eq. &
2015 IF (trim(var_name(i)).eq.trim(
vname(1,
idtvar(itrc))))
THEN
2016 got_var(
idtvar(itrc))=.true.
2019 s(ng)%pioTrc(itrc)%gtype=
r3dvar
2020# ifdef ADJUST_BOUNDARY
2021 ELSE IF (trim(var_name(i)).eq. &
2028# ifdef ADJUST_STFLUX
2029 ELSE IF (trim(var_name(i)).eq. &
2031 got_var(
idtsur(itrc))=.true.
2043 IF (.not.got_var(
idtime))
THEN
2045 & trim(label), trim(ncname)
2049 IF (.not.got_var(
idfsur))
THEN
2051 & trim(label), trim(ncname)
2055 IF (.not.got_var(
idubar))
THEN
2057 & trim(label), trim(ncname)
2061 IF (.not.got_var(
idvbar))
THEN
2063 & trim(label), trim(ncname)
2067# ifdef ADJUST_BOUNDARY
2070 & trim(label), trim(ncname)
2076 & trim(label), trim(ncname)
2082 & trim(label), trim(ncname)
2087# ifdef ADJUST_WSTRESS
2088 IF (.not.got_var(
idusms))
THEN
2090 & trim(label), trim(ncname)
2094 IF (.not.got_var(
idvsms))
THEN
2096 & trim(label), trim(ncname)
2102 IF (.not.got_var(
iduvel))
THEN
2104 & trim(label), trim(ncname)
2108 IF (.not.got_var(
idvvel))
THEN
2110 & trim(label), trim(ncname)
2114# ifdef ADJUST_BOUNDARY
2117 & trim(label), trim(ncname)
2123 & trim(label), trim(ncname)
2130 IF (.not.got_var(
idtvar(itrc)))
THEN
2132 & trim(label), trim(ncname)
2136# ifdef ADJUST_BOUNDARY
2140 & trim(label), trim(ncname)
2145# ifdef ADJUST_STFLUX
2148 & trim(label), trim(ncname)
2158 s(ng)%Rindex=rec_size
2161 10
FORMAT (2x,
'DEF_STATE_PIO - creating ',a,
' file,',t56, &
2162 &
'Grid ',i2.2,
': ',a)
2163 20
FORMAT (2x,
'DEF_STATE_PIO - inquiring ',a,
' file,',t56, &
2164 &
'Grid ',i2.2,
': ',a)
2165 30
FORMAT (/,
' DEF_STATE_PIO - unable to create ',a, &
2166 &
' NetCDF file:',1x,a)
2167 40
FORMAT (1pe11.4,1x,
'millimeter')
2168 50
FORMAT (/,
' DEF_STATE_PIO - unable to open ',a, &
2169 &
' NetCDF file: ',a)
2170 60
FORMAT (/,
' DEF_STATE_PIO - unable to find variable: ',a,2x, &
2171 &
' in ',a,
' NetCDF file: ',a)