Go to the documentation of this file.
156 INTEGER,
PRIVATE :: ISTAT
184 REAL,
POINTER :: wxnwrst(:,:)
185 REAL,
POINTER :: wynwrst(:,:)
193 REAL,
POINTER :: cx0(:,:)
194 REAL,
POINTER :: cy0(:,:)
195 REAL,
POINTER :: cxn(:,:)
196 REAL,
POINTER :: cyn(:,:)
197 REAL,
POINTER :: wlev(:,:)
198 REAL,
POINTER :: icei(:,:)
199 REAL,
POINTER :: ux0(:,:)
200 REAL,
POINTER :: uy0(:,:)
201 REAL,
POINTER :: uxn(:,:)
202 REAL,
POINTER :: uyn(:,:)
203 REAL,
POINTER :: rh0(:,:)
204 REAL,
POINTER :: rhn(:,:)
205 REAL,
POINTER :: bergi(:,:)
206 REAL,
POINTER :: mudt(:,:)
207 REAL,
POINTER :: mudv(:,:)
208 REAL,
POINTER :: mudd(:,:)
209 REAL,
POINTER :: icep1(:,:)
210 REAL,
POINTER :: icep2(:,:)
211 REAL,
POINTER :: icep3(:,:)
212 REAL,
POINTER :: icep4(:,:)
213 REAL,
POINTER :: icep5(:,:)
221 LOGICAL :: wrstiinit=.false.
246 wxnwrst(:,:),wynwrst(:,:), &
248 cx0(:,:), cy0(:,:), cxn(:,:), &
249 cyn(:,:), wlev(:,:), icei(:,:), &
250 ux0(:,:), uy0(:,:), uxn(:,:), &
251 uyn(:,:), rh0(:,:), rhn(:,:), &
252 bergi(:,:), mudt(:,:), mudv(:,:), &
253 mudd(:,:), icep1(:,:), icep2(:,:), &
254 icep3(:,:), icep4(:,:), icep5(:,:)
282 SUBROUTINE w3ninp ( NDSE, NDST )
347 INTEGER,
INTENT(IN) :: NDSE, NDST
354 INTEGER,
SAVE :: IENT = 0
355 CALL strace (ient,
'W3NINP')
361 IF (
ngrids .EQ. -1 )
THEN
370 check_alloc_status( istat )
396 inputs(i)%INFLAGS1 = .false.
397 inputs(i)%INFLAGS2 = .false.
398 inputs(i)%FLAGSC = .false.
409 1001
FORMAT (/
' *** ERROR W3NINP : NGRIDS NOT YET SET *** '/ &
411 ' RUN W3NMOD FIRST'/)
414 9000
FORMAT (
' TEST W3NINP : SETTING UP FOR ',i2,
' -',i3,
' GRIDS')
434 SUBROUTINE w3dimi ( IMOD, NDSE, NDST, FLAGSTIDEIN )
512 INTEGER,
INTENT(IN) :: IMOD, NDSE, NDST
513 LOGICAL,
INTENT(IN),
OPTIONAL :: FLAGSTIDEIN(4)
519 LOGICAL :: FLAGSTIDE(4)=.false.
521 INTEGER,
SAVE :: IENT = 0
522 CALL strace (ient,
'W3DIMI')
528 IF ( ngrids .EQ. -1 )
THEN
533 IF ( imod.LT.-nauxgr .OR. imod.GT.
nidata )
THEN
534 WRITE (ndse,1002) imod, -nauxgr,
nidata
538 IF (
inputs(imod)%IINIT )
THEN
544 WRITE (ndst,9000) imod
548 IF ( jgrid .NE. imod )
CALL w3setg ( imod, ndse, ndst )
554 IF (
PRESENT(flagstidein) )
THEN
555 flagstide(:) = flagstidein(:)
592 ALLOCATE (
inputs(imod)%ICEP1(nx,ny), stat=istat )
593 check_alloc_status( istat )
596 ALLOCATE (
inputs(imod)%ICEP2(nx,ny), stat=istat )
597 check_alloc_status( istat )
600 ALLOCATE (
inputs(imod)%ICEP3(nx,ny), stat=istat )
601 check_alloc_status( istat )
604 ALLOCATE (
inputs(imod)%ICEP4(nx,ny), stat=istat )
605 check_alloc_status( istat )
608 ALLOCATE (
inputs(imod)%ICEP5(nx,ny), stat=istat )
609 check_alloc_status( istat )
613 ALLOCATE (
inputs(imod)%MUDD(nx,ny), stat=istat )
614 check_alloc_status( istat )
617 ALLOCATE (
inputs(imod)%MUDT(nx,ny), stat=istat )
618 check_alloc_status( istat )
621 ALLOCATE (
inputs(imod)%MUDV(nx,ny), stat=istat )
622 check_alloc_status( istat )
626 ALLOCATE (
inputs(imod)%WLEV(nx,ny), stat=istat )
627 check_alloc_status( istat )
639 ALLOCATE (
inputs(imod)%CX0(nx,ny) , &
640 inputs(imod)%CY0(nx,ny) , &
641 inputs(imod)%CXN(nx,ny) , &
642 inputs(imod)%CYN(nx,ny) , stat=istat )
646 check_alloc_status( istat )
651 ALLOCATE (
inputs(imod)%WLTIDE(nx,ny,
ntide,2), stat=istat )
652 check_alloc_status( istat )
658 check_alloc_status( istat )
664 IF(.NOT.(
inputs(imod)%WRSTIINIT))
THEN
665 ALLOCATE (
inputs(imod)%WXNwrst(nx,ny) , &
666 inputs(imod)%WYNwrst(nx,ny) , stat=istat )
667 inputs(imod)%WRSTIINIT=.true.
682 ALLOCATE (
inputs(imod)%WX0(nx,ny) , &
683 inputs(imod)%WY0(nx,ny) , &
684 inputs(imod)%DT0(nx,ny) , &
685 inputs(imod)%WXN(nx,ny) , &
686 inputs(imod)%WYN(nx,ny) , &
687 inputs(imod)%DTN(nx,ny) , stat=istat )
691 check_alloc_status( istat )
697 ALLOCATE (
inputs(imod)%ICEI(nx,ny), &
698 inputs(imod)%BERGI(nx,ny), stat=istat )
699 check_alloc_status( istat )
712 ALLOCATE (
inputs(imod)%UX0(nx,ny) , &
713 inputs(imod)%UY0(nx,ny) , &
714 inputs(imod)%UXN(nx,ny) , &
715 inputs(imod)%UYN(nx,ny) , stat=istat )
719 check_alloc_status( istat )
729 ALLOCATE (
inputs(imod)%RH0(nx,ny) , &
730 inputs(imod)%RHN(nx,ny) , stat=istat )
734 check_alloc_status( istat )
737 inputs(imod)%IINIT = .true.
746 CALL w3seti ( imod, ndse, ndst )
762 IF ( jgrid .NE. imod )
CALL w3setg ( jgrid, ndse, ndst )
769 WRITE (ndse,*)
" *** WARNING W3DIMI : TAUA NOT USED *** "
772 WRITE (ndse,*)
" *** WARNING W3DIMI : TAUA NOT USED *** "
775 WRITE (ndse,*)
" *** WARNING W3DIMI : TAUA NOT USED *** "
778 WRITE (ndse,*)
" *** WARNING W3DIMI : TAUA NOT USED *** "
781 WRITE (ndse,*)
" *** WARNING W3DIMI : TAUA NOT USED *** "
787 1001
FORMAT (/
' *** ERROR W3DIMI : GRIDS NOT INITIALIZED *** '/ &
788 ' RUN W3NMOD FIRST '/)
789 1002
FORMAT (/
' *** ERROR W3DIMI : ILLEGAL MODEL NUMBER *** '/ &
793 1003
FORMAT (/
' *** ERROR W3DIMI : ARRAY(S) ALREADY ALLOCATED *** ')
796 9000
FORMAT (
' TEST W3DIMI : MODEL ',i4,
' DIM. AT ',2i5,i7)
797 9001
FORMAT (
' TEST W3DIMI : ARRAYS ALLOCATED')
798 9002
FORMAT (
' TEST W3DIMI : POINTERS RESET')
799 9003
FORMAT (
' TEST W3DIMI : DIMENSIONS STORED')
818 SUBROUTINE w3seti ( IMOD, NDSE, NDST )
886 INTEGER,
INTENT(IN) :: IMOD, NDSE, NDST
892 INTEGER,
SAVE :: IENT = 0
893 CALL strace (ient,
'W3SETI')
899 IF (
nidata .EQ. -1 )
THEN
910 WRITE (ndst,9000) imod
987 icep1 =>
inputs(imod)%ICEP1
990 icep2 =>
inputs(imod)%ICEP2
993 icep3 =>
inputs(imod)%ICEP3
996 icep4 =>
inputs(imod)%ICEP4
999 icep5 =>
inputs(imod)%ICEP5
1003 mudd =>
inputs(imod)%MUDD
1006 mudt =>
inputs(imod)%MUDT
1009 mudv =>
inputs(imod)%MUDV
1013 wlev =>
inputs(imod)%WLEV
1033 wxnwrst =>
inputs(imod)%WXNwrst
1034 wynwrst =>
inputs(imod)%WYNwrst
1047 icei =>
inputs(imod)%ICEI
1048 bergi =>
inputs(imod)%BERGI
1069 1001
FORMAT (/
' *** ERROR W3SETI : GRIDS NOT INITIALIZED *** '/ &
1070 ' RUN W3NMOD FIRST '/)
1071 1002
FORMAT (/
' *** ERROR W3SETI : ILLEGAL MODEL NUMBER *** '/ &
1077 9000
FORMAT (
' TEST W3SETI : MODEL ',i4,
' SELECTED')
integer, dimension(:), pointer twn
logical, dimension(:), pointer inflags1
integer, dimension(:), pointer t1n
real, dimension(:,:), pointer dt0
logical, dimension(:), pointer inflags2
real, dimension(:,:), pointer wy0
type(input), dimension(:), allocatable, target inputs
integer, dimension(:), pointer t0n
integer, dimension(:), pointer ti5
logical, pointer fllevresi
logical, pointer flcurtide
integer, dimension(:), pointer tg0
real, dimension(:,:,:,:), pointer wltide
integer, dimension(:), pointer ti3
integer, dimension(:), pointer tu0
logical, pointer flcurresi
subroutine w3setg(IMOD, NDSE, NDST)
integer, dimension(:), pointer tzn
real, dimension(:,:), pointer wxn
logical, pointer fllevtide
real, dimension(:,:,:,:), pointer cxtide
logical, dimension(:), pointer flagsc
real, dimension(:,:), pointer dtn
integer, dimension(:), pointer ti4
integer, dimension(:), pointer ti1
subroutine w3seti(IMOD, NDSE, NDST)
Select one of the WAVEWATCH III grids / models.
integer, dimension(:), pointer ttn
integer, dimension(:), pointer tdn
integer, dimension(:), pointer tvn
subroutine strace(IENT, SNAME)
Define data structures to set up wave model input data for several models simultaneously.
integer, dimension(:), pointer t2n
real, dimension(:,:), pointer wx0
integer, dimension(:), pointer tc0
integer, dimension(:), pointer tw0
integer, dimension(:), pointer tin
real, dimension(:,:,:,:), pointer cytide
real, dimension(:), allocatable tidefreq
subroutine extcde(IEXIT, UNIT, MSG, FILE, LINE, COMM)
integer, dimension(:), pointer ti2
integer, dimension(:), pointer tln
integer, dimension(:), pointer trn
subroutine w3ninp(NDSE, NDST)
Set up the number of grids to be used.
subroutine w3dimi(IMOD, NDSE, NDST, FLAGSTIDEIN)
Initialize an individual data grid at the proper dimensions.
integer, dimension(:), pointer tun
integer, dimension(:), pointer tr0
real, dimension(:,:), pointer wyn
integer, dimension(:,:), pointer tfn
integer, dimension(:), pointer tgn
integer, dimension(:), pointer tcn