| 1 | MODULE YOMRCOEF |
|---|
| 2 | |
|---|
| 3 | USE PARKIND1 ,ONLY : JPIM ,JPRB |
|---|
| 4 | |
|---|
| 5 | IMPLICIT NONE |
|---|
| 6 | |
|---|
| 7 | SAVE |
|---|
| 8 | |
|---|
| 9 | ! ----------------------------------------------------------------- |
|---|
| 10 | |
|---|
| 11 | !* Logical switches for writing and reading the radiation coefficients |
|---|
| 12 | ! in file or in core |
|---|
| 13 | |
|---|
| 14 | ! LRCOEF : switch for write out and read |
|---|
| 15 | ! the radiation coefficients in file |
|---|
| 16 | |
|---|
| 17 | !* Logical switch connected with the simplified radiation |
|---|
| 18 | |
|---|
| 19 | ! LTLADDIA : switch for using diabatic adjoint and then reading |
|---|
| 20 | ! rad.coef. at each time step when LRAYSP |
|---|
| 21 | ! LGLOBRAD : switch to compute the global mean for the thermal |
|---|
| 22 | ! radiation matrix |
|---|
| 23 | |
|---|
| 24 | !* Number of arrays for radiation coefficients |
|---|
| 25 | |
|---|
| 26 | ! NG3SR : number of 3D fields (NFLEVG) |
|---|
| 27 | ! NGMTR : number of matrices (0:NFLEVG,0:NFLEVG) |
|---|
| 28 | ! NLATWR : number of latitude to be written |
|---|
| 29 | ! NLATRD : number of latitude to be read |
|---|
| 30 | |
|---|
| 31 | !* Packing factors and mio package files |
|---|
| 32 | |
|---|
| 33 | ! NPCKFSR : packing factor for 3D fields |
|---|
| 34 | ! NPCKFTHR : packing factor for matrices |
|---|
| 35 | ! NEXPBSR : number of bits used for exponent when |
|---|
| 36 | ! packing |
|---|
| 37 | ! NEXPBTHR : number of bits used for exponent when |
|---|
| 38 | ! packing |
|---|
| 39 | |
|---|
| 40 | !* Buffer for radiation coefficients |
|---|
| 41 | |
|---|
| 42 | ! NLENGSRB : length of buffer for 3D solar radiation |
|---|
| 43 | ! coefficients and correction for thermal |
|---|
| 44 | ! radiation |
|---|
| 45 | ! NLENGTRB : length of buffer for matrix of thermal |
|---|
| 46 | ! radiation coefficients |
|---|
| 47 | ! SOLRAD(NLENGSRB) : buffer for 3D fields |
|---|
| 48 | ! THERRAD(NSLBR/NGPBLKS/1,NLENGTRB): buffer for matrix |
|---|
| 49 | ! for 3D fields |
|---|
| 50 | |
|---|
| 51 | !* Buffer for simplified thermal radiation |
|---|
| 52 | |
|---|
| 53 | ! TRWEIGHT(NFLEVG+1,NFLEVG+1) : buffer for sum of mean weights |
|---|
| 54 | ! for the whole domain |
|---|
| 55 | ! TRMATSUM(NFLEVG+1,NFLEVG+1) : buffer for sum of thermal radiation |
|---|
| 56 | ! matrices for the whole domain |
|---|
| 57 | |
|---|
| 58 | LOGICAL :: LRCOEF |
|---|
| 59 | LOGICAL :: LTLADDIA |
|---|
| 60 | LOGICAL :: LGLOBRAD |
|---|
| 61 | |
|---|
| 62 | INTEGER(KIND=JPIM) :: NG3SR |
|---|
| 63 | INTEGER(KIND=JPIM) :: NGMTR |
|---|
| 64 | INTEGER(KIND=JPIM) :: NLATWR |
|---|
| 65 | INTEGER(KIND=JPIM) :: NLATRD |
|---|
| 66 | |
|---|
| 67 | INTEGER(KIND=JPIM) :: NPCKFSR |
|---|
| 68 | INTEGER(KIND=JPIM) :: NPCKFTHR |
|---|
| 69 | INTEGER(KIND=JPIM) :: NEXPBSR |
|---|
| 70 | INTEGER(KIND=JPIM) :: NEXPBTHR |
|---|
| 71 | |
|---|
| 72 | INTEGER(KIND=JPIM) :: NLENGSRB |
|---|
| 73 | INTEGER(KIND=JPIM) :: NLENGTRB |
|---|
| 74 | |
|---|
| 75 | REAL(KIND=JPRB),ALLOCATABLE:: SOLRAD(:) |
|---|
| 76 | REAL(KIND=JPRB),ALLOCATABLE:: THERRAD(:,:) |
|---|
| 77 | |
|---|
| 78 | REAL(KIND=JPRB),ALLOCATABLE:: TRWEIGHT(:,:) |
|---|
| 79 | REAL(KIND=JPRB),ALLOCATABLE:: TRMATSUM(:,:) |
|---|
| 80 | |
|---|
| 81 | ! ---------------------------------------------------------------- |
|---|
| 82 | !$OMP THREADPRIVATE(lglobrad,lrcoef,ltladdia,nexpbsr,nexpbthr,ng3sr,ngmtr,nlatrd,nlatwr,nlengsrb) |
|---|
| 83 | !$OMP THREADPRIVATE(nlengtrb,npckfsr,npckfthr) |
|---|
| 84 | !$OMP THREADPRIVATE(solrad,therrad,trmatsum,trweight) |
|---|
| 85 | END MODULE YOMRCOEF |
|---|