source: LMDZ5/branches/testing/libf/phylmd/Dust/finemission.F @ 2720

Last change on this file since 2720 was 2641, checked in by Laurent Fairhead, 8 years ago

Merged trunk changes r2593:2640 into testing branch

File size: 6.3 KB
Line 
1C This subroutine calculates the emissions of BLACK CARBON and ORGANIC
2C MATTER
3      SUBROUTINE finemission(zdz,pdtphys,zalt,kminbc,kmaxbc,
4     .                       scale_param_bb,scale_param_ff,
5     .                       iregion_ind,iregion_bb,
6     .                       nbreg_ind,nbreg_bb,
7     .                       lmt_bcff,lmt_bcnff,lmt_bcbb_l,lmt_bcbb_h,
8     .                       lmt_bcba,lmt_omff,lmt_omnff,lmt_ombb_l,
9     .                       lmt_ombb_h,lmt_omnat,lmt_omba,id_fine,
10     .                                    flux_sparam_bb,flux_sparam_ff,
11     .                                        source_tr,flux_tr,tr_seri)
12
13      USE dimphy
14      USE indice_sol_mod
15      USE infotrac
16!      USE phytracr_spl_mod, ONLY : nbreg_dust, nbreg_ind, nbreg_bb
17      IMPLICIT NONE
18
19#include "dimensions.h"
20#include "chem.h"
21#include "YOMCST.h"
22#include "paramet.h"
23
24      INTEGER i, k, kminbc, kmaxbc
25c============================= INPUT ===================================
26      REAL pdtphys  ! pas d'integration pour la physique (seconde)
27      REAL zalt(klon,klev)
28      REAL zdz(klon,klev)
29c
30c------------------------- Scaling Parameters --------------------------
31c   
32      INTEGER nbreg_ind,nbreg_bb
33      INTEGER iregion_ind(klon)  !Defines regions for SO2, BC & OM
34      INTEGER iregion_bb(klon)   !Defines regions for SO2, BC & OM
35      REAL scale_param_bb(nbreg_bb) !Scaling parameter for biomas burning
36      REAL scale_param_ff(nbreg_ind) !Scaling parameter for industrial emissions (fossil fuel)
37      INTEGER id_fine
38c============================= OUTPUT ==================================
39      REAL source_tr(klon,nbtr)
40      REAL flux_tr(klon,nbtr)
41      REAL tr_seri(klon,klev,nbtr) ! traceur
42      REAL flux_sparam_bb(klon), flux_sparam_ff(klon)
43c========================= LOCAL VARIABLES =============================
44      REAL zzdz
45c------------------------- BLACK CARBON emissions ----------------------
46      REAL lmt_bcff(klon)       ! emissions de BC fossil fuels
47      REAL lmt_bcnff(klon)      ! emissions de BC non-fossil fuels
48      REAL lmt_bcbb_l(klon)     ! emissions de BC biomass basses
49      REAL lmt_bcbb_h(klon)     ! emissions de BC biomass hautes
50      REAL lmt_bcba(klon)       ! emissions de BC bateau
51c------------------------ ORGANIC MATTER emissions ---------------------
52      REAL lmt_omff(klon)     ! emissions de OM fossil fuels
53      REAL lmt_omnff(klon)    ! emissions de OM non-fossil fuels
54      REAL lmt_ombb_l(klon)   ! emissions de OM biomass basses
55      REAL lmt_ombb_h(klon)   ! emissions de OM biomass hautes
56      REAL lmt_omnat(klon)    ! emissions de OM Natural
57      REAL lmt_omba(klon)     ! emissions de OM bateau
58                               
59      EXTERNAL condsurfc                               
60c========================================================================
61c                        LOW LEVEL EMISSIONS
62c========================================================================
63           
64c corresponds to bc_source.EQ.3
65
66      DO i=1,klon
67         IF (iregion_ind(i).GT.0) THEN
68       IF(id_fine>0)    source_tr(i,id_fine)=source_tr(i,id_fine)+
69     .                (scale_param_ff(iregion_ind(i))*lmt_bcff(i)+     !g/m2/s
70     .                 scale_param_ff(iregion_ind(i))*lmt_omff(i)
71     .                 )     * 1.e4                        !g/m2/s
72c
73      IF(id_fine>0)     flux_tr(i,id_fine)=flux_tr(i,id_fine)+
74     .                (scale_param_ff(iregion_ind(i))*lmt_bcff(i)+     !mg/m2/s
75     .                 scale_param_ff(iregion_ind(i))*lmt_omff(i)
76     .                 )     * 1.e4 *1.e3                  !mg/m2/s
77c
78           flux_sparam_ff(i)= flux_sparam_ff(i) +
79     .                     scale_param_ff(iregion_ind(i))*
80     .                     ( lmt_bcff(i)+lmt_omff(i))
81     .                     *1.e4*1.e3
82         ENDIF
83         IF (iregion_bb(i).GT.0) THEN
84       IF(id_fine>0)    source_tr(i,id_fine)=source_tr(i,id_fine)+
85     .                (scale_param_bb(iregion_bb(i))*lmt_bcbb_l(i)+   !g/m2/s
86     .                 scale_param_bb(iregion_bb(i))*lmt_ombb_l(i)    !g/m2/s
87     .                 )     * 1.e4                        !g/m2/s
88c
89       IF(id_fine>0)    flux_tr(i,id_fine)=flux_tr(i,id_fine)+
90     .                (scale_param_bb(iregion_bb(i))*lmt_bcbb_l(i)+   !mg/m2/s
91     .                 scale_param_bb(iregion_bb(i))*lmt_ombb_l(i)+   !mg/m2/s
92     .                 scale_param_bb(iregion_bb(i))*lmt_bcbb_h(i)+   !mg/m2/s
93     .                 scale_param_bb(iregion_bb(i))*lmt_ombb_h(i)    !mg/m2/s
94     .                 )     * 1.e4 *1.e3                  !mg/m2/s
95c
96           flux_sparam_bb(i)=flux_sparam_bb(i) +
97     .                   scale_param_bb(iregion_bb(i))*(lmt_bcbb_l(i) +
98     .                   lmt_bcbb_h(i) + lmt_ombb_l(i) + lmt_ombb_h(i))
99     .                   *1.e4*1.e3
100         ENDIF
101       IF(id_fine>0)  source_tr(i,id_fine)=source_tr(i,id_fine)+
102     .                (lmt_bcnff(i)+lmt_bcba(i)+lmt_omnff(i)+
103     .                 lmt_omnat(i)+lmt_omba(i))     * 1.e4           !g/m2/s
104c
105       IF(id_fine>0)  flux_tr(i,id_fine)=flux_tr(i,id_fine)+
106     .                (lmt_bcnff(i)+lmt_omnff(i)+lmt_omnat(i)+
107     .                 lmt_omba(i)+lmt_bcba(i))     * 1.e4 *1.e3      !mg/m2/s
108c
109         flux_sparam_ff(i)= flux_sparam_ff(i) +
110     .                      (lmt_omba(i)+lmt_bcba(i))*1.e4*1.e3
111      ENDDO
112
113c========================================================================
114c                        HIGH LEVEL EMISSIONS
115c========================================================================
116                             
117c  Sources hautes de BC/OM
118
119c
120c HIGH LEVEL EMISSIONS OF SO2 ARE IN PRECUREMISSION.F
121c
122      k=2                             !introducing emissions in level 2
123cnhl      DO i = 1, klon
124c
125cnhl      tr_seri(i,k,id_fine)=tr_seri(i,k,id_fine)+scale_param_ff(iregion_ind(i))*
126cnhl     .               (lmt_bcff_h(i)+lmt_omff_h(i))/zdz(i,k)/100.*pdtphys
127c
128cnhl      ENDDO
129
130      DO k=kminbc, kmaxbc
131      DO i = 1, klon
132          zzdz=zalt(i,kmaxbc+1)-zalt(i,kminbc)
133c
134         IF (iregion_bb(i) .GT.0) THEN
135        IF(id_fine>0)   tr_seri(i,k,id_fine)=tr_seri(i,k,id_fine)+
136     .              (scale_param_bb(iregion_bb(i))*lmt_bcbb_h(i)+
137     .               scale_param_bb(iregion_bb(i))*lmt_ombb_h(i))
138     .                              /zzdz/100.*pdtphys
139         ENDIF
140c
141      ENDDO
142      ENDDO
143c
144      END
Note: See TracBrowser for help on using the repository browser.