[3331] | 1 | MODULE YOEWCOU |
---|
| 2 | |
---|
| 3 | USE PARKIND1 ,ONLY : JPIM ,JPRB |
---|
| 4 | |
---|
| 5 | IMPLICIT NONE |
---|
| 6 | |
---|
| 7 | SAVE |
---|
| 8 | |
---|
| 9 | !* ** *YOEWCOU* - VARIABLES FOR COUPLING WITH THE WAVE MODEL |
---|
| 10 | |
---|
| 11 | ! P. VITERBO E.C.M.W.F. 07/10/88 |
---|
| 12 | ! P. VITERBO E.C.M.W.F. 03/02/92 |
---|
| 13 | ! J. DOYLE E.C.M.W.F. 21/11/96 |
---|
| 14 | ! J. BIDLOT E.C.M.W.F. 13/06/97 |
---|
| 15 | ! J. BIDLOT E.C.M.W.F. 11/08/98 |
---|
| 16 | ! G. MOZDZYNSKI E.C.M.W.F. 14/01/05 |
---|
| 17 | |
---|
| 18 | ! NAME TYPE PURPOSE |
---|
| 19 | ! ---- ---- ------- |
---|
| 20 | |
---|
| 21 | ! *NLONW* INTEGER NUMBER OF POINTS IN A LATITUDE LINE IN |
---|
| 22 | ! THE WAVE MODEL |
---|
| 23 | ! *NLATW* INTEGER NUMBER OF LATITUDES IN THE WAVE MODEL. |
---|
| 24 | ! *NLON1W* INTEGER *NLONW* |
---|
| 25 | ! *NLAT1W* INTEGER TOTAL NUMBER OF LATITUDES WITH THE WAVE |
---|
| 26 | ! MODEL RESOLUTION. |
---|
| 27 | ! *NNORXW* INTEGER NUMBER OF EXTRA POINTS NORTHWARDS OF THE |
---|
| 28 | ! NORTHERN BOUNDARY OF THE WAVE MODEL. |
---|
| 29 | ! *CBEGDAT* CHARACTER INITIAL DATE OF FORECAST (YYYYMMDDHHmm) |
---|
| 30 | ! *NDURAT* INTEGER DURATION (IN MINUTES) OF TOTAL WAVE INTEGRATION |
---|
| 31 | ! (OR FORECAST TIME IN MINUTES). |
---|
| 32 | ! *NSTPW* INTEGER FREQUENCY OF CALL TO THE WAVE MODEL. |
---|
| 33 | ! *NRESUM* INTEGER TIME STEP OF A RESTART EVENT |
---|
| 34 | ! *LWCOU* LOGICAL TRUE IF THE WAVE MODEL IS TO BE RUN. |
---|
| 35 | ! *LWCOU2W* LOGICAL TRUE IF TWO-WAY INTERACTION WITH THE WAVE MODEL. |
---|
| 36 | ! FALSE IF ONE-WAY INTERACTION WITH THE WAVE MODEL |
---|
| 37 | ! *LWCOUNORMS* LOGICAL TRUE IF NORMS OF COUPLED FIELDS ARE REQUIRED |
---|
| 38 | ! *RSOUTW* REAL SOUTH BOUNDARY OF THE WAVE MODEL. |
---|
| 39 | ! *RNORTW* REAL NORTH BOUNDARY OF THE WAVE MODEL. |
---|
| 40 | ! *RDEGREW* REAL RESOLUTION OF THE WAVE MODEL (DEGREES). |
---|
| 41 | ! |
---|
| 42 | ! *MASK_WAVE_IN* INTEGER COMMS MASK FOR INPUT TO WAVE MODEL |
---|
| 43 | ! *MASK_WAVE_OUT* INTEGER COMMS MASK FOR OUTPUT FROM WAVE MODEL |
---|
| 44 | ! |
---|
| 45 | ! *LWVIN_MASK_NOT_SET* LOGICAL indicates whether mask_wave_in |
---|
| 46 | ! has been updated on the first call to the |
---|
| 47 | ! wave model |
---|
| 48 | ! *LWVIN_UNINITIALISED* LOGICAL indicates whether the mwvin_* data |
---|
| 49 | ! structures are initialised |
---|
| 50 | ! *MWVIN_SENDCNT* INTEGER nproc sized array describing how many grid |
---|
| 51 | ! points need to be sent (or copied) by the |
---|
| 52 | ! local task to remote tasks (or this task) |
---|
| 53 | ! *MWVIN_RECVCNT* INTEGER nproc sized array describing how many grid |
---|
| 54 | ! points need to be received by the local task |
---|
| 55 | ! from a remote task |
---|
| 56 | ! *MWVIN_SENDTOT* INTEGER total number of grid points to be sent to |
---|
| 57 | ! remote tasks |
---|
| 58 | ! *MWVIN_RECVTOT* INTEGER total number of grid points to be received |
---|
| 59 | ! from remote tasks |
---|
| 60 | ! *MWVIN_SENDOFF* INTEGER nproc sized array containing offsets into |
---|
| 61 | ! the MWVIN_SENDBUF and MWVIN_SENDIND arrays |
---|
| 62 | ! *MWVIN_SENDBUF* INTEGER local indexes of data on remote tasks that |
---|
| 63 | ! the local task needs |
---|
| 64 | ! *MWVIN_SENDIND* INTEGER global indexes of data on remote tasks that |
---|
| 65 | ! the local task needs |
---|
| 66 | ! |
---|
| 67 | ! *MWVIN_RECVOFF* INTEGER nproc sized array containing offsets into |
---|
| 68 | ! the MWVIN_RECVBUF array |
---|
| 69 | ! *MWVIN_RECVBUF* INTEGER local indexes of data on the local task that |
---|
| 70 | ! remote tasks need |
---|
| 71 | ! |
---|
| 72 | |
---|
| 73 | |
---|
| 74 | INTEGER(KIND=JPIM) :: NLONW |
---|
| 75 | INTEGER(KIND=JPIM) :: NLATW |
---|
| 76 | INTEGER(KIND=JPIM) :: NLON1W |
---|
| 77 | INTEGER(KIND=JPIM) :: NLAT1W |
---|
| 78 | INTEGER(KIND=JPIM) :: NNORXW |
---|
| 79 | INTEGER(KIND=JPIM) :: NDURAT |
---|
| 80 | INTEGER(KIND=JPIM) :: NSTPW |
---|
| 81 | INTEGER(KIND=JPIM) :: NRESUM |
---|
| 82 | |
---|
| 83 | REAL(KIND=JPRB) :: RSOUTW |
---|
| 84 | REAL(KIND=JPRB) :: RNORTW |
---|
| 85 | REAL(KIND=JPRB) :: RDEGREW |
---|
| 86 | |
---|
| 87 | LOGICAL :: LWCOU |
---|
| 88 | LOGICAL :: LWCOU2W |
---|
| 89 | LOGICAL :: LWCOUNORMS |
---|
| 90 | CHARACTER :: CBEGDAT*12 |
---|
| 91 | |
---|
| 92 | INTEGER(KIND=JPIM), ALLOCATABLE :: MASK_WAVE_IN(:) |
---|
| 93 | INTEGER(KIND=JPIM), ALLOCATABLE :: MASK_WAVE_OUT(:,:) |
---|
| 94 | |
---|
| 95 | LOGICAL :: LWVIN_MASK_NOT_SET |
---|
| 96 | LOGICAL :: LWVIN_UNINITIALISED |
---|
| 97 | |
---|
| 98 | INTEGER(KIND=JPIM) :: MWVIN_SENDTOT |
---|
| 99 | INTEGER(KIND=JPIM) :: MWVIN_RECVTOT |
---|
| 100 | |
---|
| 101 | INTEGER(KIND=JPIM),ALLOCATABLE :: MWVIN_SENDCNT(:) |
---|
| 102 | INTEGER(KIND=JPIM),ALLOCATABLE :: MWVIN_RECVCNT(:) |
---|
| 103 | |
---|
| 104 | INTEGER(KIND=JPIM),ALLOCATABLE :: MWVIN_SENDOFF(:) |
---|
| 105 | INTEGER(KIND=JPIM),ALLOCATABLE :: MWVIN_RECVOFF(:) |
---|
| 106 | |
---|
| 107 | INTEGER(KIND=JPIM),ALLOCATABLE :: MWVIN_SENDBUF(:) |
---|
| 108 | INTEGER(KIND=JPIM),ALLOCATABLE :: MWVIN_RECVBUF(:) |
---|
| 109 | |
---|
| 110 | INTEGER(KIND=JPIM),ALLOCATABLE :: MWVIN_SENDIND(:) |
---|
| 111 | |
---|
| 112 | |
---|
| 113 | ! ------------------------------------------------------------------ |
---|
| 114 | !$OMP THREADPRIVATE(cbegdat,lwcou,lwcou2w,lwcounorms,lwvin_mask_not_set,lwvin_uninitialised,mwvin_recvtot) |
---|
| 115 | !$OMP THREADPRIVATE(mwvin_sendtot,ndurat,nlat1w,nlatw,nlon1w,nlonw,nnorxw,nresum,nstpw,rdegrew,rnortw,rsoutw) |
---|
| 116 | END MODULE YOEWCOU |
---|