72 CHARACTER(LEN=10),
PARAMETER,
PRIVATE :: verini =
'2024-04-26'
73 CHARACTER(LEN=26),
PARAMETER,
PRIVATE :: &
74 idstr =
'WAVEWATCH III RESTART FILE'
112 SUBROUTINE w3iors ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT )
296 USE w3adatmd,
ONLY:
cx,
cy,
hs,
wlm,
t0m1,
t01,
fp0,
thm,
charn,&
308 USE w3idatmd,
ONLY: wxnwrst, wynwrst
344 INTEGER,
INTENT(IN),
OPTIONAL :: IMOD
345 REAL,
INTENT(INOUT) :: DUMFPI
346 CHARACTER,
INTENT(IN) :: INXOUT*(*)
347 LOGICAL,
INTENT(IN),
OPTIONAL :: FLRSTRT
352 INTEGER,
PARAMETER :: LRB = 4
354 INTEGER :: IGRD, I, J, LRECL, NSIZE, IERR, &
355 NSEAT, MSPEC, TTIME(2), ISEA, JSEA, &
356 NREC, NPART, IPART, IX, IY, IXL, IP, &
357 NPRTX2, NPRTY2, IYL, ITMP
358 INTEGER,
ALLOCATABLE :: MAPTMP(:,:)
360 INTEGER,
SAVE :: IENT = 0
363 INTEGER :: IERR_MPI, IH, IB, ISEA0, ISEAN, &
366 INTEGER(KIND=8) :: RPOS
368 INTEGER,
ALLOCATABLE :: STAT1(:,:), STAT2(:,:)
369 REAL,
ALLOCATABLE :: VGBUFF(:), VLBUFF(:)
371 REAL(KIND=lrb),
ALLOCATABLE :: writebuff(:), tmp(:), tmp2(:)
373 LOGICAL :: WRITE, IOSFLG
374 LOGICAL :: FLOGOA(NOGRP,NGRPP)
376 CHARACTER(LEN=4) :: TYPE
377 CHARACTER(LEN=10) :: VERTST
379 CHARACTER(LEN=40) :: FNAME
380 CHARACTER(LEN=26) :: IDTST
381 CHARACTER(LEN=30) :: TNAME
382 CHARACTER(LEN=15) :: TIMETAG
387 CALL strace (ient,
'W3IORS')
397 iosflg = iostyp .GT. 0
401 IF (
PRESENT(imod) )
THEN
407 CALL w3seto ( igrd, ndse, ndst )
408 CALL w3setg ( igrd, ndse, ndst )
409 CALL w3setw ( igrd, ndse, ndst )
411 CALL w3seti ( igrd, ndse, ndst )
414 IF (inxout.NE.
'READ' .AND. inxout.NE.
'HOT' .AND. &
415 inxout.NE.
'COLD' .AND. inxout.NE.
'WIND' .AND. &
416 inxout.NE.
'CALM' )
THEN
417 IF ( iaproc .EQ. naperr )
WRITE (ndse,900) inxout
421 WRITE = inxout .NE.
'READ'
422 IF ( inxout .EQ.
'HOT' )
THEN
429 WRITE (ndst,9000) inxout,
WRITE, ntproc, naproc, iaproc, naprst
434 IF ( .NOT.
dinit )
THEN
435 IF ( iaproc .LE. naproc )
THEN
436 CALL w3dimw ( imod, ndse, ndst )
438 CALL w3dimw ( imod, ndse, ndst, .false. )
442 IF ( iaproc .LE. naproc )
va(:,0) = 0.
444 lrecl = max( lrb*nspec , &
445 lrb*(6+(25/lrb)+(9/lrb)+(29/lrb)+(3/lrb)) )
449 ALLOCATE(writebuff(nsize))
465 IF (
PRESENT(flrstrt) )
THEN
467 WRITE(timetag,
"(i8.8,'.'i6.6)")
time(1),
time(2)
468 fname=timetag//
'.restart.'//filext(:i)
473 IF ( ifile.EQ.0 )
THEN
474 fname =
'restart.'//filext(:i)
476 fname =
'restartNNN.'//filext(:i)
477 IF (
WRITE .AND. iaproc.EQ.naprst ) &
478 WRITE (fname(8:10),
'(I3.3)') ifile
485 WRITE (ndst,9001) fname, lrecl
490 IF ( iaproc .EQ. naperr ) &
491 WRITE(ndse,
'(A,I8)')
'UNIT NUMBERS OF RESTART FILE AND '&
492 //
'TEST OUTPUT ARE THE SAME : ',ndst
497 IF ( .NOT.iosflg .OR. iaproc.EQ.naprst ) &
498 OPEN (ndsr,
file=fnmpre(:j)//fname,form=
'UNFORMATTED', convert=
file_endian, &
499 access=
'STREAM',err=800,iostat=ierr)
501 OPEN (ndsr,
file=fnmpre(:j)//fname,form=
'UNFORMATTED', convert=
file_endian, &
502 access=
'STREAM',err=800,iostat=ierr, &
503 status=
'OLD',action=
'READ')
510 IF ( iaproc .EQ. naprst )
THEN
515 WRITE (ndsr,pos=1) writebuff
517 WRITE (ndsr,pos=1) idstr, verini, gname,
TYPE, nsea, &
523 READ (ndsr,pos=1,err=802,iostat=ierr) &
524 idtst, vertst, tname,
TYPE, nseat, mspec, flogoa
526 IF ( idtst .NE. idstr )
THEN
527 IF ( iaproc .EQ. naperr ) &
528 WRITE (ndse,901) idtst, idstr
531 IF ( vertst .NE. verini )
THEN
532 IF ( iaproc .EQ. naperr ) &
533 WRITE (ndse,902) vertst, verini
536 IF ( tname .NE. gname )
THEN
537 IF ( iaproc .EQ. naperr ) &
538 WRITE (ndse,903) tname, gname
540 IF (type.NE.
'FULL' .AND. type.NE.
'COLD' .AND. &
541 type.NE.
'WIND' .AND. type.NE.
'CALM' )
THEN
542 IF ( iaproc .EQ. naperr ) &
543 WRITE (ndse,904)
TYPE
546 IF (nseat.NE.nsea .OR. nspec.NE.mspec)
THEN
547 IF ( iaproc .EQ. naperr ) &
548 WRITE (ndse,905) mspec, nseat, nspec, nsea
551 IF (type.EQ.
'FULL')
THEN
553 ELSE IF (type.EQ.
'WIND')
THEN
555 ELSE IF (type.EQ.
'CALM')
THEN
561 IF (.NOT.
WRITE .AND.
oarst .AND. iaproc .EQ. naproc)
THEN
564 IF (flogrr(i,j) .AND. .NOT. flogoa(i,j))
THEN
565 WRITE(screen,1000) i, j
576 WRITE (ndst,9002) idstr, verini, gname,
TYPE, &
582 IF (type.EQ.
'FULL')
THEN
583 rpos = 1_8 + lrecl*(2-1_8)
585 IF ( iaproc .EQ. naprst )
THEN
587 WRITE (ndsr,pos=rpos) writebuff
588 WRITE (ndsr,pos=rpos)
time
591 READ (ndsr,pos=rpos,err=802,iostat=ierr) ttime
592 IF (
time(1).NE.ttime(1) .OR.
time(2).NE.ttime(2))
THEN
593 IF ( iaproc .EQ. naperr ) &
594 WRITE (ndse,906) ttime,
time
600 WRITE (ndst,9003)
time
611 IF ( type.EQ.
'WIND' .OR. type.EQ.
'CALM' )
THEN
612 IF ( .NOT.iosflg .OR. iaproc.EQ.naprst )
THEN
616 WRITE (ndst,9005)
TYPE
619 INQUIRE (unit=ndsr, opened=ndsropn)
620 IF (ndsropn)
CLOSE(ndsr)
621 IF (
ALLOCATED(writebuff))
DEALLOCATE(writebuff)
622 IF (
ALLOCATED(tmp))
DEALLOCATE(tmp)
623 IF (
ALLOCATED(tmp2))
DEALLOCATE(tmp2)
626 ELSE IF ( iaproc.LE.naproc .OR. iaproc.EQ. naprst )
THEN
630 IF ( .NOT.iosflg .OR. (naproc.EQ.1.AND.naprst.EQ.1) )
THEN
633 CALL init_get_isea(isea, jsea)
635 rpos = 1_8 + lrecl*(nrec-1_8)
637 writebuff(1:nspec) =
va(1:nspec,jsea)
638 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
644 rpos = 1_8 + lrecl*(nrec-1_8)
646 writebuff(1:nspec) =
va(1:nspec,jsea)
647 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
670 IF ( iaproc .NE. naprst )
THEN
672 ELSE IF ( naprst .LE. naproc )
THEN
678 ALLOCATE ( stat1(mpi_status_size,nrq) )
679 IF ( iaproc .EQ. naprst )
CALL mpi_startall &
683 isea0 = 1 + (ib-1)*
rsblks*naproc
684 isean = min( nsea , ib*
rsblks*naproc )
686 IF ( iaproc .EQ. naprst )
THEN
688 ih = 1 + nrq * (ib-1)
690 ( nrq,
irqrss(ih), stat1, ierr_mpi )
691 IF ( ib .LT.
nblkrs )
THEN
694 ( nrq,
irqrss(ih), ierr_mpi )
699 CALL init_get_jsea_isproc(isea, jsea, ip)
700 rpos = 1_8 + lrecl*(nrec-1_8)
702 IF ( ip .EQ. naprst )
THEN
703 writebuff(1:nspec) =
va(1:nspec,jsea)
705 jsea = jsea - 2*((ib-1)/2)*
rsblks
706 writebuff(1:nspec) =
vaaux(1:nspec,jsea,ip)
708 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
715 ( 1,
irqrss(ib), ierr_mpi )
717 ( 1,
irqrss(ib), stat1, ierr_mpi )
733 IF ( type.EQ.
'WIND' .OR. type.EQ.
'CALM' )
THEN
735 WRITE (ndst,9020)
TYPE
750 nseal_min = 1 + (nsea-naproc)/naproc
751 IF ( naproc.GT.1 )
THEN
758 IF ( iaproc.LE.naproc )
THEN
761 ALLOCATE( vgbuff( nsize * naproc ) )
762 ALLOCATE( vlbuff( nsize ) )
764 DO jsea = 1, nseal_min
766 IF ( iaproc .EQ. naproc )
THEN
767 rpos = 1_8 + (2 + (jsea - 1_8) * naproc) * lrecl
768 READ(ndsr, pos=rpos,err=802,iostat=ierr) vgbuff(:)
773 CALL mpi_scatter(vgbuff, nsize, mpi_real, &
774 vlbuff, nsize, mpi_real, &
777 va(1:nspec,jsea) = vlbuff(1:nspec)
782 IF ( jsea.EQ.nseal )
THEN
783 CALL init_get_isea(isea, jsea)
785 rpos = 1_8 + lrecl*(nrec-1_8)
786 READ (ndsr, pos=rpos, err=802, iostat=ierr) &
787 (
va(i,jsea), i=1,nspec)
800 CALL init_get_isea(isea, jsea)
802 rpos = 1_8 + lrecl*(nrec-1_8)
803 READ (ndsr,pos=rpos,err=802,iostat=ierr) &
804 (
va(i,jsea),i=1,nspec)
825 npart = 1 + (nsea-1)/nsize
826 nprtx2 = 1 + (nx-1)/nsize
827 nprty2 = 1 + (ny-1)/nsize
831 IF (type.EQ.
'FULL')
THEN
833 IF ( iaproc .EQ. naprst )
THEN
836 if (
associated(
irqrs))
then
837 ALLOCATE ( stat2(mpi_status_size,
nrqrs) )
844 rpos = 1_8 + lrecl*(nrec-1_8)
846 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
847 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
851 rpos = 1_8 + lrecl*(nrec-1_8)
852 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
853 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
854 (
wlv(isea),isea=1+(ipart-1)*nsize, &
855 min(nsea,ipart*nsize))
859 rpos = 1_8 + lrecl*(nrec-1_8)
860 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
861 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
862 (
ice(isea),isea=1+(ipart-1)*nsize, &
863 min(nsea,ipart*nsize))
878 rpos = 1_8 + lrecl*(nrec-1_8)
879 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
880 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
881 (wxn(ix,iyl),iyl=1+(ipart-1)*nsize, &
888 rpos = 1_8 + lrecl*(nrec-1_8)
889 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
890 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
891 (wyn(ix,iyl),iyl=1+(ipart-1)*nsize, &
896 ALLOCATE ( maptmp(ny,nx) )
897 maptmp = mapsta + 8*mapst2
901 rpos = 1_8 + lrecl*(nrec-1_8)
902 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
904 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
905 (maptmp(iy,ixl),ixl=1+(ipart-1)*nsize, &
909 DEALLOCATE ( maptmp )
912 rpos = 1_8 + lrecl*(nrec-1_8)
913 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
914 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
915 (
ust(isea),isea=1+(ipart-1)*nsize, &
916 min(nsea,ipart*nsize))
920 rpos = 1_8 + lrecl*(nrec-1_8)
921 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
922 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
923 (
ustdir(isea),isea=1+(ipart-1)*nsize, &
924 min(nsea,ipart*nsize))
928 rpos = 1_8 + lrecl*(nrec-1_8)
929 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
930 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
931 (
asf(isea),isea=1+(ipart-1)*nsize, &
932 min(nsea,ipart*nsize))
936 rpos = 1_8 + lrecl*(nrec-1_8)
937 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
938 WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
939 (
fpis(isea),isea=1+(ipart-1)*nsize, &
940 min(nsea,ipart*nsize))
944 CALL w3xeta ( igrd, ndse, ndst )
947 IF ( flogrr(1,2) )
THEN
948 WRITE(ndsr,err=803,iostat=ierr) cx(1:nsea)
949 WRITE(ndsr,err=803,iostat=ierr) cy(1:nsea)
951 IF ( flogrr(1,12) ) &
952 WRITE(ndsr,err=803,iostat=ierr)
icef(1:nsea)
954 WRITE(ndsr,err=803,iostat=ierr) hs(1:nsea)
956 WRITE(ndsr,err=803,iostat=ierr) wlm(1:nsea)
958 WRITE(ndsr,err=803,iostat=ierr) t0m1(1:nsea)
960 WRITE(ndsr,err=803,iostat=ierr) t01(1:nsea)
962 WRITE(ndsr,err=803,iostat=ierr) fp0(1:nsea)
964 WRITE(ndsr,err=803,iostat=ierr) thm(1:nsea)
965 IF ( flogrr(2,19) ) &
966 WRITE(ndsr,err=803,iostat=ierr) wnmean(1:nsea)
968 WRITE(ndsr,err=803,iostat=ierr) charn(1:nsea)
969 IF ( flogrr(5,5) )
THEN
970 WRITE(ndsr,err=803,iostat=ierr) tauwix(1:nsea)
971 WRITE(ndsr,err=803,iostat=ierr) tauwiy(1:nsea)
973 IF ( flogrr(5,11) ) &
974 WRITE(ndsr,err=803,iostat=ierr) tws(1:nsea)
975 IF ( flogrr(6,2) )
THEN
976 WRITE(ndsr,err=803,iostat=ierr) tauox(1:nsea)
977 WRITE(ndsr,err=803,iostat=ierr) tauoy(1:nsea)
980 WRITE(ndsr,err=803,iostat=ierr) bhd(1:nsea)
982 WRITE(ndsr,err=803,iostat=ierr) phioc(1:nsea)
983 IF ( flogrr(6,5) )
THEN
984 WRITE(ndsr,err=803,iostat=ierr) tusx(1:nsea)
985 WRITE(ndsr,err=803,iostat=ierr) tusy(1:nsea)
987 IF ( flogrr(6,6) )
THEN
988 WRITE(ndsr,err=803,iostat=ierr) ussx(1:nsea)
989 WRITE(ndsr,err=803,iostat=ierr) ussy(1:nsea)
991 IF ( flogrr(6,10) )
THEN
992 WRITE(ndsr,err=803,iostat=ierr) tauice(1:nsea,1)
993 WRITE(ndsr,err=803,iostat=ierr) tauice(1:nsea,2)
995 IF ( flogrr(6,13) )
THEN
996 WRITE(ndsr,err=803,iostat=ierr) tauocx(1:nsea)
997 WRITE(ndsr,err=803,iostat=ierr) tauocy(1:nsea)
999 IF ( flogrr(7,2) )
THEN
1000 WRITE(ndsr,err=803,iostat=ierr) uba(1:nsea)
1001 WRITE(ndsr,err=803,iostat=ierr) ubd(1:nsea)
1003 IF ( flogrr(7,4) ) &
1004 WRITE(ndsr,err=803,iostat=ierr) phibbl(1:nsea)
1005 IF ( flogrr(7,5) )
THEN
1006 WRITE(ndsr,err=803,iostat=ierr) taubbl(1:nsea,1)
1007 WRITE(ndsr,err=803,iostat=ierr) taubbl(1:nsea,2)
1011 CALL w3seta ( igrd, ndse, ndst )
1026 IF (type.EQ.
'FULL')
THEN
1027 rpos = 1_8 + lrecl*(nrec-1_8)
1028 READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1032 rpos = 1_8 + lrecl*(nrec-1_8)
1033 READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1034 (
wlv(isea),isea=1+(ipart-1)*nsize, &
1035 min(nsea,ipart*nsize))
1039 rpos = 1_8 + lrecl*(nrec-1_8)
1040 READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1041 (
ice(isea),isea=1+(ipart-1)*nsize, &
1042 min(nsea,ipart*nsize))
1048 rpos = 1_8 + lrecl*(nrec-1_8)
1049 READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1050 (wxnwrst(ix,iyl),iyl=1+(ipart-1)*nsize, &
1051 min(ny,ipart*nsize))
1057 rpos = 1_8 + lrecl*(nrec-1_8)
1058 READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1059 (wynwrst(ix,iyl),iyl=1+(ipart-1)*nsize, &
1060 min(ny,ipart*nsize))
1064 ALLOCATE ( maptmp(ny,nx) )
1068 rpos = 1_8 + lrecl*(nrec-1_8)
1069 READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1070 (maptmp(iy,ixl),ixl=1+(ipart-1)*nsize, &
1071 min(nx,ipart*nsize))
1074 mapsta = mod(maptmp+2,8) - 2
1075 mapst2 = (maptmp-mapsta) / 8
1076 DEALLOCATE ( maptmp )
1080 IF (gtype.EQ.ungtype)
THEN
1090 rpos = 1_8 + lrecl*(nrec-1_8)
1091 READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1092 (
ust(isea),isea=1+(ipart-1)*nsize, &
1093 min(nsea,ipart*nsize))
1097 rpos = 1_8 + lrecl*(nrec-1_8)
1098 READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1099 (
ustdir(isea),isea=1+(ipart-1)*nsize, &
1100 min(nsea,ipart*nsize))
1104 rpos = 1_8 + lrecl*(nrec-1_8)
1105 READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1106 (
asf(isea),isea=1+(ipart-1)*nsize, &
1107 min(nsea,ipart*nsize))
1111 rpos = 1_8 + lrecl*(nrec-1_8)
1112 READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1113 (
fpis(isea),isea=1+(ipart-1)*nsize, &
1114 min(nsea,ipart*nsize))
1117 IF ( flogoa(1,2) )
THEN
1118 READ (ndsr,err=802,iostat=ierr) cx(1:nsea)
1119 READ (ndsr,err=802,iostat=ierr) cy(1:nsea)
1121 IF ( flogoa(1,12) )
THEN
1122 READ (ndsr,err=802,iostat=ierr)
icef(1:nsea)
1124 IF ( flogoa(2,1) )
THEN
1125 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1127 j = iaproc + (i-1)*naproc
1128 IF (j .LE. nsea) hs(i) = tmp(j)
1131 IF ( flogoa(2,2) )
THEN
1132 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1134 j = iaproc + (i-1)*naproc
1135 IF (j .LE. nsea) wlm(i) = tmp(j)
1138 IF ( flogoa(2,4) )
THEN
1139 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1141 j = iaproc + (i-1)*naproc
1142 IF (j .LE. nsea) t0m1(i) = tmp(j)
1145 IF ( flogoa(2,5) )
THEN
1146 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1148 j = iaproc + (i-1)*naproc
1149 IF (j .LE. nsea) t01(i) = tmp(j)
1152 IF ( flogoa(2,6) )
THEN
1153 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1155 j = iaproc + (i-1)*naproc
1156 IF (j .LE. nsea) fp0(i) = tmp(j)
1159 IF ( flogoa(2,7) )
THEN
1160 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1162 j = iaproc + (i-1)*naproc
1163 IF (j .LE. nsea) thm(i) = tmp(j)
1166 IF ( flogoa(2,19) )
THEN
1167 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1169 j = iaproc + (i-1)*naproc
1170 IF (j .LE. nsea) wnmean(i) = tmp(j)
1173 IF ( flogoa(5,2) )
THEN
1174 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1176 j = iaproc + (i-1)*naproc
1177 IF (j .LE. nsea) charn(i) = tmp(j)
1180 IF ( flogoa(5,5) )
THEN
1181 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1182 READ (ndsr,err=802,iostat=ierr) tmp2(1:nsea)
1184 j = iaproc + (i-1)*naproc
1185 IF (j .LE. nsea)
THEN
1191 IF ( flogoa(5,11) )
THEN
1192 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1194 j = iaproc + (i-1)*naproc
1195 IF (j .LE. nsea) tws(i) = tmp(j)
1198 IF ( flogoa(6,2) )
THEN
1199 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1200 READ (ndsr,err=802,iostat=ierr) tmp2(1:nsea)
1202 j = iaproc + (i-1)*naproc
1203 IF (j .LE. nsea)
THEN
1209 IF ( flogoa(6,3) )
THEN
1210 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1212 j = iaproc + (i-1)*naproc
1213 IF (j .LE. nsea) bhd(i) = tmp(j)
1216 IF ( flogoa(6,4) )
THEN
1217 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1219 j = iaproc + (i-1)*naproc
1220 IF (j .LE. nsea) phioc(i) = tmp(j)
1223 IF ( flogoa(6,5) )
THEN
1224 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1225 READ (ndsr,err=802,iostat=ierr) tmp2(1:nsea)
1227 j = iaproc + (i-1)*naproc
1228 IF (j .LE. nsea)
THEN
1234 IF ( flogoa(6,6) )
THEN
1235 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1236 READ (ndsr,err=802,iostat=ierr) tmp2(1:nsea)
1238 j = iaproc + (i-1)*naproc
1239 IF (j .LE. nsea)
THEN
1245 IF ( flogoa(6,10) )
THEN
1246 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1247 READ (ndsr,err=802,iostat=ierr) tmp2(1:nsea)
1249 j = iaproc + (i-1)*naproc
1250 IF (j .LE. nsea)
THEN
1251 tauice(i,1) = tmp(j)
1252 tauice(i,2) = tmp2(j)
1256 IF ( flogoa(6,13) )
THEN
1257 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1258 READ (ndsr,err=802,iostat=ierr) tmp2(1:nsea)
1260 j = iaproc + (i-1)*naproc
1261 IF (j .LE. nsea)
THEN
1267 IF ( flogoa(7,2) )
THEN
1268 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1269 READ (ndsr,err=802,iostat=ierr) tmp2(1:nsea)
1271 j = iaproc + (i-1)*naproc
1272 IF (j .LE. nsea)
THEN
1278 IF ( flogoa(7,4) )
THEN
1279 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1281 j = iaproc + (i-1)*naproc
1282 IF (j .LE. nsea) phibbl(i) = tmp(j)
1285 IF ( flogoa(7,5) )
THEN
1286 READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1287 READ (ndsr,err=802,iostat=ierr) tmp2(1:nsea)
1289 j = iaproc + (i-1)*naproc
1290 IF (j .LE. nsea)
THEN
1291 taubbl(i,1) = tmp(j)
1292 taubbl(i,2) = tmp2(j)
1360 IF ( .NOT.iosflg .OR. iaproc.EQ.naprst )
THEN
1367 IF (
ALLOCATED(writebuff))
DEALLOCATE(writebuff)
1368 IF (
ALLOCATED(tmp))
DEALLOCATE(tmp)
1369 IF (
ALLOCATED(tmp2))
DEALLOCATE(tmp2)
1388 IF ( iaproc .EQ. naperr )
WRITE (ndse,990)
TYPE, ierr
1392 IF ( iaproc .EQ. naperr )
WRITE (ndse,991)
1396 IF ( iaproc .EQ. naperr )
WRITE (ndse,992) ierr
1400 IF ( iaproc .EQ. naperr )
WRITE (ndse,993) ierr, rpos
1406 900
FORMAT (/
' *** WAVEWATCH III ERROR IN W3IORS :'/ &
1407 ' ILLEGAL INXOUT VALUE: ',a/)
1408 901
FORMAT (/
' *** WAVEWATCH III ERROR IN W3IORS :'/ &
1409 ' ILLEGAL IDSTR, READ : ',a/ &
1411 902
FORMAT (/
' *** WAVEWATCH III ERROR IN W3IORS :'/ &
1412 ' ILLEGAL VERINI, READ : ',a/ &
1414 903
FORMAT (/
' *** WAVEWATCH III WARNING IN W3IORS :'/ &
1415 ' ILLEGAL GNAME, READ : ',a/ &
1417 904
FORMAT (/
' *** WAVEWATCH III ERROR IN W3IORS :'/ &
1418 ' ILLEGAL TYPE : ',a/)
1419 905
FORMAT (/
' *** WAVEWATCH III ERROR IN W3IORS :'/ &
1420 ' CONFLICTING NSPEC, NSEA GRID : ',2i8/ &
1421 ' EXPECTED : ',2i8/)
1422 906
FORMAT (/
' *** WAVEWATCH III ERROR IN W3IORS :'/ &
1423 ' CONFLICTING TIMES: FILE : ',i10.8,i8.6/ &
1424 ' MODEL : ',i10.8,i8.6/)
1426 990
FORMAT (/
' *** WAVEWATCH III WARNING IN W3IORS : '/ &
1427 ' NO READABLE RESTART FILE, ', &
1428 'INITIALIZE WITH ''',a,
''' INSTEAD'/ &
1430 991
FORMAT (/
' *** WAVEWATCH III ERROR IN W3IORS : '/ &
1431 ' PREMATURE END OF FILE'/)
1432 992
FORMAT (/
' *** WAVEWATCH III ERROR IN W3IORS : '/ &
1433 ' ERROR IN READING FROM FILE'/ &
1435 993
FORMAT (/
' *** WAVEWATCH III ERROR IN W3IORS : '/ &
1436 ' ERROR IN WRITING TO FILE'/ &
1437 ' IOSTAT =',i5,
', POS =',i11 /)
1438 1000
FORMAT (/
' *** WAVEWATCH III WARNING IN W3IORS : '/ &
1439 ' REQUESTED EXTRA RESTART GROUP',i2,
' FIELD',i2, / &
1440 ' IS NOT PRESENT IN THE RESTART FILE.'/ &
1441 ' THIS MAY CAUSE INSTABILITIES IN COUPLED CONFIGURATIONS')
1445 9000
FORMAT (
' TEST W3IORS : TEST PARAMETERS :'/ &
1452 9001
FORMAT (
' FNAME : ',a/ &
1454 9002
FORMAT (
' IDSTR : ',a/ &
1461 9003
FORMAT (
' TEST W3IORS :',i10.8,i8.6,
' UTC')
1462 9004
FORMAT (
' TEST W3IORS : TIME NOT AVAILABLE ')
1463 9005
FORMAT (
' TEST W3IORS : NO SPECTRA, TYPE=''',a,
''' ')
1464 9006
FORMAT (
' TEST W3IORS : SPECTRA PROCESSED ')
1465 9007
FORMAT (
' TEST W3IORS : WATER LEVELS ETC. PROCESSED ')
1466 9008
FORMAT (
' TEST W3IORS : WATER LEVELS ETC. PROCESSED (DUMMY)')
1468 9020
FORMAT (
' TEST W3IORS : RSTYPE = ',a,
', PERFORMED BY W3INIT')