diff --git a/model/src/PDLIB/yowelementpool.F90 b/model/src/PDLIB/yowelementpool.F90 index f1f06b293a..cbd2cc4d41 100644 --- a/model/src/PDLIB/yowelementpool.F90 +++ b/model/src/PDLIB/yowelementpool.F90 @@ -71,7 +71,7 @@ module yowElementpool !> conversione: If a element is connected to domain 1,2 and 3. It belongs to 1,2 and 3. !> @param[in] rank optional. If not given, datapool:myrank is used function belongTo(ele_in, rank) - use yowDatapool, only: myrank, nTasks + use yowDatapool, only: myrank use yowNodepool, only: t_Node, nodes_global implicit none integer, intent(in) :: ele_in(3) @@ -79,7 +79,6 @@ function belongTo(ele_in, rank) logical :: belongTo integer :: myDomainID - integer :: nodes(3) integer J if(present(rank) .eqv. .true.) then diff --git a/model/src/PDLIB/yowexchangeModule.F90 b/model/src/PDLIB/yowexchangeModule.F90 index 630270d155..1fd4e0539c 100644 --- a/model/src/PDLIB/yowexchangeModule.F90 +++ b/model/src/PDLIB/yowexchangeModule.F90 @@ -151,7 +151,7 @@ subroutine createMPIType(this) use yowerr use mpi_f08 use yowNodepool, only: ghostgl, np, ipgl - use yowDatapool, only: rtype, itype + use yowDatapool, only: rtype implicit none class(t_neighborDomain), intent(inout) :: this @@ -249,7 +249,7 @@ end subroutine createMPITypes !> \note MPI send tag: 10000 + neighbor MPI rank subroutine PDLIB_exchange1Dreal(U) use yowDatapool, only: comm, myrank, rkind - use yowNodepool, only: t_Node, nodes_global, np, ng, ghosts, npa + use yowNodepool, only: t_Node, ghosts, npa use yowerr use mpi_f08 implicit none @@ -302,10 +302,12 @@ end subroutine PDLIB_exchange1Dreal !> \note MPI send tag: 30000 + neighbor MPI rank subroutine PDLIB_exchange2Dreal(U) use yowDatapool, only: comm, myrank, rkind - use yowNodepool, only: t_Node, nodes_global, np, ng, ghosts, npa + use yowNodepool, only: t_Node, ghosts use yowerr use mpi_f08 +#ifdef W3_DEBUGEXCH USE W3ODATMD, only : IAPROC +#endif implicit none real(kind=rkind), intent(inout) :: U(:,:) @@ -417,7 +419,6 @@ subroutine PDLIB_exchange1Dreal_zero(U) integer :: i, ierr, tag type(MPI_REQUEST) :: sendRqst(nConnDomains), recvRqst(nConnDomains) type(MPI_STATUS) :: recvStat(nConnDomains), sendStat(nConnDomains) - character(len=200) errstr ! It is impossible to add these range checks because assumed shape array start vom 1:npa+1 even if you allocate it from 0:npa @@ -487,7 +488,6 @@ subroutine PDLIB_exchange2Dreal_zero(U) integer :: i, ierr, tag type(MPI_REQUEST) :: sendRqst(nConnDomains), recvRqst(nConnDomains) type(MPI_STATUS) :: recvStat(nConnDomains), sendStat(nConnDomains) - character(len=200) errstr ! It is impossible to add these range checks because assumed shape array start vom 1:npa+1 even if you allocate it from 0:npa ! if(size(U,2) /= npa+1) then diff --git a/model/src/PDLIB/yowfunction.F90 b/model/src/PDLIB/yowfunction.F90 index 29bdd78c06..d119a4c587 100644 --- a/model/src/PDLIB/yowfunction.F90 +++ b/model/src/PDLIB/yowfunction.F90 @@ -55,12 +55,15 @@ END SUBROUTINE PDLIB_ABORT !* * !********************************************************************** SUBROUTINE ComputeListNP_ListNPA_ListIPLG_Kernel - USE W3ODATMD, only : IAPROC, NAPROC, NTPROC + USE W3ODATMD, only : IAPROC, NAPROC USE W3ADATMD, ONLY: MPI_COMM_WCMP - USE yowDatapool, only: rtype, istatus + USE yowDatapool, only: istatus USE yowNodepool, only: npa, np, iplg USE yowNodepool, only: ListNP, ListNPA, ListIPLG use mpi_f08 +#ifdef W3_DEBUGINIT + USE W3ODATMD, only : NTPROC +#endif IMPLICIT NONE integer IPROC, idx, IP, len, istat, sumNP, ierr integer, allocatable :: iVect(:) @@ -195,8 +198,7 @@ END SUBROUTINE ComputeListNP_ListNPA_ListIPLG_Kernel SUBROUTINE ComputeListNP_ListNPA_ListIPLG USE W3ODATMD, only : IAPROC, NAPROC, NTPROC USE W3ADATMD, ONLY: MPI_COMM_WAVE - USE yowDatapool, only: rtype, istatus - USE yowNodepool, only: npa, np, iplg + USE yowDatapool, only: istatus USE yowNodepool, only: ListNP, ListNPA, ListIPLG use mpi_f08 IMPLICIT NONE @@ -281,9 +283,9 @@ END SUBROUTINE ComputeListNP_ListNPA_ListIPLG !* * !********************************************************************** SUBROUTINE ComputeBoundaryInformation - use yowNodepool, only: ListNP, ListNPA, ListIPLG + use yowNodepool, only: ListNPA, ListIPLG USE W3GDATMD, ONLY: IOBP - USE W3ODATMD, only : IAPROC, NAPROC + USE W3ODATMD, only : NAPROC IMPLICIT NONE integer ListFirst(NAPROC), NbSend(NAPROC) integer IPROC, eSend, IP, IP_glob, NPAloc diff --git a/model/src/PDLIB/yowpdlibmain.F90 b/model/src/PDLIB/yowpdlibmain.F90 index 193c6c17c3..97e934e2fa 100644 --- a/model/src/PDLIB/yowpdlibmain.F90 +++ b/model/src/PDLIB/yowpdlibmain.F90 @@ -65,17 +65,17 @@ module yowpdlibMain subroutine initFromGridDim(MNP, MNE, INE_global, secDim, MPIcomm) use mpi_f08, only: MPI_COMM use yowDatapool, only: myrank, debugPrePartition, debugPostPartition - use yowNodepool, only: np_global, np, np_perProcSum, ng, ipgl, iplg, npa + use yowNodepool, only: np_global, np, np_perProcSum, ng use yowElementpool, only: ne_global,ne use yowSidepool, only: ns, ns_global use yowExchangeModule, only: nConnDomains, setDimSize - use yowRankModule, only: initRankModule, ipgl_npa + use yowRankModule, only: initRankModule integer, intent(in) :: MNP, MNE integer, intent(in) :: INE_global(3,MNE) integer, intent(in) :: secDim type(MPI_COMM), intent(in) :: MPIcomm - integer :: istat, memunit + integer :: memunit ! note: myrank=0 until after initMPI is called, so only rank=0 file ! contains the 'section 1' information @@ -433,12 +433,16 @@ subroutine runParmetis(MNP) ! Parmetis ! Node neighbor information integer :: wgtflag, numflag, ndims, nparts, edgecut, ncon - integer, allocatable :: xadj(:), part(:), vwgt(:), adjwgt(:), vtxdist(:), options(:), adjncy(:), iweights(:) + integer, allocatable :: xadj(:), part(:), vwgt(:), adjwgt(:), vtxdist(:), options(:), adjncy(:) +#ifdef WEIGHTS + integer, allocatable :: iweights(:) + integer :: itmp + logical :: lexist = .false. +#endif ! parmetis need single precision real(4), allocatable :: xyz(:), tpwgts(:), ubvec(:) - integer :: IP_glob, itmp + integer :: IP_glob integer :: ref - logical :: lexist = .false. ! Node to domain mapping. ! np_global long. give the domain number for die global node number integer, allocatable :: node2domain(:) @@ -1018,7 +1022,7 @@ end subroutine findGhostNodes subroutine findConnDomains use yowerr, only: parallel_abort use yowNodepool, only: ghosts, ng, t_Node - use yowDatapool, only: nTasks, myrank + use yowDatapool, only: nTasks use yowExchangeModule, only: neighborDomains, initNbrDomains integer :: i, stat, itemp @@ -1102,7 +1106,7 @@ end subroutine findConnDomains subroutine exchangeGhostIds use yowerr use yowNodepool, only: np, t_node, nodes - use yowDatapool, only: nTasks, myrank, comm + use yowDatapool, only: myrank, comm use yowExchangeModule, only: neighborDomains, nConnDomains, createMPITypes use mpi_f08 @@ -1232,7 +1236,7 @@ subroutine postPartition2(INE_global) use yowElementpool, only: ne, ne_global, INE, belongto, ielg use yowerr, only: parallel_abort use yowDatapool, only: myrank - use yowNodepool, only: np_global, np, nodes_global, iplg, t_Node, ghostlg, ng, npa + use yowNodepool, only: np, nodes_global, iplg, t_Node, ghostlg, ng, npa use yowNodepool, only: x, y, z use w3gdatmd, only: xgrd, ygrd, zb @@ -1352,12 +1356,11 @@ end subroutine postPartition2 !* * !********************************************************************** subroutine ComputeTRIA_IEN_SI_CCON - use yowElementpool, only: ne, ne_global, INE, ielg + use yowElementpool, only: ne, INE use yowExchangeModule, only : PDLIB_exchange1Dreal use yowerr, only: parallel_abort - use yowDatapool, only: myrank - use yowNodepool, only: np_global, np, iplg, t_Node, ghostlg, ng, npa - use yowNodepool, only: x, y, z, PDLIB_SI, PDLIB_IEN, PDLIB_TRIA, PDLIB_CCON, PDLIB_TRIA03 + use yowNodepool, only: t_Node, npa + use yowNodepool, only: x, y, PDLIB_SI, PDLIB_IEN, PDLIB_TRIA, PDLIB_CCON, PDLIB_TRIA03 integer I1, I2, I3, stat, IE, NI(3) real :: DXP1, DXP2, DXP3, DYP1, DYP2, DYP3, DBLTMP, TRIA03 @@ -1452,10 +1455,9 @@ end subroutine CORRECT_DX_GT180 !* * !********************************************************************** subroutine ComputeIA_JA_POSI_NNZ - use yowElementpool, only: ne, ne_global, INE, ielg + use yowElementpool, only: ne, INE use yowerr, only: parallel_abort - use yowDatapool, only: myrank - use yowNodepool, only: np_global, np, nodes_global, iplg, t_Node, ghostlg, ng, npa + use yowNodepool, only: t_Node, npa use yowNodepool, only: PDLIB_CCON, PDLIB_IA, PDLIB_JA, PDLIB_JA_IE, PDLIB_IA_P, PDLIB_JA_P use yowNodepool, only: PDLIB_NNZ, PDLIB_POSI, PDLIB_IE_CELL, PDLIB_POS_CELL, PDLIB_IE_CELL2 use yowNodepool, only: PDLIB_POS_CELL2, PDLIB_I_DIAG diff --git a/model/src/PDLIB/yowrankModule.F90 b/model/src/PDLIB/yowrankModule.F90 index 8674ae6e3b..208cf7ea78 100644 --- a/model/src/PDLIB/yowrankModule.F90 +++ b/model/src/PDLIB/yowrankModule.F90 @@ -73,7 +73,7 @@ module yowRankModule !> allocate and exchange subroutine initRankModule() - use yowDatapool, only: nTasks, myrank + use yowDatapool, only: nTasks implicit none integer :: stat @@ -235,7 +235,7 @@ end subroutine exchangeIPLG !> \internal subroutine calcISTART() - use yowDatapool, only: nTasks, myrank + use yowDatapool, only: nTasks implicit none integer :: ir diff --git a/model/src/pdlib_field_vec.F90 b/model/src/pdlib_field_vec.F90 index 2450fcff69..38c157fc74 100644 --- a/model/src/pdlib_field_vec.F90 +++ b/model/src/pdlib_field_vec.F90 @@ -444,16 +444,15 @@ SUBROUTINE UNST_PDLIB_READ_FROM_FILE(NDREAD) use yowDatapool, only: istatus USE W3GDATMD, only : NSEA, NSPEC - USE W3ODATMD, only : NAPROC, NTPROC, IAPROC + USE W3ODATMD, only : NAPROC, IAPROC USE W3ADATMD, only : MPI_COMM_WAVE USE W3PARALL, only : GET_JSEA_IBELONG USE W3WDATMD, ONLY : VA - USE W3GDATMD, ONLY: NSEAL USE W3ADATMD, ONLY: NSEALM #ifdef W3_TIMINGS USE W3PARALL, ONLY: PRINT_MY_TIME #endif - use yowNodepool, only: ListNP, ListNPA, ListIPLG + use yowNodepool, only: ListNPA, ListIPLG use mpi_f08 IMPLICIT NONE !/ @@ -472,8 +471,8 @@ SUBROUTINE UNST_PDLIB_READ_FROM_FILE(NDREAD) ! INTEGER, intent(in) :: NDREAD INTEGER iBlock, iFirst, iEnd, len, i, IB, iProc - INTEGER NREC, ISEA, JSEA, ierr - INTEGER nbBlock, IBELONG + INTEGER NREC, ISEA, ierr + INTEGER nbBlock INTEGER :: BlockSize REAL, allocatable :: ArrSend(:,:) REAL, allocatable :: DataRead(:,:) @@ -481,8 +480,7 @@ SUBROUTINE UNST_PDLIB_READ_FROM_FILE(NDREAD) integer LRECL INTEGER, PARAMETER :: LRB = 4 INTEGER NBLKRSloc, RSBLKSloc - integer eArr(1) - integer IERR_MPI, istat + integer istat integer IPloc, IPglob, pos integer NbMatch, idx integer ListFirst(NAPROC) @@ -654,14 +652,14 @@ SUBROUTINE UNST_PDLIB_WRITE_TO_FILE(NDWRITE) #endif ! use yowDatapool, only: istatus - USE yowNodepool, only: ListNP, ListNPA, ListIPLG + USE yowNodepool, only: ListNPA, ListIPLG USE W3PARALL, ONLY: INIT_GET_ISEA USE W3GDATMD, only : NSEA, NSPEC - USE W3ODATMD, only : NAPROC, NTPROC, NAPRST, IAPROC + USE W3ODATMD, only : NAPROC, NAPRST, IAPROC USE W3ADATMD, only : MPI_COMM_WAVE USE W3PARALL, only : GET_JSEA_IBELONG USE W3WDATMD, ONLY : VA - USE W3GDATMD, ONLY: NSEAL, NX, NY + USE W3GDATMD, ONLY: NSEAL use mpi_f08 IMPLICIT NONE !/ @@ -683,8 +681,8 @@ SUBROUTINE UNST_PDLIB_WRITE_TO_FILE(NDWRITE) REAL :: DATAwrite(NSPEC,BlockSize) REAL, allocatable :: DATArecv(:,:) integer ListFirst(NAPROC) - integer idx, idxB - integer len, i, IS + integer idx + integer len integer iBlock, iFirst, iEnd integer IPglob, IPloc, pos, ISEA, nbBlock, NPAloc integer ierr, istat, JSEA, NREC, iProc @@ -692,7 +690,6 @@ SUBROUTINE UNST_PDLIB_WRITE_TO_FILE(NDWRITE) INTEGER, PARAMETER :: LRB = 4 INTEGER(KIND=8) RPOS INTEGER LRECL - INTEGER IERR_MPI REAL(KIND=LRB) WRITEBUFF(NSPEC) REAL, allocatable :: DATAsend(:,:) #ifdef W3_S @@ -809,12 +806,12 @@ SUBROUTINE DO_OUTPUT_EXCHANGES(IMOD) ! USE W3ADATMD, ONLY: W3XDMA, W3SETA, W3XETA, WADATS USE W3GDATMD, ONLY: NSEA - USE W3GDATMD, ONLY: NX, NSPEC, MAPFS, E3DF, P2MSF, US3DF - USE W3WDATMD, ONLY: VA, UST, USTDIR, ASF, FPIS - USE W3ADATMD, ONLY: MPI_COMM_WAVE, WW3_FIELD_VEC + USE W3GDATMD, ONLY: NSPEC, E3DF, P2MSF + USE W3WDATMD, ONLY: UST, USTDIR, ASF + USE W3ADATMD, ONLY: MPI_COMM_WAVE USE W3ADATMD, ONLY: HS, WLM, T02 USE W3ADATMD, ONLY: T0M1, THM, THS, FP0, THP0, & - DTDYN, FCUT, SPPNT, ABA, ABD, UBA, UBD,& + DTDYN, FCUT, ABA, ABD, UBA, UBD, & SXX, SYY, SXY, USERO, PHS, PTP, PLP, & PDIR, PSI, PWS, PWST, PNR, PHIAW, & PHIOC, TAUOCX, TAUOCY, WNMEAN, & @@ -826,22 +823,14 @@ SUBROUTINE DO_OUTPUT_EXCHANGES(IMOD) BEDFORMS, PHIBBL, TAUBBL, T01, & P2SMS, US3D, EF, TH1M, STH1M, TH2M, & STH2M, HSIG, TAUICE, PHICE, PTHP0, PQP,& - PPE, PGW, PSW, PTM1, PT1, PT2, PEP, & + PPE, PGW, PSW, PTM1, PT1, PT2, PEP, & QP, MSSD, MSCD, STMAXE, STMAXD, HMAXE, & HCMAXE, HMAXD, HCMAXD, WBT, USSP USE W3GDATMD, ONLY: NK, NSEAL - USE W3ODATMD, ONLY: NDST, IAPROC, NAPROC, NTPROC, FLOUT, & - NAPFLD, NAPPNT, NAPRST, NAPBPT, NAPTRK,& - NOGRP, NGRPP - USE W3ODATMD, ONLY: OUTPTS, NRQGO, NRQGO2, IRQGO, IRQGO2, & - FLOGRD, NRQPO, NRQPO2, IRQPO1, IRQPO2, & - NOPTS, IPTINT, NRQRS, IRQRS, NBLKRS, & - RSBLKS, IRQRSS, VAAUX, NRQBP, NRQBP2, & - IRQBP1, IRQBP2, NFBPO, NBO2, ISBPO, & - ABPOS, NRQTR, IRQTR, IT0PNT, IT0TRK, & - IT0PRT, NOSWLL, NOEXTR, NDSE, IOSTYP, & - FLOGR2 - USE W3ADATMD, ONLY: MPI_COMM_WCMP + USE W3ODATMD, ONLY: NDST, IAPROC, NAPROC, FLOUT, & + NAPFLD, NOGRP, NGRPP + USE W3ODATMD, ONLY: NRQGO, NRQGO2, FLOGRD, & + NOSWLL, NOEXTR, NDSE, FLOGR2 USE W3PARALL, ONLY: INIT_GET_JSEA_ISPROC USE W3PARALL, ONLY: INIT_GET_ISEA use yowDatapool, only: istatus @@ -858,12 +847,8 @@ SUBROUTINE DO_OUTPUT_EXCHANGES(IMOD) !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: IK, IFJ - INTEGER :: IH, IT0, IROOT, IT, IERR, I0, & - IFROM, IX(4), IY(4), IS(4), & - IP(4), I, J, JSEA, ITARG, IB, & - JSEA0, JSEAN, NSEAB, IBOFF, & - ISEA, ISPROC, K, NRQMAX + INTEGER :: IK + INTEGER :: IH, IT0, IROOT, IERR, I, J, JSEA, ISEA, K #ifdef W3_S INTEGER, SAVE :: IENT #endif diff --git a/model/src/w3adatmd.F90 b/model/src/w3adatmd.F90 index 531cab63e9..ae69b9eb5d 100644 --- a/model/src/w3adatmd.F90 +++ b/model/src/w3adatmd.F90 @@ -764,7 +764,6 @@ SUBROUTINE W3NAUX ( NDSE, NDST ) !/ ------------------------------------------------------------------- / USE W3GDATMD, ONLY: NGRIDS USE W3SERVMD, ONLY: EXTCDE - USE W3ODATMD, ONLY: IAPROC #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif @@ -933,11 +932,9 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY ) ! !/ ------------------------------------------------------------------- / USE CONSTANTS, ONLY : LPDLIB - USE W3GDATMD, ONLY: NGRIDS, IGRID, W3SETG, NK, NX, NY, NSEA, & - NSEAL, NSPEC, NTH, E3DF, P2MSF, US3DF, & - USSPF, GTYPE, UNGTYPE - USE W3ODATMD, ONLY: IAPROC, NAPROC, NTPROC, NAPFLD, & - NOSWLL, NOEXTR, UNDEF, FLOGRD, FLOGR2 + USE W3GDATMD, ONLY: NGRIDS, IGRID, W3SETG, NK, NX, NY, NSEA, & + NSEAL, NSPEC, NTH, E3DF, P2MSF, US3DF, USSPF, GTYPE, UNGTYPE + USE W3ODATMD, ONLY: IAPROC, NAPROC, NOSWLL, NOEXTR, UNDEF USE W3IDATMD, ONLY: FLCUR, FLWIND, FLTAUA, FLRHOA USE W3SERVMD, ONLY: EXTCDE #ifdef W3_S @@ -955,7 +952,7 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY ) !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: JGRID, NXXX, NSEAL_tmp + INTEGER :: JGRID, NXXX integer :: memunit integer :: allocsize #ifdef W3_S @@ -1561,12 +1558,8 @@ SUBROUTINE W3XDMA ( IMOD, NDSE, NDST, OUTFLAGS ) ! 10. Source code : ! !/ ------------------------------------------------------------------- / - USE W3GDATMD, ONLY: NGRIDS, IGRID, W3SETG, NK, NX, NY, NSEA, & - NSEAL, NSPEC, NTH, E3DF, P2MSF, US3DF, & - USSPF, GTYPE, UNGTYPE - USE W3ODATMD, ONLY: IAPROC, NAPROC, NTPROC, NAPFLD, & - NOSWLL, NOEXTR, UNDEF, FLOGRD, FLOGR2, & - NOGRP, NGRPP + USE W3GDATMD, ONLY: NGRIDS, IGRID, W3SETG, NK, E3DF, P2MSF, UNGTYPE + USE W3ODATMD, ONLY: IAPROC, NAPROC, NOSWLL, NOEXTR, UNDEF, NOGRP, NGRPP USE W3SERVMD, ONLY: EXTCDE #ifdef W3_S USE W3SERVMD, ONLY: STRACE @@ -2526,9 +2519,7 @@ SUBROUTINE W3DMNL ( IMOD, NDSE, NDST, NSP, NSPX ) ! 10. Source code : ! !/ ------------------------------------------------------------------- / - USE W3GDATMD, ONLY: NGRIDS, IGRID, NK, NX, NY, NSEA, NSEAL, & - NSPEC, NTH, GTYPE, UNGTYPE - USE W3ODATMD, ONLY: NAPROC + USE W3GDATMD, ONLY: NGRIDS, UNGTYPE USE W3SERVMD, ONLY: EXTCDE #ifdef W3_S USE W3SERVMD, ONLY: STRACE @@ -2742,7 +2733,7 @@ SUBROUTINE W3SETA ( IMOD, NDSE, NDST ) !/ ------------------------------------------------------------------- / ! USE W3IDATMD, ONLY: INPUTS - USE W3GDATMD, ONLY: E3DF, P2MSF, US3DF, USSPF, GTYPE, UNGTYPE + USE W3GDATMD, ONLY: GTYPE, UNGTYPE ! USE W3SERVMD, ONLY: EXTCDE #ifdef W3_S @@ -3172,8 +3163,7 @@ SUBROUTINE W3XETA ( IMOD, NDSE, NDST ) ! !/ ------------------------------------------------------------------- / ! - USE W3IDATMD, ONLY: INPUTS - USE W3GDATMD, ONLY: E3DF, P2MSF, US3DF, USSPF, GTYPE, UNGTYPE + USE W3GDATMD, ONLY: UNGTYPE ! USE W3SERVMD, ONLY: EXTCDE #ifdef W3_S diff --git a/model/src/w3arrymd.F90 b/model/src/w3arrymd.F90 index b6a983db5c..b2ddaa73cf 100644 --- a/model/src/w3arrymd.F90 +++ b/model/src/w3arrymd.F90 @@ -1697,7 +1697,7 @@ SUBROUTINE PRT1DM (NDS, NFR, NE, E, FR, UFR, NLINES, FTOPI, & #endif REAL, SAVE :: TOPFAC = 1.1 REAL :: FTOP, RLINES, FACFR, FSC, FLINE, & - EMAX, EMIN, EXTR, FLOC + EMAX, EMIN, EXTR LOGICAL :: FLSCLE CHARACTER :: STRA*10, STRA2*2, STRAX*2, PNUM2*2 DIMENSION :: PNUM2(NFM2) diff --git a/model/src/w3fldsmd.F90 b/model/src/w3fldsmd.F90 index 8f0e682bc0..b114d9354c 100644 --- a/model/src/w3fldsmd.F90 +++ b/model/src/w3fldsmd.F90 @@ -805,8 +805,16 @@ SUBROUTINE W3FLDTIDE2 ( INXOUT, NDS, NDST, NDSE, NX, NY, IDFLD, IDAT, IERR ) INTEGER, SAVE :: IENT = 0 #endif LOGICAL :: WRITE - INTEGER :: I, IX, TIDE_MF1 +#ifdef W3_TIDE + INTEGER :: TIDE_MF1 CHARACTER(LEN=100) :: LIST(70) +#endif +#ifdef W3_TIDET + INTEGER :: IX +#endif +#if defined(W3_TIDE) || defined(W3_TIDET) + INTEGER :: I +#endif !/ !/ ------------------------------------------------------------------- / !/ diff --git a/model/src/w3gdatmd.F90 b/model/src/w3gdatmd.F90 index 9b93f6a78a..eb24fa76a2 100644 --- a/model/src/w3gdatmd.F90 +++ b/model/src/w3gdatmd.F90 @@ -2981,7 +2981,10 @@ SUBROUTINE W3GNTX ( IMOD, NDSE, NDST ) LOGICAL, PARAMETER :: SPHERE = .FALSE. INTEGER :: PRANGE(2), QRANGE(2) INTEGER :: LBI(2), UBI(2), LBO(2), UBO(2), ISTAT +#if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3GNTX) REAL , ALLOCATABLE :: COSA(:,:) +#endif + #ifdef W3_S INTEGER, SAVE :: IENT = 0 CALL STRACE (IENT, 'W3GNTX') @@ -3200,7 +3203,6 @@ SUBROUTINE W3DIMUG ( IMOD, MTRI, MX, COUNTOTA, NNZ, NDSE, NDST ) !/ Parameter list !/ INTEGER, INTENT(IN) :: IMOD, MTRI, MX, COUNTOTA, NNZ, NDSE, NDST - INTEGER :: IAPROC = 1 !/ !/ ------------------------------------------------------------------- / !/ Local parameters @@ -3372,15 +3374,19 @@ SUBROUTINE W3SETREF !/ !/ ------------------------------------------------------------------- / !/ - INTEGER :: ISEA, IX, IY, IXY, IXN, IXP, IYN, IYP - INTEGER :: J, K, NEIGH1(0:7) - INTEGER :: ILEV, NLEV #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif +#ifdef W3_REF1 + REAL :: COSAVG, SINAVG, THAVG, CLAT + INTEGER :: J, K +#endif +#if defined(W3_REF1) || defined(W3_REFT) + INTEGER :: IX, IY + INTEGER :: NEIGH1(0:7) + REAL :: ANGLES(0:7) +#endif - REAL :: TRIX(NY*NX), TRIY(NY*NX), DX, DY, & - COSAVG, SINAVG, THAVG, ANGLES(0:7), CLAT !/ !/ ------------------------------------------------------------------- / !/ diff --git a/model/src/w3gridmd.F90 b/model/src/w3gridmd.F90 index 2334a0ffbf..45ac3aa548 100644 --- a/model/src/w3gridmd.F90 +++ b/model/src/w3gridmd.F90 @@ -3524,6 +3524,7 @@ SUBROUTINE W3GRID() FXPM = FXPM * GRAV / 28. FXFM = FXFM * TPI XFC = 3.0 + XFT = 0.0 #ifdef W3_ST2 XFH = 2.0 XF1 = 1.75 diff --git a/model/src/w3idatmd.F90 b/model/src/w3idatmd.F90 index 01f71a2430..49bbb588b0 100644 --- a/model/src/w3idatmd.F90 +++ b/model/src/w3idatmd.F90 @@ -520,9 +520,11 @@ SUBROUTINE W3DIMI ( IMOD, NDSE, NDST, FLAGSTIDEIN ) !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: JGRID - LOGICAL :: FLAGSTIDE(4)=.FALSE. - integer :: allocsizex, allocsizey + integer :: allocsizex, allocsizey + INTEGER :: JGRID +#ifdef W3_TIDE + LOGICAL :: FLAGSTIDE(4)=.FALSE. +#endif #ifdef W3_S INTEGER, SAVE :: IENT = 0 CALL STRACE (IENT, 'W3DIMI') diff --git a/model/src/w3initmd.F90 b/model/src/w3initmd.F90 index c67ca65212..8e7424e93b 100644 --- a/model/src/w3initmd.F90 +++ b/model/src/w3initmd.F90 @@ -376,7 +376,7 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, USE W3WDATMD, ONLY: W3SETW, W3DIMW USE W3ADATMD, ONLY: W3SETA, W3DIMA USE W3IDATMD, ONLY: W3SETI, W3DIMI - USE W3ODATMD, ONLY: W3SETO, W3DMO5, FNMRST + USE W3ODATMD, ONLY: W3SETO, W3DMO5 USE W3IOGOMD, ONLY: W3FLGRDUPDT USE W3IOGRMD, ONLY: W3IOGR USE W3IORSMD, ONLY: W3IORS @@ -388,23 +388,25 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, USE W3TIMEMD, ONLY: DSEC21, TICK21, STME21 USE W3ARRYMD, ONLY: PRTBLK !/ - USE W3GDATMD, ONLY: NX, NY, NSEA, NSEAL, MAPSTA, MAPST2, MAPFS, & - MAPSF, FLAGLL, & - ICLOSE, ZB, TRNX, TRNY, DMIN, DTCFL, DTMAX, & + USE W3GDATMD, ONLY: NX, NY, NSEA, NSEAL, MAPSTA, MAPST2, & + MAPSF, FLAGLL, ZB, DMIN, DTCFL, DTMAX, & FLCK, NK, NTH, NSPEC, SIG, GNAME #ifdef W3_PDLIB USE W3GDATMD, ONLY : FLCTH, B_JGS_BLOCK_GAUSS_SEIDEL, B_JGS_USE_JACOBI #endif - USE W3WDATMD, ONLY: TIME, TLEV, TICE, TRHO, WLV, UST, USTDIR, VA + USE W3WDATMD, ONLY: TIME, TLEV, TICE, TRHO, WLV, VA USE W3ODATMD, ONLY: NDSO, NDSE, NDST, SCREEN, NDS, NTPROC, & - NAPROC, IAPROC, NAPLOG, NAPOUT, NAPERR, & + NAPROC, IAPROC, NAPLOG, NAPERR, & NAPFLD, NAPPNT, NAPTRK, NAPRST, NAPBPT, & NAPPRT, TOFRST, DTOUT, TONEXT, TOLAST, & FLOUT, FLOGRD, FLBPO, NOPTS, PTNME, & - PTLOC, IPTINT, PTIFAC, UNDEF, IDOUT, FLBPI, & + PTLOC, UNDEF, IDOUT, & OUTPTS, FNMPRE, IX0, IXN, IXS, IY0, IYN, & IYS, FLFORM, IOSTYP, UNIPTS, UPPROC, NOTYPE,& FLOGR2, NOGRP, NGRPP, FLOGD, FLOG2 +#ifdef W3_T + USE W3ODATMD, ONLY: NAPOUT +#endif #ifdef W3_NL5 USE W3ODATMD, ONLY: TOSNL5 #endif @@ -419,15 +421,13 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, USE W3DISPMD, ONLY: WAVNU1, WAVNU3 USE W3PARALL, ONLY: SET_UP_NSEAL_NSEALM #ifdef W3_PDLIB - USE W3PARALL, ONLY: SYNCHRONIZE_IPGL_ETC_ARRAY, ISEA_TO_JSEA - use yowNodepool, only: npa - use yowRankModule, only : rank + USE W3PARALL, ONLY: SYNCHRONIZE_IPGL_ETC_ARRAY #endif USE W3GDATMD, ONLY: GTYPE, UNGTYPE #ifdef W3_PDLIB USE PDLIB_W3PROFSMD, ONLY : PDLIB_MAPSTA_INIT, SET_IOBDP_PDLIB, PDLIB_IOBP_INIT, SET_IOBPA_PDLIB USE PDLIB_W3PROFSMD, ONLY : BLOCK_SOLVER_INIT, BLOCK_SOLVER_EXPLICIT_INIT, PDLIB_INIT, DEALLOCATE_PDLIB_GLOBAL - use yowDatapool, only: istatus + USE W3GDATMD, ONLY : FSREFRACTION, FSFREQSHIFT #endif #ifdef W3_SETUP USE W3WAVSET, ONLY : PREPARATION_FD_SCHEME @@ -435,8 +435,7 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, USE W3GDATMD, ONLY : DO_CHANGE_WLV #endif USE W3TRIAMD, ONLY: NVECTRI, AREA_SI, COORDMAX, SPATIAL_GRID - USE W3GDATMD, ONLY: FSN,FSPSI,FSFCT,FSNIMP, FSTOTALIMP, FSTOTALEXP, XGRD, YGRD - USE W3GDATMD, ONLY: FSREFRACTION, FSFREQSHIFT + USE W3GDATMD, ONLY: FSTOTALIMP, FSTOTALEXP USE W3PARALL, ONLY: INIT_GET_JSEA_ISPROC, INIT_GET_ISEA #ifdef W3_TIMINGS USE W3PARALL, ONLY: PRINT_MY_TIME @@ -451,10 +450,10 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, USE W3UOSTMD, ONLY: UOST_SETGRID #endif use w3timemd, only : set_user_timestring - use w3odatmd, only : runtype, restart_from_binary, use_restartnc, user_restfname use w3odatmd, only : logfile_is_assigned #ifdef W3_PIO use wav_restart_mod, only : read_restart + use w3odatmd, only : runtype, restart_from_binary, use_restartnc, user_restfname #endif !/ #ifdef W3_MPI @@ -484,11 +483,10 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, !/ ------------------------------------------------------------------- / !/ Local parameters !/ - integer :: IRANK, I, ISTAT INTEGER :: IE, IFL, IFT, IERR, NTTOT, NTLOC, & - NTTARG, IK, IP, ITH, IX, IY, & + NTTARG, IK, IP, IX, IY, & J, J0, TOUT(2), TLST(2), ISEA, IS, & - K, I1, I2, JSEA, NTTMAX + K, JSEA, NTTMAX #ifdef W3_DIST INTEGER :: ISTEP, ISP, IW #endif @@ -500,7 +498,7 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, INTEGER, SAVE :: IENT = 0 #endif #ifdef W3_T - INTEGER :: NX0, NXN + INTEGER :: NX0, NXN, ITH INTEGER, ALLOCATABLE :: MAPOUT(:,:) #endif #ifdef W3_MPI @@ -519,19 +517,17 @@ SUBROUTINE W3INIT ( IMOD, IsMulti, FEXT, MDS, MTRACE, ODAT, FLGRD, FLGR2, FLGD, LOGICAL :: OPENED CHARACTER(LEN=8) :: STTIME CHARACTER(LEN=10) :: STDATE - INTEGER :: ISPROC #ifdef W3_DIST CHARACTER(LEN=12) :: FORMAT #endif CHARACTER(LEN=23) :: DTME21 CHARACTER(LEN=30) :: LFILE, TFILE -#ifdef W3_PDLIB - INTEGER :: IScal(1), IPROC -#endif - logical :: exists integer :: memunit +#ifdef W3_PIO + logical :: exists character(len=16) :: user_timestring !YYYY-MM-DD-SSSSS character(len=1024) :: fname +#endif !/ !/ ------------------------------------------------------------------- / ! @@ -1812,10 +1808,11 @@ SUBROUTINE W3MPII ( IMOD ) USE W3SERVMD, ONLY: STRACE #endif ! - USE W3GDATMD, ONLY: NSEA USE W3ADATMD, ONLY: NSEALM - USE W3GDATMD, ONLY: GTYPE, UNGTYPE +#ifdef W3_DIST USE CONSTANTS, ONLY: LPDLIB +#endif + !/ #ifdef W3_MPI USE W3GDATMD, ONLY: NSPEC USE W3WDATMD, ONLY: VA @@ -1824,8 +1821,12 @@ SUBROUTINE W3MPII ( IMOD ) NRQSG1, IRQSG1, NRQSG2, IRQSG2, & GSTORE, SSTORE, MPIBUF, BSTAT, & BISPL, ISPLOC, IBFLOC, NSPLOC + USE W3ODATMD, ONLY: IAPROC +#endif + USE W3ODATMD, ONLY: NAPROC +#ifdef W3_MPIT + USE W3ODATMD, ONLY: NDST #endif - USE W3ODATMD, ONLY: NDST, NAPROC, IAPROC !/ #ifdef W3_MPI use mpi_f08 @@ -2156,19 +2157,17 @@ SUBROUTINE W3MPIO ( IMOD ) USE W3SERVMD, ONLY: STRACE #endif !/ - USE W3GDATMD, ONLY: NSEA - USE W3ADATMD, ONLY: NSEALM #ifdef W3_MPI - USE W3GDATMD, ONLY: NX, NSPEC, MAPFS, E3DF, P2MSF, US3DF, USSPF + USE W3GDATMD, ONLY: NSPEC, E3DF, P2MSF USE W3WDATMD, ONLY: VA, UST, USTDIR, ASF, FPIS, ICEF - USE W3ADATMD, ONLY: MPI_COMM_WAVE, WW3_FIELD_VEC + USE W3ADATMD, ONLY: MPI_COMM_WAVE, WW3_FIELD_VEC, NSEALM USE W3ADATMD, ONLY: HS, WLM, T02 #endif #ifdef W3_MPI USE W3ADATMD, ONLY: T0M1, THM, THS, FP0, THP0, & - DTDYN, FCUT, SPPNT, ABA, ABD, UBA, UBD, & + DTDYN, FCUT, ABA, ABD, UBA, UBD, & SXX, SYY, SXY, USERO, PHS, PTP, PLP, & PDIR, PSI, PWS, PWST, PNR, PHIAW, PHIOC, & TUSX, TUSY, TAUWIX, TAUWIY, TAUOX, & @@ -2185,26 +2184,22 @@ SUBROUTINE W3MPIO ( IMOD ) TAUOCX, TAUOCY, WNMEAN, QKK, SKEW, EMBIA1, EMBIA2 #endif - USE W3ADATMD, ONLY: USSHX, USSHY - #ifdef W3_MPI USE W3GDATMD, ONLY: NK - USE W3ODATMD, ONLY: NDST, IAPROC, NAPROC, NTPROC, FLOUT, & - NAPFLD, NAPPNT, NAPRST, NAPBPT, NAPTRK, & + USE W3ODATMD, ONLY: NDST, IAPROC, NAPROC, FLOUT, & + NAPFLD, NAPRST, NAPBPT, NAPTRK, & NOGRP, NGRPP, NOGE, FLOGRR USE W3ODATMD, ONLY: OUTPTS, NRQGO, NRQGO2, IRQGO, IRQGO2, & - FLOGRD, NRQPO, NRQPO2, IRQPO1, IRQPO2, & - NOPTS, IPTINT, NRQRS, IRQRS, NBLKRS, & + FLOGRD, NRQRS, IRQRS, NBLKRS, & RSBLKS, IRQRSS, VAAUX, NRQBP, NRQBP2, & IRQBP1, IRQBP2, NFBPO, NBO2, ISBPO, & ABPOS, NRQTR, IRQTR, IT0PNT, IT0TRK, & - IT0PRT, NOSWLL, NOEXTR, NDSE, IOSTYP, & - FLOGR2 + IT0PRT, NOSWLL, NOEXTR, NDSE, IOSTYP, FLOGR2 USE W3PARALL, ONLY : INIT_GET_JSEA_ISPROC -#endif - USE W3GDATMD, ONLY: GTYPE, UNGTYPE + USE W3ADATMD, ONLY: USSHX, USSHY USE CONSTANTS, ONLY: LPDLIB use w3odatmd, only : restart_from_binary, use_restartnc, use_historync +#endif !/ #ifdef W3_MPI use mpi_f08 @@ -2221,9 +2216,8 @@ SUBROUTINE W3MPIO ( IMOD ) #ifdef W3_MPI INTEGER :: IK, IFJ INTEGER :: IH, IT0, IROOT, IT, IERR, I0, & - IFROM, IX(4), IY(4), IS(4), & - IP(4), I, J, JSEA, ITARG, IB, & - JSEA0, JSEAN, NSEAB, IBOFF, & + IFROM, I, J, JSEA, ITARG, IB, & + JSEA0, JSEAN, NSEAB, IBOFF, & ISEA, ISPROC, K, NRQMAX #endif #ifdef W3_S @@ -2232,11 +2226,11 @@ SUBROUTINE W3MPIO ( IMOD ) #ifdef W3_MPI LOGICAL :: FLGRDALL(NOGRP,NGRPP) LOGICAL :: FLGRDARST(NOGRP,NGRPP) + logical :: do_rstsetup #endif #ifdef W3_MPIT CHARACTER(LEN=5) :: STRING #endif - logical :: do_rstsetup !/ !/ ------------------------------------------------------------------- / !/ @@ -5535,13 +5529,16 @@ SUBROUTINE W3MPIP ( IMOD ) #ifdef W3_MPI USE W3SERVMD, ONLY: EXTCDE !/ - USE W3GDATMD, ONLY: NX, NY, NSPEC, MAPFS + USE W3GDATMD, ONLY: NSPEC, MAPFS USE W3WDATMD, ONLY: VA USE W3ADATMD, ONLY: MPI_COMM_WAVE, SPPNT - USE W3ODATMD, ONLY: NDST, NDSE, IAPROC, NAPROC, NAPPNT, FLOUT + USE W3ODATMD, ONLY: NDSE, IAPROC, NAPPNT USE W3ODATMD, ONLY: OUTPTS, NRQPO, NRQPO2, IRQPO1, IRQPO2, & NOPTS, IPTINT, IT0PNT, IT0TRK, O2IRQI USE W3PARALL, ONLY: INIT_GET_JSEA_ISPROC +#endif +#ifdef W3_MPIT + USE W3ODATMD, ONLY: NDST #endif !/ #ifdef W3_MPI @@ -5561,7 +5558,6 @@ SUBROUTINE W3MPIP ( IMOD ) IERR, ITARG, IX(4), IY(4), & K, IS(4), IP(4) #endif - INTEGER :: itout #ifdef W3_S INTEGER, SAVE :: IENT #endif diff --git a/model/src/w3iobcmd.F90 b/model/src/w3iobcmd.F90 index 9dd3c9e3db..509241e358 100644 --- a/model/src/w3iobcmd.F90 +++ b/model/src/w3iobcmd.F90 @@ -216,8 +216,8 @@ SUBROUTINE W3IOBC ( INXOUT, NDSB, TIME1, TIME2, IOTST, IMOD ) USE W3CSPCMD, ONLY: W3CSPC USE W3TRIAMD, ONLY: W3NESTUG ! - USE W3GDATMD, ONLY: NK, NTH, NSPEC, NSEA, NSEAL, NX, NY, & - X0, Y0, SX, SY, GSU, MAPSTA, MAPFS, MAPSF, & + USE W3GDATMD, ONLY: NK, NTH, NSPEC, NSEA, & + GSU, MAPSTA, MAPFS, MAPSF, & XFR, FR1, SIG2, TH, DTH, FILEXT, FACHFE, & GTYPE, UNGTYPE, SMCTYPE USE W3GDATMD, ONLY: DXYMAX @@ -226,12 +226,14 @@ SUBROUTINE W3IOBC ( INXOUT, NDSB, TIME1, TIME2, IOTST, IMOD ) #endif #ifdef W3_RTD !! Use rotated N-Pole lat/lon and conversion sub. JGLi12Jun2012 - USE W3GDATMD, ONLY: PoLat, PoLon, AnglD + USE W3GDATMD, ONLY: PoLat, PoLon, AnglD, NX, NY, X0, Y0, SX, SY USE W3SERVMD, ONLY: W3LLTOEQ, W3EQTOLL, W3ACTURN #endif +#ifdef W3_SHRD USE W3WDATMD, ONLY: VA +#endif USE W3ADATMD, ONLY: CG - USE W3ODATMD, ONLY: NDSE, NDST, IAPROC, NAPROC, NAPERR, NAPBPT, & + USE W3ODATMD, ONLY: NDSE, NDST, IAPROC, NAPERR, NAPBPT, & NBI, NBI2, NFBPO, NBO, NBO2, NDSL, & NKI, NTHI, XFRI, FR1I, TH1I, & IPBPI, ISBPI, XBPI, YBPI, RDBPI, & diff --git a/model/src/w3iogomd.F90 b/model/src/w3iogomd.F90 index 9f4a835fba..9d2b6f6925 100644 --- a/model/src/w3iogomd.F90 +++ b/model/src/w3iogomd.F90 @@ -401,7 +401,6 @@ SUBROUTINE W3READFLGRD ( NDSI , NDSO, NDSS, NDSEN, COMSTR, & ! !/ ------------------------------------------------------------------- / USE CONSTANTS - USE W3GDATMD, ONLY: US3DF, USSPF USE W3ODATMD, ONLY: NOGRP, NGRPP, NOGE, IDOUT USE W3SERVMD, ONLY: NEXTLN, STRSPLIT, STR_TO_UPPER #ifdef W3_S @@ -656,7 +655,6 @@ SUBROUTINE W3FLGRDFLAG ( NDSO, NDSS, NDSEN, FLDOUT, & USE CONSTANTS USE W3ODATMD, ONLY: NOGRP, NGRPP, IDOUT USE W3SERVMD, ONLY: STRSPLIT, STR_TO_UPPER - USE W3GDATMD, ONLY: US3DF, USSPF #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif @@ -674,7 +672,7 @@ SUBROUTINE W3FLGRDFLAG ( NDSO, NDSS, NDSEN, FLDOUT, & !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: I, IFI, IFJ, IOUT + INTEGER :: IFI, IFJ, IOUT #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif @@ -1300,29 +1298,28 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) !/ ------------------------------------------------------------------- / USE CONSTANTS USE W3GDATMD - USE W3WDATMD, ONLY: UST, FPIS USE W3ADATMD, ONLY: CG, WN, DW USE W3ADATMD, ONLY: HS, WLM, T02, T0M1, T01, FP0, & THM, THS, THP0 USE W3ADATMD, ONLY: ABA, ABD, UBA, UBD, FCUT, SXX, & SYY, SXY, PHS, PTP, PLP, PDIR, PSI, PWS, & - PWST, PNR, USERO, TUSX, TUSY, PRMS, TPMS, & + PWST, PNR, TUSX, TUSY, PRMS, TPMS, & USSX, USSY, MSSX, MSSY, MSSD, MSCX, MSCY, & - MSCD, CHARN, & - BHD, CGE, P2SMS, US3D, EF, TH1M, STH1M, & + MSCD, BHD, CGE, P2SMS, EF, TH1M, STH1M, & TH2M, STH2M, HSIG, STMAXE, STMAXD, & - HCMAXE, HMAXE, HCMAXD, HMAXD, USSP, QP, PQP,& + HCMAXE, HMAXE, HCMAXD, HMAXD, QP, PQP, & PTHP0, PPE, PGW, PSW, PTM1, PT1, PT2, PEP, & WBT, QKK - USE W3ODATMD, ONLY: NDST, UNDEF, IAPROC, NAPROC, NAPFLD, & - ICPRT, DTPRT, WSCUT, NOSWLL, FLOGRD, FLOGR2,& - NOGRP, NGRPP - USE W3ADATMD, ONLY: NSEALM ! USSHX, USSHY : surface layer (SL) averaged SD ! HSL : surface layer depth (1/5 of the mixed layer depth ! from the coupler) USE W3ADATMD, ONLY: USSHX, USSHY USE W3IDATMD, ONLY: HSL + USE W3ODATMD, ONLY: UNDEF, ICPRT, DTPRT, WSCUT, & + NOSWLL, FLOGRD, FLOGR2, NOGRP, NGRPP +#ifdef W3_T + USE W3ODATMD, ONLY: NDST +#endif #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif @@ -1339,13 +1336,11 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) !/ Local parameters !/ INTEGER :: IK, ITH, JSEA, ISEA, IX, IY, & - IKP0(NSEAL), NKH(NSEAL), & - I, J, LKMS, HKMS, ITL + IKP0(NSEAL), NKH(NSEAL), I, J, ITL #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif REAL :: FXPMC, FACTOR, FACTOR2, EBAND, FKD, & - AABS, UABS, & XL, XH, XL2, XH2, EL, EH, DENOM, KD, & M1, M2, MA, MB, MC, STEX, STEY, STED REAL :: ET(NSEAL), EWN(NSEAL), ETR(NSEAL), & @@ -1371,8 +1366,8 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) T02P(NSEAL), NV(NSEAL), NS(NSEAL), & NB(NSEAL), MODE(NSEAL), & MU(NSEAL), NI(NSEAL), STMAXEL(NSEAL),& - PHI(21,NSEAL),PHIST(NSEAL), & - EBC(NK,NSEAL), ABP(NSEAL), & + PHI(21,NSEAL),PHIST(NSEAL), & + EBC(NK,NSEAL), & STMAXDL(NSEAL), TLPHI(NSEAL), & WL02X(NSEAL), WL02Y(NSEAL), & ALPXT(NSEAL), ALPYT(NSEAL), & @@ -1383,7 +1378,6 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 ) LOGICAL :: FLOLOC(NOGRP,NGRPP) ! SWW: angle between wind and waves ! LHSL: local surface layer depth - REAL :: SWW REAL :: LHSL ! tmp variable for surface layer averaged Stokes drift REAL :: USSCOH @@ -2577,7 +2571,7 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & USE W3ADATMD, ONLY: W3SETA, W3DIMA, W3XETA USE W3ODATMD, ONLY: W3SETO !/ - USE W3WDATMD, ONLY: TIME, DINIT, WLV, ICE, ICEF, ICEH, BERG, & + USE W3WDATMD, ONLY: TIME, DINIT, WLV, ICE, BERG, & UST, USTDIR, ASF, RHOAIR USE W3ADATMD, ONLY: AINIT, DW, UA, UD, AS, CX, CY, WN, & TAUA, TAUADIR @@ -2597,18 +2591,23 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & USSP, TAUOCX, TAUOCY, QKK, SKEW, EMBIA1, EMBIA2 USE W3ADATMD, ONLY: USSHX, USSHY !/ - USE W3ODATMD, ONLY: NOGRP, NGRPP, IDOUT, UNDEF, NDST, NDSE, & + USE W3ODATMD, ONLY: NOGRP, NGRPP, UNDEF, NDST, NDSE, & FLOGRD, IPASS => IPASS1, WRITE => WRITE1, & FNMPRE, FNMGRD, NOSWLL, NOEXTR !/ USE W3SERVMD, ONLY: EXTCDE, EXTOPN, EXTIOF - USE W3ODATMD, only: IAPROC USE W3ODATMD, ONLY: OFILES +#ifdef W3_T + USE W3ODATMD, ONLY: IDOUT +#endif #ifdef W3_SETUP USE W3WDATMD, ONLY: ZETA_SETUP #endif #ifdef W3_S USE W3SERVMD, ONLY: STRACE +#endif +#ifdef W3_IS2 + USE W3WDATMD, ONLY: ICEF, ICEH #endif ! !/ @@ -2628,14 +2627,12 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD & !/ Local parameters !/ INTEGER :: IGRD, IERR, I, J, IX, IY, MOGRP, & - MGRPP, ISEA, MOSWLL, IK, IFI, IFJ & - ,IFILOUT + MGRPP, ISEA, MOSWLL, IFI, IFJ INTEGER, ALLOCATABLE :: MAPTMP(:,:) #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif - REAL :: AUX1(NSEA), AUX2(NSEA), & - AUX3(NSEA), AUX4(NSEA) + REAL :: AUX1(NSEA), AUX2(NSEA) #ifdef W3_SMC REAL :: UDARC #endif @@ -4263,12 +4260,11 @@ SUBROUTINE CALC_U3STOKES ( A , USS_SWITCH ) ! !/ ------------------------------------------------------------------- / USE CONSTANTS, ONLY: TPIINV, GRAV, TPI - USE W3GDATMD, ONLY: DDEN, DSII, XFR, SIG, NK, NTH, NSEAl, & + USE W3GDATMD, ONLY: DDEN, DSII, SIG, NK, NTH, NSEAl, & ECOS, ESIN, US3DF, USSPF, USSP_WN USE W3ADATMD, ONLY: CG, WN, DW - USE W3ADATMD, ONLY: USSX, USSY, US3D, USSP - USE W3ODATMD, ONLY: IAPROC, NAPROC - USE W3PARALL, ONLY: INIT_GET_ISEA + USE W3ADATMD, ONLY: US3D, USSP + USE W3PARALL, ONLY: INIT_GET_ISEA #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif @@ -4715,7 +4711,7 @@ SUBROUTINE SECONDHH(NKHF,FAC0,FAC1,FAC2,FAC3) ! V E ZAKHAROV(1967) !------------------------------------------------------------------- USE CONSTANTS, ONLY: GRAV, TPI - USE W3GDATMD, ONLY: NK, NTH, XFR, SIG, TH, DTH, ECOS, ESIN + USE W3GDATMD, ONLY: NTH, XFR, SIG, TH, DTH, ECOS, ESIN IMPLICIT NONE INTEGER, INTENT(IN) :: NKHF @@ -5000,7 +4996,7 @@ SUBROUTINE SKEWNESS(A) REAL(KIND=4) :: CONX, DELTA REAL(KIND=4) :: FH, DELF, XK1 - REAL(KIND=4) :: XPI, XPJ, XPK, XN, XFAC, CO1 + REAL(KIND=4) :: XPI, XPJ, XPK, XN, CO1 REAL(KIND=4), DIMENSION(:,:), ALLOCATABLE :: F2 REAL(KIND=4), DIMENSION(0:3,0:2,0:2) :: XMU, XLAMBDA REAL(KIND=4), DIMENSION(:) , ALLOCATABLE:: SIGHF, DFIMHF, FAK diff --git a/model/src/w3iogrmd.F90 b/model/src/w3iogrmd.F90 index fab9852c66..4311e40dda 100644 --- a/model/src/w3iogrmd.F90 +++ b/model/src/w3iogrmd.F90 @@ -331,11 +331,8 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: IGRD, IERR, I, J, MTH, MK, ISEA, IX, IY + INTEGER :: IGRD, IERR, I, MTH, MK, IX, IY INTEGER :: IEXT, IPRE -#ifdef W3_ST4 - INTEGER :: IK, ITH, IK2, ITH2 -#endif INTEGER, ALLOCATABLE :: MAPTMP(:,:) #ifdef W3_MPI INTEGER :: IERR_MPI, IP @@ -344,12 +341,22 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & INTEGER, SAVE :: IENT = 0 #endif #ifdef W3_T - INTEGER :: K + INTEGER :: K, ISEA +#endif +#if defined(W3_T) || defined(W3_SMC) + INTEGER :: J +#endif + LOGICAL :: WRITE, FLTEST = .FALSE. +#if defined(W3_NL2) || defined(W3_MPI) + LOGICAL :: FLSNL2 = .FALSE. +#endif + LOGICAL, SAVE :: FLDISP = .FALSE. +#if defined(W3_ST2) || defined(W3_ST3) + LOGICAL, SAVE :: FLINP = .FALSE. +#endif +#ifdef W3_IS2 + LOGICAL, SAVE :: FLIS = .FALSE. #endif - LOGICAL :: WRITE, FLTEST = .FALSE., TESTLL, & - FLSNL2 = .FALSE. - LOGICAL, SAVE :: FLINP = .FALSE. , FLDISP = .FALSE., & - FLIS = .FALSE. CHARACTER(LEN=10) :: VERTST CHARACTER(LEN=13) :: TEMPXT CHARACTER(LEN=30) :: TNAME0, TNAME1, TNAME2, TNAME3, & @@ -360,7 +367,6 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT & FNAMEP, FNAMEG, FNAMEF, FNAMEI CHARACTER(LEN=35) :: IDTST CHARACTER(LEN=60) :: MESSAGE(5) - LOGICAL :: GLOBAL REAL, ALLOCATABLE :: XGRD4(:,:), YGRD4(:,:) diff --git a/model/src/w3iopomd.F90 b/model/src/w3iopomd.F90 index c962ee47dc..e53c594322 100644 --- a/model/src/w3iopomd.F90 +++ b/model/src/w3iopomd.F90 @@ -344,25 +344,26 @@ SUBROUTINE W3IOPP ( NPT, XPT, YPT, PNAMES, IMOD, MPI_COMM_IOPP ) !/ ------------------------------------------------------------------- / USE NETCDF USE W3GSRUMD, ONLY: W3GRMP - USE W3GDATMD, ONLY: NTH, NK, NSPEC, NX, NY, X0, Y0, SX, GSU,& - RLGTYPE, CLGTYPE, UNGTYPE, GTYPE, FLAGLL, & - ICLOSE,ICLOSE_NONE,ICLOSE_SMPL,ICLOSE_TRPL, & - MAPSTA, MAPFS, FILEXT, ZB, TRNX, TRNY - USE W3GDATMD, ONLY: TRIGP,MAXX, MAXY, DXYMAX + USE W3GDATMD, ONLY: GSU, RLGTYPE, CLGTYPE, UNGTYPE, GTYPE, FLAGLL, & + ICLOSE_NONE, ICLOSE_SMPL, ICLOSE_TRPL, MAPSTA, FILEXT #ifdef W3_RTD !! Use rotated N-Pole lat/lon and conversion sub. JGLi12Jun2012 - USE W3GDATMD, ONLY: PoLat, PoLon, FLAGUNR + USE W3GDATMD, ONLY: PoLat, PoLon, FLAGUNR, X0 USE W3SERVMD, ONLY: W3LLTOEQ #endif - USE W3ODATMD, ONLY: W3DMO2, FNMPRE - USE W3ODATMD, ONLY: NDSE, NDST, IAPROC, NAPERR, NAPOUT, SCREEN, & + USE W3ODATMD, ONLY: W3DMO2 + USE W3ODATMD, ONLY: NDSE, NDST, IAPROC, NAPERR, & NOPTS, PTLOC, PTNME, GRDID, IPTINT, PTIFAC USE W3SERVMD, ONLY: EXTOPN, EXTIOF #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif - USE W3TRIAMD, ONLY: IS_IN_UNGRID - USE W3GDATMD, ONLY: FILEXT + USE W3TRIAMD, ONLY: IS_IN_UNGRID + USE W3GDATMD, ONLY: FILEXT +#ifdef W3_O7a + USE W3GDATMD, ONLY: NX, NY, ICLOSE, MAPFS, ZB, TRNX, TRNY + USE W3ODATMD, ONLY: NAPOUT, SCREEN +#endif ! #ifdef W3_MPI use mpi_f08 @@ -385,8 +386,7 @@ SUBROUTINE W3IOPP ( NPT, XPT, YPT, PNAMES, IMOD, MPI_COMM_IOPP ) !/ Local parameters !/ LOGICAL :: INGRID - INTEGER :: IPT, J, K - INTEGER :: IX1, IY1, IXS, IYS + INTEGER :: IPT, K #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif @@ -397,7 +397,7 @@ SUBROUTINE W3IOPP ( NPT, XPT, YPT, PNAMES, IMOD, MPI_COMM_IOPP ) INTEGER :: ITOUT ! Triangle index in unstructured grids #ifdef W3_O7a INTEGER :: IX0, IXN, IY0, IYN, NNX, & - KX, KY, JX, IIX, IX2, IY2, IS1 + KX, KY, JX, IIX, IX2, IY2, IS1, J, IX1, IY1 REAL :: RD1, RD2, RDTOT, ZBOX(4), DEPTH CHARACTER(LEN=1) :: SEA(5), LND(5), OUT(5) CHARACTER(LEN=9) :: PARTS @@ -954,8 +954,7 @@ SUBROUTINE W3IOPE ( A ) ! !/ ------------------------------------------------------------------- / USE CONSTANTS - USE W3GDATMD, ONLY: NK, NTH, SIG, NX, NY, NSEA, NSEAL, & - MAPSTA, MAPFS + USE W3GDATMD, ONLY: NK, NTH, SIG, NSEAL, MAPSTA, MAPFS #ifdef W3_RTD !! Use spectral rotation sub and angle. JGLi12Jun2012 USE W3GDATMD, ONLY: NSPEC, AnglD, FLAGUNR @@ -970,9 +969,8 @@ SUBROUTINE W3IOPE ( A ) #ifdef W3_FLX5 USE W3ADATMD, ONLY: TAUA, TAUADIR #endif - USE W3ODATMD, ONLY: NDST, NOPTS, IPTINT, PTIFAC, IL, IW, II, & - DPO, WAO, WDO, ASO, CAO, CDO, ICEO, ICEHO, & - ICEFO, SPCO, NAPROC + USE W3ODATMD, ONLY: NOPTS, IPTINT, PTIFAC, IL, IW, II, & + DPO, WAO, WDO, ASO, CAO, CDO, ICEO, ICEHO, ICEFO, SPCO #ifdef W3_FLX5 USE W3ODATMD, ONLY: TAUAO, TAUDO, DAIRO #endif @@ -988,6 +986,10 @@ SUBROUTINE W3IOPE ( A ) #endif #ifdef W3_T USE W3ARRYMD, ONLY: PRT2DS + USE W3ODATMD, ONLY: NDST +#endif +#ifdef W3_DIST + USE W3ODATMD, ONLY: NAPROC #endif ! #ifdef W3_MPI @@ -1003,8 +1005,7 @@ SUBROUTINE W3IOPE ( A ) !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: I, IX1, IY1, IX(4), IY(4), J, IS(4), & - IM(4), IK, ITH, ISP + INTEGER :: I, IX(4), IY(4), J, IS(4), IM(4), IK, ITH, ISP #ifdef W3_MPI INTEGER :: IOFF, IERR_MPI type(MPI_STATUS) :: STAT(4*NOPTS) @@ -1020,6 +1021,7 @@ SUBROUTINE W3IOPE ( A ) #endif INTEGER :: JSEA, ISEA #ifdef W3_T + INTEGER :: IX1, IY1 REAL :: SPTEST(NK,NTH) #endif #ifdef W3_RTD @@ -1328,9 +1330,9 @@ SUBROUTINE W3IOPON_READ(IOTST, IMOD_IN, filename, ncerr, TOUT ) USE W3ODATMD, ONLY: W3DMO2 USE W3WDATMD, ONLY: TIME USE W3GDATMD, ONLY: NTH, NK, NSPEC, FILEXT - USE W3ODATMD, ONLY: NDST, NDSE, IPASS => IPASS2, NOPTS, IPTINT, & - IL, IW, II, PTLOC, PTIFAC, DPO, WAO, WDO, & - ASO, CAO, CDO, SPCO, PTNME, O2INIT, FNMPRE, FNMPNT, & + USE W3ODATMD, ONLY: NDSE, NDST, IPASS => IPASS2, NOPTS, & + IL, IW, II, PTLOC, DPO, WAO, WDO, & + ASO, CAO, CDO, SPCO, PTNME, O2INIT, FNMPRE, & GRDID, ICEO, ICEHO, ICEFO, W3DMO2 USE W3SERVMD, ONLY: EXTCDE #ifdef W3_FLX5 @@ -1350,9 +1352,9 @@ SUBROUTINE W3IOPON_READ(IOTST, IMOD_IN, filename, ncerr, TOUT ) LOGICAL :: per_time_step INTEGER :: IGRD,MK,MTH integer :: fh, itime - integer :: d_nopts, d_nspec, d_vsize, d_namelen, d_grdidlen, d_time, d_ww3time - integer :: d_nopts_len, d_nspec_len, d_vsize_len, d_namelen_len, d_grdidlen_len, d_time_len, d_ww3time_len - integer :: v_idtst, v_vertst, v_nk, v_nth, v_ptloc, v_ptnme, v_time, v_ww3time + integer :: d_nopts, d_nspec, d_vsize, d_namelen, d_grdidlen, d_time + integer :: d_nopts_len, d_nspec_len, d_vsize_len, d_namelen_len, d_grdidlen_len, d_time_len + integer :: v_nk, v_nth, v_ptloc, v_ptnme, v_ww3time integer :: v_dpo, v_wao, v_wdo #ifdef W3_FLX5 integer :: v_tauao,v_taudo, v_dairo @@ -1617,9 +1619,8 @@ SUBROUTINE W3IOPON_WRITE(timestep_only,filename, ncerr, NDSOP, fname, path) USE NETCDF USE W3GDATMD, ONLY: NTH, NK, NSPEC USE W3WDATMD, ONLY: TIME - USE W3ODATMD, ONLY: NDST, NDSE, IPASS => IPASS2, NOPTS, IPTINT, & - PTLOC, PTIFAC, DPO, WAO, WDO, & - ASO, CAO, CDO, SPCO, PTNME, O2INIT, FNMPRE, FNMPNT, & + USE W3ODATMD, ONLY: IPASS => IPASS2, NOPTS, & + PTLOC, DPO, WAO, WDO, ASO, CAO, CDO, SPCO, PTNME, & GRDID, ICEO, ICEHO, ICEFO USE W3TIMEMD, ONLY: CALTYPE, T2D, U2D, TSUB #ifdef W3_FLX5 @@ -1638,9 +1639,9 @@ SUBROUTINE W3IOPON_WRITE(timestep_only,filename, ncerr, NDSOP, fname, path) CHARACTER(LEN=124), INTENT(IN), OPTIONAL :: fname CHARACTER(LEN=256), INTENT(IN), OPTIONAL :: path ! - integer :: ndim, nvar, fmt, itime, fh + integer :: itime, fh integer :: d_nopts, d_nspec, d_vsize, d_namelen, d_grdidlen, d_time - integer :: v_idtst, v_vertst, v_nk, v_nth, v_ptloc, v_ptnme, v_time, v_ww3time + integer :: v_nk, v_nth, v_ptloc, v_ptnme, v_time, v_ww3time integer :: v_dpo, v_wao, v_wdo #ifdef W3_FLX5 integer :: v_tauao, v_taudo, v_dairo @@ -2213,8 +2214,8 @@ SUBROUTINE W3IOPO ( INXOUT, NDSOP, IOTST, IMOD & !/ USE W3GDATMD, ONLY: NTH, NK, NSPEC, FILEXT USE W3WDATMD, ONLY: TIME - USE W3ODATMD, ONLY: NDST, NDSE, IPASS => IPASS2, NOPTS, IPTINT, & - IL, IW, II, PTLOC, PTIFAC, DPO, WAO, WDO, & + USE W3ODATMD, ONLY: NDST, NDSE, IPASS => IPASS2, NOPTS, & + IL, IW, II, PTLOC, DPO, WAO, WDO, & ASO, CAO, CDO, SPCO, PTNME, O2INIT, FNMPRE, FNMPNT, & GRDID, ICEO, ICEHO, ICEFO #ifdef W3_FLX5 diff --git a/model/src/w3iorsmd.F90 b/model/src/w3iorsmd.F90 index 36fc1c34bd..f308150f87 100644 --- a/model/src/w3iorsmd.F90 +++ b/model/src/w3iorsmd.F90 @@ -304,7 +304,7 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) UBA, UBD, PHIBBL, TAUBBL, TAUOCX, TAUOCY, & WNMEAN !/ - USE W3GDATMD, ONLY: NX, NY, NSEA, NSEAL, NSPEC, MAPSTA, MAPST2, & + USE W3GDATMD, ONLY: NX, NY, NSEA, NSPEC, MAPSTA, MAPST2, & GNAME, FILEXT, GTYPE, UNGTYPE USE W3TRIAMD, ONLY: SET_UG_IOBP USE W3WDATMD, only : DINIT, VA, TIME, TLEV, TICE, TRHO, ICE, UST @@ -314,23 +314,29 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) USE W3IDATMD, ONLY: WXNwrst, WYNwrst #endif USE W3ODATMD, ONLY: NDSE, NDST, IAPROC, NAPROC, NAPERR, NAPRST, & - IFILE => IFILE4, FNMPRE, FNMRST, NTPROC, IOSTYP, & + IFILE => IFILE4, FNMPRE, FNMRST, IOSTYP, & FLOGRR, NOGRP, NGRPP, SCREEN +#ifdef W3_T + USE W3ODATMD, ONLY: NTPROC +#endif + !/ #ifdef W3_MPI USE W3ODATMD, ONLY: NRQRS, NBLKRS, RSBLKS, IRQRS, IRQRSS, & VAAUX USE W3ADATMD, ONLY: MPI_COMM_WCMP USE mpi_f08 +#endif + !/ +#if defined(W3_T) || defined(W3_MPI) + USE W3GDATMD, ONLY: NSEAL #endif !/ USE W3SERVMD, ONLY: EXTCDE, EXTIOF USE CONSTANTS, only: LPDLIB, file_endian USE W3PARALL, ONLY: INIT_GET_ISEA, INIT_GET_JSEA_ISPROC - USE W3GDATMD, ONLY: NK, NTH #ifdef W3_TIMINGS USE W3PARALL, ONLY: PRINT_MY_TIME #endif - USE w3odatmd, ONLY : RUNTYPE USE w3adatmd, ONLY : USSHX, USSHY #ifdef W3_PDLIB USE PDLIB_FIELD_VEC @@ -360,15 +366,17 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename) ! INTEGER :: IGRD, I, J, LRECL, NSIZE, IERR, & NSEAT, MSPEC, TTIME(2), ISEA, JSEA, & - NREC, NPART, IPART, IX, IY, IXL, IP, & - NPRTX2, NPRTY2, IYL, ITMP + NREC, NPART, IPART, IY, IXL, NPRTX2, NPRTY2, ITMP INTEGER, ALLOCATABLE :: MAPTMP(:,:) +#ifdef W3_WRST + INTEGER :: IX, IYL +#endif #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif #ifdef W3_MPI INTEGER :: IERR_MPI, IH, IB, ISEA0, ISEAN, & - NRQ, NSEAL_MIN + NRQ, NSEAL_MIN, IP #endif INTEGER(KIND=8) :: RPOS #ifdef W3_MPI diff --git a/model/src/w3iosfmd.F90 b/model/src/w3iosfmd.F90 index 42f7cfa74d..eaf874a165 100644 --- a/model/src/w3iosfmd.F90 +++ b/model/src/w3iosfmd.F90 @@ -174,10 +174,9 @@ SUBROUTINE W3CPRT ( IMOD ) USE W3SERVMD, ONLY: STRACE #endif ! - USE W3GDATMD, ONLY: NSEA, NSEAL, MAPSF, MAPSTA, NK, NTH, SIG + USE W3GDATMD, ONLY: NSEAL, MAPSF, MAPSTA, NK, NTH, SIG USE W3ADATMD, ONLY: WN, CG, U10, U10D, DW - USE W3ODATMD, ONLY: IAPROC, NAPROC, OUTPTS, O6INIT, & - ICPRT, DTPRT, DIMP, PTMETH + USE W3ODATMD, ONLY: OUTPTS, O6INIT, ICPRT, DTPRT, DIMP, PTMETH USE W3WDATMD, ONLY: VA, ASF USE W3ADATMD, ONLY: NSEALM USE W3PARALL, ONLY: INIT_GET_ISEA, INIT_GET_JSEA_ISPROC @@ -438,11 +437,10 @@ SUBROUTINE W3IOSF ( NDSPT, IMOD ) USE W3GDATMD, ONLY: NSEAL #endif USE W3WDATMD, ONLY: TIME, ASF - USE W3ODATMD, ONLY: NDSE, IAPROC, NAPROC, NAPPRT, NAPERR, & - IPASS => IPASS6, FLFORM, FNMPRE, OUTPTS, & + USE W3ODATMD, ONLY: NDSE, IAPROC, NAPROC, NAPPRT, & + IPASS => IPASS6, FLFORM, FNMPRE, OUTPTS, & IX0, IXN, IXS, IY0, IYN, IYS, DIMP USE W3ADATMD, ONLY: DW, U10, U10D, CX, CY - USE W3ADATMD, ONLY: NSEALM USE W3PARALL, ONLY: INIT_GET_JSEA_ISPROC #ifdef W3_MPI USE W3ADATMD, ONLY: MPI_COMM_WAVE @@ -450,6 +448,9 @@ SUBROUTINE W3IOSF ( NDSPT, IMOD ) #endif #ifdef W3_T USE W3ODATMD, ONLY: NDST +#endif +#if defined(W3_T) || defined(W3_MPI) + USE W3ADATMD, ONLY: NSEALM #endif ! #ifdef W3_MPI @@ -467,7 +468,7 @@ SUBROUTINE W3IOSF ( NDSPT, IMOD ) !/ Local parameters !/ INTEGER :: I, J, IERR, ISEA, JSEA, JAPROC, & - IX, IY, IP, IOFF, DTSIZ=0 + IX, IY, IP, IOFF, DTSIZ #ifdef W3_MPI INTEGER :: ICSIZ, IERR_MPI, IT, JSLM type(MPI_STATUS) :: STATUS @@ -501,6 +502,8 @@ SUBROUTINE W3IOSF ( NDSPT, IMOD ) #ifdef W3_T WRITE (NDST,9000) IPASS, FLFORM, NDSPT, IMOD, IAPROC, NAPPRT #endif + + DTSIZ=0 ! ! -------------------------------------------------------------------- / ! 1. Set up file ( IPASS = 1 and proper processor ) diff --git a/model/src/w3iotrmd.F90 b/model/src/w3iotrmd.F90 index c828d6f3dd..c69a68ce96 100644 --- a/model/src/w3iotrmd.F90 +++ b/model/src/w3iotrmd.F90 @@ -221,8 +221,8 @@ SUBROUTINE W3IOTR ( NDSINP, NDSOUT, A, IMOD ) USE W3ADATMD, ONLY: W3SETA USE W3ODATMD, ONLY: W3SETO, W3DMO3 !/ - USE W3GDATMD, ONLY: NK, NTH, NSPEC, NSEA, NSEAL, NX, NY, & - FLAGLL, ICLOSE, XGRD, YGRD, GSU, & + USE W3GDATMD, ONLY: NK, NTH, NSEAL, NX, NY, & + FLAGLL, XGRD, YGRD, GSU, & DPDX, DPDY, DQDX, DQDY, MAPSTA, MAPST2, & MAPFS, TH, DTH, SIG, DSIP, XFR, FILEXT USE W3GSRUMD, ONLY: W3GFCL @@ -234,8 +234,9 @@ SUBROUTINE W3IOTR ( NDSINP, NDSOUT, A, IMOD ) USE W3ADATMD, ONLY: CG, DW, CX, CY, UA, UD, AS #ifdef W3_MPI USE W3ADATMD, ONLY: MPI_COMM_WAVE + USE W3GDATMD, ONLY: NSPEC #endif - USE W3ODATMD, ONLY: NDST, NDSE, IAPROC, NAPROC, NAPTRK, NAPERR, & + USE W3ODATMD, ONLY: NDST, NDSE, IAPROC, NAPTRK, NAPERR, & IPASS => IPASS3, ATOLAST => TOLAST, & ADTOUT => DTOUT, O3INIT, STOP, MASK1, & MASK2, TRCKID, FNMPRE diff --git a/model/src/w3odatmd.F90 b/model/src/w3odatmd.F90 index c83d17380a..cce46742e8 100644 --- a/model/src/w3odatmd.F90 +++ b/model/src/w3odatmd.F90 @@ -1430,7 +1430,7 @@ SUBROUTINE W3DMO5 ( IMOD, NDSE, NDST, IBLOCK ) ! 10. Source code : ! !/ ------------------------------------------------------------------- / - USE W3GDATMD, ONLY: W3SETG, NGRIDS, IGRID, NX, NY, NSPEC + USE W3GDATMD, ONLY: W3SETG, NGRIDS, NSPEC USE W3SERVMD, ONLY: EXTCDE #ifdef W3_S USE W3SERVMD, ONLY: STRACE @@ -1445,7 +1445,6 @@ SUBROUTINE W3DMO5 ( IMOD, NDSE, NDST, IBLOCK ) !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: JGRID #ifdef W3_S INTEGER, SAVE :: IENT = 0 CALL STRACE (IENT, 'W3DMO5') @@ -1648,7 +1647,6 @@ SUBROUTINE W3SETO ( IMOD, NDSERR, NDSTST ) !/ Local parameters !/ INTEGER :: NLOW - INTEGER :: J #ifdef W3_S INTEGER, SAVE :: IENT = 0 CALL STRACE (IENT, 'W3SETO') diff --git a/model/src/w3parall.F90 b/model/src/w3parall.F90 index e7bc900721..02796d99de 100644 --- a/model/src/w3parall.F90 +++ b/model/src/w3parall.F90 @@ -959,7 +959,7 @@ SUBROUTINE SYNCHRONIZE_IPGL_ETC_ARRAY(IMOD, IsMulti) USE yowNodepool, only: np_global USE W3ODATMD, ONLY: NTPROC, NAPROC, IAPROC USE W3GDATMD, ONLY: MAPSF, NSEA - USE W3ADATMD, ONLY: MPI_COMM_WAVE, MPI_COMM_WCMP + USE W3ADATMD, ONLY: MPI_COMM_WAVE USE yowRankModule, only : IPGL_TO_PROC, IPGL_tot USE WMMDATMD, ONLY: MDATAS #endif @@ -1078,17 +1078,15 @@ SUBROUTINE SET_UP_NSEAL_NSEALM(NSEALout, NSEALMout) !/ !/ ------------------------------------------------------------------- / #ifdef W3_PDLIB - use yowDatapool, only: istatus - use yowNodepool, only: npa - use yowRankModule, only : rank USE W3GDATMD, ONLY: GTYPE, UNGTYPE #endif -#ifdef W3_MPI - USE W3ADATMD, ONLY: MPI_COMM_WAVE, MPI_COMM_WCMP -#endif +#ifdef W3_DIST USE CONSTANTS, ONLY : LPDLIB +#endif USE W3GDATMD, ONLY: NSEA - USE W3ODATMD, ONLY: NAPROC, IAPROC +#if defined(W3_DIST) || defined(W3_PDLIB) + USE W3ODATMD, ONLY: IAPROC, NAPROC +#endif IMPLICIT NONE INTEGER, intent(out) :: NSEALout, NSEALMout !/ Local parameters @@ -1200,12 +1198,13 @@ SUBROUTINE INIT_GET_JSEA_ISPROC(ISEA, JSEA, ISPROC) USE W3SERVMD, ONLY: STRACE #endif !/ - USE W3ODATMD, ONLY: IAPROC, NAPROC - USE W3GDATMD, ONLY: UNGTYPE, MAPSF - USE CONSTANTS, ONLY : LPDLIB + USE W3ODATMD, ONLY: NAPROC + USE W3GDATMD, ONLY: UNGTYPE #ifdef W3_PDLIB - USE yowRankModule, only : IPGL_TO_PROC, IPGL_tot - use yowNodepool, only: ipgl, iplg + USE yowRankModule, only : IPGL_TO_PROC + USE W3ODATMD, ONLY: IAPROC + USE W3GDATMD, ONLY: MAPSF + USE CONSTANTS, ONLY : LPDLIB #endif IMPLICIT NONE !/ ------------------------------------------------------------------- / @@ -1221,7 +1220,10 @@ SUBROUTINE INIT_GET_JSEA_ISPROC(ISEA, JSEA, ISPROC) !/ ------------------------------------------------------------------- / INTEGER, intent(in) :: ISEA INTEGER, intent(out) :: JSEA, ISPROC +#ifdef W3_PDLIB INTEGER IP_glob +#endif + #ifdef W3_S CALL STRACE (IENT, 'INIT_GET_JSEA_ISPROC') #endif @@ -1309,11 +1311,11 @@ SUBROUTINE GET_JSEA_IBELONG(ISEA, JSEA, IBELONG) #endif !/ USE W3ODATMD, ONLY: IAPROC, NAPROC - USE W3GDATMD, ONLY: GTYPE, UNGTYPE, MAPSF + USE W3GDATMD, ONLY: UNGTYPE USE CONSTANTS, ONLY : LPDLIB #ifdef W3_PDLIB - USE yowRankModule, only : IPGL_TO_PROC, IPGL_tot, IPGL_npa - use yowNodepool, only: ipgl, iplg + USE yowRankModule, only : IPGL_npa + USE W3GDATMD, ONLY: MAPSF, GTYPE #endif IMPLICIT NONE !/ ------------------------------------------------------------------- / @@ -1330,7 +1332,10 @@ SUBROUTINE GET_JSEA_IBELONG(ISEA, JSEA, IBELONG) !/ INTEGER, intent(in) :: ISEA INTEGER, intent(out) :: JSEA, IBELONG - INTEGER ISPROC, IX, JX + INTEGER ISPROC +#ifdef W3_PDLIB + INTEGER :: IX, JX +#endif #ifdef W3_S CALL STRACE (IENT, 'GET_JSEA_IBELONG') #endif @@ -1435,11 +1440,17 @@ SUBROUTINE INIT_GET_ISEA(ISEA, JSEA) USE W3SERVMD, ONLY: STRACE #endif !/ - USE W3ODATMD, ONLY: IAPROC, NAPROC - USE W3GDATMD, ONLY: GTYPE, UNGTYPE - USE CONSTANTS, ONLY : LPDLIB + USE W3GDATMD, ONLY: UNGTYPE #ifdef W3_PDLIB USE YOWNODEPOOL, ONLY: iplg + USE W3GDATMD, ONLY: GTYPE +#endif +#ifdef W3_DIST + USE CONSTANTS, ONLY : LPDLIB +#endif + !/ +#if defined(W3_DIST) || defined(W3_PDLIB) + USE W3ODATMD, ONLY: IAPROC, NAPROC #endif !/ ------------------------------------------------------------------- / !/ Parameter list @@ -1454,9 +1465,6 @@ SUBROUTINE INIT_GET_ISEA(ISEA, JSEA) !/ !/ ------------------------------------------------------------------- / ! -#ifdef W3_PDLIB - USE YOWNODEPOOL, ONLY: iplg -#endif IMPLICIT NONE #ifdef W3_S INTEGER, SAVE :: IENT = 0 @@ -1559,7 +1567,7 @@ SUBROUTINE SYNCHRONIZE_GLOBAL_ARRAY(TheVar) ! USE W3GDATMD, ONLY: NX #ifdef W3_PDLIB - USE W3ODATMD, only : IAPROC, NAPROC, NTPROC + USE W3ODATMD, only : IAPROC, NAPROC USE W3ADATMD, ONLY: MPI_COMM_WCMP use yowDatapool, only: rtype, istatus USE yowNodepool, only: npa @@ -1582,14 +1590,14 @@ SUBROUTINE SYNCHRONIZE_GLOBAL_ARRAY(TheVar) !/ !/ ------------------------------------------------------------------- / !/ - INTEGER Status(NX), rStatus(NX) - INTEGER IPROC, I, ierr, IP, IP_glob + INTEGER Status(NX) #ifdef W3_PDLIB REAL(rkind), intent(inout) :: TheVar(NX) REAL(rkind) :: rVect(NX) + INTEGER :: IP, IP_glob, IPROC, I, ierr + INTEGER :: rStatus(NX) #else DOUBLE PRECISION, intent(inout) :: TheVar(NX) - DOUBLE PRECISION :: rVect(NX) #endif Status=0 #ifdef W3_S diff --git a/model/src/w3partmd.F90 b/model/src/w3partmd.F90 index 64e032c52e..0f8cd4b95b 100644 --- a/model/src/w3partmd.F90 +++ b/model/src/w3partmd.F90 @@ -243,16 +243,15 @@ SUBROUTINE W3PART ( SPEC, UABS, UDIR, DEPTH, WN, NP, XP, DIMXP ) !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: ITH, IMI(NSPEC), IMD(NSPEC), & - IMO(NSPEC), IND(NSPEC), NP_MAX, & - IP, IT(1), INDEX(DIMXP), NWS, & + INTEGER :: ITH, IMI(NSPEC), & + IMO(NSPEC), IND(NSPEC), NP_MAX, & + IP, IT(1), INDEX(DIMXP), NWS, & IPW, IPT, ISP INTEGER :: PMAP(DIMXP) #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif - REAL :: ZP(NSPEC), ZMIN, ZMAX, Z(NSPEC), & - FACT, WSMAX, HSMAX + REAL :: ZP(NSPEC), ZMIN, ZMAX, Z(NSPEC), FACT REAL :: TP(DIMP,DIMXP) INTEGER :: IK, WIND_PART ! ChrisB; added for new REAL :: C, UPAR, SIGCUT ! UKMO partioning methods @@ -1233,7 +1232,7 @@ SUBROUTINE PTMEAN ( NPI, IMO, ZP, DEPTH, UABS, UDIR, WN, & ! USE W3GDATMD, ONLY: NK, NTH, NSPEC, DTH, SIG, DSII, DSIP, & ECOS, ESIN, XFR, FACHFE, TH, FTE - USE W3ODATMD, ONLY: IAPROC, NAPERR, NDSE, NDST + USE W3ODATMD, ONLY: IAPROC, NAPERR, NDSE ! IMPLICIT NONE !/ diff --git a/model/src/w3pro3md.F90 b/model/src/w3pro3md.F90 index cd28cd96a2..41b1337e33 100644 --- a/model/src/w3pro3md.F90 +++ b/model/src/w3pro3md.F90 @@ -215,12 +215,15 @@ SUBROUTINE W3MAP3 ! ! 10. Source code : !/ ------------------------------------------------------------------- / - USE W3GDATMD, ONLY: NK, NTH, NSPEC, NX, NY, NSEA, MAPSTA, MAPSF,& - GTYPE + USE W3GDATMD, ONLY: NK, NTH, NX, NY, NSEA, MAPSTA, MAPSF, GTYPE USE W3ADATMD, ONLY: NMX0, NMX1, NMX2, NMY0, NMY1, NMY2, NACT, & NCENT, MAPX2, MAPY2, MAPAXY, MAPCXY, & MAPTH2, MAPWN2 +#ifdef W3_T + USE W3GDATMD, ONLY: NSPEC USE W3ODATMD, ONLY: NDST +#endif + !/ #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif @@ -571,7 +574,7 @@ SUBROUTINE W3MAPT ! ! 10. Source code : !/ ------------------------------------------------------------------- / - USE W3GDATMD, ONLY: NX, NY, NSEA, MAPSF + USE W3GDATMD, ONLY: NSEA, MAPSF USE W3ADATMD, ONLY: ATRNX, ATRNY, MAPTRN #ifdef W3_S USE W3SERVMD, ONLY: STRACE @@ -788,14 +791,14 @@ SUBROUTINE W3XYP3 ( ISP, DTG, MAPSTA, MAPFS, VQ, VGX, VGY ) USE W3TIMEMD, ONLY: DSEC21 ! USE W3GDATMD, ONLY: NX, NY, NSEA, MAPSF, DTCFL, CLATS, & - ICLOSE, FLCX, FLCY, NK, NTH, DTH, XFR, & + ICLOSE, FLCX, FLCY, NTH, DTH, XFR, & ICLOSE_NONE, ICLOSE_SMPL, ICLOSE_TRPL, & - ECOS, ESIN, SIG, WDCG, WDTH, PFMOVE, & + ECOS, ESIN, SIG, WDCG, WDTH, & FLAGLL, DPDX, DPDY, DQDX, DQDY, GSQRT USE W3WDATMD, ONLY: TIME USE W3ADATMD, ONLY: NMX0, NMX1, NMX2, NMY0, NMY1, NMY2, NACT, & - NCENT, MAPX2, MAPY2, MAPAXY, MAPCXY, & - MAPTRN, CG, CX, CY, ATRNX, ATRNY, ITIME + NCENT, MAPX2, MAPY2, MAPAXY, MAPCXY, & + MAPTRN, CG, CX, CY, ATRNX, ATRNY USE W3IDATMD, ONLY: FLCUR USE W3ODATMD, ONLY: NDSE, NDST, FLBPI, NBI, TBPI0, TBPIN, & ISBPI, BBPI0, BBPIN, IAPROC, NAPERR @@ -808,6 +811,9 @@ SUBROUTINE W3XYP3 ( ISP, DTG, MAPSTA, MAPFS, VQ, VGX, VGY ) #endif #ifdef W3_UNO USE W3UNO2MD +#endif +#ifdef W3_MGG + USE W3GDATMD, ONLY: PFMOVE #endif !/ IMPLICIT NONE @@ -1625,7 +1631,7 @@ SUBROUTINE W3KTP3 ( ISEA, FACTH, FACK, CTHG0, CG, WN, DW, & USE W3GDATMD, ONLY: NK, NK2, NTH, NSPEC, SIG, DSIP, ECOS, ESIN, & EC2, ESC, ES2, FACHFA, MAPWN, FLCTH, FLCK, & CTMAX, DMIN - USE W3ADATMD, ONLY: MAPTH2, MAPWN2, ITIME, ITSTEP + USE W3ADATMD, ONLY: MAPTH2, MAPWN2, ITSTEP USE W3IDATMD, ONLY: FLCUR USE W3ODATMD, ONLY: NDSE, NDST #ifdef W3_S @@ -2050,17 +2056,10 @@ SUBROUTINE W3CFLXY ( ISEA, DTG, MAPSTA, MAPFS, CFLXYMAX, VGX, VGY ) ! USE W3TIMEMD, ONLY: DSEC21 ! - USE W3GDATMD, ONLY: NX, NY, NSEA, MAPSF, DTCFL, CLATS, & - FLCX, FLCY, NK, NTH, DTH, XFR, & - ECOS, ESIN, SIG, WDCG, WDTH, PFMOVE, & - FLAGLL, DPDX, DPDY, DQDX, DQDY, GSQRT - USE W3WDATMD, ONLY: TIME - USE W3ADATMD, ONLY: NMX0, NMX1, NMX2, NMY0, NMY1, NMY2, NACT, & - NCENT, MAPX2, MAPY2, MAPAXY, MAPCXY, & - MAPTRN, CG, CX, CY, ATRNX, ATRNY, ITIME + USE W3GDATMD, ONLY: NX, NY, MAPSF, CLATS, & + NK, NTH, ECOS, ESIN, DPDX, DPDY, DQDX, DQDY + USE W3ADATMD, ONLY: CG, CX, CY USE W3IDATMD, ONLY: FLCUR - USE W3ODATMD, ONLY: NDSE, NDST, FLBPI, NBI, TBPI0, TBPIN, & - ISBPI, BBPI0, BBPIN #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif @@ -2077,15 +2076,11 @@ SUBROUTINE W3CFLXY ( ISEA, DTG, MAPSTA, MAPFS, CFLXYMAX, VGX, VGY ) !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: ITH, IK, IXY, IP - INTEGER :: IX, IY, IXC, IYC, IBI + INTEGER :: ITH, IK, IXY + INTEGER :: IX, IY #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif - REAL :: CG0, CGA, CGN, CGX, CGY, CXC, CYC, & - CXMIN, CXMAX, CYMIN, CYMAX - REAL :: CGC, FGSE = 1. - REAL :: FTH, FTHX, FTHY, FCG, FCGX, FCGY REAL :: CP, CQ !/ !/ Automatic work arrays diff --git a/model/src/w3profsmd.F90 b/model/src/w3profsmd.F90 index 6078cba32e..e1118b8b95 100644 --- a/model/src/w3profsmd.F90 +++ b/model/src/w3profsmd.F90 @@ -136,16 +136,13 @@ SUBROUTINE W3XYPUG ( ISP, FACX, FACY, DTG, VQ, VGX, VGY, LCALC ) ! USE W3TIMEMD, ONLY: DSEC21 ! - USE W3GDATMD, ONLY: NX, NY, NSEA, MAPSF, MAPFS, DTCFL, CLATS, & - FLCX, FLCY, NK, NTH, DTH, XFR, & - ECOS, ESIN, SIG, PFMOVE,IEN, & - NTRI, TRIGP, CCON , & - IE_CELL, POS_CELL, IOBP, IOBPD, IOBDP, & - FSN, FSPSI, FSFCT, FSNIMP, GTYPE, UNGTYPE + USE W3GDATMD, ONLY: NX, NY, NSEA, MAPSF, MAPFS, CLATS, & + NTH, ECOS, ESIN, IOBP, & + IOBDP, FSN, FSPSI, FSFCT, FSNIMP, UNGTYPE USE W3WDATMD, ONLY: TIME USE W3ODATMD, ONLY: TBPI0, TBPIN, FLBPI - USE W3ADATMD, ONLY: CG, CX, CY, ATRNX, ATRNY, ITIME, CFLXYMAX, DW + USE W3ADATMD, ONLY: CG, CX, CY USE W3IDATMD, ONLY: FLCUR ! USE W3ODATMD, ONLY: NDSE, NDST, FLBPI, NBI, TBPI0, TBPIN, & ! ISBPI, BBPI0, BBPIN @@ -347,17 +344,14 @@ SUBROUTINE W3CFLUG ( ISEA, NKCFL, FACX, FACY, DT, MAPFS, CFLXYMAX, & ! USE W3TIMEMD, ONLY: DSEC21 ! - USE W3GDATMD, ONLY: NX, NY, NSEA, MAPSF, DTCFL, CLATS, & - FLCX, FLCY, NK, NTH, DTH, XFR, & - ECOS, ESIN, SIG, PFMOVE,IEN, INDEX_CELL, & - NTRI, TRIGP, CCON , & - IE_CELL, POS_CELL, COUNTRI, SI, IOBP + USE W3GDATMD, ONLY: NX, NY, MAPSF, CLATS, & + NTH, ECOS, ESIN, IEN, INDEX_CELL, & + TRIGP, IE_CELL, POS_CELL, SI, IOBP - USE W3ADATMD, ONLY: CG, CX, CY, ATRNX, ATRNY, ITIME, DW + USE W3ADATMD, ONLY: CG, CX, CY USE W3IDATMD, ONLY: FLCUR #ifdef W3_T - USE W3ODATMD, ONLY: NDSE, NDST, FLBPI, NBI, TBPI0, TBPIN, & - ISBPI, BBPI0, BBPIN + USE W3ODATMD, ONLY: FLBPI, NBI, ISBPI, BBPI0, BBPIN #endif #ifdef W3_S USE W3SERVMD, ONLY: STRACE @@ -531,15 +525,14 @@ SUBROUTINE W3XYPFSN2 ( ISP, C, LCALC, RD10, RD20, DT, AC) ! !/ ------------------------------------------------------------------- / !/ - USE W3GDATMD, ONLY : NK, NTH, NTRI, NX, CCON, IE_CELL,POS_CELL, SI, & - IEN, TRIGP, CLATS, MAPSF, IOBPD, IOBP, IOBDP, & + USE W3GDATMD, ONLY : NTH, NTRI, NX, SI, & + IEN, TRIGP, CLATS, MAPSF, IOBPD, IOBP, IOBDP, & IOBPA, FSBCCFL #ifdef W3_REF1 USE W3GDATMD, ONLY : REFPARS #endif - USE W3WDATMD, ONLY: TIME - USE W3ADATMD, ONLY: CG, ITER, DW - USE W3ODATMD, ONLY: NDSE, NDST, FLBPI, NBI, TBPI0, TBPIN, ISBPI, BBPI0, BBPIN + USE W3ADATMD, ONLY: CG, ITER + USE W3ODATMD, ONLY: FLBPI, NBI, ISBPI, BBPI0, BBPIN USE W3TIMEMD, ONLY: DSEC21 #ifdef W3_S USE W3SERVMD, ONLY: STRACE @@ -582,13 +575,13 @@ SUBROUTINE W3XYPFSN2 ( ISP, C, LCALC, RD10, RD20, DT, AC) ! ! local double ! - REAL*8 :: UTILDE, BOUNDARY_FORCING + REAL*8 :: UTILDE REAL*8 :: CFLXY REAL*8 :: FL11, FL12, FL21, FL22, FL31, FL32 REAL*8 :: FL111, FL112, FL211, FL212, FL311, FL312 REAL*8 :: DTSI(NX), U(NX) REAL*8 :: DTMAXGL, DTMAXEXP, REST - REAL*8 :: LAMBDA(2), KTMP(3), CLOC(2,3) + REAL*8 :: LAMBDA(2), KTMP(3) REAL*8 :: KELEM(3,NTRI), FLALL(3,NTRI) REAL*8 :: KKSUM(NX), ST(NX) REAL*8 :: NM(NTRI) @@ -778,14 +771,13 @@ SUBROUTINE W3XYPFSPSI2 ( ISP, C, LCALC, RD10, RD20, DT, AC) ! !/ ------------------------------------------------------------------- / !/ - USE W3GDATMD, ONLY : NK, NTH, NTRI, NX, CCON, IE_CELL,POS_CELL, SI, & - IEN, TRIGP, CLATS, MAPSF, IOBPA, IOBPD, IOBP, NNZ, IOBDP + USE W3GDATMD, ONLY : NTH, NTRI, NX, SI, & + IEN, TRIGP, CLATS, MAPSF, IOBPA, IOBPD, IOBDP #ifdef W3_REF1 USE W3GDATMD, ONLY : REFPARS #endif - USE W3WDATMD, ONLY: TIME USE W3ADATMD, ONLY: CG, ITER - USE W3ODATMD, ONLY: NDSE, NDST, FLBPI, NBI, TBPI0, TBPIN, ISBPI, BBPI0, BBPIN + USE W3ODATMD, ONLY: FLBPI, NBI, ISBPI, BBPI0, BBPIN USE W3TIMEMD, ONLY: DSEC21 #ifdef W3_S USE W3SERVMD, ONLY: STRACE @@ -828,13 +820,13 @@ SUBROUTINE W3XYPFSPSI2 ( ISP, C, LCALC, RD10, RD20, DT, AC) !: ! local double ! - REAL*8 :: UTILDE, BOUNDARY_FORCING + REAL*8 :: UTILDE REAL*8 :: FT, CFLXY REAL*8 :: FL11, FL12, FL21, FL22, FL31, FL32 REAL*8 :: FL111, FL112, FL211, FL212, FL311, FL312 REAL*8 :: DTSI(NX), U(NX) REAL*8 :: DTMAXGL, DTMAXEXP, REST - REAL*8 :: LAMBDA(2), KTMP(3), TMP(3) + REAL*8 :: LAMBDA(2), KTMP(3) REAL*8 :: THETA_L(3), BET1(3), BETAHAT(3) REAL*8 :: KELEM(3,NTRI), FLALL(3,NTRI) REAL*8 :: KKSUM(NX), ST(NX) @@ -1032,15 +1024,14 @@ SUBROUTINE W3XYPFSNIMP ( ISP, C, LCALC, RD10, RD20, DT, AC) ! !/ ------------------------------------------------------------------- / !/ - USE W3GDATMD, ONLY : NK, NTH, NTRI, NX, CCON, IE_CELL,POS_CELL, SI, & - IEN, TRIGP, CLATS, MAPSF, IOBPD, IOBPA, IOBP, IAA, JAA, POSI, & + USE W3GDATMD, ONLY : NTH, NTRI, NX, CCON, IE_CELL,POS_CELL, & + IEN, TRIGP, CLATS, MAPSF, IOBPD, IOBPA, IAA, JAA, POSI, & TRIA, NNZ #ifdef W3_REF1 USE W3GDATMD, ONLY : REFPARS #endif - USE W3WDATMD, ONLY: TIME - USE W3ADATMD, ONLY: CG, ITER - USE W3ODATMD, ONLY: NDSE, NDST, FLBPI, NBI, TBPI0, TBPIN, ISBPI, BBPI0, BBPIN + USE W3ADATMD, ONLY: CG + USE W3ODATMD, ONLY: FLBPI, NBI, ISBPI, BBPI0, BBPIN USE W3TIMEMD, ONLY: DSEC21 #ifdef W3_S USE W3SERVMD, ONLY: STRACE @@ -1084,7 +1075,6 @@ SUBROUTINE W3XYPFSNIMP ( ISP, C, LCALC, RD10, RD20, DT, AC) !: ! local double ! - REAL*8 :: BOUNDARY_FORCING REAL*8 :: FL11, FL12, FL21, FL22, FL31, FL32 REAL*8 :: U(NX) REAL*8 :: DTMAXGL @@ -1332,14 +1322,13 @@ SUBROUTINE W3XYPFSFCT2 ( ISP, C, LCALC, RD10, RD20, DT, AC) ! !/ ------------------------------------------------------------------- / !/ - USE W3GDATMD, ONLY : NK, NTH, NTRI, NX, CCON, IE_CELL,POS_CELL, SI, & - IEN, TRIGP, CLATS, MAPSF, IOBPD, IOBPA, TRIA, IOBDP + USE W3GDATMD, ONLY : NTH, NTRI, NX, SI, & + IEN, TRIGP, CLATS, MAPSF, IOBPD, IOBDP #ifdef W3_REF1 - USE W3GDATMD, ONLY : REFPARS + USE W3GDATMD, ONLY : REFPARS, IOBPA #endif - USE W3WDATMD, ONLY: TIME USE W3ADATMD, ONLY: CG, ITER - USE W3ODATMD, ONLY: NDSE, NDST, FLBPI, NBI, TBPI0, TBPIN, ISBPI, BBPI0, BBPIN + USE W3ODATMD, ONLY: FLBPI, NBI, ISBPI, BBPI0, BBPIN USE W3TIMEMD, ONLY: DSEC21 #ifdef W3_S USE W3SERVMD, ONLY: STRACE @@ -1383,7 +1372,7 @@ SUBROUTINE W3XYPFSFCT2 ( ISP, C, LCALC, RD10, RD20, DT, AC) !: ! local double ! - REAL*8 :: UTILDE, BOUNDARY_FORCING + REAL*8 :: UTILDE REAL*8 :: FT, CFLXY REAL*8 :: FL11, FL12, FL21, FL22, FL31, FL32 REAL*8 :: FL111, FL112, FL211, FL212, FL311, FL312 @@ -1637,8 +1626,7 @@ SUBROUTINE SETDEPTH USE W3SERVMD, ONLY: STRACE #endif ! - USE CONSTANTS, ONLY : LPDLIB - USE W3GDATMD, ONLY: MAPSF, NSEAL, DMIN, IOBDP, MAPSTA, IOBP, MAPFS, NX + USE W3GDATMD, ONLY: DMIN, IOBDP, NX USE W3ADATMD, ONLY: DW IMPLICIT NONE @@ -1655,7 +1643,7 @@ SUBROUTINE SETDEPTH !/ !/ ------------------------------------------------------------------- / ! - INTEGER :: JSEA, ISEA, IX, IP + INTEGER :: IP REAL*8, PARAMETER :: DTHR = 10E-6 #ifdef W3_S CALL STRACE (IENT, 'SETDEPTH') diff --git a/model/src/w3profsmd_pdlib.F90 b/model/src/w3profsmd_pdlib.F90 index 3d5843d9ca..420a3f6368 100644 --- a/model/src/w3profsmd_pdlib.F90 +++ b/model/src/w3profsmd_pdlib.F90 @@ -191,23 +191,23 @@ SUBROUTINE PDLIB_INIT(IMOD) ! USE W3GDATMD, only: FLCX, FLCY USE CONSTANTS, only : GRAV, TPI - USE W3GDATMD, only: XGRD, YGRD, NX, NSEA, NTRI, TRIGP, NSPEC, NSEAL - USE W3GDATMD, only: MAPSTA, MAPFS, GRIDS, NTH, SIG, NK - USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC - USE W3GDATMD, only: CCON, COUNTCON, INDEX_CELL, IE_CELL - USE W3GDATMD, only: IOBP, IOBPA, IOBPD, IOBDP, SI - + USE W3GDATMD, only: NX, NSEA, NTRI, TRIGP, NSPEC + USE W3GDATMD, only: MAPFS, NTH, SIG, NK USE W3ADATMD, only: MPI_COMM_WCMP, MPI_COMM_WAVE USE W3ODATMD, only: IAPROC, NAPROC, NTPROC USE yowDatapool, only: istatus USE yowpdlibMain, only: initFromGridDim - USE YOWNODEPOOL, only: npa, np, iplg + USE YOWNODEPOOL, only: npa, iplg +#ifdef W3_DEBUGSOLVER + USE YOWNODEPOOL, only: np +#endif USE W3PARALL, only : PDLIB_NSEAL, PDLIB_NSEALM USE W3PARALL, only : JX_TO_JSEA, ISEA_TO_JSEA USE yowfunction, only : ComputeListNP_ListNPA_ListIPLG, pdlib_abort - USE W3GDATMD, only: FSTOTALIMP, FSTOTALEXP, FSNIMP, FSN, FSPSI, FSFCT - USE W3GDATMD, only: FSREFRACTION, FSFREQSHIFT, FSSOURCE - + USE W3GDATMD, only: FSTOTALEXP +#ifdef W3_DEBUGSOLVER + USE W3GDATMD, only: NSEAL +#endif !/ use mpi_f08 !/ @@ -225,7 +225,7 @@ SUBROUTINE PDLIB_INIT(IMOD) !/ !! use mpi_f08 INTEGER :: istat - INTEGER :: I, J, IBND_MAP, ISEA, IP, IX, JSEA, nb + INTEGER :: ISEA, IP, IX, JSEA, nb INTEGER :: IP_glob INTEGER :: myrank, ierr, iproc INTEGER, ALLOCATABLE :: NSEAL_arr(:) @@ -233,7 +233,6 @@ SUBROUTINE PDLIB_INIT(IMOD) INTEGER :: IScal(1) INTEGER, INTENT(in) :: IMOD INTEGER :: IK, ISP - INTEGER IK0, ISP0, ITH REAL :: eSIG, eFR REAL, PARAMETER :: COEF4 = 5.0E-7 #ifdef W3_S @@ -448,12 +447,11 @@ SUBROUTINE PDLIB_MAPSTA_INIT(IMOD) USE W3SERVMD, only: STRACE #endif ! - USE W3GDATMD, only : INDEX_MAP, NBND_MAP, NSEA, NSEAL, MAPSTA, GRIDS, NX, NTH - USE W3GDATMD, only : MAPSTA_LOC, NBND_MAP, INDEX_MAP + USE W3GDATMD, only : INDEX_MAP, NBND_MAP, MAPSTA, GRIDS, NX + USE W3GDATMD, only : MAPSTA_LOC USE W3ODATMD, only : IAPROC, NAPROC USE YOWNODEPOOL, only: iplg, npa USE yowfunction, only: pdlib_abort - USE W3ODATMD, only: IAPROC !/ !/ !/ ------------------------------------------------------------------- / @@ -468,10 +466,9 @@ SUBROUTINE PDLIB_MAPSTA_INIT(IMOD) !/ !/ ------------------------------------------------------------------- / !/ - INTEGER :: IBND_MAP, ISEA, JSEA, IX, IP, IP_glob + INTEGER :: IBND_MAP, IX, IP, IP_glob INTEGER, INTENT(in) :: IMOD INTEGER :: Status(NX), istat - REAL :: rtmp(nseal) #ifdef W3_S CALL STRACE (IENT, 'PDLIB_MAPSTA_INIT') #endif @@ -563,13 +560,12 @@ SUBROUTINE PDLIB_IOBP_INIT(IMOD) USE W3SERVMD, only: STRACE #endif ! - USE W3GDATMD, only : INDEX_MAP, NBND_MAP, NSEA, NSEAL, GRIDS, NX, NTH - USE W3GDATMD, only : IOBP, IOBDP, IOBPA, IOBPD, NBND_MAP, INDEX_MAP + USE W3GDATMD, only : GRIDS, NTH + USE W3GDATMD, only : IOBP, IOBPD USE W3GDATMD, only : IOBP_LOC, IOBPD_LOC, IOBDP_LOC, IOBPA_LOC USE W3ODATMD, only : IAPROC, NAPROC USE YOWNODEPOOL, only: iplg, npa USE yowfunction, only: pdlib_abort - USE W3ODATMD, only: IAPROC !/ !/ !/ ------------------------------------------------------------------- / @@ -584,10 +580,9 @@ SUBROUTINE PDLIB_IOBP_INIT(IMOD) !/ !/ ------------------------------------------------------------------- / !/ - INTEGER :: IBND_MAP, ISEA, JSEA, IX, IP, IP_glob + INTEGER :: IP, IP_glob INTEGER, INTENT(in) :: IMOD - INTEGER :: Status(NX), istat - REAL :: rtmp(nseal) + INTEGER :: istat #ifdef W3_S CALL STRACE (IENT, 'PDLIB_MAPSTA_INIT') #endif @@ -691,21 +686,23 @@ SUBROUTINE PDLIB_W3XYPUG ( ISP, FACX, FACY, DTG, VGX, VGY, LCALC ) ! USE W3TIMEMD, only: DSEC21 ! - USE W3GDATMD, only: NX, NY, MAPFS, CLATS, & - FLCX, FLCY, NK, NTH, DTH, XFR, & - ECOS, ESIN, SIG, PFMOVE, & - IOBP, IOBPD, & - FSN, FSPSI, FSFCT, FSNIMP, & - GTYPE, UNGTYPE, NBND_MAP, INDEX_MAP - USE YOWNODEPOOL, only: PDLIB_IEN, PDLIB_TRIA - USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC + USE W3GDATMD, only: MAPFS, CLATS, & + NTH, ECOS, ESIN, FSN, FSPSI, FSFCT, FSNIMP, & + UNGTYPE, NBND_MAP, INDEX_MAP +#ifdef NOCGTABLE + USE W3GDATMD, only: SIG + USE W3ADATMD, only: DW +#endif + USE W3GDATMD, only: IOBP_LOC, IOBDP_LOC USE YOWNODEPOOL, only: iplg, npa USE W3WDATMD, only: TIME, VA USE W3ODATMD, only: TBPI0, TBPIN, FLBPI - USE W3ADATMD, only: CG, CX, CY, ITIME, DW - USE W3IDATMD, only: FLCUR, FLLEV + USE W3ADATMD, only: CG, CX, CY + USE W3IDATMD, only: FLCUR USE W3GDATMD, only: NSEAL +#ifdef W3_DEBUGSOLVER USE W3ODATMD, only: IAPROC +#endif USE W3DISPMD, only : WAVNU_LOCAL !/ ------------------------------------------------------------------- / !/ Parameter list @@ -713,15 +710,17 @@ SUBROUTINE PDLIB_W3XYPUG ( ISP, FACX, FACY, DTG, VGX, VGY, LCALC ) INTEGER, INTENT(IN) :: ISP REAL, INTENT(IN) :: FACX, FACY, DTG, VGX, VGY LOGICAL, INTENT(IN) :: LCALC - LOGICAL :: SCHEME !/ !/ ------------------------------------------------------------------- / !/ Local PARAMETERs !/ INTEGER :: ITH, IK, ISEA - INTEGER :: I, J, IE, IBND_MAP + INTEGER :: IBND_MAP INTEGER :: IP_glob - REAL :: CCOS, CSIN, CCURX, CCURY, WN1, CG1 + REAL :: CCOS, CSIN, CCURX, CCURY +#ifdef NOCGTABLE + REAL :: WN1, CG1 +#endif REAL :: C(npa,2) REAL :: RD1, RD2 !/ @@ -915,22 +914,25 @@ SUBROUTINE PDLIB_W3XYPFSN2(ISP, C, LCALC, RD10, RD20, DT, AC) USE W3SERVMD, only: STRACE #endif ! - USE W3GDATMD, only: NK, NTH, NX, IEN, CLATS, MAPSF + USE W3GDATMD, only: NTH, CLATS, MAPSF USE W3GDATMD, only: IOBPD_LOC, IOBP_LOC, IOBDP_LOC, IOBPA_LOC, FSBCCFL - USE W3WDATMD, only: TIME - USE W3ADATMD, only: CG, ITER, DW , CFLXYMAX, NSEALM - USE W3ODATMD, only: NDSE, NDST, FLBPI, NBI, TBPIN, ISBPI, BBPI0, BBPIN + USE W3ADATMD, only: CG, ITER, CFLXYMAX + USE W3ODATMD, only: FLBPI, NBI, ISBPI, BBPI0, BBPIN USE W3TIMEMD, only: DSEC21 USE W3ADATMD, only: MPI_COMM_WCMP - USE W3GDATMD, only: NSEAL, DMIN, NSEA #ifdef W3_REF1 USE W3GDATMD, only: REFPARS #endif - USE YOWNODEPOOL, only: PDLIB_SI, PDLIB_IEN, PDLIB_TRIA, ipgl, iplg, npa, np +#if defined(W3_REF1) || defined(W3__DEBUGSOLVER) + USE W3GDATMD, only: NX +#endif + USE YOWNODEPOOL, only: PDLIB_SI, PDLIB_IEN, iplg, npa, np use yowElementpool, only: ne, INE use yowDatapool, only: rtype use yowExchangeModule, only : PDLIB_exchange1DREAL +#ifdef W3_DEBUGSOLVER USE W3ODATMD, only : IAPROC +#endif use mpi_f08, only : MPI_MIN, MPI_ALLREDUCE USE W3PARALL, only : INIT_GET_JSEA_ISPROC USE W3PARALL, only : ONESIXTH, ZERO, THR @@ -956,7 +958,7 @@ SUBROUTINE PDLIB_W3XYPFSN2(ISP, C, LCALC, RD10, RD20, DT, AC) #ifdef W3_REF1 INTEGER(KIND=1) :: IOBPDR(NX) #endif - INTEGER :: IP, IE, POS, IT, I1, I2, I3, I, J, ITH, IK + INTEGER :: IP, IE, IT, I1, I2, I3, ITH, IK INTEGER :: IBI, NI(3) INTEGER :: JX ! @@ -967,8 +969,7 @@ SUBROUTINE PDLIB_W3XYPFSN2(ISP, C, LCALC, RD10, RD20, DT, AC) ! local double ! REAL :: UTILDE - REAL :: SUMTHETA - REAL :: FT, CFLXY + REAL :: CFLXY REAL :: FL11, FL12, FL21, FL22, FL31, FL32 REAL :: FL111, FL112, FL211, FL212, FL311, FL312 REAL :: DTSI(npa), U(npa) @@ -977,9 +978,11 @@ SUBROUTINE PDLIB_W3XYPFSN2(ISP, C, LCALC, RD10, RD20, DT, AC) REAL :: KELEM(3,NE), FLALL(3,NE) REAL :: KKSUM(npa), ST(npa) REAL :: NM(NE) - INTEGER :: ISPROC, JSEA, IP_glob, ierr, IX - REAL :: eSumAC, sumAC, sumBPI0, sumBPIN, sumCG, sumCLATS + INTEGER :: IP_glob, ierr +#ifdef W3_DEBUGSOLVER + REAL :: sumAC, sumBPI0, sumBPIN, sumCG, sumCLATS LOGICAL :: testWrite +#endif REAL :: FIN(1), FOUT(1) #ifdef W3_S CALL STRACE (IENT, 'W3XYPFSN') @@ -1243,22 +1246,26 @@ SUBROUTINE PDLIB_W3XYPFSPSI2 ( ISP, C, LCALC, RD10, RD20, DT, AC) !/ ------------------------------------------------------------------- / - USE W3GDATMD, only: NK, NTH, NX, IEN, CLATS, MAPSF + USE W3GDATMD, only: NTH, CLATS, MAPSF USE W3GDATMD, only: IOBPD_LOC, IOBP_LOC, IOBDP_LOC, IOBPA_LOC, FSBCCFL - USE W3WDATMD, only: TIME - USE W3ADATMD, only: CG, ITER, DW , CFLXYMAX, NSEALM - USE W3ODATMD, only: NDSE, NDST, FLBPI, NBI, TBPIN, ISBPI, BBPI0, BBPIN + USE W3ADATMD, only: CG, ITER, CFLXYMAX + USE W3ODATMD, only: FLBPI, NBI, ISBPI, BBPI0, BBPIN USE W3TIMEMD, only: DSEC21 USE W3ADATMD, only: MPI_COMM_WCMP - USE W3GDATMD, only: NSEAL, DMIN, NSEA #ifdef W3_REF1 USE W3GDATMD, only: REFPARS #endif - USE YOWNODEPOOL, only: PDLIB_SI, PDLIB_IEN, PDLIB_TRIA, ipgl, iplg, npa, np +#if defined(W3_REF1) || defined(W3__DEBUGSOLVER) + USE W3GDATMD, only: NX +#endif + + USE YOWNODEPOOL, only: PDLIB_SI, PDLIB_IEN, iplg, npa use yowElementpool, only: ne, INE use yowDatapool, only: rtype use yowExchangeModule, only : PDLIB_exchange1DREAL +#ifdef W3_DEBUGSOLVER USE W3ODATMD, only : IAPROC +#endif use mpi_f08, only : MPI_MIN, MPI_ALLREDUCE USE W3PARALL, only : INIT_GET_JSEA_ISPROC USE W3PARALL, only : ONESIXTH, ZERO, THR @@ -1284,23 +1291,25 @@ SUBROUTINE PDLIB_W3XYPFSPSI2 ( ISP, C, LCALC, RD10, RD20, DT, AC) #ifdef W3_REF1 INTEGER(KIND=1) :: IOBPDR(NX) #endif - INTEGER :: IP, IE, POS, IT, I1, I2, I3, I, J, ITH, IK + INTEGER :: IP, IE, IT, I1, I2, I3, ITH, IK INTEGER :: IBI, NI(3), JX - INTEGER :: ISPROC, IP_glob, JSEA, ierr + INTEGER :: IP_glob, ierr REAL :: RD1, RD2 REAL :: UTILDE - REAL :: SUMTHETA - REAL :: FL1, FL2, FL3 REAL :: FT, CFLXY REAL :: FL11, FL12, FL21, FL22, FL31, FL32 REAL :: FL111, FL112, FL211, FL212, FL311, FL312 REAL :: DTSI(npa), U(npa) REAL :: DTMAX, DTMAX_GL, DTMAXEXP, REST - REAL :: LAMBDA(2), KTMP(3), TMP(3) + REAL :: LAMBDA(2), KTMP(3) REAL :: THETA_L(3), BET1(3), BETAHAT(3) REAL :: KELEM(3,NE), FLALL(3,NE) REAL :: KKSUM(npa), ST(npa) REAL :: NM(NE), FIN(1), FOUT(1) +#ifdef W3_DEBUGSOLVER + LOGICAL :: testWrite +#endif + #ifdef W3_S CALL STRACE (IENT, 'W3XYPFSN') #endif @@ -1539,22 +1548,25 @@ SUBROUTINE PDLIB_W3XYPFSFCT2 ( ISP, C, LCALC, RD10, RD20, DT, AC) !/ ------------------------------------------------------------------- / - USE W3GDATMD, only: NK, NTH, NX, IEN, CLATS, MAPSF + USE W3GDATMD, only: NTH, CLATS, MAPSF USE W3GDATMD, only: IOBPD_LOC, IOBP_LOC, IOBDP_LOC, IOBPA_LOC, FSBCCFL - USE W3WDATMD, only: TIME - USE W3ADATMD, only: CG, ITER, DW , CFLXYMAX, NSEALM - USE W3ODATMD, only: NDSE, NDST, FLBPI, NBI, TBPIN, ISBPI, BBPI0, BBPIN + USE W3ADATMD, only: CG, ITER, CFLXYMAX + USE W3ODATMD, only: FLBPI, NBI, ISBPI, BBPI0, BBPIN USE W3TIMEMD, only: DSEC21 USE W3ADATMD, only: MPI_COMM_WCMP - USE W3GDATMD, only: NSEAL, DMIN, NSEA #ifdef W3_REF1 USE W3GDATMD, only: REFPARS #endif - USE YOWNODEPOOL, only: PDLIB_SI, PDLIB_IEN, PDLIB_TRIA, PDLIB_CCON, PDLIB_IE_CELL2, ipgl, iplg, npa, np +#if defined(W3_REF1) || defined(W3__DEBUGSOLVER) + USE W3GDATMD, only: NX +#endif + USE YOWNODEPOOL, only: PDLIB_SI, PDLIB_IEN, PDLIB_TRIA, iplg, npa, np use yowElementpool, only: ne, INE use yowDatapool, only: rtype use yowExchangeModule, only : PDLIB_exchange1DREAL +#ifdef W3_DEBUGSOLVER USE W3ODATMD, only : IAPROC +#endif use mpi_f08, only : MPI_MIN, MPI_ALLREDUCE USE W3PARALL, only : INIT_GET_JSEA_ISPROC USE W3PARALL, only : ONESIXTH, ZERO, THR @@ -1581,7 +1593,7 @@ SUBROUTINE PDLIB_W3XYPFSFCT2 ( ISP, C, LCALC, RD10, RD20, DT, AC) #ifdef W3_REF1 INTEGER(KIND=1) :: IOBPDR(NX) #endif - INTEGER :: IP, IE, POS, IT, I1, I2, I3, I, J, ITH, IK + INTEGER :: IP, IE, IT, I1, I2, I3, ITH, IK INTEGER :: IBI, NI(3) INTEGER :: JX ! @@ -1591,7 +1603,7 @@ SUBROUTINE PDLIB_W3XYPFSFCT2 ( ISP, C, LCALC, RD10, RD20, DT, AC) !: ! local double ! - REAL :: SUMTHETA, CFLXY + REAL :: CFLXY REAL*8 :: FT, UTILDE REAL*8 :: FL11, FL12, FL21, FL22, FL31, FL32 REAL*8 :: FL111, FL112, FL211, FL212, FL311, FL312 @@ -1601,11 +1613,13 @@ SUBROUTINE PDLIB_W3XYPFSFCT2 ( ISP, C, LCALC, RD10, RD20, DT, AC) REAL*8 :: KELEM(3,NE), FLALL(3,NE) REAL*8 :: KKSUM(npa), ST(npa) REAL*8 :: NM(NE), BET1(3), BETAHAT(3), TMP(3), TMP1 - INTEGER :: ISPROC, JSEA, IP_glob, ierr, IX - REAL :: eSumAC, sumAC, sumBPI0, sumBPIN, sumCG, sumCLATS + INTEGER :: IP_glob, ierr +#ifdef W3_DEBUGSOLVER + REAL :: sumAC, sumBPI0, sumBPIN, sumCG, sumCLATS LOGICAL :: testWrite +#endif REAL :: FIN(1), FOUT(1) - REAL :: UIP(NE), UIPIP(NPA), UIMIP(NPA), U3(3) + REAL :: UIP(NE) REAL*8 :: THETA_H(3), THETA_ACE(3,NE), THETA_L(3,NE) REAL*8 :: PM(NPA), PP(NPA), UIM(NE), WII(2,NPA) REAL :: USTARI(2,NPA) @@ -1910,9 +1924,9 @@ SUBROUTINE TEST_MPI_STATUS(string) !/ ------------------------------------------------------------------- / USE W3ADATMD, only : MPI_COMM_WCMP - USE W3GDATMD, only : GTYPE, UNGTYPE - USE W3ODATMD, only : IAPROC, NAPROC, NTPROC - use yowDatapool, only: rtype, istatus + USE W3GDATMD, only : UNGTYPE + USE W3ODATMD, only : IAPROC, NAPROC + use yowDatapool, only: istatus use mpi_f08 CHARACTER(*), INTENT(in) :: string @@ -1988,12 +2002,11 @@ SUBROUTINE SCAL_INTEGRAL_PRINT_GENERAL(V, string, maxidx, CheckUncovered, PrintF ! !/ ------------------------------------------------------------------- / ! - USE W3GDATMD, only : NK, NTH, FTE - USE W3GDATMD, only : NSPEC, NX, NY, NSEAL, MAPFS + USE W3GDATMD, only : NX, NSEAL, MAPFS USE W3ADATMD, only : MPI_COMM_WCMP USE W3GDATMD, only : GTYPE, UNGTYPE - USE W3ODATMD, only : IAPROC, NAPROC, NTPROC - use yowDatapool, only: rtype, istatus + USE W3ODATMD, only : IAPROC, NAPROC + use yowDatapool, only: istatus USE YOWNODEPOOL, only: npa, iplg USE W3PARALL, only: INIT_GET_ISEA @@ -2012,9 +2025,8 @@ SUBROUTINE SCAL_INTEGRAL_PRINT_GENERAL(V, string, maxidx, CheckUncovered, PrintF INTEGER singV(2) REAL CoherencyError, eVal1, eVal2, eErr INTEGER NSEAL_dist, maxidx_dist - INTEGER JSEA, ISEA, iProc, I, IX, ierr, ISP, IP, IP_glob + INTEGER JSEA, ISEA, iProc, IX, ierr, IP, IP_glob INTEGER nbIncorr, idx - INTEGER ITH, IK IF (IAPROC .gt. NAPROC) THEN RETURN @@ -2264,7 +2276,6 @@ SUBROUTINE ALL_VAOLD_INTEGRAL_PRINT(string, choice) USE W3GDATMD, only : NSEAL USE W3WDATMD, only : VAOLD - USE W3ODATMD, only : IAPROC USE W3GDATMD, only : NSPEC USE YOWNODEPOOL, only: np, npa @@ -2334,10 +2345,10 @@ SUBROUTINE ALL_VA_INTEGRAL_PRINT(IMOD, string, choice) ! !/ ------------------------------------------------------------------- / - USE W3GDATMD, only : NSEAL, NSEA, NX, NY + USE W3GDATMD, only : NSEAL, NX USE W3WDATMD, only : VA USE W3ODATMD, only : IAPROC, NAPROC - USE W3GDATMD, only : NSPEC, GRIDS, GTYPE, UNGTYPE + USE W3GDATMD, only : NSPEC, GRIDS, UNGTYPE USE YOWNODEPOOL, only: npa, np, iplg INTEGER, INTENT(in) :: IMOD @@ -2430,8 +2441,6 @@ SUBROUTINE ALL_FIELD_INTEGRAL_PRINT(FIELD, string) !/ ------------------------------------------------------------------- / USE W3GDATMD, only : NSEAL - USE W3WDATMD, only : VA - USE W3ODATMD, only : IAPROC USE W3GDATMD, only : NSPEC INTEGER maxidx @@ -2492,12 +2501,11 @@ SUBROUTINE CHECK_ARRAY_INTEGRAL_NX_R8_MaxFunct(TheARR, string, maxidx, PrintMinI ! !/ ------------------------------------------------------------------- / - USE W3GDATMD, only : NK, NTH - USE W3GDATMD, only : NSPEC, NX, NY, NSEAL, MAPFS + USE W3GDATMD, only : NSPEC, NX, NSEAL, MAPFS USE W3ADATMD, only : MPI_COMM_WCMP USE W3GDATMD, only : GTYPE, UNGTYPE - USE W3ODATMD, only : IAPROC, NAPROC, NTPROC - use yowDatapool, only: rtype, istatus + USE W3ODATMD, only : IAPROC, NAPROC + use yowDatapool, only: istatus USE YOWNODEPOOL, only: npa, iplg USE W3PARALL, only: INIT_GET_ISEA @@ -2512,13 +2520,12 @@ SUBROUTINE CHECK_ARRAY_INTEGRAL_NX_R8_MaxFunct(TheARR, string, maxidx, PrintMinI REAL eVal1, eVal2, eErr INTEGER LocateMax_I, LocateMax_ISP INTEGER rStatus(NX), Status(NX) - INTEGER JSEA, ISEA, iProc, I, IX, ierr, ISP, IP, IP_glob + INTEGER ISEA, iProc, I, IX, ierr, ISP, IP, IP_glob REAL :: mval, eVal, eSum REAL :: TheMax, TheSum, TheNb, TheAvg REAL :: eFact, Threshold LOGICAL :: IsFirst INTEGER nbIncorr, n_control - INTEGER ITH, IK INTEGER :: TEST_IP = 46 INTEGER :: TEST_ISP = 370 IF (IAPROC .gt. NAPROC) THEN @@ -2782,7 +2789,9 @@ SUBROUTINE PDLIB_W3XYPUG_BLOCK_IMPLICIT(IMOD, FACX, FACY, DTG, VGX, VGY, LCALC ) USE W3SERVMD, only: STRACE #endif ! +#ifdef W3_DEBUGSOLVER USE W3ODATMD, only: IAPROC +#endif USE W3GDATMD, only: B_JGS_USE_JACOBI LOGICAL, INTENT(IN) :: LCALC @@ -2852,8 +2861,6 @@ SUBROUTINE PDLIB_W3XYPUG_BLOCK_EXPLICIT(IMOD, FACX, FACY, DTG, VGX, VGY, LCALC) USE W3SERVMD, only: STRACE #endif ! - USE W3ODATMD, only: IAPROC - USE W3GDATMD, only: B_JGS_USE_JACOBI USE W3TIMEMD, only: DSEC21 USE W3ODATMD, only: TBPI0, TBPIN, FLBPI USE W3WDATMD, only: TIME @@ -2931,11 +2938,10 @@ SUBROUTINE PRINT_WN_STATISTIC(string) USE W3GDATMD, only: NK USE W3ADATMD, only: WN USE W3GDATMD, only: NSEAL - USE YOWNODEPOOL, only: NP CHARACTER(*), INTENT(in) :: string REAL TotalSumDMM, eDMM, sumDMM - INTEGER IP, IK, ISEA + INTEGER IK, ISEA WRITE(740+IAPROC,*) 'PRINT_WN_STATISTIC' TotalSumDMM=0 DO ISEA=1,NSEAL @@ -3007,13 +3013,11 @@ SUBROUTINE WRITE_VAR_TO_TEXT_FILE(TheArr, eFile) USE W3SERVMD, only: STRACE #endif ! - USE W3GDATMD, only : NK, NTH - USE W3WDATMD, only : VA - USE W3GDATMD, only : NSPEC, NX, NY, NSEAL, MAPFS + USE W3GDATMD, only : NSPEC, NX USE W3ADATMD, only : MPI_COMM_WCMP USE W3GDATMD, only : GTYPE, UNGTYPE - USE W3ODATMD, only : IAPROC, NAPROC, NTPROC - use yowDatapool, only: rtype, istatus + USE W3ODATMD, only : IAPROC, NAPROC + use yowDatapool, only: istatus USE YOWNODEPOOL, only: npa, iplg, np USE W3PARALL, only: INIT_GET_ISEA @@ -3024,9 +3028,7 @@ SUBROUTINE WRITE_VAR_TO_TEXT_FILE(TheArr, eFile) REAL Vcoll(NSPEC,NX), VcollExp(NSPEC*NX), rVect(NSPEC*NX) REAL CoherencyError, eVal1, eVal2, eErr INTEGER rStatus(NX), Status(NX) - INTEGER JSEA, ISEA, iProc, I, IX, ierr, ISP, IP, IP_glob - INTEGER nbIncorr - INTEGER ITH, IK + INTEGER iProc, I, IX, ierr, ISP, IP, IP_glob INTEGER fhndl REAL eSum IF (IAPROC .gt. NAPROC) THEN @@ -3349,25 +3351,28 @@ SUBROUTINE calcARRAY_JACOBI(DTG,FACX,FACY,VGX,VGY) USE W3SERVMD, only: STRACE #endif ! - USE W3GDATMD, only: NK, NK2, NTH, NSPEC, FACHFA, DMIN - USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC - USE W3GDATMD, only: NSEAL, CLATS - USE W3GDATMD, only: MAPSTA + USE W3GDATMD, only: NTH, NSPEC + USE W3GDATMD, only: IOBPD_LOC, IOBPA_LOC, IOBDP_LOC + USE W3GDATMD, only: CLATS +#ifdef W3_REF1 + USE W3GDATMD, only: IOBP_LOC +#endif USE W3WDATMD, only: VA - USE W3ADATMD, only: CG, DW, WN, CX, CY - USE W3IDATMD, only: FLCUR, FLLEV - USE W3GDATMD, only: ECOS, ESIN, MAPFS + USE W3ADATMD, only: CG, CX, CY + USE W3IDATMD, only: FLCUR + USE W3GDATMD, only: ECOS, ESIN USE W3PARALL, only : ONESIXTH, ZERO, THR use yowElementpool, only: ne, INE USE YOWNODEPOOL, only: PDLIB_IEN, PDLIB_TRIA, & - PDLIB_CCON, PDLIB_POS_CELL2, PDLIB_IE_CELL2, NP, NPA, & - PDLIB_IA_P, PDLIB_POSI, PDLIB_IA, PDLIB_NNZ, iplg, & - PDLIB_I_DIAG, PDLIB_JA + PDLIB_CCON, PDLIB_POS_CELL2, PDLIB_IE_CELL2, NPA, & + PDLIB_POSI, iplg +#ifdef W3_DEBUGSRC + USE YOWNODEPOOL, only: PDLIB_I_DIAG +#endif USE W3ODATMD, only : IAPROC USE W3PARALL, only : ZERO #ifdef W3_DB1 USE W3SDB1MD - USE W3GDATMD, only: SDBSC #endif #ifdef W3_BT1 USE W3SBT1MD @@ -3394,12 +3399,14 @@ SUBROUTINE calcARRAY_JACOBI(DTG,FACX,FACY,VGX,VGY) USE W3STR1MD #endif REAL, INTENT(in) :: DTG, FACX, FACY, VGX, VGY - INTEGER :: IP, ISP, ISEA, IP_glob - INTEGER :: idx, IS - INTEGER :: I, J, ITH, IK, J2 - INTEGER :: IE, POS, JSEA + INTEGER :: IP, ISP, IP_glob +#ifdef W3_MGP + INTEGER :: ISEA +#endif + INTEGER :: IS + INTEGER :: I, J, ITH, IK + INTEGER :: IE, POS INTEGER :: I1, I2, I3, NI(3) - INTEGER :: counter #ifdef W3_REF1 INTEGER :: eIOBPDR #endif @@ -3411,12 +3418,10 @@ SUBROUTINE calcARRAY_JACOBI(DTG,FACX,FACY,VGX,VGY) REAL :: CRFS(3), CXY(3,2) REAL :: KP(3,NSPEC,NE) REAL :: KM(3), K(3) - REAL :: K1, eSI, eVS, eVD - REAL :: eVal1, eVal2, eVal3 + REAL :: K1 REAL :: DELTAL(3,NSPEC,NE) REAL :: NM(NSPEC,NE) - REAL :: TRIA03, SIDT, CCOS, CSIN - REAL :: SPEC(NSPEC), DEPTH + REAL :: TRIA03, CCOS, CSIN #ifdef W3_DEBUGSOLVER WRITE(740+IAPROC,*) 'calcARRAY_JACOBI, begin' @@ -3572,26 +3577,33 @@ SUBROUTINE calcARRAY_JACOBI_VEC(DTG,FACX,FACY,VGX,VGY) USE W3SERVMD, only: STRACE #endif ! - USE W3GDATMD, only: NK, NK2, NTH, NSPEC, FACHFA, DMIN - USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC - USE W3GDATMD, only: NSEAL, CLATS - USE W3GDATMD, only: MAPSTA, SIG + USE W3GDATMD, only: NTH, NSPEC + USE W3GDATMD, only: IOBPD_LOC, IOBPA_LOC, IOBDP_LOC + USE W3GDATMD, only: CLATS +#ifdef W3_REF1 + USE W3GDATMD, only: IOBP_LOC +#endif +#ifdef NOCGTABLE + USE W3GDATMD, only: SIG + USE W3ADATMD, only: DW +#endif USE W3WDATMD, only: VA - USE W3ADATMD, only: CG, DW, WN, CX, CY - USE W3IDATMD, only: FLCUR, FLLEV - USE W3GDATMD, only: ECOS, ESIN, MAPFS + USE W3ADATMD, only: CG, CX, CY + USE W3IDATMD, only: FLCUR + USE W3GDATMD, only: ECOS, ESIN USE W3PARALL, only : ONESIXTH, ZERO, THR use yowElementpool, only: ne, INE - USE YOWNODEPOOL, only: PDLIB_IEN, PDLIB_TRIA, & - PDLIB_IE_CELL2, PDLIB_POS_CELL2, PDLIB_CCON, NP, NPA, & - PDLIB_IA_P, PDLIB_POSI, PDLIB_IA, PDLIB_NNZ, iplg, & - PDLIB_I_DIAG, PDLIB_JA, PDLIB_TRIA03, PDLIB_SI + USE YOWNODEPOOL, only: PDLIB_IEN, & + PDLIB_IE_CELL2, PDLIB_POS_CELL2, PDLIB_CCON, NP, NPA, & + PDLIB_POSI, iplg, PDLIB_TRIA03 +#ifdef W3_DEBUGSRC + USE YOWNODEPOOL, only: PDLIB_I_DIAG +#endif USE W3ODATMD, only : IAPROC USE W3PARALL, only : ZERO USE W3DISPMD, only : WAVNU_LOCAL #ifdef W3_DB1 USE W3SDB1MD - USE W3GDATMD, only: SDBSC #endif #ifdef W3_BT1 USE W3SBT1MD @@ -3618,12 +3630,17 @@ SUBROUTINE calcARRAY_JACOBI_VEC(DTG,FACX,FACY,VGX,VGY) USE W3STR1MD #endif REAL, INTENT(in) :: DTG, FACX, FACY, VGX, VGY - INTEGER :: IP, ISP, ISEA, IP_glob - INTEGER :: idx, IS - INTEGER :: I, J, ITH, IK, J2 - INTEGER :: IE, POS, JSEA + INTEGER :: IP, ISP, IP_glob +#ifdef W3_MGP + INTEGER :: ISEA +#endif + INTEGER :: I, J, ITH, IK + INTEGER :: IE, POS INTEGER :: I1, I2, I3, NI(3) - INTEGER :: counter, IB1, IB2, IBR + INTEGER :: IB1, IB2 +#ifdef W3_REF1 + INTEGER :: IBR +#endif REAL :: DTK, TMP3 REAL :: LAMBDA(2), CXYY(2,3), CXY(2,NPA) REAL :: FL11, FL12 @@ -3631,13 +3648,13 @@ SUBROUTINE calcARRAY_JACOBI_VEC(DTG,FACX,FACY,VGX,VGY) REAL :: FL31, FL32 REAL :: CRFS(3), K(3) REAL :: KP(3,NE) - REAL :: KM(3), DELTAL(3,NE) - REAL :: K1, eSI, eVS, eVD - REAL :: eVal1, eVal2, eVal3 - REAL :: CG1, WN1 - REAL :: TRIA03, SIDT, CCOS, CSIN - REAL :: SPEC(NSPEC), DEPTH, CCOSA(NTH), CSINA(NTH) - INTEGER :: IOBPTH1(NTH), IOBPTH2(NTH) + REAL :: DELTAL(3,NE) +#ifdef NOCGTABLE + REAL :: WN1 +#endif + REAL :: CG1 + REAL :: CCOS, CSIN + REAL :: CCOSA(NTH), CSINA(NTH) #ifdef W3_DEBUGSOLVER WRITE(740+IAPROC,*) 'calcARRAY_JACOBI, begin' @@ -3818,25 +3835,24 @@ SUBROUTINE calcARRAY_JACOBI2(DTG,FACX,FACY,VGX,VGY) USE W3SERVMD, only: STRACE #endif ! - - USE W3GDATMD, only: NK, NK2, NTH, NSPEC, FACHFA, DMIN - USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC - USE W3GDATMD, only: NSEAL, CLATS - USE W3GDATMD, only: MAPSTA - USE W3WDATMD, only: VA, VAOLD - USE W3ADATMD, only: CG, DW, WN, CX, CY - USE W3IDATMD, only: FLCUR, FLLEV + USE W3GDATMD, only: NTH, NSPEC + USE W3GDATMD, only: IOBPD_LOC, IOBPA_LOC, IOBDP_LOC + USE W3GDATMD, only: CLATS +#ifdef W3_REF1 + USE W3GDATMD, only: IOBP_LOC +#endif + USE W3WDATMD, only: VA + USE W3ADATMD, only: CG, CX, CY + USE W3IDATMD, only: FLCUR USE W3GDATMD, only: ECOS, ESIN, MAPFS USE W3PARALL, only : ONESIXTH, ZERO, THR, IMEM - use yowElementpool, only: ne, INE + use yowElementpool, only: INE USE YOWNODEPOOL, only: PDLIB_IEN, PDLIB_TRIA, & - PDLIB_CCON, PDLIB_POS_CELL2, PDLIB_IE_CELL2, NP, NPA, & - PDLIB_IA_P, PDLIB_POSI, PDLIB_IA, PDLIB_NNZ, iplg, & - PDLIB_I_DIAG, PDLIB_JA + PDLIB_CCON, PDLIB_POS_CELL2, PDLIB_IE_CELL2, NPA, & + PDLIB_POSI, iplg USE W3ODATMD, only : IAPROC #ifdef W3_DB1 USE W3SDB1MD - USE W3GDATMD, only: SDBSC #endif #ifdef W3_BT1 USE W3SBT1MD @@ -3864,11 +3880,9 @@ SUBROUTINE calcARRAY_JACOBI2(DTG,FACX,FACY,VGX,VGY) #endif REAL, INTENT(in) :: DTG, FACX, FACY, VGX, VGY INTEGER :: IP, ISP, ISEA, IP_glob - INTEGER :: idx, IS - INTEGER :: I, J, ITH, IK, J2 - INTEGER :: IE, POS, JSEA + INTEGER :: I, J, ITH, IK + INTEGER :: IE, POS INTEGER :: I1, I2, I3, NI(3), NI_GLOB(3), NI_ISEA(3) - INTEGER :: counter #ifdef W3_REF1 INTEGER :: eIOBPDR #endif @@ -3881,13 +3895,11 @@ SUBROUTINE calcARRAY_JACOBI2(DTG,FACX,FACY,VGX,VGY) REAL :: CRFS(3), K(3) REAL :: KP(3) REAL :: KM(3), CXY(3,2) - REAL :: K1, eSI, eVS, eVD - REAL :: eVal1, eVal2, eVal3 + REAL :: K1 REAL :: DELTAL(3) - REAL :: NM, TRIA03, SIDT - REAL :: IEN_LOCAL(6), CG2(NK,NTH) + REAL :: NM, TRIA03 + REAL :: IEN_LOCAL(6) REAL :: CCOS, CSIN - REAL :: SPEC(NSPEC), DEPTH memunit = 50000+IAPROC @@ -4021,25 +4033,23 @@ SUBROUTINE calcARRAY_JACOBI3(IP,J,DTG,FACX,FACY,VGX,VGY,ASPAR_DIAG_LOCAL,ASPAR_O USE W3SERVMD, only: STRACE #endif ! - USE W3GDATMD, only: NK, NK2, NTH, NSPEC, FACHFA, DMIN - USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC - USE W3GDATMD, only: NSEAL, CLATS - USE W3GDATMD, only: MAPSTA + USE W3GDATMD, only: NTH, NSPEC + USE W3GDATMD, only: IOBPD_LOC, IOBPA_LOC, IOBDP_LOC + USE W3GDATMD, only: CLATS +#ifdef W3_REF1 + USE W3GDATMD, only: IOBP_LOC +#endif USE W3WDATMD, only: VA, VAOLD - USE W3ADATMD, only: CG, DW, WN, CX, CY - USE W3IDATMD, only: FLCUR, FLLEV + USE W3ADATMD, only: CG, CX, CY + USE W3IDATMD, only: FLCUR USE W3GDATMD, only: ECOS, ESIN, MAPFS USE W3PARALL, only : ONESIXTH, ZERO, THR, ONETHIRD - use yowElementpool, only: ne, INE - USE YOWNODEPOOL, only: PDLIB_IEN, PDLIB_TRIA, & - PDLIB_CCON, NP, NPA, PDLIB_POS_CELL2, PDLIB_IE_CELL2, & - PDLIB_IA_P, PDLIB_POSI, PDLIB_IA, PDLIB_NNZ, iplg, & - PDLIB_I_DIAG, PDLIB_JA - USE W3GDATMD, only: IOBP - USE W3ODATMD, only : IAPROC + use yowElementpool, only: INE + USE YOWNODEPOOL, only: PDLIB_IEN, PDLIB_TRIA, & + PDLIB_CCON, PDLIB_POS_CELL2, PDLIB_IE_CELL2, & + PDLIB_POSI, iplg #ifdef W3_DB1 USE W3SDB1MD - USE W3GDATMD, only: SDBSC #endif #ifdef W3_BT1 USE W3SBT1MD @@ -4069,14 +4079,17 @@ SUBROUTINE calcARRAY_JACOBI3(IP,J,DTG,FACX,FACY,VGX,VGY,ASPAR_DIAG_LOCAL,ASPAR_O INTEGER, INTENT(INOUT) :: J REAL, INTENT(in) :: DTG, FACX, FACY, VGX, VGY REAL, INTENT(out) :: ASPAR_DIAG_LOCAL(NSPEC), B_JAC_LOCAL(NSPEC), ASPAR_OFF_DIAG_LOCAL(NSPEC) - INTEGER :: ISP, ISEA, IP_glob, IPP1, IPP2 - INTEGER :: idx, IS, IP1, IP2 - INTEGER :: I, ITH, IK, J2 - INTEGER :: IE, POS, JSEA + INTEGER :: ISP, IP_glob, IPP1, IPP2 +#ifdef W3_MGP + INTEGER :: ISEA +#endif + INTEGER :: IP1, IP2 + INTEGER :: I, ITH, IK + INTEGER :: IE, POS INTEGER :: I1, I2, I3, NI(3), NI_GLOB(3), NI_ISEA(3) - INTEGER :: counter #ifdef W3_REF1 INTEGER :: eIOBPDR + REAL :: K1 #endif REAL :: DTK, TMP3 REAL :: LAMBDA(2) @@ -4086,13 +4099,10 @@ SUBROUTINE calcARRAY_JACOBI3(IP,J,DTG,FACX,FACY,VGX,VGY,ASPAR_DIAG_LOCAL,ASPAR_O REAL :: CRFS(3), K(3) REAL :: KP(3) REAL :: KM(3), CXY(3,2) - REAL :: K1, eSI, eVS, eVD - REAL :: eVal1, eVal2, eVal3 REAL :: ien_local(6) REAL :: DELTAL(3) REAL :: NM - REAL :: TRIA03, SIDT, CCOS, CSIN - REAL :: DEPTH + REAL :: TRIA03, CCOS, CSIN ASPAR_DIAG_LOCAL = 0.d0 B_JAC_LOCAL = 0.d0 @@ -4222,24 +4232,20 @@ SUBROUTINE calcARRAY_JACOBI4(IP,DTG,FACX,FACY,VGX,VGY,ASPAR_DIAG_LOCAL,ASPAR_OFF USE W3SERVMD, only: STRACE #endif ! - USE W3GDATMD, only: NK, NK2, NTH, NSPEC, FACHFA, DMIN - USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC - USE W3GDATMD, only: NSEAL,CLATS - USE W3GDATMD, only: MAPSTA, NK + USE W3GDATMD, only: NK, NTH, NSPEC + USE W3GDATMD, only: IOBPD_LOC, IOBPA_LOC, IOBDP_LOC + USE W3GDATMD, only: CLATS USE W3WDATMD, only: VA, VAOLD - USE W3ADATMD, only: CG, DW, WN, CX, CY - USE W3IDATMD, only: FLCUR, FLLEV + USE W3ADATMD, only: CG, CX, CY + USE W3IDATMD, only: FLCUR USE W3GDATMD, only: ECOS, ESIN, MAPFS USE W3PARALL, only : ONESIXTH, ZERO, THR, ONETHIRD - use yowElementpool, only: ne, INE + use yowElementpool, only: INE USE YOWNODEPOOL, only: PDLIB_IEN, PDLIB_TRIA, & - PDLIB_IE_CELL2, PDLIB_POS_CELL2, PDLIB_CCON, NP, NPA, & - PDLIB_IA_P, PDLIB_POSI, PDLIB_IA, PDLIB_NNZ, iplg, & - PDLIB_I_DIAG, PDLIB_JA - USE W3ODATMD, only : IAPROC + PDLIB_IE_CELL2, PDLIB_POS_CELL2, PDLIB_CCON, & + iplg #ifdef W3_DB1 USE W3SDB1MD - USE W3GDATMD, only: SDBSC #endif #ifdef W3_BT1 USE W3SBT1MD @@ -4271,10 +4277,9 @@ SUBROUTINE calcARRAY_JACOBI4(IP,DTG,FACX,FACY,VGX,VGY,ASPAR_DIAG_LOCAL,ASPAR_OFF ! INTEGER :: IP1, IP2 INTEGER :: ITH, IK - INTEGER :: IE, POS, JSEA - INTEGER :: I, I1, I2, I3, NI(3), NI_GLOB(3), NI_ISEA(3) + INTEGER :: IE, POS + INTEGER :: I, NI(3), NI_GLOB(3), NI_ISEA(3) INTEGER :: ISP, IP_glob, IPP1, IPP2, IOBPTH1(NTH), IOBPTH2(NTH) - INTEGER :: counter #ifdef W3_REF1 INTEGER :: eIOBPDR #endif @@ -4282,14 +4287,12 @@ SUBROUTINE calcARRAY_JACOBI4(IP,DTG,FACX,FACY,VGX,VGY,ASPAR_DIAG_LOCAL,ASPAR_OFF REAL :: LAMBDA(2) REAL :: CRFS(3), K(3) REAL :: KP(3), UV_CUR(3,2) - REAL :: KM(3), CSX(3), CSY(3) - REAL :: K1, eSI, eVS, eVD - REAL :: eVal1, eVal2, eVal3 + REAL :: CSX(3), CSY(3) REAL :: ien_local(6) REAL :: DELTAL(3), K_X(3,NK), K_Y(3,NK), K_U(3) REAL :: CRFS_X(3,NK), CRFS_Y(3,NK), CRFS_U(3) - REAL :: NM, CGFAK(3,NK), CSINA(NTH), CCOSA(NTH) - REAL :: TRIA03, SIDT, CCOS, CSIN + REAL :: CSINA(NTH), CCOSA(NTH) + REAL :: TRIA03 REAL :: FL11_X, FL12_X, FL21_X, FL22_X, FL31_X, FL32_X REAL :: FL11_Y, FL12_Y, FL21_Y, FL22_Y, FL31_Y, FL32_Y REAL :: FL11_U, FL12_U, FL21_U, FL22_U, FL31_U, FL32_U @@ -4456,13 +4459,14 @@ SUBROUTINE calcARRAY_JACOBI_SPECTRAL_1(DTG) #endif ! USE W3GDATMD, only: FSREFRACTION, FSFREQSHIFT, FACHFA +#if defined(W3_DEBUGFREQSHIFT) || defined(W3_DEBUGREFRACTION) USE W3ODATMD, only : IAPROC +#endif USE YOWNODEPOOL, only: np, iplg, PDLIB_SI, PDLIB_I_DIAG - USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC + USE W3GDATMD, only: IOBP_LOC, IOBPA_LOC, IOBDP_LOC USE W3IDATMD, only: FLLEV, FLCUR - USE W3GDATMD, only: NK, NK2, NTH, NSPEC, MAPFS, DMIN, DSIP, NSEAL + USE W3GDATMD, only: NK, NK2, NTH, NSPEC, MAPFS USE W3PARALL, only : PROP_REFRACTION_PR3, PROP_REFRACTION_PR1, PROP_FREQ_SHIFT, PROP_FREQ_SHIFT_M2, ZERO, IMEM - USE W3ADATMD, only: CG, DW REAL, INTENT(in) :: DTG INTEGER IP, IP_glob, ITH, IK @@ -4475,7 +4479,6 @@ SUBROUTINE calcARRAY_JACOBI_SPECTRAL_1(DTG) REAL :: DMM(0:NK2), eVal REAL :: DWNI_M2(NK), CWNB_M2(1-NTH:NSPEC) LOGICAL :: DoLimiterRefraction = .FALSE. - LOGICAL :: DoLimiterFreqShit = .FALSE. !AR: This one is missing ... INTEGER :: ITH0 LOGICAL :: LSIG = .FALSE. @@ -4605,13 +4608,14 @@ SUBROUTINE calcARRAY_JACOBI_SPECTRAL_2(DTG,ASPAR_DIAG_LOCAL) #endif ! USE W3GDATMD, only: FSREFRACTION, FSFREQSHIFT, FACHFA +#if defined(W3_DEBUGFREQSHIFT) || defined(W3_DEBUGREFRACTION) USE W3ODATMD, only : IAPROC +#endif USE YOWNODEPOOL, only: np, iplg, PDLIB_SI, PDLIB_I_DIAG - USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC + USE W3GDATMD, only: IOBP_LOC, IOBPA_LOC, IOBDP_LOC USE W3IDATMD, only: FLLEV, FLCUR - USE W3GDATMD, only: NK, NK2, NTH, NSPEC, MAPFS, DMIN, DSIP, NSEAL, MAPSTA + USE W3GDATMD, only: NK, NK2, NTH, NSPEC, MAPFS, NSEAL USE W3PARALL, only : PROP_REFRACTION_PR3, PROP_REFRACTION_PR1, PROP_FREQ_SHIFT, PROP_FREQ_SHIFT_M2, ZERO, IMEM - USE W3ADATMD, only: CG, DW REAL, INTENT(in) :: DTG REAL, INTENT(inout) :: ASPAR_DIAG_LOCAL(nspec,NSEAL) @@ -4625,7 +4629,6 @@ SUBROUTINE calcARRAY_JACOBI_SPECTRAL_2(DTG,ASPAR_DIAG_LOCAL) REAL :: DMM(0:NK2), eVal REAL :: DWNI_M2(NK), CWNB_M2(1-NTH:NSPEC) LOGICAL :: DoLimiterRefraction = .FALSE. - LOGICAL :: DoLimiterFreqShit = .FALSE. !AR: This one is missing ... INTEGER :: ITH0 LOGICAL :: LSIG = .FALSE. @@ -4759,15 +4762,13 @@ SUBROUTINE CALCARRAY_JACOBI_SOURCE_1(DTG) USE W3SERVMD, only: STRACE #endif ! - USE W3ODATMD, only : IAPROC - USE YOWNODEPOOL, only: iplg, PDLIB_SI, PDLIB_I_DIAG, NPA, NP + USE YOWNODEPOOL, only: iplg, PDLIB_SI, PDLIB_I_DIAG, NP USE W3ADATMD, only: CG, DW, WN - USE W3WDATMD, only: UST, USTDIR - USE W3GDATMD, only: NK, NTH, NSPEC, MAPFS, optionCall, DMIN - USE W3GDATMD, only: MAPSTA, FACP, SIG - USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC + USE W3GDATMD, only: NK, NTH, NSPEC, MAPFS + USE W3GDATMD, only: FACP, SIG + USE W3GDATMD, only: IOBP_LOC, IOBPA_LOC, IOBDP_LOC USE W3PARALL, only: IMEM - USE W3GDATMD, only: NSEAL, CLATS + USE W3GDATMD, only: CLATS #ifdef W3_DB1 USE W3SDB1MD USE W3GDATMD, only: SDBSC @@ -4785,8 +4786,8 @@ SUBROUTINE CALCARRAY_JACOBI_SOURCE_1(DTG) INTEGER IK, ITH, ISP, IS0 LOGICAL :: LBREAK REAL :: eSI, eVS, eVD, SIDT - REAL :: DEPTH, DAM(NSPEC), RATIO, MAXDAC, VSDB(NSPEC), VDDB(NSPEC) - REAL :: PreVS, eDam, DVS, FREQ, EMEAN, FMEAN, WNMEAN, AMAX, CG1(NK),WN1(NK),SPEC_VA(NSPEC) + REAL :: DEPTH, DAM(NSPEC), MAXDAC, VSDB(NSPEC), VDDB(NSPEC) + REAL :: PreVS, DVS, EMEAN, FMEAN, WNMEAN, AMAX, CG1(NK),WN1(NK),SPEC_VA(NSPEC) REAL TheFactor DO JSEA = 1, NP @@ -4922,14 +4923,12 @@ SUBROUTINE CALCARRAY_JACOBI_SOURCE_2(DTG,ASPAR_DIAG_LOCAL) USE W3SERVMD, only: STRACE #endif ! - USE W3ODATMD, only : IAPROC - USE YOWNODEPOOL, only: iplg, PDLIB_SI, PDLIB_I_DIAG, NPA, NP + USE YOWNODEPOOL, only: iplg, PDLIB_SI, NP USE W3ADATMD, only: CG, DW, WN - USE W3WDATMD, only: UST, USTDIR - USE W3GDATMD, only: NK, NTH, NSPEC, MAPFS, optionCall, DMIN - USE W3GDATMD, only: IOBP, MAPSTA, FACP, SIG, IOBPD, IOBPA, IOBDP + USE W3GDATMD, only: NK, NTH, NSPEC, MAPFS + USE W3GDATMD, only: IOBP, FACP, SIG, IOBPA, IOBDP USE W3PARALL, only: IMEM - USE W3GDATMD, only: NSEAL, CLATS + USE W3GDATMD, only: CLATS #ifdef W3_DB1 USE W3SDB1MD USE W3GDATMD, only: SDBSC @@ -4948,8 +4947,8 @@ SUBROUTINE CALCARRAY_JACOBI_SOURCE_2(DTG,ASPAR_DIAG_LOCAL) INTEGER IK, ITH, ISP, IS0 LOGICAL :: LBREAK REAL :: eSI, eVS, eVD, SIDT - REAL :: DEPTH, DAM(NSPEC), RATIO, MAXDAC, VSDB(NSPEC), VDDB(NSPEC) - REAL :: PreVS, eDam, DVS, FREQ, EMEAN, FMEAN, WNMEAN, AMAX, CG1(NK),WN1(NK),SPEC_VA(NSPEC) + REAL :: DEPTH, DAM(NSPEC), MAXDAC, VSDB(NSPEC), VDDB(NSPEC) + REAL :: PreVS, DVS, EMEAN, FMEAN, WNMEAN, AMAX, CG1(NK),WN1(NK),SPEC_VA(NSPEC) REAL TheFactor DO JSEA = 1, NP @@ -5082,13 +5081,12 @@ SUBROUTINE APPLY_BOUNDARY_CONDITION_VA #ifdef W3_S USE W3SERVMD, only: STRACE #endif - USE yowRankModule, only : IPGL_npa - USE W3GDATMD, only: NSEAL, CLATS, GTYPE, UNGTYPE + USE W3GDATMD, only: CLATS, GTYPE, UNGTYPE USE W3WDATMD, only: TIME USE W3TIMEMD, only: DSEC21 - USE W3ADATMD, only: CG, CX, CY + USE W3ADATMD, only: CG USE W3WDATMD, only: VA - USE W3GDATMD, only: NK, NK2, NTH, ECOS, ESIN, NSPEC + USE W3GDATMD, only: NK, NTH USE W3ODATMD, only: TBPI0, TBPIN, FLBPI, IAPROC, NAPROC, BBPI0, BBPIN, ISBPI, NBI USE W3PARALL, only : ISEA_TO_JSEA !/ @@ -5197,18 +5195,23 @@ SUBROUTINE APPLY_BOUNDARY_CONDITION(IMOD) #ifdef W3_S USE W3SERVMD, only: STRACE #endif - USE YOWNODEPOOL, only: npa, np USE yowRankModule, only : IPGL_npa - USE W3GDATMD, only: NSEAL, CLATS, MAPSF + USE W3GDATMD, only: CLATS, MAPSF USE W3WDATMD, only: TIME USE W3TIMEMD, only: DSEC21 USE W3WDATMD, only : VA - USE W3ADATMD, only: CG, CX, CY - USE W3GDATMD, only: NK, NK2, NTH, NSPEC - USE W3ODATMD, only: TBPI0, TBPIN, FLBPI, IAPROC, BBPI0, BBPIN, ISBPI, NBI - USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBDP_LOC, IOBPA_LOC + USE W3ADATMD, only: CG + USE W3GDATMD, only: NK, NTH + USE W3ODATMD, only: TBPI0, TBPIN, FLBPI, BBPI0, BBPIN, ISBPI, NBI + USE W3GDATMD, only: IOBDP_LOC +#if defined(W3_DEBUGSOLVER) || defined(W3_DEBUGIOBC) || defined(W3_DEBUGSOLVERALL) + USE W3ODATMD, only: IAPROC +#endif #ifdef W3_DEBUGIOBC USE W3GDATMD, only: DDEN +#endif +#if defined(W3_DEBUGSOLVER) || defined(W3_DEBUGSOLVERALL) + USE W3GDATMD, only: NSPEC #endif !/ INTEGER, INTENT(IN) :: IMOD @@ -5506,42 +5509,51 @@ SUBROUTINE PDLIB_JACOBI_GAUSS_SEIDEL_BLOCK(IMOD, FACX, FACY, DTG, VGX, VGY, LCAL #endif !/ USE CONSTANTS, only : TPI, TPIINV, GRAV - USE W3GDATMD, only: MAPSTA USE W3GDATMD, only: FSREFRACTION, FSFREQSHIFT, FSSOURCE, NX, DSIP USE W3GDATMD, only: B_JGS_NORM_THR, B_JGS_TERMINATE_NORM, B_JGS_PMIN USE W3GDATMD, only: B_JGS_TERMINATE_DIFFERENCE, B_JGS_MAXITER, B_JGS_LIMITER USE W3GDATMD, only: B_JGS_TERMINATE_MAXITER, B_JGS_BLOCK_GAUSS_SEIDEL, B_JGS_DIFF_THR - USE W3GDATMD, only: MAPWN #ifdef W3_DEBUGSRC USE W3GDATMD, only: optionCall - USE W3WDATMD, only: SHAVETOT + USE W3WDATMD, only: SHAVETOT, VSTOT, VDTOT #endif USE YOWNODEPOOL, only: PDLIB_I_DIAG, PDLIB_IA_P, PDLIB_JA, np - USE YOWNODEPOOL, only: PDLIB_SI, PDLIB_NNZ, PDLIB_CCON + USE YOWNODEPOOL, only: PDLIB_SI use yowDatapool, only: rtype use YOWNODEPOOL, only: npa, iplg use yowExchangeModule, only : PDLIB_exchange2Dreal_zero, PDLIB_exchange2Dreal use mpi_f08, only : MPI_SUM, MPI_INT, MPI_ALLREDUCE, MPI_COMM_RANK USE W3ADATMD, only: MPI_COMM_WCMP - USE W3GDATMD, only: NSEA, SIG, FACP, FLSOU - USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBDP_LOC, IOBPA_LOC - USE W3GDATMD, only: NK, NK2, NTH, ECOS, ESIN, NSPEC, MAPFS, NSEA, SIG - USE W3WDATMD, only: TIME - USE W3ODATMD, only: NBI + USE W3GDATMD, only: SIG, FLSOU + USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBDP_LOC +#ifdef W3_REF1 + USE W3GDATMD, only: IOBPA_LOC +#endif + USE W3GDATMD, only: NK, NK2, NTH, NSPEC, MAPFS USE W3TIMEMD, only: DSEC21 - USE W3GDATMD, only: NSEAL, CLATS, FACHFA + USE W3GDATMD, only: NSEAL, CLATS +#ifdef W3_DEBUGFREQSHIFT + USE W3GDATMD, only: FACHFA + USE W3GDATMD, only: MAPWN +#endif USE W3IDATMD, only: FLCUR, FLLEV - USE W3WDATMD, only: VA, VAOLD, VSTOT, VDTOT, UST - USE W3ADATMD, only: CG, CX, CY, WN, DW - USE W3ODATMD, only: TBPIN, FLBPI, IAPROC + USE W3WDATMD, only: VA, VAOLD + USE W3ADATMD, only: CG, WN +#ifdef NOCGTABLE + USE W3ADATMD, only: DW +#endif +#ifdef W3_DEBUGSOLVER + USE W3ODATMD, only: NBI, FLBPI +#endif + USE W3ODATMD, only: IAPROC USE W3PARALL, only : IMEM USE W3PARALL, only : INIT_GET_JSEA_ISPROC, ZERO, THR8, LSLOC USE W3PARALL, only : ListISPprevDir, ListISPnextDir USE W3PARALL, only : JX_TO_JSEA - USE W3GDATMD, only: B_JGS_NLEVEL, B_JGS_SOURCE_NONLINEAR - USE yowfunction, only : pdlib_abort +#ifdef WEIGHTS USE yowNodepool, only: np_global +#endif USE W3DISPMD, only : WAVNU_LOCAL USE W3ADATMD, ONLY: U10, U10D #ifdef W3_ST4 @@ -5555,6 +5567,10 @@ SUBROUTINE PDLIB_JACOBI_GAUSS_SEIDEL_BLOCK(IMOD, FACX, FACY, DTG, VGX, VGY, LCAL USE W3GDATMD, only: B_JGS_TRUNK_DIGITS #endif +#ifdef W3_DEBUGSOLVER + USE W3GDATMD, only: NSEA +#endif + implicit none LOGICAL, INTENT(IN) :: LCALC INTEGER, INTENT(IN) :: IMOD @@ -5563,9 +5579,9 @@ SUBROUTINE PDLIB_JACOBI_GAUSS_SEIDEL_BLOCK(IMOD, FACX, FACY, DTG, VGX, VGY, LCAL INTEGER :: IP, ISP, ITH, IK, JSEA, ISEA, IP_glob, IS0 INTEGER :: myrank INTEGER :: nbIter, ISPnextDir, ISPprevDir - INTEGER :: ISPp1, ISPm1, JP, ICOUNT1, ICOUNT2 + INTEGER :: ISPp1, ISPm1, JP ! for the exchange - REAL*8 :: CCOS, CSIN, CCURX, CCURY + REAL*8 :: CCURX, CCURY REAL*8 :: eSum(NSPEC), FRLOCAL REAL*8 :: eA_THE, eC_THE, eA_SIG, eC_SIG, eSI REAL*8 :: CAD(NSPEC), CAS(NSPEC), ACLOC(NSPEC) @@ -5574,21 +5590,28 @@ SUBROUTINE PDLIB_JACOBI_GAUSS_SEIDEL_BLOCK(IMOD, FACX, FACY, DTG, VGX, VGY, LCAL REAL*8 :: Sum_Prev, Sum_New, p_is_converged, DiffNew, prop_conv REAL*8 :: Sum_L2, Sum_L2_GL REAL :: DMM(0:NK2), DAM(NSPEC), DAM2(NSPEC), SPEC(NSPEC) - REAL*8 :: eDiff(NSPEC), eProd(NSPEC), eDiffB(NSPEC) + REAL*8 :: eProd(NSPEC) REAL*8 :: DWNI_M2(NK), CWNB_M2(1-NTH:NSPEC) - REAL :: VAnew(NSPEC), VFLWN(1-NTH:NSPEC), JAC, JAC2 - REAL :: VAAnew(1-NTH:NSPEC+NTH), VAAacloc(1-NTH:NSPEC+NTH) - REAL :: VAinput(NSPEC), VAacloc(NSPEC), ASPAR_DIAG(NSPEC) + REAL :: JAC2 + REAL :: ASPAR_DIAG(NSPEC) REAL :: aspar_diag_local(nspec), aspar_off_diag_local(nspec), b_jac_local(nspec) - REAL*8 :: eDiffSing, eSumPart - REAL :: EMEAN, FMEAN, FMEAN1, WNMEAN, AMAX, U10ABS, U10DIR, TAUA, TAUADIR + REAL :: EMEAN, FMEAN, FMEAN1, WNMEAN, AMAX +#ifdef W3_FLX5 + REAL :: TAUA, TAUADIR +#endif REAL :: USTAR, USTDIR, TAUWX, TAUWY, CD, Z0, CHARN, FMEANWS, DLWMEAN - REAL*8 :: eVal1, eVal2 - REAL*8 :: eVA, eVO, CG2, NEWDAC, NEWAC, OLDAC, MAXDAC +#ifdef W3_DEBUGFREQSHIFT + REAL*8 :: eVal1, eVal2, eSumPart + REAL*8 :: eDiff(NSPEC), eDiffB(NSPEC) + REAL :: VAnew(NSPEC), VAinput(NSPEC), VAacloc(NSPEC) + REAL :: VFLWN(1-NTH:NSPEC), VAAnew(1-NTH:NSPEC+NTH), VAAacloc(1-NTH:NSPEC+NTH) +#endif + REAL*8 :: eVA, eVO, NEWDAC, MAXDAC REAL :: CG1(0:NK+1), WN1(0:NK+1) - LOGICAL :: LCONVERGED(NSEAL), lexist, LLWS(NSPEC) + LOGICAL :: LCONVERGED(NSEAL), LLWS(NSPEC) #ifdef WEIGHTS INTEGER :: ipiter(nseal), ipitergl(np_global), ipiterout(np_global) + LOGICAL :: lexist #endif #ifdef W3_DEBUGSRC REAL :: IntDiff, eVA_w3srce, eVAsolve, SumACout @@ -5603,10 +5626,9 @@ SUBROUTINE PDLIB_JACOBI_GAUSS_SEIDEL_BLOCK(IMOD, FACX, FACY, DTG, VGX, VGY, LCAL REAL :: OffDIAG(NSPEC, npa) REAL*8 :: eOff(NSPEC) REAL*8 :: eSum1(NSPEC), eSum2(NSPEC) -#endif CHARACTER(len=128) eFile +#endif INTEGER ierr, i - INTEGER JP_glob INTEGER is_converged, itmp #ifdef W3_TRNK @@ -5614,7 +5636,9 @@ SUBROUTINE PDLIB_JACOBI_GAUSS_SEIDEL_BLOCK(IMOD, FACX, FACY, DTG, VGX, VGY, LCAL real :: trVA #endif +#ifdef W3_DEBUGSRC INTEGER :: TESTNODE = 923 +#endif LOGICAL :: LSIG = .FALSE. @@ -6422,17 +6446,16 @@ SUBROUTINE PDLIB_EXPLICIT_BLOCK(IMOD, FACX, FACY, RD10, RD20, DTG, VGX, VGY, LCA #ifdef W3_S USE W3SERVMD, only: STRACE #endif - USE W3GDATMD, ONLY: NK, NTH, NSPEC, SIG, DTH, ESIN, ECOS, NSEAL, FSBCCFL, CLATS, MAPFS - USE W3GDATMD, ONLY: IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC, MAPSF, NSEA - USE W3ODATMD, ONLY: NDSE, NDST, FLBPI, NBI, TBPI0, TBPIN, ISBPI, BBPI0, BBPIN + USE W3GDATMD, ONLY: NK, NTH, SIG, ESIN, ECOS, FSBCCFL, CLATS + USE W3GDATMD, ONLY: IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC, MAPSF + USE W3ODATMD, ONLY: FLBPI, NBI, ISBPI, BBPI0, BBPIN USE W3ADATMD, ONLY: DW, CX, CY, MPI_COMM_WCMP - USE W3IDATMD, ONLY: FLCUR, FLLEV + USE W3IDATMD, ONLY: FLCUR USE W3WDATMD, ONLY: VA USE W3DISPMD, ONLY: WAVNU3 - USE W3ODATMD, ONLY : IAPROC #ifdef W3_PDLIB USE yowElementpool, only: ne, ine - USE yowNodepool, only: np, npa, pdlib_ien, pdlib_si, iplg + USE yowNodepool, only: npa, pdlib_ien, pdlib_si, iplg use yowDatapool, only: rtype use yowExchangeModule, only: PDLIB_exchange2Dreal_zero, PDLIB_exchange2Dreal use yowRankModule, only: ipgl_npa @@ -6458,8 +6481,10 @@ SUBROUTINE PDLIB_EXPLICIT_BLOCK(IMOD, FACX, FACY, RD10, RD20, DTG, VGX, VGY, LCA REAL :: LAMBDAX(NTH), LAMBDAY(NTH) REAL :: DTMAX(NTH), DTMAXEXP(NTH), DTMAXOUT, DTMAXGL REAL :: FIN(1), FOUT(1), REST, CFLXY, RD1, RD2 - REAL :: UOLD(NTH,NPA), U(NTH,NPA) - + REAL :: U(NTH,NPA) +#ifdef W3_REF1 + REAL :: UOLD(NTH,NPA) +#endif REAL, PARAMETER :: ONESIXTH = 1.0/6.0 REAL, PARAMETER :: ZERO = 0.0 REAL, PARAMETER :: THR = 1.0E-12 @@ -6702,7 +6727,7 @@ SUBROUTINE BLOCK_SOLVER_EXPLICIT_INIT() #endif USE W3GDATMD, only: NTH, NK #ifdef W3_PDLIB - USE YOWNODEPOOL, only: np, npa + USE YOWNODEPOOL, only: npa USE YOWELEMENTPOOL, only: ne #endif IMPLICIT NONE @@ -6766,19 +6791,17 @@ SUBROUTINE BLOCK_SOLVER_INIT(IMOD) USE W3SERVMD, only: STRACE #endif ! - USE CONSTANTS, only : LPDLIB, TPI, TPIINV - USE W3GDATMD, only: MAPSF, NSEAL, DMIN, IOBDP, MAPSTA, IOBP, MAPFS, NX - USE W3ADATMD, only: DW + USE CONSTANTS, only : TPI, TPIINV USE W3PARALL, only: INIT_GET_ISEA - USE YOWNODEPOOL, only: iplg, np USE yowfunction, only: pdlib_abort - use YOWNODEPOOL, only: npa USE W3GDATMD, only: B_JGS_USE_JACOBI USE W3PARALL, only : ListISPprevDir, ListISPnextDir USE W3PARALL, only : ListISPprevFreq, ListISPnextFreq USE W3GDATMD, only: NSPEC, NTH, NK USE W3GDATMD, only: FSTOTALIMP +#ifdef W3_DEBUGINIT USE W3ODATMD, only: IAPROC +#endif !/ INTEGER, INTENT(IN) :: IMOD ! @@ -6904,12 +6927,11 @@ SUBROUTINE SET_IOBDP_PDLIB #ifdef W3_S USE W3SERVMD, only: STRACE #endif - USE CONSTANTS, only : LPDLIB - USE W3GDATMD, only: MAPSF, NSEAL, DMIN, MAPSTA, NX - USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC + USE W3GDATMD, only: DMIN + USE W3GDATMD, only: IOBDP_LOC USE W3ADATMD, only: DW USE W3PARALL, only: INIT_GET_ISEA - USE YOWNODEPOOL, only: iplg, np, npa + USE YOWNODEPOOL, only: iplg, npa !/ !/ !/ ------------------------------------------------------------------- / @@ -6925,7 +6947,7 @@ SUBROUTINE SET_IOBDP_PDLIB !/ ------------------------------------------------------------------- / !/ ! - INTEGER :: JSEA, ISEA, IX, IP, IP_glob + INTEGER :: JSEA, IP, IP_glob REAL*8, PARAMETER :: DTHR = 10E-6 #ifdef W3_S CALL STRACE (IENT, 'SETDEPTH_PDLIB') @@ -6993,12 +7015,10 @@ SUBROUTINE SET_IOBPA_PDLIB #ifdef W3_S USE W3SERVMD, only: STRACE #endif - USE CONSTANTS, only : LPDLIB - USE W3GDATMD, only: MAPSF, NSEAL, DMIN, MAPSTA, NX - USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC - USE W3ADATMD, only: DW + USE W3GDATMD, only: NSEAL, MAPSTA + USE W3GDATMD, only: IOBPA_LOC USE W3PARALL, only: INIT_GET_ISEA - USE YOWNODEPOOL, only: iplg, np + USE YOWNODEPOOL, only: iplg !/ !/ !/ ------------------------------------------------------------------- / @@ -7014,7 +7034,7 @@ SUBROUTINE SET_IOBPA_PDLIB !/ ------------------------------------------------------------------- / !/ ! - INTEGER :: JSEA, ISEA, IX, IP, IP_glob + INTEGER :: JSEA, IP_glob REAL*8, PARAMETER :: DTHR = 10E-6 #ifdef W3_S CALL STRACE (IENT, 'SETDEPTH_PDLIB') @@ -7097,21 +7117,15 @@ SUBROUTINE SET_UG_IOBP_PDLIB_INIT() USE CONSTANTS ! ! - USE W3GDATMD, only: NX, NY, NSEA, MAPFS, & - NK, NTH, DTH, XFR, MAPSTA, COUNTRI, & - ECOS, ESIN, IEN, NTRI, TRIGP, & - IOBP,IOBPD, IOBPA, & + USE W3GDATMD, only: NTH, ECOS, ESIN #ifdef W3_REF1 - REFPARS, REFLC, REFLD, & + USE W3GDATMD, only: NX, REFPARS, REFLC, REFLD, MAPSTA, MAPFS, IOBP, IOBPD, DTH #endif - ANGLE0, ANGLE, NSEAL - - USE W3ODATMD, only: TBPI0, TBPIN, FLBPI - USE W3ADATMD, only: CG, CX, CY, ATRNX, ATRNY, ITIME, CFLXYMAX - USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC - USE W3IDATMD, only: FLCUR + USE W3GDATMD, only: IOBP_LOC, IOBPD_LOC, IOBPA_LOC +#ifdef W3_DEBUGSETUGIOBP USE W3ODATMD, only : IAPROC - USE YOWNODEPOOL, only: PDLIB_SI, PDLIB_IEN, PDLIB_TRIA, ipgl, iplg, npa, np +#endif + USE YOWNODEPOOL, only: PDLIB_IEN, npa use yowElementpool, only: NE, INE use yowExchangeModule, only : PDLIB_exchange1DREAL #ifdef W3_S @@ -7124,17 +7138,17 @@ SUBROUTINE SET_UG_IOBP_PDLIB_INIT() !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: ITH, IX, I, J, IP, IE, NDIRSUM - REAL (KIND = 8) :: COSSUM, SINSUM - REAL (KIND = 8) :: DIRMIN, DIRMAX, SHIFT, TEMPO, DIRCOAST + INTEGER :: ITH, I, IP, IE +#ifdef W3_REF1 + INTEGER :: NDIRSUM + REAL (KIND = 8) :: COSSUM, SINSUM, DIRCOAST +#endif REAL (KIND = 8) :: X1, X2, Y1, Y2, DXP1, DXP2, DXP3 REAL (KIND = 8) :: DYP1, DYP2, DYP3, eDet1, eDet2, EVX, EVY REAL(KIND=8), PARAMETER :: THR = TINY(1.) INTEGER :: I1, I2, I3 - INTEGER :: ITMP(NX), NEXTVERT(NX), PREVVERT(NX) INTEGER :: MAX_IOBPD, MIN_IOBPD REAL :: rtmp(NPA) - CHARACTER(60) :: FNAME #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif @@ -7368,10 +7382,8 @@ SUBROUTINE DEALLOCATE_PDLIB_GLOBAL(IMOD) #ifdef W3_S USE W3SERVMD, only: STRACE #endif - USE W3GDATMD, only: NSPEC, B_JGS_BLOCK_GAUSS_SEIDEL, GRIDS - use YOWNODEPOOL, only: PDLIB_NNZ, npa, np + USE W3GDATMD, only: GRIDS USE yowfunction, only: pdlib_abort - USE W3GDATMD, only: NTH, NK, NSEAL USE W3PARALL, only: IMEM #ifdef W3_DEBUGINIT USE W3ODATMD, only : IAPROC @@ -7467,8 +7479,8 @@ SUBROUTINE ERGOUT(FHNDL, ERGNAME) #ifdef W3_S USE W3SERVMD, only: STRACE #endif - USE W3GDATMD, only: NSPEC, NTH, NK, NSEAL - USE W3WDATMD, only: VA, VAOLD + USE W3GDATMD, only: NSEAL + USE W3WDATMD, only: VA IMPLICIT NONE INTEGER, INTENT(IN) :: FHNDL @@ -7540,10 +7552,10 @@ SUBROUTINE JACOBI_INIT(IMOD) #ifdef W3_S USE W3SERVMD, only: STRACE #endif - USE W3GDATMD, only: NSPEC, B_JGS_BLOCK_GAUSS_SEIDEL, GRIDS - use YOWNODEPOOL, only: PDLIB_NNZ, npa, np + USE W3GDATMD, only: NSPEC, B_JGS_BLOCK_GAUSS_SEIDEL + use YOWNODEPOOL, only: PDLIB_NNZ, npa USE yowfunction, only: pdlib_abort - USE W3GDATMD, only: NTH, NK, NSEAL + USE W3GDATMD, only: NTH, NSEAL USE W3PARALL, only: IMEM #ifdef W3_DEBUGINIT USE W3ODATMD, only : IAPROC diff --git a/model/src/w3sdb1md.F90 b/model/src/w3sdb1md.F90 index 0e0c09e809..1be24a9759 100644 --- a/model/src/w3sdb1md.F90 +++ b/model/src/w3sdb1md.F90 @@ -183,19 +183,22 @@ SUBROUTINE W3SDB1 (IX, A, DEPTH, EMEAN, FMEAN, WNMEAN, CG, LBREAK, S, D ) !/ ------------------------------------------------------------------- / !/ USE CONSTANTS - USE W3GDATMD, ONLY: NK, NTH, NSPEC, SDBC1, SDBC2, FDONLY, FSSOURCE, DDEN - USE W3ODATMD, ONLY: NDST + USE W3GDATMD, ONLY: NK, NTH, NSPEC, SDBC1, SDBC2, FDONLY, DDEN USE W3GDATMD, ONLY: SIG - USE W3ODATMD, only : IAPROC USE W3PARALL, only : THR #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif +#ifdef W3_T + USE W3ODATMD, ONLY: NDST +#endif #ifdef W3_T0 USE W3ARRYMD, ONLY: PRT2DS + USE W3ODATMD, ONLY: NDST #endif #ifdef W3_T1 USE W3ARRYMD, ONLY: OUTMAT + USE W3ODATMD, ONLY: NDST #endif !/ IMPLICIT NONE diff --git a/model/src/w3snl1md.F90 b/model/src/w3snl1md.F90 index 09f8cee351..11eb954acc 100644 --- a/model/src/w3snl1md.F90 +++ b/model/src/w3snl1md.F90 @@ -836,8 +836,9 @@ SUBROUTINE W3SNLGQM(A,CG,WN,DEPTH,TSTOTn,TSDERn) REAL :: q_dfac, SATVAL(NK), SUME, ACCVAL, ACCMAX, AMPFAC DOUBLE PRECISION :: RAISF, FREQ(NK) DOUBLE PRECISION :: TSTOT(NTH,NK) , TSDER(NTH,NK), F(NTH,NK) +#ifdef W3_TGQM DOUBLE PRECISION :: TEMP - +#endif !.....LOCAL VARIABLES INTEGER JF , JT , JF1 , JT1 , IQ_OM2 & , JFM0 , JFM1 , JFM2 , JFM3 , IXF1 , IXF2 & diff --git a/model/src/w3src4md.F90 b/model/src/w3src4md.F90 index 3d21d5895f..982014960e 100644 --- a/model/src/w3src4md.F90 +++ b/model/src/w3src4md.F90 @@ -229,7 +229,7 @@ SUBROUTINE W3SPR4 (A, CG, WN, EMEAN, FMEAN, FMEAN1, WNMEAN, & USE CONSTANTS, ONLY: TPIINV, GRAV, nu_air USE W3GDATMD, ONLY: NK, NTH, NSPEC, SIG, DDEN, WWNMEANP, & WWNMEANPTAIL, FTE, FTF, SSTXFTWN,& - SSTXFTFTAIL, ESIN, ECOS, ZZWND, SSDSC + SSTXFTFTAIL, ESIN, ECOS, SSDSC #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif @@ -240,6 +240,7 @@ SUBROUTINE W3SPR4 (A, CG, WN, EMEAN, FMEAN, FMEAN1, WNMEAN, & ! #ifdef W3_FLX5 USE W3FLX5MD + USE W3GDATMD, ONLY: ZZWND #endif IMPLICIT NONE !/ @@ -550,8 +551,10 @@ SUBROUTINE W3SIN4 (A, CG, K, U, USTAR, DRAT, AS, USDIR, Z0, CD, & REAL :: COSU, SINU, TAUX, TAUY, USDIRP, USTP REAL :: TAUPX, TAUPY, UST2, TAUW, TAUWB REAL , PARAMETER :: EPS1 = 0.00001, EPS2 = 0.000001 +#if defined(W3_T) || defined(W3_STAB3) REAL :: Usigma !standard deviation of U due to gustiness REAL :: USTARsigma !standard deviation of USTAR due to gustiness +#endif REAL :: CM,UCN,ZCN, & Z0VISC, Z0NOZ, EB, & EBX, EBY, AORB, AORB1, FW, UORB, & diff --git a/model/src/w3srcemd.F90 b/model/src/w3srcemd.F90 index f76569cfa4..6716175008 100644 --- a/model/src/w3srcemd.F90 +++ b/model/src/w3srcemd.F90 @@ -497,13 +497,22 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & USE CONSTANTS, ONLY: DWAT, srce_imp_post, srce_imp_pre, & srce_direct, GRAV, TPI, TPIINV USE W3GDATMD, ONLY: NK, NTH, NSPEC, SIG, TH, DMIN, DTMAX, & - DTMIN, FACTI1, FACTI2, FACSD, FACHFA, FACP, & - XFC, XFLT, XREL, XFT, FXFM, FXPM, DDEN, & - FTE, FTF, FHMAX, ECOS, ESIN, IICEDISP, & + DTMIN, FACTI1, FACTI2, FACSD, FACHFA, FACP, & + XFLT, XREL, DDEN, FHMAX, ECOS, ESIN, IICEDISP, & ICESCALES, IICESMOOTH USE W3GDATMD, ONLY: IC_NUMERICS +#if defined(W3_ST1) || defined(W3_ST6) + USE W3GDATMD, ONLY: FXFM, FXPM +#endif +#if defined(W3_NL5) || defined(W3_NNT) USE W3WDATMD, ONLY: TIME - USE W3ODATMD, ONLY: NDSE, NDST, IAPROC +#endif +#if defined(W3_T) || defined(W3_ST1) || defined(W3_ST2) || defined(W3_ST3) || defined(W3_ST6) + USE W3ODATMD, ONLY: NDST +#endif +#if defined(W3_NNT) || defined(W3_PDLIB) || defined(W3_DEBUGSRC) + USE W3ODATMD, ONLY: IAPROC +#endif USE W3IDATMD, ONLY: INFLAGS2 USE W3DISPMD #ifdef W3_T @@ -513,7 +522,7 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & USE W3GDATMD, ONLY: IOBP, IOBPD, GTYPE, UNGTYPE, REFPARS #endif #ifdef W3_NNT - USE W3ODATMD, ONLY: IAPROC, SCREEN, FNMPRE + USE W3ODATMD, ONLY: SCREEN, FNMPRE #endif #ifdef W3_FLD1 USE W3FLD1MD, ONLY: W3FLD1 @@ -549,7 +558,7 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & #endif #ifdef W3_ST2 USE W3SRC2MD - USE W3GDATMD, ONLY : ZWIND + USE W3GDATMD, ONLY : ZWIND, XFC, XFT #endif #ifdef W3_ST3 USE W3SRC3MD @@ -638,6 +647,7 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & #endif #ifdef W3_NNT USE W3SERVMD, ONLY: EXTOPN, EXTIOF + USE W3ODATMD, ONLY: NDSE #endif #ifdef W3_UOST USE W3UOSTMD, ONLY: UOST_SRCTRMCOMPUTE @@ -684,39 +694,42 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & !/ Local parameters !/ INTEGER :: IK, ITH, IS, IS0, NSTEPS, NKH, NKH1, & - IKS1, IS1, NSPECH, IDT, IERR, ISP + IKS1, IS1, NSPECH, IDT REAL :: DTTOT, FHIGH, DT, AFILT, DAMAX, AFAC, & - HDT, ZWND, FP, DEPTH, TAUSCX, TAUSCY, FHIGI + HDT, ZWND, DEPTH, TAUSCX, TAUSCY, FHIGI ! Scaling factor for SIN, SDS, SNL REAL :: ICESCALELN, ICESCALEIN, ICESCALENL, ICESCALEDS - REAL :: EMEAN, FMEAN, AMAX, CD, Z0, SCAT, & - SMOOTH_ICEDISP + REAL :: EMEAN, FMEAN, AMAX, CD, Z0 REAL :: WN_R(NK), CG_ICE(NK), ALPHA_LIU(NK), ICECOEF2, R(NK) - DOUBLE PRECISION :: ATT, ISO + DOUBLE PRECISION :: ATT REAL :: EBAND, DIFF, EFINISH, HSTOT, PHINL, & FMEAN1, FMEANWS, & FACTOR, FACTOR2, DRAT, TAUWAX, TAUWAY, & MWXFINISH, MWYFINISH, A1BAND, B1BAND, & COSI(2) - REAL :: SPECINIT(NSPEC), SPEC2(NSPEC), FRLOCAL, JAC2 - REAL :: DAM (NSPEC), DAM2(NSPEC), WN2(NSPEC), & + REAL :: SPECINIT(NSPEC), SPEC2(NSPEC) + REAL :: DAM (NSPEC), WN2(NSPEC), & VSLN(NSPEC), & VSIN(NSPEC), VDIN(NSPEC), & VSNL(NSPEC), VDNL(NSPEC), & VSDS(NSPEC), VDDS(NSPEC), & VSBT(NSPEC), VDBT(NSPEC) - REAL :: VS(NSPEC), VD(NSPEC), EB(NK) + REAL :: VS(NSPEC), VD(NSPEC) LOGICAL :: SHAVE LOGICAL :: LBREAK LOGICAL, SAVE :: FIRST = .TRUE. - LOGICAL :: PrintDeltaSmDA - REAL :: eInc1, eInc2, eVS, eVD, JAC - REAL :: DeltaSRC(NSPEC) + REAL :: eInc1, eInc2 - REAL :: FOUT(NK,NTH), SOUT(NK,NTH), DOUT(NK,NTH) REAL, SAVE :: TAUNUX, TAUNUY - LOGICAL, SAVE :: FLTEST = .FALSE., FLAGNN = .TRUE. + +#if defined(W3_OMPG) || defined(W3_T) || defined(W3_ST1) || defined(W3_ST2) || defined(W3_ST3) || defined(W3_ST6) + LOGICAL, SAVE :: FLTEST = .FALSE. +#endif + +#if defined(W3_OMPG) || defined(W3_NNT) + LOGICAL, SAVE :: FLAGNN = .TRUE. +#endif #ifdef W3_OMPG !$omp threadprivate( TAUNUX, TAUNUY) @@ -724,6 +737,13 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & !$omp threadprivate( FIRST ) #endif +#if defined(W3_PDLIB) || defined(W3_REF1) + INTEGER :: ISP +#endif + +#if defined(W3_ST0) || defined(W3_ST1) || defined(W3_ST2) || defined(W3_ST6) || defined(W3_FLX2) || defined(W3_FLX3) + REAL :: FP +#endif !/ !/ ------------------------------------------------------------------- / !/ Local parameters dependent on compile switch @@ -735,6 +755,9 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & #ifdef W3_NNT INTEGER, SAVE :: NDSD = 89, NDSD2 = 88, J REAL :: QCERR = 0. !/XNL2 and !/NNT + INTEGER :: IERR + REAL :: FOUT(NK,NTH), SOUT(NK,NTH), DOUT(NK,NTH) + LOGICAL, SAVE :: FLAGNN = .TRUE. #endif #ifdef W3_NL5 @@ -786,7 +809,9 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & #ifdef W3_IS2 REAL :: VDIR2(NSPEC) + REAL :: SCAT, SMOOTH_ICEDISP DOUBLE PRECISION :: SCATSPEC(NTH) + DOUBLE PRECISION :: ISO #endif #ifdef W3_UOST @@ -806,7 +831,7 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & #endif #ifdef W3_ST4 - REAL :: FMEANS, FH1, FH2, FAGE, DLWMEAN + REAL :: FH1, FH2, FAGE, DLWMEAN REAL :: BRLAMBDA(NSPEC) #endif @@ -820,6 +845,9 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, & #ifdef W3_PDLIB REAL :: PreVS, DVS, SIDT, FAKS, MAXDAC + LOGICAL :: PrintDeltaSmDA + REAL :: DeltaSRC(NSPEC), DAM2(NSPEC) + REAL :: FRLOCAL, JAC, JAC2, eVS, eVD #endif #ifdef W3_NNT @@ -2578,7 +2606,7 @@ SUBROUTINE SIGN_VSD_SEMI_IMPLICIT_WW3(SPEC, VS, VD) USE W3SERVMD, ONLY: STRACE #endif ! - USE W3GDATMD, only : NTH, NK, NSPEC + USE W3GDATMD, only : NSPEC IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / @@ -2594,7 +2622,7 @@ SUBROUTINE SIGN_VSD_SEMI_IMPLICIT_WW3(SPEC, VS, VD) !/ ------------------------------------------------------------------- / !/ - INTEGER :: ISP, ITH, IK, IS + INTEGER :: IS REAL, INTENT(IN) :: SPEC(NSPEC) REAL, INTENT(INOUT) :: VS(NSPEC), VD(NSPEC) #ifdef W3_S @@ -2667,7 +2695,7 @@ SUBROUTINE SIGN_VSD_PATANKAR_WW3(SPEC, VS, VD) #endif ! - USE W3GDATMD, only : NTH, NK, NSPEC + USE W3GDATMD, only : NSPEC IMPLICIT NONE !/ !/ ------------------------------------------------------------------- / @@ -2682,7 +2710,7 @@ SUBROUTINE SIGN_VSD_PATANKAR_WW3(SPEC, VS, VD) !/ !/ ------------------------------------------------------------------- / !/ - INTEGER :: ISP, ITH, IK, IS + INTEGER :: IS REAL, INTENT(IN) :: SPEC(NSPEC) REAL, INTENT(INOUT) :: VS(NSPEC), VD(NSPEC) #ifdef W3_S diff --git a/model/src/w3strkmd.F90 b/model/src/w3strkmd.F90 index 7990238104..bc1814b4dc 100644 --- a/model/src/w3strkmd.F90 +++ b/model/src/w3strkmd.F90 @@ -369,8 +369,7 @@ SUBROUTINE waveTracking_NWS_V2 (intype ,tmax , & INTEGER :: maxGroup, intype, tmax, tcur, ntint INTEGER, POINTER :: maxSys(:) TYPE(dat2d), POINTER :: wsdat(:) - TYPE(timsys), POINTER :: sysA(:), sysAA(:) - INTEGER :: NumConsSys, iConsSys + TYPE(timsys), POINTER :: sysA(:) REAL :: dt REAL :: minlon, maxlon, minlat, maxlat INTEGER :: mxcwt, mycwt @@ -419,7 +418,7 @@ SUBROUTINE waveTracking_NWS_V2 (intype ,tmax , & REAL, ALLOCATABLE :: mlon(:,:), mlat(:,:), tmp_r4(:) REAL, POINTER :: uniqueTim(:),uniqueLatraw(:),uniqueLonraw(:), & uniqueLat(:),uniqueLon(:) - INTEGER :: ioerr,ierr, i, j, k, l, alreadyIn, ok, tss, tsA + INTEGER :: ioerr,ierr, i, j, k, l, tsA INTEGER :: maxPart, DATETIME(2) INTEGER :: tstep, iline, numpart, skipln, readln, filesize REAL :: x,y,wnd,wnddir @@ -427,17 +426,15 @@ SUBROUTINE waveTracking_NWS_V2 (intype ,tmax , & REAL :: invar5, invar6, invar7 REAL, ALLOCATABLE :: phs(:),ptp(:),pdir(:),pspr(:),pwf(:) ! current partition values REAL*8 :: date1, date2, ttest, ttemp - INTEGER :: ic, leng, maxpartout ! Remove? - REAL :: dx + INTEGER :: maxpartout ! Remove? INTEGER :: latind1, latind2, lonind1, lonind2 REAL :: lonext, latext LOGICAL :: endloop #ifdef W3_MPI - INTEGER :: rank, irank, nproc, EXTENT, DOMSIZE, tag1, tag2 + INTEGER :: rank, irank, nproc, DOMSIZE, tag1, tag2, ic ! INTEGER :: MPI_INT_DOMARR, MPI_REAL_DOMARR type(MPI_STATUS) :: MPI_STAT - INTEGER :: REQ(16) ! INTEGER :: ISTAT(MPI_STATUS_SIZE,16) REAL :: COMMARR1(44) INTEGER :: COMMARR2(11) @@ -2127,21 +2124,18 @@ SUBROUTINE timeTrackingV2 (sysA ,maxSys ,tpTimeKnob , & LOGICAL :: file_exists CHARACTER :: dummy*23 TYPE(sysmemory) :: sysMem(50) !!! 50 memory spaces should be enough Check!!! - INTEGER :: leng, l, i, ii, j, k, kk, idir, numSys, & - counter, new, DIFSIZE, tpMinInd, dirMinInd, used, ok - REAL :: Tb, deltaPer, deltaDir, tpMinVal, dirMinVal, & - dirForTpMin, tpForDirMin + INTEGER :: leng, l, i, ii, j, k, kk, idir, & + counter, new, tpMinInd, dirMinInd, used, ok + REAL :: deltaPer, deltaDir, tpMinVal REAL, ALLOCATABLE :: sysOrdered(:), TEMP(:), dirs(:) - REAL, POINTER :: DIFARR(:) INTEGER, ALLOCATABLE :: indSorted(:), alreadyUsed(:), allInd(:) INTEGER, ALLOCATABLE :: ind(:), ind2(:) INTEGER :: ts1 REAL, ALLOCATABLE :: GOF(:,:), GOFMinVal(:), GOFMinInd(:), & Tbsysmem(:), deltaDirsysmem(:), & deltaPersysmem(:),m1sysmem(:),m2sysmem(:) - REAL :: m1, m2 REAL :: lonmean, latmean, dmndiag - INTEGER :: npnts, npnts2 + INTEGER :: npnts REAL, ALLOCATABLE :: mnlonlist(:), mnlatlist(:), mndist(:) REAL, POINTER :: dummy1(:),dummy2(:),dummy3(:) INTEGER, ALLOCATABLE :: olsize(:) @@ -3057,14 +3051,12 @@ SUBROUTINE findSys (i ,j ,wsdat ,maxSys , & TYPE(mtchsys) :: match LOGICAL :: found INTEGER :: counter, ii, jj, nngbr, startCount, endCount, l,& - nout, maxS, s, p, n, countAll, ind, minInd, & - npart, pp, leng + nout, maxS, s, p, n, countAll, ind, npart, pp, leng INTEGER :: allFullSys(50) REAL, POINTER :: realarr(:) INTEGER, ALLOCATABLE :: allSys(:) REAL :: hsAll(50),tpAll(50),dirAll(50),GOF(50) - REAL :: absDir,absPer,absHs,T,& - deltaPer,deltaDir,deltaHs,temp + REAL :: absDir,absPer,absHs,T,deltaPer,deltaDir,deltaHs REAL :: dx, m1, m2 REAL :: GOFMinVal INTEGER :: GOFMinInd @@ -3344,7 +3336,7 @@ SUBROUTINE combineWaveSystems (wsdat ,maxSys ,maxPts , & ! combine Int input Toggle: 1=combine systems; 0=do not combine TYPE(dat2d) :: wsdat - TYPE(system), POINTER :: sys(:), systemp(:) + TYPE(system), POINTER :: sys(:) INTEGER :: maxSys, maxPts, maxI, maxJ, combine REAL :: perKnob ,dirKnob, hsKnob @@ -3357,12 +3349,11 @@ SUBROUTINE combineWaveSystems (wsdat ,maxSys ,maxPts , & ! nSys Int Number of wave systems (for checking iterative combining loop) ! LOGICAL :: found - INTEGER, ALLOCATABLE :: sysOut(:) INTEGER, ALLOCATABLE :: actSysInd(:) INTEGER :: iter, ok, nSys, mS, s, so, ss, ind, leng, & iw, jw, iloop INTEGER :: actSys - REAL :: dev, hsCmp, maxHgt, temp(5) + REAL :: dev, hsCmp, maxHgt ! ! 4. Subroutines used : ! @@ -3835,7 +3826,7 @@ SUBROUTINE combineSys (wsdat ,sys ,maxSys ,maxI , & REAL, ALLOCATABLE :: sysOrdered(:), rounded(:) REAL, POINTER :: uniarr(:), difarr(:), allngbr(:) INTEGER :: leng, leng2, s, ss, so, ngb, lsys, lsys2, hh, i, j, & - ii, jj, ind, ind2, nn, nbr, icEnd,ic,iii,iloop + ii, jj, ind, ind2, nn, nbr, ic, iii INTEGER :: myngbr, indMatch, matchSys, keep, replacedInd, & hhForIndMatch, lMatch, tot, outsize INTEGER :: ngbIndex(10000), keepInd(maxI*maxJ), oneLess(1000) !Array large enough? @@ -4428,7 +4419,7 @@ SUBROUTINE combinePartitionsV2 (dat) TYPE(duplicate) :: dup(100) !40.PAR LOGICAL :: found - INTEGER :: nsys, ndup, p, pp, maxInd, npart, s, ss, ppp + INTEGER :: nsys, p, pp, maxInd, npart, s, ss, ppp REAL :: temp ! ! 4. Subroutines used : @@ -5869,7 +5860,7 @@ RECURSIVE SUBROUTINE QSORT_DESC(ARRAY,IDX,LO,HI) !/ ! Local variables ! ---------------------------------------------------------------- - INTEGER :: TOP, BOT, I + INTEGER :: TOP, BOT REAL :: VAL, TMP LOGICAL :: LOOP ! diff --git a/model/src/w3tidemd.F90 b/model/src/w3tidemd.F90 index 22bbdc4534..9939168996 100644 --- a/model/src/w3tidemd.F90 +++ b/model/src/w3tidemd.F90 @@ -289,8 +289,8 @@ SUBROUTINE TIDE_FIND_INDICES_PREDICTION(LIST,INDS,TIDE_PRMF) ! ! 10. Source code : ! - USE W3ODATMD, ONLY: IAPROC, NAPROC, NAPERR, NAPOUT - USE W3ODATMD, ONLY: NDSE, NDSO + USE W3ODATMD, ONLY: IAPROC, NAPOUT + USE W3ODATMD, ONLY: NDSO #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif @@ -387,8 +387,8 @@ SUBROUTINE TIDE_FIND_INDICES_ANALYSIS(LIST) ! ! 10. Source code : ! - USE W3ODATMD, ONLY: IAPROC, NAPROC, NAPERR, NAPOUT - USE W3ODATMD, ONLY: NDSE, NDSO + USE W3ODATMD, ONLY: IAPROC, NAPOUT + USE W3ODATMD, ONLY: NDSO #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif @@ -401,7 +401,6 @@ SUBROUTINE TIDE_FIND_INDICES_ANALYSIS(LIST) !/ CHARACTER(LEN=100), INTENT(IN) :: LIST(70) ! - INTEGER TIDE_MF_ALL CHARACTER(LEN=5) :: TIDECON_NAME_ALL(65) ! array of names of tidal constituents REAL :: TIDE_FREQC_ALL(65) ! array of freq. of tidal constituents INTEGER :: INDS(65), J, FOUND, NTIDES @@ -2137,8 +2136,8 @@ subroutine flex_tidana_webpage(IX,IY,XLON,XLAT,KD1,KD2,ndef, itrend, RES, SSQ, R FX, FXI, S, S2, S3, UX, VX, UXI, VXI, & WMIN, WMAX, XMID REAL :: TOLER - REAL(KIND=8) :: AV, SDEV, SUM2, hrm - DOUBLE PRECISION :: X(NR),Y(NR), TIME(NR) + REAL(KIND=8) :: AV, SDEV, hrm + DOUBLE PRECISION :: X(NR),TIME(NR) REAL :: Q(NMAXPM,NMAXP1),FREQ(MC),AMP(MC),PH(MC) DOUBLE PRECISION :: P(NMAXP1),CENHR,CUMHR DOUBLE PRECISION :: yy diff --git a/model/src/w3timemd.F90 b/model/src/w3timemd.F90 index 508ad1ca9a..67938055e8 100644 --- a/model/src/w3timemd.F90 +++ b/model/src/w3timemd.F90 @@ -1414,7 +1414,7 @@ SUBROUTINE J2D(JULIAN,DAT,IERR) !/ Local parameters !/ REAL :: SECDAY=86400.0d0 - INTEGER :: TIMEZONE(8), TZ + INTEGER :: TZ REAL :: SECOND INTEGER :: YEAR, MONTH, DAY, HOUR, MINUTE @@ -2030,7 +2030,6 @@ SUBROUTINE T2ISO(TIME,ISODT) !/ ------------------------------------------------------------------- / !/ USE W3SERVMD, ONLY: EXTIOF - USE W3ODATMD, ONLY: NDSE ! IMPLICIT NONE !/ diff --git a/model/src/w3triamd.F90 b/model/src/w3triamd.F90 index 0492802905..ce408025d2 100644 --- a/model/src/w3triamd.F90 +++ b/model/src/w3triamd.F90 @@ -201,11 +201,10 @@ SUBROUTINE READMSH(NDS,FNAME) ! 10. Source code : ! !/ ------------------------------------------------------------------- / - USE W3ODATMD, ONLY: NDSE, NDST, NDSO + USE W3ODATMD, ONLY: NDSE, NDST USE W3GDATMD, ONLY: ZB, XGRD, YGRD, NTRI, NX, COUNTOT, TRIGP, NNZ, W3DIMUG USE W3SERVMD, ONLY: ITRACE, NEXTLN, EXTCDE USE CONSTANTS, only: LPDLIB - USE W3ODATMD, ONLY: IAPROC ! IMPLICIT NONE !/ @@ -216,20 +215,16 @@ SUBROUTINE READMSH(NDS,FNAME) !/ !/ local parameters !/ - INTEGER :: i,j,k, NODES, NELTS, ID, KID - INTEGER :: ID1, ID2, KID1, ITMP(3) + INTEGER :: i,j,k, NODES, NELTS + INTEGER :: ITMP(3) INTEGER :: I1, I2, I3 INTEGER(KIND=4) :: Ind,eltype,ntag, INode - CHARACTER :: COMSTR*1, SPACE*1 = ' ', CELS*64 + CHARACTER :: COMSTR*1 REAL, ALLOCATABLE :: TAGS(:) - CHARACTER(LEN=64), ALLOCATABLE :: ELS(:) CHARACTER(LEN=120) :: LINE - CHARACTER(LEN=50) :: CHTMP - CHARACTER(LEN=10) :: A, B, C - INTEGER,ALLOCATABLE :: NELS(:), TRIGPTMP1(:,:), TRIGPTMP2(:,:) + INTEGER,ALLOCATABLE :: TRIGPTMP1(:,:), TRIGPTMP2(:,:) INTEGER(KIND=4),ALLOCATABLE :: IFOUND(:), VERTEX(:), BOUNDTMP(:) DOUBLE PRECISION, ALLOCATABLE :: XYBTMP1(:,:),XYBTMP2(:,:) - REAL :: z OPEN(NDS,FILE = FNAME,STATUS='old') READ (NDS,'(A)') COMSTR @@ -456,11 +451,9 @@ SUBROUTINE READMSH_IOBP(NDS,FNAME) ! 10. Source code : ! !/ ------------------------------------------------------------------- / - USE W3ODATMD, ONLY: NDSE, NDST, NDSO + USE W3ODATMD, ONLY: NDSE USE W3GDATMD USE W3SERVMD, ONLY: ITRACE, NEXTLN, EXTCDE - USE CONSTANTS, only: LPDLIB - USE W3ODATMD, ONLY: IAPROC ! IMPLICIT NONE !/ @@ -473,7 +466,7 @@ SUBROUTINE READMSH_IOBP(NDS,FNAME) !/ INTEGER :: i,j,k, NODES LOGICAL :: lfile_exists - CHARACTER :: COMSTR*1, SPACE*1 = ' ', CELS*64 + CHARACTER :: COMSTR*1 DOUBLE PRECISION, ALLOCATABLE :: XYBTMP1(:,:) INQUIRE(FILE=FNAME, EXIST=lfile_exists) @@ -556,11 +549,6 @@ SUBROUTINE GET_BOUNDARY_STATUS(STATUS) USE W3SERVMD, ONLY: STRACE #endif ! - -#ifdef W3_PDLIB - use yowElementpool, only: ne_global - use yowNodepool, only: np_global -#endif USE W3GDATMD, ONLY : TRIGP, NTRI, NX IMPLICIT NONE !/ @@ -727,8 +715,8 @@ SUBROUTINE READMSHOBC(NDS, FNAME, TMPSTA, UGOBCOK) ! 10. Source code : ! !/ ------------------------------------------------------------------- / - USE W3GDATMD, ONLY: NX, NY, CCON , COUNTCON - USE W3ODATMD, ONLY: NDSE, NDST, NDSO + USE W3GDATMD, ONLY: NX, NY + USE W3ODATMD, ONLY: NDSE USE W3SERVMD, ONLY: ITRACE, NEXTLN, EXTCDE, EXTIOF #ifdef W3_S USE W3SERVMD, ONLY: STRACE @@ -745,9 +733,9 @@ SUBROUTINE READMSHOBC(NDS, FNAME, TMPSTA, UGOBCOK) !/ !/ local parameters !/ - INTEGER :: I, IERR + INTEGER :: IERR INTEGER(KIND=4) :: Ind,ntag, INode - CHARACTER :: COMSTR*1, SPACE*1 = ' ', CELS*64 + CHARACTER :: COMSTR*1 REAL, ALLOCATABLE :: TAGS(:) CHARACTER(LEN=120) :: LINE @@ -836,7 +824,7 @@ SUBROUTINE UG_GETOPENBOUNDARY(TMPSTA,ZBIN,ZLIM) ! 9. Switches : ! ! 10. Source code : - USE W3GDATMD, ONLY: NX, NY, CCON, COUNTCON, IOBP + USE W3GDATMD, ONLY: NX, NY #ifdef W3_S USE W3SERVMD, ONLY: STRACE @@ -947,13 +935,12 @@ SUBROUTINE SPATIAL_GRID #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif - USE W3ODATMD, ONLY: NDSE IMPLICIT NONE ! !local parameters ! - REAL :: TL1, TL2, TL3, TMPTRIGP + REAL :: TMPTRIGP INTEGER :: I1, I2, I3 INTEGER :: K REAL*8 :: PT(3,2) @@ -1060,14 +1047,12 @@ SUBROUTINE NVECTRI ! !local parameter ! - INTEGER :: IP, IE - INTEGER :: I1, I2, I3, I11, I22, I33 + INTEGER :: IE + INTEGER :: I1, I2, I3 ! REAL*8 :: P1(2), P2(2), P3(2) REAL*8 :: R1(2), R2(2), R3(2) REAL*8 :: N1(2), N2(2), N3(2) - REAL*8 :: TMP(3) - REAL*8 :: TMPINV(3) REAL*8 :: PT(3,2) #ifdef W3_S INTEGER :: IENT = 0 @@ -1202,7 +1187,7 @@ SUBROUTINE COUNT(TRIGPTEMP) !/ local parameter integer, allocatable :: conn(:) - INTEGER :: COUNTER, IP, IE, I, J, N(3) + INTEGER :: IP, IE, I, J, N(3) #ifdef W3_S INTEGER :: IENT = 0 #endif @@ -1401,10 +1386,9 @@ SUBROUTINE AREA_SI(IMOD) !/ local parameters - INTEGER :: COUNTER,ifound,alreadyfound - INTEGER :: I, J, K, II - INTEGER :: IP, IE, POS, POS_I, POS_J, POS_K, IP_I, IP_J, IP_K - INTEGER :: I1, I2, I3, IP2 + INTEGER :: I, J, K + INTEGER :: IP, IE, POS, POS_J, POS_K, IP_I, IP_J, IP_K + INTEGER :: I1, I2, I3 INTEGER :: COUNT_MAX DOUBLE PRECISION :: TRIA03 INTEGER, ALLOCATABLE :: PTABLE(:,:) @@ -1714,7 +1698,6 @@ SUBROUTINE IS_IN_UNGRID(IMOD, XTIN, YTIN, ITOUT, IS, JS, RW) #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif - USE W3ODATMD, ONLY: NDSE IMPLICIT NONE !/ ------------------------------------------------------------------- / @@ -1925,7 +1908,6 @@ SUBROUTINE IS_IN_UNGRID2(IMOD, XTIN, YTIN, FORCE, ITOUT, IS, JS, RW) #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif - USE W3ODATMD, ONLY: NDSE IMPLICIT NONE !/ ------------------------------------------------------------------- / @@ -1939,7 +1921,7 @@ SUBROUTINE IS_IN_UNGRID2(IMOD, XTIN, YTIN, FORCE, ITOUT, IS, JS, RW) !/ ------------------------------------------------------------------- / !local parameters - DOUBLE PRECISION :: x1, x2, x3, D1, D2, D3, DISTMIN, DDMIN + DOUBLE PRECISION :: x1, x2, x3, D1, D2, D3 DOUBLE PRECISION :: s1, s2, s3, sg1, sg2, sg3, smin, ssum DOUBLE PRECISION :: y1, y2, y3 INTEGER :: ITRI, ITRIS @@ -2101,12 +2083,12 @@ SUBROUTINE UG_GRADIENTS (PARAM, DIFFX, DIFFY) ! 10. Source code : USE CONSTANTS USE W3GDATMD, ONLY : TRIGP, NTRI, NX, NSEA, MAPFS, CLATIS, & - MAPSTA, ANGLE, FLAGLL, IOBP, IEN, TRIA, NSEAL, NTRI - USE W3ADATMD, ONLY : NSEALM + FLAGLL, IEN, TRIA, NTRI #ifdef W3_PDLIB USE yowElementpool - use yowNodepool, only: PDLIB_IEN, PDLIB_TRIA, NPA + use yowNodepool, only: PDLIB_IEN, PDLIB_TRIA USE yowExchangeModule, only : PDLIB_exchange1Dreal + USE W3GDATMD, ONLY : NSEAL #endif IMPLICIT NONE @@ -2117,16 +2099,17 @@ SUBROUTINE UG_GRADIENTS (PARAM, DIFFX, DIFFY) ! local parameters - INTEGER :: VERTICES(3), NI(3), NI_GL(3) - REAL :: TMP1(3), TMP2(3) - INTEGER :: I, IX, IE, IE_GL + INTEGER :: NI(3) + INTEGER :: IE REAL :: VAR(3), FACT, LATMEAN - REAL :: DIFFXTMP, DIFFYTMP REAL :: DEDX(3), DEDY(3) REAL :: DVDXIE, DVDYIE - REAL :: WEI_LOCAL(NSEAL) real, allocatable :: wei(:) - REAL*8 :: RTMP(NSEAL) +#ifdef W3_PDLIB + INTEGER :: NI_GL(3) + INTEGER :: IE_GL + REAL :: WEI_LOCAL(NSEAL) +#endif allocate(wei(nx)) DIFFX = 0. @@ -2249,10 +2232,14 @@ SUBROUTINE W3NESTUG(DISTMIN,FLOK) !/ ------------------------------------------------------------------- / #ifdef W3_S USE W3SERVMD, ONLY: STRACE +#endif + ! +#ifdef W3_T + USE W3GDATMD, ONLY: MAPSF #endif ! USE W3ODATMD, ONLY: NBI, NDSE, ISBPI, XBPI, YBPI - USE W3GDATMD, ONLY: NX, XGRD, YGRD, MAPSTA, MAPFS, MAPSF + USE W3GDATMD, ONLY: NX, XGRD, YGRD, MAPSTA, MAPFS REAL, INTENT(IN) :: DISTMIN @@ -2392,8 +2379,6 @@ SUBROUTINE SET_IOBP (MASK, STATUS) ! ! USE W3GDATMD, ONLY: NX, NTRI, TRIGP - USE W3ODATMD, ONLY: IAPROC - IMPLICIT NONE @@ -2408,7 +2393,7 @@ SUBROUTINE SET_IOBP (MASK, STATUS) INTEGER :: ISFINISHED !, INEXT, IPREV INTEGER :: INEXT(3), IPREV(3) INTEGER :: ZNEXT, IP, I, IE, IPNEXT, IPPREV, COUNT - integer nb0, nb1, nbM1 + STATUS = -1 INEXT=(/ 2, 3, 1 /) !IPREV=1+MOD(I+1,3) IPREV=(/ 3, 1, 2 /) !INEXT=1+MOD(I,3) @@ -2903,19 +2888,13 @@ SUBROUTINE SET_UG_IOBP() USE CONSTANTS ! ! - USE W3GDATMD, ONLY: NX, NY, NSEA, MAPFS, & - NK, NTH, DTH, XFR, MAPSTA, COUNTRI, & - ECOS, ESIN, IEN, NTRI, TRIGP, & - IOBP,IOBPD, IOBPA, & + USE W3GDATMD, ONLY: NX, NTH, MAPSTA, ECOS, ESIN, IEN, & + NTRI, TRIGP, IOBP,IOBPD, IOBPA + #ifdef W3_REF1 - REFPARS, REFLC, REFLD, & + USE W3GDATMD, ONLY: REFPARS, REFLC, REFLD, MAPFS, DTH #endif - ANGLE0, ANGLE - USE W3ODATMD, ONLY: TBPI0, TBPIN, FLBPI - USE W3ADATMD, ONLY: CG, CX, CY, ATRNX, ATRNY, ITIME, CFLXYMAX - USE W3IDATMD, ONLY: FLCUR - USE W3ODATMD, only : IAPROC #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif @@ -2928,9 +2907,7 @@ SUBROUTINE SET_UG_IOBP() !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: ITH, IX, I, J, IP, IE, NDIRSUM - REAL (KIND = 8) :: COSSUM, SINSUM - REAL (KIND = 8) :: DIRMIN, DIRMAX, SHIFT, TEMPO, DIRCOAST + INTEGER :: ITH, I, IP, IE REAL (KIND = 8) :: X1, X2, Y1, Y2, DXP1, DXP2, DXP3 REAL (KIND = 8) :: DYP1, DYP2, DYP3, eDet1, eDet2, EVX, EVY REAL(KIND=8), PARAMETER :: THR = TINY(1.) @@ -2940,6 +2917,11 @@ SUBROUTINE SET_UG_IOBP() #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif + +#ifdef W3_REF1 + INTEGER :: NDIRSUM + REAL (KIND = 8) :: COSSUM, SINSUM, DIRCOAST +#endif !/ ------------------------------------------------------------------- / ! ! 1. Preparations --------------------------------------------------- * @@ -3130,7 +3112,6 @@ SUBROUTINE FIX_PERIODCITY(I1,I2,I3,XGRD,YGRD,PT) ! ! Local variables. ! ---------------------------------------------------------------- - INTEGER :: I INTEGER :: R1GT180, R2GT180, R3GT180 ! ---------------------------------------------------------------- ! diff --git a/model/src/w3updtmd.F90 b/model/src/w3updtmd.F90 index d7cd44ba55..6db4e4f322 100644 --- a/model/src/w3updtmd.F90 +++ b/model/src/w3updtmd.F90 @@ -247,7 +247,7 @@ SUBROUTINE W3UCUR ( FLFRST ) ! 10. Source code : ! !/ ------------------------------------------------------------------- / - USE W3GDATMD, ONLY: NX, NY, NSEA, MAPSF + USE W3GDATMD, ONLY: NSEA, MAPSF #ifdef W3_SMC USE W3GDATMD, ONLY: NARC, NGLO, ANGARC USE W3GDATMD, ONLY: FSWND, ARCTC @@ -591,7 +591,7 @@ SUBROUTINE W3UWND ( FLFRST, VGX, VGY ) ! 10. Source code : ! !/ ------------------------------------------------------------------- / - USE W3GDATMD, ONLY: NX, NY, NSEA, MAPSF + USE W3GDATMD, ONLY: NSEA, MAPSF #ifdef W3_WCOR USE W3GDATMD, ONLY: WWCOR #endif @@ -604,10 +604,13 @@ SUBROUTINE W3UWND ( FLFRST, VGX, VGY ) #ifdef W3_SMC USE W3GDATMD, ONLY: NARC, NGLO, ANGARC, ARCTC, FSWND #endif - USE W3WDATMD, ONLY: TIME, ASF - USE W3ADATMD, ONLY: DW, CX, CY, UA, UD, U10, U10D, AS, & + USE W3WDATMD, ONLY: TIME + USE W3ADATMD, ONLY: CX, CY, UA, UD, U10, U10D, AS, & UA0, UAI, UD0, UDI, AS0, ASI USE W3IDATMD, ONLY: TW0, WX0, WY0, DT0, TWN, WXN, WYN, DTN, FLCUR +#ifdef W3_STAB2 + USE W3WDATMD, ONLY: ASF +#endif !/ IMPLICIT NONE !/ @@ -623,15 +626,19 @@ SUBROUTINE W3UWND ( FLFRST, VGX, VGY ) #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif - REAL :: D0, DN, DD, DT0N, DT0T, RD, UI2, & - UXR, UYR + REAL :: D0, DN, DD, DT0N, DT0T, RD, UXR, UYR +#if defined(W3_OMPG) || defined(W3_WNT2) + REAL :: UI2 +#endif #ifdef W3_WNT2 REAL :: RD2 #endif #ifdef W3_STAB2 REAL :: STAB0, STAB, THARG1, THARG2, COR1, COR2 #endif +#if defined(W3_OMPG) || defined(W3_SMC) REAL :: UDARC +#endif !/ !/ ------------------------------------------------------------------- / !/ @@ -950,12 +957,19 @@ SUBROUTINE W3UTAU ( FLFRST ) #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif - REAL :: D0, DN, DD, DT0N, DT0T, RD, MI2, & - MXR, MYR + REAL :: D0, DN, DD, DT0N, DT0T, RD +#ifdef W3_OMPG + REAL :: MXR, MYR +#endif +#if defined(W3_OMPG) || defined(W3_WNT2) + REAL :: MI2 +#endif #ifdef W3_WNT2 REAL :: RD2 #endif +#if defined(W3_OMPG) || defined(W3_SMC) REAL :: MDARC +#endif !/ !/ ------------------------------------------------------------------- / !/ @@ -1169,8 +1183,8 @@ SUBROUTINE W3UINI ( A ) ! 10. Source code : ! !/ ------------------------------------------------------------------- / - USE W3GDATMD, ONLY: NX, NY, NSEA, NSEAL, MAPSF, & - NK, NTH, TH, SIG, DTH, DSIP, UNGTYPE, & + USE W3GDATMD, ONLY : NSEAL, MAPSF, & + NK, NTH, TH, SIG, DTH, UNGTYPE, & RLGTYPE, CLGTYPE, GTYPE, FLAGLL, & HPFAC, HQFAC, FETCH USE W3ADATMD, ONLY: U10, U10D, CG @@ -1178,6 +1192,7 @@ SUBROUTINE W3UINI ( A ) USE W3PARALL, only : GET_JSEA_IBELONG #ifdef W3_T USE W3ARRYMD, ONLY : PRTBLK + USE W3GDATMD, ONLY : NX, NY, NSEA, DSIP #endif ! IMPLICIT NONE @@ -1190,23 +1205,21 @@ SUBROUTINE W3UINI ( A ) !/ ------------------------------------------------------------------- / !/ Local variables !/ - INTEGER :: IX, IY, ISEA, JSEA, IK, ITH, ISPROC + INTEGER :: IX, IY, ISEA, JSEA, IK, ITH #ifdef W3_S INTEGER, SAVE :: IENT = 0 -#endif -#ifdef W3_T - INTEGER :: IX0, IXN, MAPOUT(NX,NY) - INTEGER :: NXP = 60 #endif REAL :: ALFA(NSEAL), FP(NSEAL), YLN(NSEAL), & AA, BB, CC REAL :: XGR, U10C, U10DIR, XSTAR, FSTAR, & GAMMA, FR, D1(NTH), D1INT, F1, F2 - REAL :: ETOT, E1I REAL :: U10MIN = 1. REAL :: U10MAX = 20. #ifdef W3_T + INTEGER :: IX0, IXN, MAPOUT(NX,NY) + INTEGER :: NXP = 60 REAL :: HSIG(NX,NY) + REAL :: ETOT, E1I #endif !/ !/ ------------------------------------------------------------------- / @@ -1430,11 +1443,14 @@ SUBROUTINE W3UBPT ! 10. Source code : ! !/ ------------------------------------------------------------------- / - USE W3GDATMD, ONLY: NSPEC, MAPWN, SIG2, DDEN + USE W3GDATMD, ONLY: NSPEC, MAPWN, SIG2 #ifdef W3_RTD !! Use rotation angle and action conversion sub. JGLi12Jun2012 USE W3GDATMD, ONLY: NK, NTH, NSPEC, AnglD, PoLat USE W3SERVMD, ONLY: W3ACTURN +#endif +#ifdef W3_T0 + USE W3GDATMD, ONLY: DDEN #endif USE W3ADATMD, ONLY: CG USE W3ODATMD, ONLY: NBI, ABPI0, ABPIN, ISBPI, IPBPI, RDBPI, & @@ -1619,8 +1635,12 @@ SUBROUTINE W3UIC1( FLFRST ) ! !/ ------------------------------------------------------------------- / USE W3GDATMD, ONLY: NSEA, NSEA, MAPSF, IICEHMIN, IICEHFAC - USE W3WDATMD, ONLY: TIME, TIC1, ICEH - USE W3IDATMD, ONLY: TI1, ICEP1, FLIC1 + USE W3WDATMD, ONLY: TIC1, ICEH + USE W3IDATMD, ONLY: TI1, ICEP1 + +#ifdef W3_T + USE W3WDATMD, ONLY: TIME +#endif !/ IMPLICIT NONE !/ @@ -1732,7 +1752,11 @@ SUBROUTINE W3UIC5( FLFRST ) !/ ------------------------------------------------------------------- / USE W3IDATMD, ONLY: TI5, ICEP5 USE W3GDATMD, ONLY: NSEA, MAPSF - USE W3WDATMD, ONLY: TIME, TIC5, ICE, ICEH, ICEF, ICEDMAX + USE W3WDATMD, ONLY: TIC5, ICE, ICEH, ICEF, ICEDMAX + +#ifdef W3_T + USE W3WDATMD, ONLY: TIME +#endif !/ IMPLICIT NONE !/ @@ -1884,8 +1908,11 @@ SUBROUTINE W3UICE ( VA ) !/ ------------------------------------------------------------------- / USE W3GDATMD, ONLY: NX, NY, NSEA, MAPSF, MAPSTA, MAPST2, & NSPEC, FICEN - USE W3WDATMD, ONLY: TIME, TICE, ICE, BERG, UST + USE W3WDATMD, ONLY: TICE, ICE, BERG, UST USE W3ADATMD, ONLY: NSEALM, CHARN +#ifdef W3_T + USE W3WDATMD, ONLY: TIME +#endif #if defined W3_ST3 || defined(W3_ST4) USE W3GDATMD, ONLY: AALPHA #endif @@ -2150,9 +2177,9 @@ SUBROUTINE W3ULEV ( A, VA ) !/ ------------------------------------------------------------------- / USE W3GDATMD, ONLY: NX, NY, NSEA, NSEAL, MAPSF, MAPSTA, MAPST2, & ZB, DMIN, NK, NTH, NSPEC, SIG, DSIP, & - MAPWN, MAPTH, FACHFA, GTYPE, UNGTYPE, W3SETREF - USE W3WDATMD, ONLY: TIME, TLEV, WLV, UST - USE W3ADATMD, ONLY: CG, WN, DW, HS + MAPWN, FACHFA, GTYPE, UNGTYPE, W3SETREF + USE W3WDATMD, ONLY: TLEV, WLV, UST + USE W3ADATMD, ONLY: CG, WN, DW USE W3IDATMD, ONLY: TLN, WLEV USE W3SERVMD, ONLY: EXTCDE USE W3DISPMD, ONLY: WAVNU1 @@ -2176,6 +2203,11 @@ SUBROUTINE W3ULEV ( A, VA ) #ifdef W3_T3 USE W3ARRYMD, ONLY: PRT2DS + USE W3GDATMD, ONLY: MAPTH +#endif + +#if defined(W3_T) || defined(W3_TIDE) + USE W3WDATMD, ONLY: TIME #endif !/ IMPLICIT NONE @@ -2192,7 +2224,7 @@ SUBROUTINE W3ULEV ( A, VA ) #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif - INTEGER :: MAPDRY(NY,NX), ISPROC + INTEGER :: MAPDRY(NY,NX) REAL :: DWO(NSEA), KDCHCK, WNO(0:NK+1), & CGO(0:NK+1), DEPTH, & RDK, RD1, RD2, TA(NTH,NK), & @@ -2677,10 +2709,9 @@ SUBROUTINE W3URHO ( FLFRST ) #ifdef W3_SMC USE W3GDATMD, ONLY: FSWND #endif - USE W3WDATMD, ONLY: TIME, TRHO, RHOAIR + USE W3WDATMD, ONLY: TIME, RHOAIR USE W3IDATMD, ONLY: TR0, TRN, RH0, RHN USE W3ADATMD, ONLY: RA0, RAI - USE W3ODATMD, ONLY: IAPROC, NAPROC !/ IMPLICIT NONE !/ @@ -2857,8 +2888,7 @@ SUBROUTINE W3UTRN ( TRNX, TRNY ) ! !/ ------------------------------------------------------------------- / USE W3GDATMD, ONLY: NX, NY, NSEA, MAPSTA, MAPSF, & - TRFLAG, FICE0, FICEN, FICEL, & - RLGTYPE, CLGTYPE, GTYPE, FLAGLL, & + TRFLAG, FICE0, FICEN, FICEL, RLGTYPE, CLGTYPE, FLAGLL, & HPFAC, HQFAC, FFACBERG USE W3WDATMD, ONLY: ICE, BERG USE W3ADATMD, ONLY: ATRNX, ATRNY @@ -3276,7 +3306,6 @@ SUBROUTINE W3DZXY( ZZ, ZUNIT, DZZDX, DZZDY ) USE W3GDATMD, ONLY: NX, NY, NSEA, MAPSTA, MAPFS, MAPFS, & DPDX, DPDY, DQDX, DQDY, FLAGLL, ICLOSE, & ICLOSE_NONE, ICLOSE_SMPL, ICLOSE_TRPL - USE W3ODATMD, ONLY: NDSE, IAPROC, NAPERR, NAPROC USE W3SERVMD, ONLY: EXTCDE #ifdef W3_T USE W3ARRYMD, ONLY : PRTBLK @@ -3293,7 +3322,7 @@ SUBROUTINE W3DZXY( ZZ, ZUNIT, DZZDX, DZZDY ) REAL, INTENT(IN) :: ZZ(NSEA) CHARACTER, INTENT(IN) :: ZUNIT*(*) REAL, INTENT(OUT) :: DZZDX(NY,NX), DZZDY(NY,NX) - INTEGER :: ISEA, IX, IY, IXP, IXM, IYP, IYM + INTEGER :: IX, IY, IXP, IXM, IYP, IYM #ifdef W3_T INTEGER :: ISX, ISY, MAPOUT(NX,NY) #endif diff --git a/model/src/w3uqckmd.F90 b/model/src/w3uqckmd.F90 index edcf0e0dea..d5307bd8a5 100644 --- a/model/src/w3uqckmd.F90 +++ b/model/src/w3uqckmd.F90 @@ -220,7 +220,7 @@ SUBROUTINE W3QCK1 (MX, MY, NX, NY, CFLL, Q, CLOSE, INC, & !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: IXY, IP, IXYC, IXYU, IXYD, IY, IX, & + INTEGER :: IXY, IP, IXYC, IXYU, IXYD, IY, & IAD00, IAD02, IADN0, IADN1, IADN2 #ifdef W3_S INTEGER, SAVE :: IENT = 0 @@ -238,6 +238,9 @@ SUBROUTINE W3QCK1 (MX, MY, NX, NY, CFLL, Q, CLOSE, INC, & #endif #ifdef W3_T2 REAL :: QOLD +#endif +#if defined(W3_T0) || defined(W3_T1) + INTEGER :: IX #endif !/ !/ ------------------------------------------------------------------- / @@ -615,7 +618,7 @@ SUBROUTINE W3QCK2 (MX, MY, NX, NY, VELO, DT, DX1, DX2, Q, CLOSE,& !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: IXY, IP, IXYC, IXYU, IXYD, IY, IX, & + INTEGER :: IXY, IP, IXYC, IXYU, IXYD, IY, & IAD00, IAD02, IADN0, IADN1, IADN2 #ifdef W3_S INTEGER, SAVE :: IENT @@ -633,6 +636,9 @@ SUBROUTINE W3QCK2 (MX, MY, NX, NY, VELO, DT, DX1, DX2, Q, CLOSE,& #endif #ifdef W3_T2 REAL :: QOLD +#endif +#if defined(W3_T0) || defined(W3_T1) + INTEGER :: IX #endif !/ !/ ------------------------------------------------------------------- / @@ -1017,7 +1023,7 @@ SUBROUTINE W3QCK3 (MX, MY, NX, NY, CFLL, TRANS, Q, CLOSE, & !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: IXY, IP, IXYC, IXYU, IXYD, IY, IX, & + INTEGER :: IXY, IP, IXYC, IXYU, IXYD, IY, & IAD00, IAD02, IADN0, IADN1, IADN2, & JN, JP #ifdef W3_S @@ -1036,6 +1042,9 @@ SUBROUTINE W3QCK3 (MX, MY, NX, NY, CFLL, TRANS, Q, CLOSE, & #endif #ifdef W3_T2 REAL :: QOLD +#endif +#if defined(W3_T0) || defined(W3_T1) + INTEGER :: IX #endif !/ !/ ------------------------------------------------------------------- / diff --git a/model/src/w3wavemd.F90 b/model/src/w3wavemd.F90 index 13c879a9b8..675c76458b 100644 --- a/model/src/w3wavemd.F90 +++ b/model/src/w3wavemd.F90 @@ -409,13 +409,13 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & USE CONSTANTS, ONLY : UNDEF, RADIUS, DERA, DAIR, SRCE_DIRECT, LPDLIB, & SRCE_IMP_POST, SRCE_IMP_PRE, TPIINV !/ - USE W3GDATMD, ONLY : IGRID, NSEAL, NSPEC, NX, NY, NK, NSEA, & - GTYPE, UNGTYPE, SMCTYPE, RSTYPE, FILEXT, & + USE W3GDATMD, ONLY : IGRID, NSEAL, NSPEC, NX, NY, NK, & + GTYPE, UNGTYPE, SMCTYPE, RSTYPE, & MAPSF, MAPFS, MAPSTA, IOBP, CTHG0S, & FLCTH, FSREFRACTION, FLCK, FSFREQSHIFT, FLAGLL, & FLDRY, FSTOTALIMP, FLCX, FLCY, FLSOU, FLAGST, & SIG, CLATS, TRNX, TRNY, DTMAX, DTCFLI, DTH, & - DMIN, W3SETG, MAPST2 + DMIN, W3SETG !/ USE W3WDATMD, ONLY : UST, IWDATA, TIME, TLEV, TICE, TIC1, VA, ASF, & RHOAIR, USTDIR, ICE, ICEH, ICEF, ICEDMAX, BERG, & @@ -431,8 +431,8 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & PHIOC, TWS, PHICE, CHARN, W3SETA, ITSTEP !/ USE W3IDATMD, ONLY : IIDATA, INFLAGS1, FLLEV, FLCUR, FLWIND, FLICE, & - FLTAUA, FLRHOA, FLIC1, FLIC2, FLIC3, FLIC4, & - FLIC5, TLN, TC0, TCN, TW0, TWN, TIN, TU0, TUN, & + FLTAUA, FLRHOA, FLIC1, & + TLN, TC0, TCN, TW0, TWN, TIN, TU0, TUN, & TI1, TGN, TG0, GA0, GAN, GD0, GDN, TDN, TRN, & TR0, W3SETI !/ @@ -440,7 +440,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & NDS, NOGE, NAPLOG, NAPOUT, NDSO, NDSE, NDST, & NAPROC, NAPERR, SCREEN, IAPROC, IOUTP, NOTYPE, & NAPBPT, TOFRST, TONEXT, TBPIN, TBPI0, TOLAST, & - DTOUT, NAPFLD, NAPPNT, W3SETO, FNMRST + DTOUT, NAPFLD, NAPPNT, W3SETO !/ USE W3UPDTMD, ONLY : W3DZXY, W3UWND, W3UINI, W3UTAU, W3URHO, W3UBPT, & W3UICE, W3ULEV, W3UCUR, W3UIC1, W3UTRN @@ -448,11 +448,13 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & USE W3SRCEMD, ONLY : W3SRCE !/ #ifdef W3_MPI - USE W3ODATMD, ONLY : NRQGO, NRQGO2, IRQGO, IRQGO2, NRQPO, NRQPO2, & - IRQPO1, IRQPO2 + USE W3ODATMD, ONLY : NRQGO, NRQGO2, IRQGO, IRQGO2, NRQPO, IRQPO1 USE W3ODATMD, ONLY : NRQRS, IRQRS, IRQPO1, NRQBP, IRQBP1, IRQBP2, & NRQBP2 - USE W3ADATMD, ONLY : NRQSG1, IRQSG1, NRQSG1, MPI_COMM_WAVE + USE W3ADATMD, ONLY : NRQSG1, IRQSG1, NRQSG1 +#endif +#if defined(W3_MPI) && defined(W3_SMC) + USE W3ADATMD, ONLY : MPI_COMM_WAVE #endif #ifdef W3_NL5 USE W3ODATMD, ONLY : TOSNL5 @@ -507,11 +509,10 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & USE PDLIB_W3PROFSMD, only : APPLY_BOUNDARY_CONDITION_VA USE PDLIB_W3PROFSMD, only : PDLIB_W3XYPUG, PDLIB_W3XYPUG_BLOCK_IMPLICIT, PDLIB_W3XYPUG_BLOCK_EXPLICIT USE PDLIB_W3PROFSMD, only : ALL_VA_INTEGRAL_PRINT, ALL_VAOLD_INTEGRAL_PRINT, ALL_FIELD_INTEGRAL_PRINT - USE W3PARALL, only : PDLIB_NSEAL, PDLIB_NSEALM - USE yowNodepool, only: npa, iplg, np + USE yowNodepool, only: np USE W3WDATMD, ONLY : VAOLD, VSTOT, VDTOT, SHAVETOT USE W3GDATMD, ONLY : FSSOURCE, FSTOTALEXP - USE W3GDATMD, ONLY : IOBP_LOC, IOBPD_LOC, IOBPA_LOC, IOBDP_LOC + USE W3GDATMD, ONLY : IOBP_LOC, IOBPA_LOC, IOBDP_LOC #endif !/ USE W3SERVMD, ONLY : EXTCDE, WWTIME @@ -519,11 +520,11 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & #ifdef W3_IC3 USE W3SIC3MD, ONLY : CALLEDIC3TABLE, IC3TABLE_CHENG, W3IC3WNCG_V1, W3IC3WNCG_CHENG USE W3GDATMD, ONLY : IC3PARS - USE W3IDATMD, ONLY : ICEP1, ICEP2, ICEP3, ICEP4 + USE W3IDATMD, ONLY : ICEP1, ICEP2, ICEP3, ICEP4, FLIC2, FLIC3, FLIC4 #endif #ifdef W3_IS2 USE W3WDATMD, ONLY : TIC5 - USE W3IDATMD, ONLY : TI5 + USE W3IDATMD, ONLY : TI5, FLIC5 USE W3UPDTMD, ONLY : W3UIC5 #endif #ifdef W3_UOST @@ -550,7 +551,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & #ifdef W3_PDLIB USE PDLIB_FIELD_VEC, only : DO_OUTPUT_EXCHANGES - USE PDLIB_W3PROFSMD, ONLY: ASPAR_JAC, ASPAR_DIAG_ALL, B_JAC + USE PDLIB_W3PROFSMD, ONLY: ASPAR_JAC, B_JAC USE W3PARALL, only : LSLOC #endif #ifdef W3_TIMINGS @@ -559,10 +560,19 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & #ifdef W3_PIO use wav_restart_mod , only : write_restart use wav_history_mod , only : write_history + use w3odatmd , only : histwr, rstwr, user_restfname + use w3timemd , only : set_user_timestring + USE W3ODATMD, ONLY : FNMRST + USE W3GDATMD, ONLY : MAPST2 #endif - use w3odatmd , only : histwr, rstwr, use_historync, use_restartnc, user_restfname + use w3odatmd , only : use_historync, use_restartnc use w3odatmd , only : logfile_is_assigned, verboselog - use w3timemd , only : set_user_timestring +#if defined(W3_T) || defined(W3_REFRX) + USE W3GDATMD, ONLY : NSEA +#endif +#if defined(W3_T) || defined(W3_SBS) + USE W3GDATMD, ONLY : FILEXT +#endif ! #ifdef W3_MPI use mpi_f08 @@ -587,15 +597,16 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif - INTEGER :: IP INTEGER :: TCALC(2), IT, IT0, NT, ITEST, & - ITLOC, ITLOCH, NTLOC, ISEA, JSEA, & - IX, IY, ISPEC, J, TOUT(2), TLST(2), & - REFLED(6), IK, ITH, IS, NKCFL - INTEGER :: ISP, IP_glob + ITLOC, ITLOCH, NTLOC, ISEA, JSEA, & + IX, IY, ISPEC, J, TOUT(2), TLST(2), & + REFLED(6), IK, NKCFL INTEGER :: TTEST(2),DTTEST - REAL :: ICEDAVE ! +#ifdef W3_DEBUGRUN + INTEGER :: IS + LOGICAL :: FLAG0 = .FALSE. +#endif #ifdef W3_MPI LOGICAL :: SBSED #endif @@ -611,13 +622,15 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & #endif INTEGER :: IXrel REAL :: DTTST, DTTST1, DTTST2, DTTST3, & - DTL0, DTI0, DTR0, DTI10, DTI50, & - DTGA, DTG, DTGpre, DTRES, & - FAC, VGX, VGY, FACK, FACTH, & - FACX, XXX, REFLEC(4), & - DELX, DELY, DELA, DEPTH, D50, PSIC + DTL0, DTI0, DTI10, DTGA, DTG, DTRES, & + FAC, VGX, VGY, FACK, FACTH, & + FACX, XXX, REFLEC(4), & + DELX, DELY, DELA, DEPTH, D50, PSIC REAL :: VSioDummy(NSPEC), VDioDummy(NSPEC), VAoldDummy(NSPEC) LOGICAL :: SHAVETOTioDummy +#ifdef W3_IS2 + REAL :: DTI50 +#endif #ifdef W3_SEC1 REAL :: DTGTEMP #endif @@ -637,9 +650,11 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & ! LOGICAL :: FLACT, FLZERO, FLFRST, FLMAP, TSTAMP,& SKIP_O, FLAG_O, FLDDIR, READBC, & - FLAG0 = .FALSE., FLOUTG = .false., FLPFLD, & + FLOUTG = .false., FLPFLD, & FLPART, LOCAL, FLOUTG2 = .false. - ! +#ifdef W3_DEBUGRUN + LOGICAL :: FLAG0 = .FALSE. +#endif #ifdef W3_MPI LOGICAL :: FLGMPI(0:8) #endif @@ -652,11 +667,9 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & CHARACTER(LEN=21) :: IDACT CHARACTER(LEN=16) :: OUTID CHARACTER(LEN=23) :: IDTIME - INTEGER eIOBP - INTEGER ITH_F #ifdef W3_PDLIB - REAL :: VS_SPEC(NSPEC) - REAL :: VD_SPEC(NSPEC) + REAL :: DTGpre + INTEGER :: IP #endif ! #ifdef W3_SBS @@ -673,8 +686,10 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT & REAL :: BACANGL #endif integer :: memunit +#ifdef W3_PIO character(len=16) :: user_timestring !YYYY-MM-DD-SSSSS character(len=256) :: fname +#endif !/ ------------------------------------------------------------------- / ! 0. Initializations ! @@ -3131,13 +3146,16 @@ SUBROUTINE W3GATH ( ISPEC, FIELD ) USE W3SERVMD, ONLY: STRACE #endif !/ - USE W3GDATMD, ONLY: NSPEC, NX, NY, NSEA, NSEAL, MAPSF, DMIN + USE W3GDATMD, ONLY: NX, NY, NSEA, MAPSF USE W3PARALL, ONLY: INIT_GET_ISEA USE W3WDATMD, ONLY: A => VA #ifdef W3_MPI USE W3ADATMD, ONLY: MPIBUF, BSTAT, IBFLOC, ISPLOC, BISPL, & NSPLOC, NRQSG2, IRQSG2, GSTORE - USE W3ODATMD, ONLY: NDST, IAPROC, NAPROC, NOTYPE + USE W3GDATMD, ONLY: NSEAL, NSPEC +#endif +#ifdef W3_MPIT + USE W3ODATMD, ONLY: NDST #endif !/ ! @@ -3439,7 +3457,7 @@ SUBROUTINE W3SCAT ( ISPEC, MAPSTA, FIELD ) ! 10. Source code : ! !/ ------------------------------------------------------------------- / - USE W3GDATMD, ONLY: NSEA, NSEAL, MAPSF, NSPEC, NX, NY + USE W3GDATMD, ONLY: NSEA, MAPSF, NX, NY #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif @@ -3448,12 +3466,11 @@ SUBROUTINE W3SCAT ( ISPEC, MAPSTA, FIELD ) #ifdef W3_MPI USE W3ADATMD, ONLY: MPIBUF, BSTAT, IBFLOC, ISPLOC, BISPL, & NSPLOC, NRQSG2, IRQSG2, SSTORE + USE W3GDATMD, ONLY: NSEAL, NSPEC #endif +#ifdef W3_MPIT USE W3ODATMD, ONLY: NDST -#ifdef W3_MPI - USE W3ODATMD, ONLY: IAPROC, NAPROC #endif - USE CONSTANTS, ONLY : LPDLIB USE W3PARALL, only: INIT_GET_ISEA !/ ! @@ -3739,8 +3756,11 @@ SUBROUTINE W3NMIN ( MAPSTA, FLAG0 ) #endif !/ USE W3GDATMD, ONLY: NSEA, MAPSF, NX, NY - USE W3ODATMD, ONLY: NDST, NAPROC + USE W3ODATMD, ONLY: NAPROC USE W3PARALL, ONLY: INIT_GET_JSEA_ISPROC +#ifdef W3_T + USE W3ODATMD, ONLY: NDST +#endif !/ !/ !/ ------------------------------------------------------------------- / diff --git a/model/src/w3wdasmd.F90 b/model/src/w3wdasmd.F90 index e313f8087d..afab3ce617 100644 --- a/model/src/w3wdasmd.F90 +++ b/model/src/w3wdasmd.F90 @@ -194,12 +194,14 @@ SUBROUTINE W3WDAS ( DASFLAG, RECL, NDAT, DATA0, DATA1, DATA2 ) USE W3GDATMD USE W3WDATMD USE W3ADATMD - USE W3ODATMD, ONLY: NDSO, NDSE, NDST, SCREEN, NAPROC, IAPROC, & - NAPLOG, NAPOUT, NAPERR #ifdef W3_S USE W3SERVMD, ONLY: STRACE #endif ! +#ifdef W3_T + USE W3ODATMD, ONLY: NDSO, NDSE, NDST, SCREEN, NAPROC, IAPROC, NAPOUT, NAPERR +#endif + ! #ifdef W3_MPI use mpi_f08 #endif @@ -218,9 +220,8 @@ SUBROUTINE W3WDAS ( DASFLAG, RECL, NDAT, DATA0, DATA1, DATA2 ) !/ ------------------------------------------------------------------- / !/ Local parameters : !/ - INTEGER :: J #ifdef W3_T - INTEGER :: MREC, MDAT, IREC, IDAT + INTEGER :: MREC, MDAT, IREC, IDAT, J #endif #ifdef W3_S INTEGER, SAVE :: IENT = 0 diff --git a/model/src/w3wdatmd.F90 b/model/src/w3wdatmd.F90 index a560063152..6d58079e69 100644 --- a/model/src/w3wdatmd.F90 +++ b/model/src/w3wdatmd.F90 @@ -421,9 +421,7 @@ SUBROUTINE W3DIMW ( IMOD, NDSE, NDST, F_ONLY ) USE W3GDATMD, ONLY: QI5NNZ #endif #ifdef W3_PDLIB - use yowNodepool, only: npa, np - use yowRankModule, only : rank - USE W3GDATMD, ONLY: GTYPE, UNGTYPE + USE W3GDATMD, ONLY: UNGTYPE #endif #ifdef W3_S USE W3SERVMD, ONLY: STRACE @@ -443,9 +441,6 @@ SUBROUTINE W3DIMW ( IMOD, NDSE, NDST, F_ONLY ) !/ INTEGER :: JGRID, NSEALM, NSEATM INTEGER :: NSEAL_DUMMY, ISEA -#ifdef W3_PDLIB - INTEGER IRANK -#endif #ifdef W3_S INTEGER, SAVE :: IENT = 0 #endif diff --git a/model/src/wav_comp_nuopc.F90 b/model/src/wav_comp_nuopc.F90 index 7975a51d34..c64bbdeb04 100644 --- a/model/src/wav_comp_nuopc.F90 +++ b/model/src/wav_comp_nuopc.F90 @@ -236,7 +236,10 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) ! local variables type(ESMF_Time) :: esmfTime, startTime, currTime, stopTime - type(ESMF_TimeInterval) :: TimeOffset, timeStep + type(ESMF_TimeInterval) :: TimeOffset +#ifdef W3_CESMCOUPLED + type(ESMF_TimeInterval) :: timeStep +#endif type(ESMF_Calendar) :: calendar type(ESMF_Info) :: info type(ESMF_VM) :: vm diff --git a/model/src/wav_import_export.F90 b/model/src/wav_import_export.F90 index d4ef8037df..c3344daa39 100644 --- a/model/src/wav_import_export.F90 +++ b/model/src/wav_import_export.F90 @@ -285,9 +285,6 @@ subroutine import_fields( gcomp, time0, timen, rc ) use w3idatmd , only: HSL #else use wav_shr_mod , only : casename -#ifdef W3_MPI - use wmmdatmd , only: mpi_comm_grd -#endif #endif ! input/output variables @@ -568,7 +565,7 @@ subroutine export_fields (gcomp, rc) !--------------------------------------------------------------------------- use wav_kind_mod, only : R8 => SHR_KIND_R8 - use w3adatmd , only : USSX, USSY, USSP, HS, tauox, tauoy, wnmean, taubbl + use w3adatmd , only : USSP, tauox, tauoy, wnmean, taubbl use w3adatmd , only : w3seta use w3idatmd , only : w3seti use w3wdatmd , only : va, w3setw @@ -578,7 +575,7 @@ subroutine export_fields (gcomp, rc) #ifdef W3_CESMCOUPLED use w3odatmd , only : naproc, iaproc use w3wdatmd , only : ASF, UST - use w3adatmd , only : USSHX, USSHY, UD + use w3adatmd , only : USSX, USSY, USSHX, USSHY, UD, HS use w3idatmd , only : HSL #endif @@ -598,8 +595,10 @@ subroutine export_fields (gcomp, rc) real(r8), pointer :: z0rlen(:) real(r8), pointer :: charno(:) +#ifdef W3_CESMCOUPLED real(r8), pointer :: sw_lamult(:) real(r8), pointer :: sw_lasl(:) +#endif real(r8), pointer :: sw_ustokes(:) real(r8), pointer :: sw_vstokes(:) diff --git a/model/src/wav_shel_inp.F90 b/model/src/wav_shel_inp.F90 index 2fb18b8d1f..f6134c2139 100644 --- a/model/src/wav_shel_inp.F90 +++ b/model/src/wav_shel_inp.F90 @@ -170,14 +170,15 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf character(len=256) :: tmpline, test character(len=1024) :: fldrst='' character(len=80) :: linein - character(len=30) :: ofile ! w3_cou only character(len=8) :: words(7)='' logical :: flflg, flhom, tflagi, prtfrm, flgnml, flh(-7:10) - integer :: thrlev = 1 integer :: time0(2), timen(2), ttime(2) character(len=80) :: msg1 logical :: is_open integer :: memunit +#ifdef W3_OMPH + integer :: thrlev = 1 +#endif data idflds / 'ice param. 1 ' , 'ice param. 2 ' , & 'ice param. 3 ' , 'ice param. 4 ' , & @@ -388,8 +389,14 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf if ( iaproc .eq. napout ) write (ndso,921) idflds(j), yesxno, strng end do if (w3_cou_flag) then - if (flagsc(1) .and. inflags1(2) .and. .not. flagsc(2)) goto 2102 - if (flagsc(2) .and. inflags1(1) .and. .not. flagsc(1)) goto 2102 + if (flagsc(1) .and. inflags1(2) .and. .not. flagsc(2)) then + if ( iaproc .eq. naperr ) write (ndse,1102) + call extcde ( 1102 ) + end if + if (flagsc(2) .and. inflags1(1) .and. .not. flagsc(1)) then + if ( iaproc .eq. naperr ) write (ndse,1102) + call extcde ( 1102 ) + end if end if inflags1(10) = .false. @@ -506,7 +513,8 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf end if odat(33) = int(dtmax) else if (mod(odat(33),int(dtmax)) .ne. 0) then - goto 2009 + if ( iaproc .eq. naperr ) write (ndse,1009) odat(33), nint(dtmax) + call extcde ( 1009 ) end if end if @@ -529,13 +537,17 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf ! type 1: fields of mean wave parameters fldout = nml_output_type%field%list call w3flgrdflag ( ndso, ndso, ndse, fldout, flgd, flgrd, iaproc, napout, ierr ) - if ( ierr .ne. 0 ) goto 2222 + if ( ierr .ne. 0 ) call extcde ( 1200 ) else if ( j .eq. 2 ) then ! type 2: point output open (newunit=ndsl, file=trim(fnmpre)//trim(nml_output_type%point%file), & - form='formatted', status='old', err=2104, iostat=ierr) + form='formatted', status='old', iostat=ierr) + if (ierr /= 0) then + if (iaproc == naperr) write (ndse,1104) ierr + call extcde ( 1104 ) + end if ! first loop to count the number of points ! second loop to allocate the array and store the points @@ -550,14 +562,21 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf ipts = 0 ! reset counter to be reused for next do loop else allocate ( x(1), y(1), pnames(1) ) - goto 2054 + if ( iaproc .eq. naperr ) write (ndse,1054) + call extcde ( 1054 ) end if end if do - read (ndsl,*,err=2004,iostat=ierr) tmpline + read (ndsl,*,iostat=ierr) tmpline + if (ierr > 0) then + if ( iaproc .eq. naperr ) write (ndse,1004) ierr + call extcde ( 1004 ) + else if (ierr < 0) then + exit + end if ! if end of file or stopstring, then exit - if ( ierr.ne.0 .or. index(tmpline,"STOPSTRING").ne.0 ) exit + if ( index(tmpline,"STOPSTRING").ne.0 ) exit ! leading blanks removed and placed on the right test = adjustl ( tmpline ) @@ -566,8 +585,16 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf cycle else ! otherwise, backup to beginning of line - backspace ( ndsl, err=2004, iostat=ierr) - read (ndsl,*,err=2004,iostat=ierr) xx, yy, pn + backspace ( ndsl, iostat=ierr) + if (ierr /= 0) then + if (iaproc == naperr) write(ndse, 1004) ierr + call extcde ( 1004 ) + end if + read (ndsl,*,iostat=ierr) xx, yy, pn + if (ierr /= 0) then + if (iaproc == naperr) write(ndse, 1004) ierr + call extcde ( 1004 ) + end if end if ipts = ipts + 1 if ( iloop .eq. 1 ) cycle @@ -633,7 +660,7 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf ! Type 7: coupling fldout = nml_output_type%coupling%sent call w3flgrdflag ( ndso, ndso, ndse, fldout, flg2, flgr2, iaproc, napout, ierr ) - if ( ierr .ne. 0 ) goto 2222 + if ( ierr .ne. 0 ) call extcde ( 1201 ) fldin = nml_output_type%coupling%received cplt0 = nml_output_type%coupling%couplet0 #endif @@ -652,7 +679,7 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf rstfldlist = ' ' end if end if - if ( ierr .ne. 0 ) goto 2222 + if ( ierr .ne. 0 ) call extcde ( 1202 ) ! force minimal allocation to avoid memory seg fault if ( .not.allocated(x) .and. npts.eq.0 ) allocate ( x(1), y(1), pnames(1) ) @@ -684,7 +711,10 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf n_tot = nml_homog_count%n_tot do j=jfirst,10 - if ( nh(j) .gt. nhmax ) goto 2006 + if ( nh(j) .gt. nhmax ) then + if ( iaproc .eq. naperr ) write (ndse,1006) idtst, nh(j) + call extcde ( 1006 ) + end if end do ! Store homogeneous fields @@ -724,7 +754,8 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf case ('MOV') j=10 case DEFAULT - goto 2062 + if ( iaproc .eq. naperr ) write (ndse,1062) idtst + call extcde ( 1062 ) end SELECT ihh(j)=ihh(j)+1 read(nml_homog_input(ih)%date,*) tho(:,j,ihh(j)) @@ -765,7 +796,10 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf ( flh(4) .and. (nh(4).eq.0) ) .or. & ( flh(5) .and. (nh(5).eq.0) ) .or. & ( flh(6) .and. (nh(6).eq.0) ) .or. & - ( flh(10) .and. (nh(10).eq.0) ) ) goto 2007 + ( flh(10) .and. (nh(10).eq.0) ) ) then + if ( iaproc .eq. naperr ) write (ndse,1007) + call extcde ( 1007 ) + end if end if ! flhom @@ -854,8 +888,14 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf if ( iaproc .eq. napout ) write (ndso,921) idflds(j), yesxno, strng end do if (w3_cou_flag) then - if (flagsc(1) .and. inflags1(2) .and. .not. flagsc(2)) goto 2102 - if (flagsc(2) .and. inflags1(1) .and. .not. flagsc(1)) goto 2102 + if (flagsc(1) .and. inflags1(2) .and. .not. flagsc(2)) then + if ( iaproc .eq. naperr ) write (ndse,1102) + call extcde ( 1102 ) + end if + if (flagsc(2) .and. inflags1(1) .and. .not. flagsc(1)) then + if ( iaproc .eq. naperr ) write (ndse,1102) + call extcde ( 1102 ) + end if end if call print_memcheck(memunit, 'memcheck_____:'//' read_shel_config SECTION 2b') @@ -948,15 +988,29 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf read(words( 5 ), * ) odat(20) if (words(6) .eq. 'T') then call nextln ( comstr , ndsi , ndsen ) - read (ndsi,*,end=2001,err=2002)(odat(i),i=5*(8-1)+1,5*8) + read (ndsi,*,iostat=ierr)(odat(i),i=5*(8-1)+1,5*8) + if (ierr < 0) then + if ( iaproc .eq. naperr ) write (ndse, 1001) + call extcde ( 1001 ) + else if (ierr > 0) then + if ( iaproc .eq. naperr ) write (ndse, 1002) ierr + call extcde ( 1002 ) + end if if(iaproc .eq. naproc) write(*,*)'odat(j=4): ',(odat(i),i=5*(8-1)+1,5*8) end if if (words(7) .eq. 'T') then call nextln ( comstr , ndsi , ndsen ) - read (ndsi,'(a)',end=2001,err=2002) fldrst + read (ndsi,'(a)',iostat=ierr) fldrst + if (ierr < 0) then + if (iaproc == naperr) write(ndse,1001) + call extcde(1001) + else if (ierr > 0) then + if (iaproc == naperr) write(ndse,1002) ierr + call extcde(1002) + end if end if call w3flgrdflag ( ndso, ndso, ndse, fldrst, flogr, flogrr, iaproc, napout, ierr ) - if ( ierr .ne. 0 ) goto 2222 + if ( ierr .ne. 0 ) call extcde ( 1203 ) else !inline new variable to read if present ofiles(j), if not ==0 @@ -1011,8 +1065,14 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf else ofiles(j)=0 - read (ndsi,*,end=2001,err=2002)(odat(i),i=5*(j-1)+1,5*j) - + read (ndsi,*,iostat=ierr)(odat(i),i=5*(j-1)+1,5*j) + if (ierr < 0) then + if (iaproc == naperr) write(ndse,1001) + call extcde(1001) + else if (ierr > 0) then + if (iaproc == naperr) write(ndse,1002) ierr + call extcde(1002) + end if end if !j le 2 odat(5*(j-1)+3) = max ( 0 , odat(5*(j-1)+3) ) write(msg1, *) 'read_shel_config NOTTYPE', J @@ -1028,7 +1088,7 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf ! type 1: fields of mean wave parameters call w3readflgrd ( ndsi, ndso, 9, ndsen, comstr, flgd, flgrd, iaproc, napout, ierr ) - if ( ierr .ne. 0 ) goto 2222 + if ( ierr .ne. 0 ) call extcde ( 1204 ) else if ( j .eq. 2 ) then @@ -1050,7 +1110,8 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf allocate ( x(npts), y(npts), pnames(npts) ) else allocate ( x(1), y(1), pnames(1) ) - goto 2054 + if ( iaproc .eq. naperr ) write (ndse,1054) + call extcde ( 1054 ) end if end if end if @@ -1138,9 +1199,16 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf ! Type 7: coupling #ifdef W3_COU call w3readflgrd ( ndsi, ndso, ndss, ndsen, comstr, flg2, flgr2, iaproc, napout, ierr ) - if ( ierr .ne. 0 ) goto 2222 + if ( ierr .ne. 0 ) call extcde ( 1205 ) call nextln ( comstr , ndsi , ndsen ) - read (ndsi,'(a)',end=2001,err=2002,iostat=ierr) fldin + read (ndsi,'(a)',iostat=ierr) fldin + if (ierr < 0) then + if (iaproc == naperr) write(ndse,1001) + call extcde(1001) + else if (ierr > 0) then + if (iaproc == naperr) write(ndse,1002) ierr + call extcde(1002) + end if #endif end if ! j @@ -1173,7 +1241,10 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf idtst.ne.idstr(1) .and. idtst.ne.idstr(2) .and. & idtst.ne.idstr(3) .and. idtst.ne.idstr(4) .and. & idtst.ne.idstr(5) .and. idtst.ne.idstr(6) .and. & - idtst.ne.idstr(10) .and. idtst.ne.'STP' ) goto 2005 + idtst.ne.idstr(10) .and. idtst.ne.'STP' ) then + if ( iaproc .eq. naperr ) write (ndse,1005) idtst + call extcde ( 1005 ) + end if ! Stop conditions if ( idtst .eq. 'STP' ) then @@ -1187,7 +1258,10 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf do j=lbound(idstr,1), 10 if ( idtst .eq. idstr(j) ) then nh(j) = nh(j) + 1 - if ( nh(j) .gt. nhmax ) goto 2006 + if ( nh(j) .gt. nhmax ) then + if ( iaproc .eq. naperr ) write (ndse,1006) idtst, nh(j) + call extcde ( 1006 ) + end if IF ( J .LE. 1 ) THEN ! water levels, etc. : get HA read (ndsi,*) idtst, & tho(1,j,nh(j)), tho(2,j,nh(j)), & @@ -1253,7 +1327,10 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf ( flh(4) .and. (nh(4).eq.0) ) .or. & ( flh(5) .and. (nh(5).eq.0) ) .or. & ( flh(6) .and. (nh(6).eq.0) ) .or. & - ( flh(10) .and. (nh(10).eq.0) ) ) goto 2007 + ( flh(10) .and. (nh(10).eq.0) ) ) then + if ( iaproc .eq. naperr ) write (ndse,1007) + call extcde ( 1007 ) + end if end if ! flhom close(ndsi) @@ -1300,7 +1377,10 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf #endif dttst = dsec21 ( time0 , timen ) - if ( dttst .le. 0. ) goto 2003 + if ( dttst .le. 0. ) then + if ( iaproc .eq. naperr ) write (ndse,1003) + call extcde ( 1003 ) + end if !-------------------- ! 2.3 Domain setup @@ -1444,46 +1524,7 @@ subroutine read_shel_config(mpicomm, mds, time0_overwrite, timen_overwrite, rstf !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if ( iaproc .eq. napout ) write (ndso,951) 'Wave model ...' - goto 2222 - - ! Error escape locations -2001 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1001) - CALL EXTCDE ( 1001 ) -2002 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1002) IERR - CALL EXTCDE ( 1002 ) -2102 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1102) - CALL EXTCDE ( 1102 ) -2003 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1003) - CALL EXTCDE ( 1003 ) -2104 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1104) IERR - CALL EXTCDE ( 1104 ) -2004 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1004) IERR - CALL EXTCDE ( 1004 ) -2005 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1005) IDTST - CALL EXTCDE ( 1005 ) -2054 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1054) - CALL EXTCDE ( 1054 ) -2006 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1006) IDTST, NH(J) - CALL EXTCDE ( 1006 ) -2062 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1062) IDTST - CALL EXTCDE ( 1062 ) -2007 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1007) - CALL EXTCDE ( 1007 ) -2009 CONTINUE - IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1009) ODAT(33), NINT(DTMAX) - CALL EXTCDE ( 1009 ) -2222 CONTINUE + ! Formats 900 FORMAT (/15X, ' *** WAVEWATCH III Program shell *** '/ & 15X, '==============================================='/) diff --git a/model/src/ww3_gint.F90 b/model/src/ww3_gint.F90 index 6eeda59bf2..73d1929c14 100644 --- a/model/src/ww3_gint.F90 +++ b/model/src/ww3_gint.F90 @@ -115,13 +115,11 @@ PROGRAM W3GRID_INTERP USE W3IOGOMD, ONLY : W3IOGO USE W3ADATMD, ONLY : W3DIMA, W3NAUX, W3SETA USE W3GDATMD - USE W3ODATMD, ONLY : FNMPRE, NOGRP, NGRPP, OUTPTS, UNDEF, FLOGRD, & - NAPROC, NOSWLL, IDOUT + USE W3ODATMD, ONLY : FNMPRE, NOGRP, NGRPP, OUTPTS, UNDEF, FLOGRD, IDOUT USE W3ODATMD, ONLY : W3NOUT, W3SETO USE W3IDATMD USE W3WDATMD, ONLY : W3NDAT, W3DIMW, W3SETW - USE W3WDATMD, ONLY : WDATAS, TIME, WLV, ICE, ICEH, ICEF, & - UST, USTDIR, ASF, RHOAIR + USE W3WDATMD, ONLY : WDATAS USE W3SERVMD, ONLY : ITRACE, NEXTLN, EXTCDE, EXTOPN, EXTIOF #ifdef W3_S USE W3SERVMD, ONLY : STRACE @@ -129,7 +127,6 @@ PROGRAM W3GRID_INTERP USE W3ARRYMD, ONLY : PRTBLK USE W3GSRUMD USE W3TRIAMD - USE W3WDATMD, ONLY: VA USE W3IORSMD, ONLY: W3IORS !/ IMPLICIT NONE @@ -161,7 +158,7 @@ PROGRAM W3GRID_INTERP INTEGER, ALLOCATABLE :: FIDOUT(:), MAP(:,:), TMP_INDX(:) REAL :: SXT, SYT, XT, YT, XTT DOUBLE PRECISION :: DAREA, SAREA - REAL :: XCRNR(5),YCRNR(5),DT(4),DX,DY,XSUB,YSUB + REAL :: XCRNR(5),YCRNR(5),DT(4) INTEGER :: TOUT(2), NOUT, IOUT REAL :: DTREQ, DTEST INTEGER :: IS(4), JS(4) @@ -175,7 +172,6 @@ PROGRAM W3GRID_INTERP CHARACTER :: COMSTR*1, IDTIME*23, FNAMEWHT*32 REAL :: XXX !< Dummy Value for w3iors call LOGICAL :: OUTorREST !< True interpolate out_grd or False restart - INTEGER :: INTYPE !check if this can be removed INTEGER, ALLOCATABLE :: MAPSTA_NG(:,:),MAPST2_NG(:,:) INTEGER, ALLOCATABLE :: NOINT(:),NOINT2(:),MAPSTATMP(:,:) INTEGER :: iNOINT,iNOINT2,JSEA,iloops @@ -1133,7 +1129,6 @@ SUBROUTINE W3EXGI ( NGRD, NSEA, NOSWLL_MIN, INTMETHOD, OUTorRESTflag, & !variables for restart LOGICAL :: OUTorRESTflag REAL :: VAAUX(NSPEC), SUMRES(NSPEC) - INTEGER :: INTYPE REAL :: XXX INTEGER :: MAPSTA_NG(NY,NX),MAPST2_NG(NY,NX) !/ diff --git a/model/src/ww3_grib.F90 b/model/src/ww3_grib.F90 index 7a4fe135e7..281d9f3eea 100644 --- a/model/src/ww3_grib.F90 +++ b/model/src/ww3_grib.F90 @@ -156,7 +156,7 @@ PROGRAM W3GRIB USE W3WDATMD, ONLY: TIME, WLV, ICE, UST, USTDIR, RHOAIR USE W3ADATMD USE W3ODATMD, ONLY: NDSE, NDST, NDSO, NOGRP, NGRPP, IDOUT, UNDEF,& - FLOGRD, FNMPRE, NOSWLL, NOGE, FLOGD + FLOGRD, NOSWLL, NOGE, FLOGD ! IMPLICIT NONE !/ @@ -218,7 +218,7 @@ END SUBROUTINE GRIBEND !/ Local variables !/ INTEGER :: NDSI, NDSM, NDSOG, NDSDAT, NDSTRC, & - NTRACE, IERR, IOTEST, I,J,K, IFI,IFJ,& + NTRACE, IERR, IOTEST, I, J, IFI, IFJ,& ISEA, IX, IY, TOUT(2), NOUT, TDUM(2),& FTIME(2), CID, PID, GID, GDS, IOUT, & GDTN @@ -244,7 +244,7 @@ END SUBROUTINE GRIBEND INTEGER, SAVE :: IENT = 0 #endif REAL :: DTREQ, DTEST, RFTIME - LOGICAL :: FLREQ(NOGRP,NGRPP), FLGRIB(NOGRP,NGRPP) + LOGICAL :: FLREQ(NOGRP,NGRPP) CHARACTER :: COMSTR*1, IDTIME*23, IDDDAY*11 CHARACTER(LEN=80) :: LINEIN CHARACTER(LEN=8) :: WORDS(5) @@ -1034,7 +1034,7 @@ SUBROUTINE W3EXGB ( NX, NY, NSEA ) !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: J, IXY, NDATA + INTEGER :: IXY, NDATA INTEGER :: IO #ifdef W3_S INTEGER, SAVE :: IENT = 0 diff --git a/model/src/ww3_outf.F90 b/model/src/ww3_outf.F90 index 41ef7cf769..c6a969b0bd 100644 --- a/model/src/ww3_outf.F90 +++ b/model/src/ww3_outf.F90 @@ -155,8 +155,7 @@ PROGRAM W3OUTF USE W3IOGOMD, ONLY: W3IOGO, W3READFLGRD !/ USE W3GDATMD - USE W3WDATMD, ONLY: TIME, WLV, ICE, ICEH, ICEF, BERG, UST, & - USTDIR, RHOAIR + USE W3WDATMD, ONLY: TIME, WLV, ICE, BERG, UST, USTDIR, RHOAIR USE W3ADATMD, ONLY: DW, UA, UD, AS, CX, CY, HS, WLM, T0M1, THM, & THS, FP0, THP0, DTDYN, FCUT, & ABA, ABD, UBA, UBD, SXX, SYY, SXY, USERO, & @@ -173,7 +172,10 @@ PROGRAM W3OUTF HCMAXE, HMAXD, HCMAXD, MSSD, MSCD, WBT, & WNMEAN, TAUA, TAUADIR, USSHX, USSHY USE W3ODATMD, ONLY: NDSO, NDSE, NDST, NOGRP, NGRPP, IDOUT, & - UNDEF, FLOGRD, FNMPRE, FNMGRD, FNMPNT, FNMRST, NOSWLL, NOGE + UNDEF, FLOGRD, FNMPRE, NOSWLL +#ifdef W3_IS2 + USE W3WDATMD, ONLY: ICEH, ICEF +#endif ! IMPLICIT NONE !/ @@ -192,7 +194,7 @@ PROGRAM W3OUTF CHARACTER :: COMSTR*1, IDTIME*23, IDDDAY*11, & TABNME*9 LOGICAL :: FLREQ(NOGRP,NGRPP), FLOG(NOGRP), & - SCALE, VECTOR, LTEMP(NGRPP) + SCALE, VECTOR !/ !/ ------------------------------------------------------------------- / !/ @@ -632,7 +634,7 @@ SUBROUTINE W3EXGO ( NX, NY, NSEA ) !/ Local parameters !/ INTEGER :: NXMAX, NXTOT, NBLOK, IH, IM, IS, & - MFILL, J, ISEA, IX, IY, IXB, IB, & + MFILL, ISEA, IX, IY, IXB, IB, & IXA, NINGRD, JJ, IFI, IFJ INTEGER :: MAP(NX+1,NY), MP2(NX+1,NY), & MX1(NX,NY), MXX(NX,NY), MYY(NX,NY), & diff --git a/model/src/ww3_outp.F90 b/model/src/ww3_outp.F90 index d4397a2cd0..c4208d2028 100644 --- a/model/src/ww3_outp.F90 +++ b/model/src/ww3_outp.F90 @@ -224,13 +224,15 @@ PROGRAM W3OUTP USE W3GDATMD USE W3WDATMD, ONLY: TIME USE W3ODATMD, ONLY: NDSE, NDST, NDSO, NOPTS, PTLOC, PTNME, & - DPO, WAO, WDO, ASO, CAO, CDO, SPCO, FNMPRE,& - ICEO, ICEHO, ICEFO, DIMP + DPO, WAO, WDO, ASO, CAO, CDO, SPCO, FNMPRE, DIMP +#ifdef W3_IS2 + USE W3ODATMD, ONLY: ICEO, ICEHO, ICEFO +#endif #ifdef W3_FLX5 USE W3ODATMD, ONLY: TAUAO, TAUDO, DAIRO #endif - USE W3BULLMD, ONLY: NPTAB, NFLD, NPMAX, BHSMIN, BHSDROP, IYY, & - HST, TPT, DMT, ASCBLINE, CSVBLINE + USE W3BULLMD, ONLY: NPTAB, NFLD, NPMAX, BHSMIN, BHSDROP, & + ASCBLINE, CSVBLINE #ifdef W3_NCO USE W3BULLMD, ONLY: CASCBLINE #endif @@ -1417,7 +1419,7 @@ SUBROUTINE W3EXPO !/ INTEGER :: J, I1, I2, ISP, IKM, ITH, & IK, IH, IM, IS, IYR, IMTH, IDY, ITT, & - I, NPART, IP, IX, IY, ISEA + I, NPART, IX, IY INTEGER, SAVE :: IPASS = 0 #ifdef W3_S INTEGER, SAVE :: IENT = 0 @@ -1430,15 +1432,20 @@ SUBROUTINE W3EXPO SPP, CD, USTAR, FACTOR, UNORM, ESTAR,& FPSTAR, FACF, FACE, FACS, HMAT, WNA, & XYZ, AGE1, AFR, AGE2, FACT, XSTAR, & - YSTAR, FHIGH, ZWND, Z0, USTD, EMEAN, & + YSTAR, ZWND, Z0, USTD, EMEAN, & FMEAN, WNMEAN, UDIRCA, X, Y, CHARN, & - M2KM, ICEF, ICEDMAX, ICETHICK, & - ICECON + M2KM +#if defined(W3_ST0) || defined(W3_ST1) || defined(W3_ST2) || defined(W3_ST6) || defined(W3_LN1) + REAL :: FHIGH +#endif + #ifdef W3_FLX5 - REAL ::TAUA, TAUADIR, RHOAIR + REAL :: TAUA, TAUADIR, RHOAIR #endif #ifdef W3_IS2 - REAL :: WN_R(NK),CG_ICE(NK), ALPHA_LIU(NK) + REAL :: WN_R(NK), CG_ICE(NK), ALPHA_LIU(NK), R(NK) + REAL :: DIA2(NTH,NK) + REAL :: ICEF, ICEDMAX, ICETHICK, ICECON #endif #ifdef W3_ST1 REAL :: AMAX, FH1, FH2 @@ -1448,10 +1455,10 @@ SUBROUTINE W3EXPO #endif #ifdef W3_ST3 REAL :: AMAX, FMEANS, FMEANWS, TAUWX, TAUWY, & - TAUWNX, TAUWNY + TAUWNX, TAUWNY, ICE #endif #ifdef W3_ST4 - REAL :: AMAX, FMEANS, FMEANWS, TAUWX, TAUWY, & + REAL :: AMAX, FMEANWS, TAUWX, TAUWY, & TAUWNX, TAUWNY, FMEAN1, WHITECAP(1:4), DLWMEAN #endif #ifdef W3_ST6 @@ -1461,21 +1468,21 @@ SUBROUTINE W3EXPO REAL :: TAUSCX, TAUSCY #endif #ifdef W3_BT4 + INTEGER :: ISEA REAL :: D50, PSIC, BEDFORM(3), TAUBBL(2) #endif - REAL :: ICE #ifdef W3_STAB2 REAL :: STAB0, STAB, COR1, COR2, ASFAC, & THARG1, THARG2 #endif REAL, SAVE :: HSMIN = 0.05 - REAL :: WN(NK), CG(NK), R(NK) + REAL :: WN(NK), CG(NK) REAL :: E(NK,NTH), E1(NK), APM(NK), & THBND(NK), SPBND(NK), A(NTH,NK), & WN2(NTH,NK) REAL :: DIA(NTH,NK), SWN(NK,NTH), SNL(NK,NTH),& SDS(NK,NTH), SBT(NK,NTH), SIS(NK,NTH),& - STT(NK,NTH), DIA2(NTH,NK) + STT(NK,NTH) REAL :: XLN(NTH,NK), XIN(NTH,NK), XNL(NTH,NK),& XTR(NTH,NK), XDS(NTH,NK), XDB(NTH,NK),& XBT(NTH,NK), XBS(NTH,NK), XXX(NTH,NK),& diff --git a/regtests/ww3_tp2.1/input/ww3_ounf_flds_hrly.inp b/regtests/ww3_tp2.1/input/ww3_ounf_flds_hrly.inp index d50d9d0962..085004c359 100644 --- a/regtests/ww3_tp2.1/input/ww3_ounf_flds_hrly.inp +++ b/regtests/ww3_tp2.1/input/ww3_ounf_flds_hrly.inp @@ -31,7 +31,7 @@ $ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourl $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. - 6 + 8 1 1000000 1 1000000 $ $ For each field and time a new file is generated with the file name