source: LMDZ6/trunk/libf/misc/lmdz_inca_wrappers.F90 @ 5300

Last change on this file since 5300 was 5251, checked in by abarral, 10 days ago

Wrap uses of cpp key INCA
Add INCA wrapper

File size: 10.7 KB
Line 
1! inca SUBROUTINE wrappers
2
3#ifndef INCA
4
5SUBROUTINE lmdz_inca_wrapper_abort
6  STOP 'INCA key undefined, must not enter in INCA wrappers ==> aborting'
7END SUBROUTINE lmdz_inca_wrapper_abort
8
9SUBROUTINE init_chem_inca_trac(nbtr)
10  IMPLICIT NONE
11  INTEGER, INTENT(OUT) :: nbtr
12
13  CALL lmdz_inca_wrapper_abort
14END SUBROUTINE init_chem_inca_trac
15
16SUBROUTINE init_transport(&
17        tracnam_lmdz, &
18        conv_flg_lmdz, &
19        pbl_flg_lmdz, &
20        hadv_flg_lmdz, &
21        vadv_flg_lmdz)
22  IMPLICIT NONE
23  INTEGER, DIMENSION(:), INTENT(OUT) :: hadv_flg_lmdz
24  INTEGER, DIMENSION(:), INTENT(OUT) :: vadv_flg_lmdz
25
26  INTEGER, DIMENSION(:), INTENT(OUT) :: conv_flg_lmdz
27  INTEGER, DIMENSION(:), INTENT(OUT) :: pbl_flg_lmdz
28  CHARACTER(len = 8), DIMENSION(:), INTENT(OUT) :: tracnam_lmdz
29
30  CALL lmdz_inca_wrapper_abort
31END SUBROUTINE init_transport
32
33SUBROUTINE finalize_inca
34  IMPLICIT NONE
35  CALL lmdz_inca_wrapper_abort
36END SUBROUTINE finalize_inca
37
38SUBROUTINE CHEMHOOK_BEGIN(&
39        calday, &
40        ijour, &
41        gmtime, &
42        oro, &
43        lat, &
44        lon, &
45        area, &
46        pfull, &
47        pmid, &
48        coefh, &
49        zma, &
50        temp, &
51        u, &
52        v, &
53        rot, &
54        ozrad, &
55        sh, &
56        ts, &
57        t_air_2m, &
58        dpth_snow, &
59        sws, &
60        albs, &
61        rain_fall, &
62        snow_fall, &
63        ctop, &
64        cbot, &
65        cldfr, &
66        nx, &
67        ny, &
68        mmr, &
69        ftsol, &
70        paprs, &
71        cdragh, &
72        cdragm, &
73        pctsrf, &
74        delt, &
75        nstep)
76  IMPLICIT NONE
77  REAL, INTENT(IN) :: calday
78  INTEGER, INTENT(IN) :: ijour  ! jour julien
79  REAL, INTENT(IN) :: gmtime ! input-R-temps universel dans la journee (0 a 86400 s)
80  INTEGER, INTENT(IN) :: ctop(:)
81  INTEGER, INTENT(IN) :: cbot(:)
82  INTEGER, INTENT(IN) :: nx, ny
83  REAL, INTENT(IN) :: pmid(:, :)
84  REAL, INTENT(IN) :: pfull(:, :)
85  REAL, INTENT(IN) :: coefh(:, :)
86  REAL, INTENT(IN) :: zma(:, :)
87  REAL, INTENT(IN) :: temp(:, :)
88  REAL, INTENT(IN) :: u(:, :)
89  REAL, INTENT(IN) :: v(:, :)
90  REAL, INTENT(IN) :: rot(:, :)
91  REAL, INTENT(IN) :: ozrad(:, :)
92  REAL, INTENT(IN) :: sh(:, :)
93  REAL, INTENT(IN) :: lat(:)
94  REAL, INTENT(IN) :: lon(:)
95  REAL, INTENT(IN) :: oro(:)
96  REAL, INTENT(IN) :: area(:)
97  REAL, INTENT(IN) :: ts(:)
98  REAL, INTENT(IN) :: t_air_2m(:) ! air temperature near surface
99  REAL, INTENT(IN) :: dpth_snow(:)
100  REAL, INTENT(IN) :: sws(:)
101  REAL, INTENT(IN) :: albs(:)
102  REAL, INTENT(IN) :: rain_fall(:)
103  REAL, INTENT(IN) :: snow_fall(:)
104  REAL, INTENT(IN) :: mmr(:, :, :)
105  REAL, INTENT(IN) :: cldfr (:, :)
106  ! variables used in nightingale
107  REAL, INTENT(IN) :: ftsol(:, :)
108  REAL, INTENT(IN) :: paprs(:, :)
109  REAL, INTENT(IN) :: cdragh(:), cdragm(:)
110  REAL, INTENT(IN) :: pctsrf(:, :)
111  REAL, INTENT(IN) :: delt               ! timestep in seconds of physics
112  INTEGER, INTENT(IN) :: nstep              ! model time step
113
114  CALL lmdz_inca_wrapper_abort
115END SUBROUTINE CHEMHOOK_BEGIN
116
117SUBROUTINE CHEMHOOK_END(&
118        dt, &
119        pmid, &
120        temp, &
121        mmr, &
122        nbtr, &
123        paprs, &
124        sh, &
125        area, &
126        zma, &
127        phis, &
128        rh, aps, bps, ap, bp, lafin)
129  IMPLICIT NONE
130  INTEGER, INTENT(IN) :: nbtr
131  REAL, INTENT(IN) :: dt
132  REAL, INTENT(IN) :: pmid(:, :)
133  REAL, INTENT(IN) :: area(:)
134  REAL, INTENT(IN) :: temp(:, :)
135  REAL, INTENT(IN) :: paprs(:, :)
136  REAL, INTENT(IN) :: sh(:, :)
137  REAL, INTENT(INOUT) :: mmr(:, :, :)
138  REAL, INTENT(IN) :: zma(:, :)
139  REAL, INTENT(IN) :: phis(:)
140  REAL, INTENT(IN) :: rh(:, :)
141  REAL, INTENT(IN), DIMENSION(:) :: aps, bps
142  REAL, INTENT(IN), DIMENSION(:) :: ap, bp
143  LOGICAL, INTENT(IN) :: lafin
144
145  CALL lmdz_inca_wrapper_abort
146END SUBROUTINE chemhook_end
147
148SUBROUTINE chemtime(istp, date0, dt, itap)
149  IMPLICIT NONE
150  INTEGER, INTENT(IN) :: istp   ! time step of the restart file
151  REAL, INTENT(IN) :: date0  ! the date at which itau = 0
152  REAL, INTENT(IN) :: dt     ! time step
153  INTEGER, INTENT(IN) :: itap
154  CALL lmdz_inca_wrapper_abort
155END SUBROUTINE chemtime
156
157SUBROUTINE INIT_CONST_LMDZ(&
158        nday_l, &
159        nbsrf_l, &
160        is_oce_l, &
161        is_sic_l, &
162        is_ter_l, &
163        is_lic_l, &
164        calend_l, &
165        config_inca_l)
166  IMPLICIT NONE
167  INTEGER, INTENT(IN) :: nday_l
168  INTEGER, INTENT(IN) :: nbsrf_l
169  INTEGER, INTENT(IN) :: is_oce_l, is_sic_l, is_lic_l, is_ter_l
170  CHARACTER (len = 10), INTENT(IN) :: calend_l
171  CHARACTER(len = 4), INTENT(IN) :: config_inca_l
172
173  CALL lmdz_inca_wrapper_abort
174END SUBROUTINE init_const_lmdz
175
176SUBROUTINE init_inca_geometry(&
177        longitude_lmdz, latitude_lmdz, &
178        boundslon_lmdz, boundslat_lmdz, &
179        cell_area_lmdz, &
180        ind_cell_glo_lmdz)
181  IMPLICIT NONE
182  REAL, INTENT(IN) :: longitude_lmdz(:)
183  REAL, INTENT(IN) :: latitude_lmdz(:)
184  REAL, INTENT(IN) :: boundslon_lmdz(:, :)
185  REAL, INTENT(IN) :: boundslat_lmdz(:, :)
186  REAL, INTENT(IN) :: cell_area_lmdz(:)
187  INTEGER, OPTIONAL, INTENT(IN) :: ind_cell_glo_lmdz(:)
188
189  CALL lmdz_inca_wrapper_abort
190END SUBROUTINE init_inca_geometry
191
192SUBROUTINE CHEMINI(pmid, &
193        nbp_lon_lmdz, nbp_lat_lmdz, &
194        latgcm, &
195        longcm, &
196        presnivs, &
197        calday, &
198        klon, &
199        nqmax, &
200        nqo, &
201        pdtphys, &
202        annee_ref, &
203        year_cur, &
204        day_ref, &
205        day_ini, &
206        start_time, &
207        itau_phy, &
208        date0, &
209        chemistry_couple, &
210        init_source, &
211        init_tauinca, &
212        init_pizinca, &
213        init_cginca, &
214        init_ccm, &
215        io_lon, &
216        io_lat)
217  IMPLICIT NONE
218  REAL, INTENT(IN) :: pmid(:, :)
219  INTEGER, INTENT(IN) :: nbp_lon_lmdz, nbp_lat_lmdz
220  REAL, INTENT(IN) :: calday
221  REAL, INTENT(IN) :: latgcm(:)
222  REAL, INTENT(IN) :: longcm(:)
223  REAL, INTENT(IN) :: presnivs(:)
224  INTEGER, INTENT(IN) :: klon
225  INTEGER, INTENT(IN) :: nqmax  ! nombre total de traceurs = inca + lmdz
226  INTEGER, INTENT(IN) :: nqo ! nombre de traceurs lus dans traceur.def
227  REAL, INTENT(IN) :: pdtphys
228  INTEGER, INTENT(IN) :: annee_ref, year_cur
229  INTEGER, INTENT(IN) :: day_ref, day_ini
230  REAL, INTENT(IN) :: start_time
231  INTEGER, INTENT(IN) :: itau_phy
232  REAL, OPTIONAL, INTENT(IN) :: io_lat(nbp_lat_lmdz) ! latitudes (of global grid)
233  REAL, OPTIONAL, INTENT(IN) :: io_lon(nbp_lon_lmdz) ! longitudes (of global grid)
234  REAL, INTENT(IN) :: date0
235  LOGICAL, INTENT(IN) :: chemistry_couple
236  REAL, DIMENSION(:, :), INTENT(OUT) :: init_source
237  REAL, DIMENSION(:, :, :, :), INTENT(OUT) :: init_tauinca
238  REAL, DIMENSION(:, :, :, :), INTENT(OUT) :: init_pizinca
239  REAL, DIMENSION(:, :, :, :), INTENT(OUT) :: init_cginca
240  REAL, DIMENSION(:, :, :), INTENT(OUT) :: init_ccm
241
242  CALL lmdz_inca_wrapper_abort
243END SUBROUTINE chemini
244
245SUBROUTINE radlwsw_inca(chemistry_couple, kdlon, kflev, dist, rmu0, fract, &
246        solaire, paprs, pplay, tsol, albedo, alblw, t, q, size_wo, wo, &
247        cldfra, cldemi, cldtaupd, &
248        heat, heat0, cool, cool0, albpla, &
249        topsw, toplw, solsw, sollw, &
250        sollwdown, &
251        topsw0, toplw0, solsw0, sollw0, &
252        lwdn0, lwdn, lwup0, lwup, &
253        swdn0, swdn, swup0, swup, &
254        ok_ade, ok_aie, &
255        tau_inca, piz_inca, cg_inca, &
256        topswad_inca, solswad_inca, &
257        topswad0_inca, solswad0_inca, &
258        topsw_inca, topsw0_inca, &
259        solsw_inca, solsw0_inca, &
260        cldtaupi, topswai_inca, solswai_inca)
261  IMPLICIT NONE
262  LOGICAL, INTENT(IN) :: chemistry_couple
263  INTEGER, INTENT(IN) :: kdlon, kflev
264  REAL, INTENT(IN) :: solaire
265  REAL, INTENT(IN) :: dist
266  REAL, INTENT(IN) :: rmu0(:), fract(:)
267  REAL, INTENT(IN) :: paprs(:, :), pplay(:, :)
268  REAL, INTENT(IN) :: albedo(:), alblw(:), tsol(:)
269  REAL, INTENT(IN) :: t(:, :), q(:, :)
270  INTEGER, INTENT(IN) :: size_wo
271  REAL, INTENT(IN) :: wo(:, :, :)  ! column-density of ozone in a layer, in kilo-Dobsons
272  LOGICAL, INTENT(IN) :: ok_ade, ok_aie     ! switches whether to use aerosol direct (indirect) effects or not
273  REAL, INTENT(IN) :: cldfra(:, :), cldemi(:, :), cldtaupd(:, :)
274  REAL, INTENT(IN) :: tau_inca(:, :, :, :) ! aerosol optical properties (see aeropt.F)
275  REAL, INTENT(IN) :: piz_inca(:, :, :, :) ! aerosol optical properties (see aeropt.F)
276  REAL, INTENT(IN) :: cg_inca(:, :, :, :)        ! aerosol optical properties (see aeropt.F)
277  REAL, INTENT(IN) :: cldtaupi(:, :)  ! cloud optical thickness for pre-industrial aerosol concentrations
278  REAL, INTENT(OUT) :: heat(:, :), cool(:, :)
279  REAL, INTENT(OUT) :: heat0(:, :), cool0(:, :)
280  REAL, INTENT(OUT) :: topsw(:), toplw(:)
281  REAL, INTENT(OUT) :: solsw(:), sollw(:), albpla(:)
282  REAL, INTENT(OUT) :: topsw0(:), toplw0(:), solsw0(:), sollw0(:)
283  REAL, INTENT(OUT) :: sollwdown(:)
284  REAL, INTENT(OUT) :: swdn(:, :), swdn0(:, :)
285  REAL, INTENT(OUT) :: swup(:, :), swup0(:, :)
286  REAL, INTENT(OUT) :: lwdn(:, :), lwdn0(:, :)
287  REAL, INTENT(OUT) :: lwup(:, :), lwup0(:, :)
288  REAL, INTENT(OUT) :: topswad_inca(:), solswad_inca(:) ! output: aerosol direct forcing at TOA and surface
289  REAL, INTENT(OUT) :: topswad0_inca(:), solswad0_inca(:) ! output: aerosol direct forcing at TOA and surface
290  REAL, INTENT(OUT) :: topswai_inca(:), solswai_inca(:) ! output: aerosol indirect forcing atTOA and surface
291  REAL(kind = 8), INTENT(OUT) :: topsw_inca(:, :), topsw0_inca(:, :)
292  REAL(kind = 8), INTENT(OUT) :: solsw_inca(:, :), solsw0_inca(:, :)
293
294  CALL lmdz_inca_wrapper_abort
295END SUBROUTINE radlwsw_inca
296
297SUBROUTINE INIT_INCA_DIM_REG(&
298        iim, &
299        jjm, &
300        rlonu_l, &
301        rlatu_l, &
302        rlonv_l, &
303        rlatv_l)
304
305  IMPLICIT NONE
306  INTEGER, INTENT(IN) :: iim
307  INTEGER, INTENT(IN) :: jjm
308  REAL, INTENT(IN) :: rlonu_l(:)
309  REAL, INTENT(IN) :: rlatu_l(:)
310  REAL, INTENT(IN) :: rlonv_l(:)
311  REAL, INTENT(IN) :: rlatv_l(:)
312
313  CALL lmdz_inca_wrapper_abort
314END SUBROUTINE INIT_INCA_DIM_REG
315
316SUBROUTINE AEROSOL_METEO_CALC(&
317        calday, delt, pmid, pfull, t_seri, &
318        flxrcv, flxscv, flxrst, flxsst, pctsrf, &
319        area, rlat, rlon, u10m, v10m)
320  IMPLICIT NONE
321  REAL, INTENT(IN) :: calday
322  REAL, INTENT(IN) :: delt                ! [s]
323  REAL, INTENT(IN) :: pmid(:, :)     ! [Pa]
324  REAL, INTENT(IN) :: pfull(:, :)  ! [Pa]
325  REAL, INTENT(IN) :: t_seri(:, :)   ! [K]
326  REAL, INTENT(IN) :: flxrst(:, :) ! liquid water flux (stratiform) kgH2O/m2/s
327  REAL, INTENT(IN) :: flxrcv(:, :) ! liquid  water flux (convection ) kgH2O/m2/s
328  REAL, INTENT(IN) :: flxsst(:, :) ! solid  water flux (stratiform) kgH2O/m2/s
329  REAL, INTENT(IN) :: flxscv(:, :) ! solid  water flux (convection) kgH2O/m2/s
330  REAL, INTENT(IN) :: pctsrf(:, :)  ! subsurface fraction (0..1)
331  REAL, INTENT(IN) :: area(:)          ! surface area of grid box [m2]
332  REAL, INTENT(IN) :: rlon(:)          ! longitude
333  REAL, INTENT(IN) :: rlat(:)          ! latitude
334  REAL, INTENT(IN) :: u10m(:, :)    ! vents a 10m
335  REAL, INTENT(IN) :: v10m(:, :)    ! vents a 10m
336
337  CALL lmdz_inca_wrapper_abort
338END SUBROUTINE AEROSOL_METEO_CALC
339
340#endif
Note: See TracBrowser for help on using the repository browser.