| Line |
Branch |
Exec |
Source |
| 1 |
|
|
! |
| 2 |
|
|
MODULE oasis |
| 3 |
|
|
! |
| 4 |
|
|
! This module contains subroutines for initialization, sending and receiving |
| 5 |
|
|
! towards the coupler OASIS3. It also contains some parameters for the coupling. |
| 6 |
|
|
! |
| 7 |
|
|
! This module should always be compiled. With the coupler OASIS3 available the cpp key |
| 8 |
|
|
! CPP_COUPLE should be set and the entier of this file will then be compiled. |
| 9 |
|
|
! In a forced mode CPP_COUPLE should not be defined and the compilation ends before |
| 10 |
|
|
! the CONTAINS, without compiling the subroutines. |
| 11 |
|
|
! |
| 12 |
|
|
USE dimphy |
| 13 |
|
|
USE mod_phys_lmdz_para |
| 14 |
|
|
USE write_field_phy |
| 15 |
|
|
|
| 16 |
|
|
|
| 17 |
|
|
IMPLICIT NONE |
| 18 |
|
|
|
| 19 |
|
|
! Id for fields sent to ocean |
| 20 |
|
|
INTEGER, PARAMETER :: ids_tauxxu = 1 |
| 21 |
|
|
INTEGER, PARAMETER :: ids_tauyyu = 2 |
| 22 |
|
|
INTEGER, PARAMETER :: ids_tauzzu = 3 |
| 23 |
|
|
INTEGER, PARAMETER :: ids_tauxxv = 4 |
| 24 |
|
|
INTEGER, PARAMETER :: ids_tauyyv = 5 |
| 25 |
|
|
INTEGER, PARAMETER :: ids_tauzzv = 6 |
| 26 |
|
|
INTEGER, PARAMETER :: ids_windsp = 7 |
| 27 |
|
|
INTEGER, PARAMETER :: ids_shfice = 8 |
| 28 |
|
|
INTEGER, PARAMETER :: ids_shfoce = 9 |
| 29 |
|
|
INTEGER, PARAMETER :: ids_shftot = 10 |
| 30 |
|
|
INTEGER, PARAMETER :: ids_nsfice = 11 |
| 31 |
|
|
INTEGER, PARAMETER :: ids_nsfoce = 12 |
| 32 |
|
|
INTEGER, PARAMETER :: ids_nsftot = 13 |
| 33 |
|
|
INTEGER, PARAMETER :: ids_dflxdt = 14 |
| 34 |
|
|
INTEGER, PARAMETER :: ids_totrai = 15 |
| 35 |
|
|
INTEGER, PARAMETER :: ids_totsno = 16 |
| 36 |
|
|
INTEGER, PARAMETER :: ids_toteva = 17 |
| 37 |
|
|
INTEGER, PARAMETER :: ids_icevap = 18 |
| 38 |
|
|
INTEGER, PARAMETER :: ids_ocevap = 19 |
| 39 |
|
|
INTEGER, PARAMETER :: ids_calvin = 20 |
| 40 |
|
|
INTEGER, PARAMETER :: ids_liqrun = 21 |
| 41 |
|
|
INTEGER, PARAMETER :: ids_runcoa = 22 |
| 42 |
|
|
INTEGER, PARAMETER :: ids_rivflu = 23 |
| 43 |
|
|
INTEGER, PARAMETER :: ids_atmco2 = 24 |
| 44 |
|
|
INTEGER, PARAMETER :: ids_taumod = 25 |
| 45 |
|
|
INTEGER, PARAMETER :: ids_qraioc = 26 |
| 46 |
|
|
INTEGER, PARAMETER :: ids_qsnooc = 27 |
| 47 |
|
|
INTEGER, PARAMETER :: ids_qraiic = 28 |
| 48 |
|
|
INTEGER, PARAMETER :: ids_qsnoic = 29 |
| 49 |
|
|
INTEGER, PARAMETER :: ids_delta_sst = 30, ids_delta_sal = 31 |
| 50 |
|
|
|
| 51 |
|
|
INTEGER, PARAMETER :: maxsend = 31 ! Maximum number of fields to send |
| 52 |
|
|
|
| 53 |
|
|
! Id for fields received from ocean |
| 54 |
|
|
|
| 55 |
|
|
INTEGER, PARAMETER :: idr_sisutw = 1 |
| 56 |
|
|
INTEGER, PARAMETER :: idr_icecov = 2 |
| 57 |
|
|
INTEGER, PARAMETER :: idr_icealw = 3 |
| 58 |
|
|
INTEGER, PARAMETER :: idr_icetem = 4 |
| 59 |
|
|
INTEGER, PARAMETER :: idr_curenx = 5 |
| 60 |
|
|
INTEGER, PARAMETER :: idr_cureny = 6 |
| 61 |
|
|
INTEGER, PARAMETER :: idr_curenz = 7 |
| 62 |
|
|
INTEGER, PARAMETER :: idr_oceco2 = 8 |
| 63 |
|
|
|
| 64 |
|
|
INTEGER, PARAMETER :: idr_sss = 9 |
| 65 |
|
|
! bulk salinity of the surface layer of the ocean, in ppt |
| 66 |
|
|
|
| 67 |
|
|
INTEGER, PARAMETER :: maxrecv = 9 ! Maximum number of fields to receive |
| 68 |
|
|
|
| 69 |
|
|
|
| 70 |
|
|
TYPE, PUBLIC :: FLD_CPL ! Type for coupling field information |
| 71 |
|
|
CHARACTER(len = 8) :: name ! Name of the coupling field |
| 72 |
|
|
LOGICAL :: action ! To be exchanged or not |
| 73 |
|
|
INTEGER :: nid ! Id of the field |
| 74 |
|
|
END TYPE FLD_CPL |
| 75 |
|
|
|
| 76 |
|
|
TYPE(FLD_CPL), DIMENSION(maxsend), SAVE, PUBLIC :: infosend ! Information for sending coupling fields |
| 77 |
|
|
!$OMP THREADPRIVATE(infosend) |
| 78 |
|
|
TYPE(FLD_CPL), DIMENSION(maxrecv), SAVE, PUBLIC :: inforecv ! Information for receiving coupling fields |
| 79 |
|
|
!$OMP THREADPRIVATE(inforecv) |
| 80 |
|
|
|
| 81 |
|
|
LOGICAL,SAVE :: cpl_current |
| 82 |
|
|
!$OMP THREADPRIVATE(cpl_current) |
| 83 |
|
|
|
| 84 |
|
|
|
| 85 |
|
✗ |
END MODULE oasis |
| 86 |
|
|
|