source: CONFIG/publications/ICOLMDZORINCA_CO2_Transport_GMD_2023/INCA/src/INCA_MOD/oxydant_com_mod.F90 @ 6610

Last change on this file since 6610 was 6610, checked in by acosce, 10 months ago

INCA used for ICOLMDZORINCA_CO2_Transport_GMD_2023

File size: 5.9 KB
Line 
1!$Id: oxydant_com_mod.F90 104 2008-12-23 10:28:51Z acosce $
2!! INCA - INteraction with Chemistry and Aerosols
3!!
4!! Copyright Laboratoire des Sciences du Climat et de l'Environnement (LSCE)
5!!           Unite mixte CEA-CNRS-UVSQ
6!!
7!! Contributors to this INCA subroutine:
8!!
9!! Didier Hauglustaine, LSCE, hauglustaine@cea.fr
10!! Stacy Walters, NCAR, stacy@ucar.edu
11!!
12!! Anne Cozic, LSCE, anne.cozic@cea.fr
13!! Yann Meurdesoif, LSCE, yann.meurdesoif@cea.fr
14!!
15!! This software is a computer program whose purpose is to simulate the
16!! atmospheric gas phase and aerosol composition. The model is designed to be
17!! used within a transport model or a general circulation model. This version
18!! of INCA was designed to be coupled to the LMDz GCM. LMDz-INCA accounts
19!! for emissions, transport (resolved and sub-grid scale), photochemical
20!! transformations, and scavenging (dry deposition and washout) of chemical
21!! species and aerosols interactively in the GCM. Several versions of the INCA
22!! model are currently used depending on the envisaged applications with the
23!! chemistry-climate model.
24!!
25!! This software is governed by the CeCILL  license under French law and
26!! abiding by the rules of distribution of free software.  You can  use,
27!! modify and/ or redistribute the software under the terms of the CeCILL
28!! license as circulated by CEA, CNRS and INRIA at the following URL
29!! "http://www.cecill.info".
30!!
31!! As a counterpart to the access to the source code and  rights to copy,
32!! modify and redistribute granted by the license, users are provided only
33!! with a limited warranty  and the software's author,  the holder of the
34!! economic rights,  and the successive licensors  have only  limited
35!! liability.
36!!
37!! In this respect, the user's attention is drawn to the risks associated
38!! with loading,  using,  modifying and/or developing or reproducing the
39!! software by the user in light of its specific status of free software,
40!! that may mean  that it is complicated to manipulate,  and  that  also
41!! therefore means  that it is reserved for developers  and  experienced
42!! professionals having in-depth computer knowledge. Users are therefore
43!! encouraged to load and test the software's suitability as regards their
44!! requirements in conditions enabling the security of their systems and/or
45!! data to be ensured and,  more generally, to use and operate it in the
46!! same conditions as regards security.
47!!
48!! The fact that you are presently reading this means that you have had
49!! knowledge of the CeCILL license and that you accept its terms.
50!! =========================================================================
51
52#include <inca_define.h>
53
54module OXYDANT_COM
55
56  implicit none
57
58  integer, save :: ncid
59  integer, save :: nlono, nlato, nlevo, ntimeo
60  integer, save :: lotime = 0, hitime = 0
61  integer, save :: loind  = 1, hiind  = 2
62  integer, save :: oh_id, o1d_id, o3_id, no3_id, h2o2_id, hno3_id, no2_id
63!$OMP THREADPRIVATE(ncid, nlono, nlato, nlevo, ntimeo)
64!$OMP THREADPRIVATE(lotime, hitime, loind, hiind)
65!$OMP THREADPRIVATE(oh_id, o1d_id, o3_id, no3_id, h2o2_id, hno3_id, no2_id)
66  REAL, SAVE :: time_oxyd_1, time_oxyd_2
67!$OMP THREADPRIVATE(time_oxyd_1, time_oxyd_2)
68  real, allocatable, save :: timeo(:)
69  real, allocatable, dimension(:,:,:,:), save :: ohoxydbd, o1doxydbd
70  real, allocatable, dimension(:,:,:,:), save :: o3oxydbd, no3oxydbd, h2o2oxydbd
71  real, allocatable, dimension(:,:,:,:), save :: hno3oxydbd, no2oxydbd
72  real, allocatable, dimension(:,:,:) , save :: ohoxyd_inter
73  real, allocatable, dimension(:,:,:) , save :: o1doxyd_inter
74  real, allocatable, dimension(:,:,:) , save :: o3oxyd_inter
75  real, allocatable, dimension(:,:,:) , save :: no3oxyd_inter
76  real, allocatable, dimension(:,:,:) , save :: h2o2oxyd_inter
77  real, allocatable, dimension(:,:,:) , save :: hno3oxyd_inter, no2oxyd_inter
78  real, allocatable, dimension(:,:,:) , save :: ohoxyd_phis
79  real, allocatable, dimension(:,:,:) , save :: o1doxyd_phis
80  real, allocatable, dimension(:,:,:) , save :: o3oxyd_phis
81  real, allocatable, dimension(:,:,:) , save :: no3oxyd_phis
82  real, allocatable, dimension(:,:,:) , save :: h2o2oxyd_phis
83  real, allocatable, dimension(:,:,:) , save :: hno3oxyd_phis, no2oxyd_phis
84!$OMP THREADPRIVATE(timeo)
85!$OMP THREADPRIVATE(ohoxydbd, o1doxydbd, o3oxydbd, no3oxydbd, h2o2oxydbd, hno3oxydbd, no2oxydbd)
86!$OMP THREADPRIVATE(ohoxyd_inter, o1doxyd_inter, o3oxyd_inter, no3oxyd_inter)
87!$OMP THREADPRIVATE(h2o2oxyd_inter, hno3oxyd_inter,no2oxyd_inter, ohoxyd_phis, o1doxyd_phis, o3oxyd_phis)
88!$OMP THREADPRIVATE(no3oxyd_phis, h2o2oxyd_phis, hno3oxyd_phis, no2oxyd_phis)
89  real, allocatable, dimension(:,:,:) , save :: ohoxyd_year
90  real, allocatable, dimension(:,:,:) , save :: o1doxyd_year
91  real, allocatable, dimension(:,:,:) , save :: o3oxyd_year
92  real, allocatable, dimension(:,:,:) , save :: no3oxyd_year
93  real, allocatable, dimension(:,:,:) , save :: h2o2oxyd_year
94  real, allocatable, dimension(:,:,:) , save :: hno3oxyd_year, no2oxyd_year
95
96!$OMP THREADPRIVATE(ohoxyd_year, o1doxyd_year, o3oxyd_year)
97!$OMP THREADPRIVATE(no3oxyd_year, h2o2oxyd_year, hno3oxyd_year, no2oxyd_year)                                                   
98
99
100
101  real, SAVE, ALLOCATABLE :: ohoxyd(:,:)
102  real, SAVE, ALLOCATABLE :: o1doxyd(:,:)
103  real, SAVE, ALLOCATABLE :: o3oxyd(:,:)
104  real, SAVE, ALLOCATABLE :: no3oxyd(:,:)
105  real, SAVE, ALLOCATABLE :: h2o2oxyd(:,:)
106  real, SAVE, ALLOCATABLE :: hno3oxyd(:,:)
107  real, SAVE, ALLOCATABLE :: no2oxyd(:,:)
108!$OMP THREADPRIVATE(ohoxyd,o1doxyd,o3oxyd,no3oxyd,h2o2oxyd,hno3oxyd, no2oxyd)
109  logical, save :: cyclical = .true.
110!$OMP THREADPRIVATE(cyclical)
111
112CONTAINS
113
114
115  SUBROUTINE init_oxydant_com
116    USE inca_dim
117    IMPLICIT NONE
118
119    ALLOCATE(ohoxyd(PLON,PLEV))
120    ALLOCATE(o1doxyd(PLON,PLEV))
121    ALLOCATE(o3oxyd(PLON,PLEV))
122    ALLOCATE(no3oxyd(PLON,PLEV))
123    ALLOCATE(h2o2oxyd(PLON,PLEV))
124    ALLOCATE(hno3oxyd(PLON,PLEV))
125    ALLOCATE(no2oxyd(PLON,PLEV))
126
127  END SUBROUTINE init_oxydant_com
128
129
130
131
132end module OXYDANT_COM
133
134
135
136
Note: See TracBrowser for help on using the repository browser.