| 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 |
|---|