Go to the documentation of this file.
306 INTEGER,
PRIVATE :: ISTAT
348 INTEGER,
PARAMETER ::
mtag2 = 1000000
352 INTEGER,
ALLOCATABLE ::
mdsf(:,:)
363 INTEGER,
ALLOCATABLE ::
tmax(:,:)
386 CHARACTER(LEN=3),
ALLOCATABLE ::
idinp(:,:)
404 INTEGER,
POINTER ::
tmv(:,:,:)
410 INTEGER,
POINTER :: irqbpg(:)
411 INTEGER,
POINTER :: irqhgg(:)
412 INTEGER,
POINTER :: irqeqg(:)
449 INTEGER,
POINTER :: irqbps(:)
451 REAL,
POINTER :: sbpi(:,:)
453 REAL,
POINTER :: tstore(:,:)
472 INTEGER,
POINTER :: ljsea(:)
473 INTEGER,
POINTER :: nravg(:)
474 INTEGER,
POINTER :: impsrc(:,:)
475 INTEGER,
POINTER :: itag(:,:)
476 INTEGER,
POINTER :: isend(:,:)
478 INTEGER,
POINTER :: irqhgs(:)
479 INTEGER,
POINTER :: outdat(:,:)
481 REAL,
POINTER :: wgth(:,:)
482 REAL,
POINTER :: shgh(:,:,:)
484 REAL,
POINTER :: tstore(:,:)
501 INTEGER,
POINTER :: isea(:)
502 INTEGER,
POINTER :: jsea(:)
503 INTEGER,
POINTER :: navg(:)
504 INTEGER,
POINTER :: rip(:,:)
505 INTEGER,
POINTER :: rtg(:,:)
506 INTEGER,
POINTER :: sis(:)
507 INTEGER,
POINTER :: sjs(:)
508 INTEGER,
POINTER :: si1(:)
509 INTEGER,
POINTER :: si2(:)
510 INTEGER,
POINTER :: sip(:)
511 INTEGER,
POINTER :: stg(:)
514 INTEGER,
POINTER :: irqeqs(:)
515 INTEGER,
POINTER :: outdat(:,:)
517 REAL,
POINTER :: seql(:,:,:)
518 REAL,
POINTER :: wght(:)
519 REAL,
POINTER :: wavg(:,:)
521 REAL,
POINTER :: tstore(:,:)
536 INTEGER,
POINTER ::
ndt(:)
538 INTEGER,
POINTER ::
tmv(:,:,:)
583 SUBROUTINE wmndat ( NDSE, NDST )
653 INTEGER,
INTENT(IN) :: NDSE, NDST
660 INTEGER,
SAVE :: IENT = 0
664 CALL strace (ient,
'WMNDAT')
670 IF (
ngrids .EQ. -1 )
THEN
682 check_alloc_status( istat )
686 check_alloc_status( istat )
705 mdatas(i)%MSKINI = .false.
706 mdatas(i)%FLDAT0 = .false.
707 mdatas(i)%FLDAT1 = .false.
708 mdatas(i)%FLDAT2 = .false.
710 mdatas(i)%MPI_COMM_GRD = -99
711 mdatas(i)%MPI_COMM_BCT = -99
720 bpstge(i,j)%INIT = .false.
738 hgstge(i,j)%INIT = .false.
749 eqstge(i,j)%INIT = .false.
761 1001
FORMAT (/
' *** ERROR WMNDAT : NGRIDS NOT YET SET *** '/ &
763 ' RUN W3NMOD FIRST'/)
766 9000
FORMAT (
' TEST WMNDAT : SETTING UP FOR ',i4,
' GRIDS')
786 SUBROUTINE wmdimd ( IMOD, NDSE, NDST, J )
862 INTEGER,
INTENT(IN) :: IMOD, NDSE, NDST, J
869 INTEGER,
SAVE :: IENT = 0
873 CALL strace (ient,
'WMDIMD')
879 IF (
ngrids .EQ. -1 )
THEN
884 IF ( imod.LT.1 .OR. imod.GT.
nmdata )
THEN
885 WRITE (ndse,1002) imod,
nmdata
889 IF (
mdatas(imod)%MINIT )
THEN
895 WRITE (ndst,9000) imod
899 IF ( jgrid .NE. imod )
CALL w3setg ( imod, ndse, ndst )
905 ALLOCATE (
mdatas(imod)%TMV(2,-7:4,
nmv) , &
907 mdatas(imod)%DMV(
nmv,-7:4) , stat=istat )
908 check_alloc_status( istat )
914 check_alloc_status( istat )
921 check_alloc_status( istat )
928 check_alloc_status( istat )
939 CALL wmsetm ( imod, ndse, ndst )
954 IF ( jgrid .NE. imod )
CALL w3setg ( jgrid, ndse, ndst )
960 1001
FORMAT (/
' *** ERROR WMDIMD : GRIDS NOT INITIALIZED *** '/ &
961 ' RUN W3NMOD FIRST '/)
962 1002
FORMAT (/
' *** ERROR WMDIMD : ILLEGAL MODEL NUMBER *** '/ &
965 1003
FORMAT (/
' *** ERROR WMDIMD : ARRAY(S) ALREADY ALLOCATED *** ')
968 9000
FORMAT (
' TEST WMDIMD : MODEL ',i4,
' DIM. AT ',2i5,i7)
969 9001
FORMAT (
' TEST WMDIMD : ARRAYS ALLOCATED')
970 9002
FORMAT (
' TEST WMDIMD : POINTERS RESET')
989 SUBROUTINE wmdimm ( IMOD, NDSE, NDST )
1063 INTEGER,
INTENT(IN) :: IMOD, NDSE, NDST
1070 INTEGER,
SAVE :: IENT = 0
1074 CALL strace (ient,
'WMDIMM')
1080 IF (
ngrids .EQ. -1 )
THEN
1085 IF ( imod.LT.1 .OR. imod.GT.
nmdata )
THEN
1086 WRITE (ndse,1002) imod,
nmdata
1090 IF (
mdatas(imod)%MINIT )
THEN
1096 WRITE (ndst,9000) imod
1100 IF ( jgrid .NE. imod )
CALL w3setg ( imod, ndse, ndst )
1114 CALL wmsetm ( imod, ndse, ndst )
1132 IF ( jgrid .NE. imod )
CALL w3setg ( jgrid, ndse, ndst )
1138 1001
FORMAT (/
' *** ERROR WMDIMM : GRIDS NOT INITIALIZED *** '/ &
1139 ' RUN W3NMOD FIRST '/)
1140 1002
FORMAT (/
' *** ERROR WMDIMM : ILLEGAL MODEL NUMBER *** '/ &
1143 1003
FORMAT (/
' *** ERROR WMDIMM : ARRAY(S) ALREADY ALLOCATED *** ')
1146 9000
FORMAT (
' TEST WMDIMM : MODEL ',i4,
' DIM. AT ',2i5,i7)
1147 9001
FORMAT (
' TEST WMDIMM : ARRAYS ALLOCATED')
1148 9002
FORMAT (
' TEST WMDIMM : POINTERS RESET')
1149 9003
FORMAT (
' TEST WMDIMM : FLAGS SET')
1168 SUBROUTINE wmsetm ( IMOD, NDSE, NDST )
1232 INTEGER,
INTENT(IN) :: IMOD, NDSE, NDST
1238 INTEGER,
SAVE :: IENT = 0
1242 CALL strace (ient,
'WMSETM')
1248 IF (
nmdata .EQ. -1 )
THEN
1253 IF ( imod.LT.1 .OR. imod.GT.
nmdata )
THEN
1254 WRITE (ndse,1002) imod,
nmdata
1259 WRITE (ndst,9000) imod
1304 1001
FORMAT (/
' *** ERROR WMSETM : GRIDS NOT INITIALIZED *** '/ &
1305 ' RUN W3NMOD FIRST '/)
1306 1002
FORMAT (/
' *** ERROR WMSETM : ILLEGAL MODEL NUMBER *** '/ &
1311 9000
FORMAT (
' TEST WMSETM : MODEL ',i4,
' SELECTED')
1386 integer,
intent(in) :: ISEA, J
1387 integer,
intent(out) :: JSEA, ISPROC
1394 INTEGER,
SAVE :: IENT = 0
1400 CALL strace (ient,
'INIT_GET_JSEA_ISPROC_GLOB')
1404 jsea = 1 + (isea-1)/nb
1407 isproc =
mdatas(j)%CROOT - 1 + isea - (jsea-1)*nb
1413 jsea = 1 + (isea-1)/nb
1414 isproc =
mdatas(j)%CROOT - 1 + isea - (jsea-1)*nb
1416 jsea =
mdatas(j)%SEA_IPGL(isea)
1417 isproc =
mdatas(j)%SEA_IPGL_TO_PROC(isea)
integer, dimension(:,:), allocatable tdata
TDATA.
subroutine wmdimm(IMOD, NDSE, NDST)
Initialize an individual data grid at the proper dimensions.
integer, dimension(:,:), pointer nbi2s
NBI2S.
logical, dimension(:,:), allocatable respec
RESPEC.
integer, dimension(8) clkdt3
CLKDT3.
logical, dimension(:), allocatable iflstl
IFLSTL.
logical, dimension(:), allocatable iflstr
IFLSTR.
integer, dimension(2) stime
STIME.
logical, pointer fllsti
FLLSTI.
real, dimension(:,:), pointer dmv
DMV.
logical, pointer minit
MINIT.
integer, dimension(:), pointer rcld
RCLD.
integer, parameter ungtype
subroutine init_get_jsea_isproc_glob(ISEA, J, JSEA, ISPROC)
Introduce mapping for ISPROC and JSEA when using PDLIB in the Multigrid approach.
integer, pointer croot
CROOT.
real, dimension(:,:), pointer data2
DATA2.
integer, dimension(:,:), allocatable tmax
TMAX.
logical, pointer fllstl
FLLSTL.
type(hgst), dimension(:,:), allocatable, target hgstge
HGSTGE.
integer, dimension(:,:), allocatable tsync
TSYNC.
integer, dimension(:), allocatable nbista
NBISTA.
type(grid), dimension(:), allocatable, target grids
integer, dimension(:), pointer uptmap
UPTMAP.
integer, dimension(:), allocatable hghsta
HGHSTA.
integer, pointer mpi_comm_grd
MPI_COMM_GRD.
integer, dimension(:,:), allocatable grdeql
GRDEQL.
logical, dimension(:), allocatable bcdump
BCDUMP.
real, dimension(:,:), pointer mapbdi
MAPBDI.
integer, parameter mtag2
MTAG2.
subroutine w3setg(IMOD, NDSE, NDST)
integer, dimension(:,:), allocatable grdhgh
GRDHGH.
integer, dimension(:,:), allocatable ingrp
INGRP.
integer, dimension(:), pointer sea_ipgl
SEA_IPGL.
real, dimension(:,:), pointer data1
DATA1.
integer, dimension(:,:), allocatable toutp
TOUTP.
logical, pointer fldat0
FLDAT0.
type(mdata), dimension(:), allocatable, target mdatas
MDATAS.
logical lpdlib
LPDLIB Logical for using the PDLIB library.
real, dimension(:,:), pointer amv
AMV.
integer, dimension(:,:), pointer mapmsk
MAPMSK.
logical, pointer fllstr
FLLSTR.
integer, pointer mpi_comm_bct
MPI_COMM_BCT.
logical, pointer fldat2
FLDAT2.
character(len=3), dimension(:,:), allocatable idinp
IDINP.
integer, parameter mtagb
MTAGB.
integer, dimension(:,:), allocatable nbi2g
NBI2G.
integer, dimension(:,:,:), pointer tmv
TMV.
integer, parameter mtag_ub
MPI_TAG_UB on Cray XC40.
integer, dimension(:,:), allocatable grdlow
GRDLOW.
type(eqst), dimension(:,:), allocatable, target eqstge
EQSTGE.
integer, dimension(:), allocatable grstat
GRSTAT.
integer, dimension(:,:), allocatable allprc
ALLPRC.
logical, pointer fbcast
FBCAST.
integer, dimension(:), allocatable grgrp
GRGRP.
integer, dimension(:), pointer ndt
NDT.
integer, dimension(:), allocatable eqlsta
EQLSTA.
integer, parameter mtag0
MTAG0.
subroutine strace(IENT, SNAME)
subroutine wmsetm(IMOD, NDSE, NDST)
Select one of the WAVEWATCH III grids / models.
subroutine wmndat(NDSE, NDST)
Set up the number of grids to be used.
subroutine wmdimd(IMOD, NDSE, NDST, J)
Initialize an individual data grid at the proper dimensions.
integer, parameter mtag1
MTAG1.
integer, dimension(:), allocatable grank
GRANK.
real, dimension(:,:), pointer data0
DATA0.
logical, pointer fldat1
FLDAT1.
integer, dimension(8) clkdt2
CLKDT2.
Define some much-used constants for global use (all defined as PARAMETER).
Define data structures to set up wave model dynamic data for several models simultaneously.
subroutine extcde(IEXIT, UNIT, MSG, FILE, LINE, COMM)
type(bpst), dimension(:,:), allocatable, target bpstge
BPSTGE.
type(output), dimension(:), allocatable, target outpts
integer, dimension(:,:), allocatable inpmap
INPMAP.
real, dimension(:,:), pointer mapodi
MAPODI.
integer, dimension(8) clkdt1
CLKDT1.
integer, dimension(:), pointer sea_ipgl_to_proc
SEA_IPGL_TO_PROC.
integer, dimension(:,:), allocatable mdsf
MDSF.
real, dimension(:), allocatable dtres
DTRES.
integer, dimension(:,:), allocatable modmap
MODMAP.
integer, dimension(2) etime
ETIME.
integer mpi_comm_mwave
MPI_COMM_MWAVE.
logical, dimension(:), allocatable iflsti
IFLSTI.