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