1 | ! |
---|
2 | ! $Header: /home/cvsroot/LMDZ4/libf/phylmd/phytrac.F,v 1.16 2006/03/24 15:06:23 lmdzadmin Exp $ |
---|
3 | ! |
---|
4 | c |
---|
5 | c |
---|
6 | SUBROUTINE phytrac_emiss (timesimu, |
---|
7 | I debutphy, |
---|
8 | I lafin, |
---|
9 | I nqmax, |
---|
10 | I nlon, |
---|
11 | I nlev, |
---|
12 | I pdtphys, |
---|
13 | I paprs, |
---|
14 | I xlat,xlon, |
---|
15 | O tr_seri) |
---|
16 | |
---|
17 | c====================================================================== |
---|
18 | c Auteur(s) FH |
---|
19 | c Objet: Moniteur general des tendances traceurs |
---|
20 | c |
---|
21 | cAA Remarques en vrac: |
---|
22 | cAA-------------------- |
---|
23 | cAA 1/ le call phytrac se fait avec nqmax |
---|
24 | c |
---|
25 | c SL: Janvier 2014 |
---|
26 | c Version developed for surface emission |
---|
27 | c Maybe could be used just to compute the 'source' variable from physiq |
---|
28 | c |
---|
29 | c====================================================================== |
---|
30 | USE ioipsl |
---|
31 | USE infotrac |
---|
32 | USE control_mod |
---|
33 | use dimphy |
---|
34 | USE comgeomphy |
---|
35 | IMPLICIT none |
---|
36 | #include "YOMCST.h" |
---|
37 | #include "dimensions.h" |
---|
38 | #include "clesphys.h" |
---|
39 | #include "temps.h" |
---|
40 | #include "paramet.h" |
---|
41 | c====================================================================== |
---|
42 | |
---|
43 | c Arguments: |
---|
44 | |
---|
45 | c EN ENTREE: |
---|
46 | c ========== |
---|
47 | |
---|
48 | real timesimu ! duree depuis debut simu (s) |
---|
49 | logical debutphy ! le flag de l'initialisation de la physique |
---|
50 | logical lafin ! le flag de la fin de la physique |
---|
51 | integer nqmax ! nombre de traceurs auxquels on applique la physique |
---|
52 | integer nlon ! nombre de points horizontaux |
---|
53 | integer nlev ! nombre de couches verticales |
---|
54 | real pdtphys ! pas d'integration pour la physique (seconde) |
---|
55 | real paprs(nlon,nlev+1) ! pression pour chaque inter-couche (en Pa) |
---|
56 | REAL xlat(nlon) ! latitudes pour chaque point |
---|
57 | REAL xlon(nlon) ! longitudes pour chaque point |
---|
58 | |
---|
59 | c EN ENTREE/SORTIE: |
---|
60 | c ================= |
---|
61 | |
---|
62 | real tr_seri(nlon,nlev,nqmax) ! traceur |
---|
63 | |
---|
64 | cAA ---------------------------- |
---|
65 | cAA VARIABLES LOCALES TRACEURS |
---|
66 | cAA ---------------------------- |
---|
67 | |
---|
68 | C les traceurs |
---|
69 | |
---|
70 | c=================== |
---|
71 | c it--------indice de traceur |
---|
72 | c k,i---------indices long, vert |
---|
73 | c=================== |
---|
74 | c pour emission volcan |
---|
75 | real :: deltatr(klon,klev,nqtot) |
---|
76 | |
---|
77 | integer,parameter :: nbsrc=2,nblat=5,nblon=4 |
---|
78 | integer,parameter :: Nemiss=1 ! duree emission (Ed) |
---|
79 | real,save :: source_volcan(nbsrc) |
---|
80 | real,save :: lat_volcan(nblat),lon_volcan(nblon) |
---|
81 | real,save :: area_emiss(nblat,nblon) |
---|
82 | integer,save :: ig_volcan(nblat,nblon) |
---|
83 | |
---|
84 | c====================================================================== |
---|
85 | |
---|
86 | INTEGER i, k, it |
---|
87 | integer ilat,ilon,iemiss |
---|
88 | real deltalat,deltalon |
---|
89 | |
---|
90 | c Variables liees a l'ecriture de la bande histoire physique |
---|
91 | |
---|
92 | c Variables locales pour effectuer les appels en serie |
---|
93 | c---------------------------------------------------- |
---|
94 | |
---|
95 | REAL d_tr(nlon,nlev) ! tendances de traceurs |
---|
96 | |
---|
97 | character*20 modname |
---|
98 | character*80 abort_message |
---|
99 | |
---|
100 | c====================================================================== |
---|
101 | |
---|
102 | modname = 'phytrac_emiss' |
---|
103 | c EMISSION TRACEURS |
---|
104 | |
---|
105 | c--------- |
---|
106 | c debutphy |
---|
107 | c--------- |
---|
108 | if (debutphy) then |
---|
109 | print*,"DEBUT PHYTRAC" |
---|
110 | print*,"PHYTRAC: EMISSION" |
---|
111 | |
---|
112 | c============================================================= |
---|
113 | c============================================================= |
---|
114 | c============================================================= |
---|
115 | c Initialisation des traceurs |
---|
116 | c============================================================= |
---|
117 | c============================================================= |
---|
118 | c============================================================= |
---|
119 | |
---|
120 | C========================================================================= |
---|
121 | C========================================================================= |
---|
122 | c Caracteristiques des traceurs emis: |
---|
123 | |
---|
124 | c nombre total de traceur |
---|
125 | if (nbsrc*nblat*nblon .gt. nqtot) then |
---|
126 | write(*,*) "Attention, pas assez de traceurs" |
---|
127 | write(*,*) "le dernier sera bien le dernier" |
---|
128 | endif |
---|
129 | |
---|
130 | c source en kg/s |
---|
131 | source_volcan(1) = 1. |
---|
132 | source_volcan(2) = 1000. |
---|
133 | c localisation volcan |
---|
134 | lat_volcan(1) = 70. |
---|
135 | lat_volcan(2) = 35. |
---|
136 | lat_volcan(3) = 0. |
---|
137 | lat_volcan(4) = -35. |
---|
138 | lat_volcan(5) = -70. |
---|
139 | lon_volcan(1) = -120. |
---|
140 | lon_volcan(2) = -30. |
---|
141 | lon_volcan(3) = 60. |
---|
142 | lon_volcan(4) = 150. |
---|
143 | |
---|
144 | deltalat = 180./jjm |
---|
145 | deltalon = 360./jjm |
---|
146 | do i=1,nlon |
---|
147 | do ilat=1,nblat |
---|
148 | do ilon=1,nblon |
---|
149 | if ((xlat(i).ge.lat_volcan(ilat)) |
---|
150 | & .and.((xlat(i)-deltalat).lt.lat_volcan(ilat)) |
---|
151 | & .and.(xlon(i).le.lon_volcan(ilon)) |
---|
152 | & .and.((xlon(i)+deltalon).gt.lon_volcan(ilon)) ) then |
---|
153 | ig_volcan(ilat,ilon)= i |
---|
154 | area_emiss(ilat,ilon) = airephy(i) |
---|
155 | endif |
---|
156 | enddo |
---|
157 | enddo |
---|
158 | enddo |
---|
159 | |
---|
160 | C========================================================================= |
---|
161 | C========================================================================= |
---|
162 | |
---|
163 | c------------- |
---|
164 | c fin debutphy |
---|
165 | c------------- |
---|
166 | ENDIF ! fin debutphy |
---|
167 | |
---|
168 | c====================================================================== |
---|
169 | c Emission d'un traceur pendant un certain temps |
---|
170 | c====================================================================== |
---|
171 | do i = 1,nlon |
---|
172 | do iemiss = 1,nbsrc |
---|
173 | do ilat = 1,nblat |
---|
174 | do ilon = 1,nblon |
---|
175 | it=min(iemiss*ilat*ilon,nqtot) |
---|
176 | |
---|
177 | if (i .eq. ig_volcan(ilat,ilon)) then |
---|
178 | |
---|
179 | c source appliquee pendant Nemiss Ed |
---|
180 | if (timesimu .lt. 86400.*Nemiss) then |
---|
181 | |
---|
182 | c source en kg/kg/s |
---|
183 | deltatr(i,1,it) = source_volcan(iemiss)*RG |
---|
184 | $ /(area_emiss(ilat,ilon)*(paprs(i,1) - paprs(i,2))) |
---|
185 | tr_seri(i,1,it) = tr_seri(i,1,it) + deltatr(i,1,it)*pdtphys |
---|
186 | |
---|
187 | else |
---|
188 | deltatr(i,1,it) = 0. |
---|
189 | end if ! duree emission |
---|
190 | |
---|
191 | end if ! i localisation |
---|
192 | end do |
---|
193 | end do |
---|
194 | end do |
---|
195 | end do |
---|
196 | c====================================================================== |
---|
197 | c====================================================================== |
---|
198 | |
---|
199 | RETURN |
---|
200 | END |
---|