source: trunk/LMDZ.VENUS/libf/phyvenus/phytrac_emiss.F @ 1198

Last change on this file since 1198 was 1160, checked in by slebonnois, 11 years ago

SL: update for tracers management in phytrac, Venus

File size: 6.1 KB
RevLine 
[1160]1!
2! $Header: /home/cvsroot/LMDZ4/libf/phylmd/phytrac.F,v 1.16 2006/03/24 15:06:23 lmdzadmin Exp $
3!
4c
5c
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
17c======================================================================
18c Auteur(s) FH
19c Objet: Moniteur general des tendances traceurs
20c
21cAA Remarques en vrac:
22cAA--------------------
23cAA 1/ le call phytrac se fait avec nqmax
24c
25c SL: Janvier 2014
26c Version developed for surface emission
27c Maybe could be used just to compute the 'source' variable from physiq
28c
29c======================================================================
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"
41c======================================================================
42
43c Arguments:
44
45c   EN ENTREE:
46c   ==========
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
59c   EN ENTREE/SORTIE:
60c   =================
61
62      real tr_seri(nlon,nlev,nqmax) ! traceur 
63
64cAA ----------------------------
65cAA  VARIABLES LOCALES TRACEURS
66cAA ----------------------------
67
68C les traceurs
69
70c===================
71c it--------indice de traceur
72c k,i---------indices long, vert
73c===================
74c 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
84c======================================================================
85
86      INTEGER i, k, it
87      integer ilat,ilon,iemiss
88      real    deltalat,deltalon
89
90c Variables liees a l'ecriture de la bande histoire physique
91
92c Variables locales pour effectuer les appels en serie
93c----------------------------------------------------
94
95      REAL d_tr(nlon,nlev) ! tendances de traceurs
96
97      character*20 modname
98      character*80 abort_message
99
100c======================================================================
101
102      modname = 'phytrac_emiss'
103c EMISSION TRACEURS
104
105c---------
106c debutphy
107c---------
108      if (debutphy) then
109         print*,"DEBUT PHYTRAC"
110         print*,"PHYTRAC: EMISSION"
111
112c=============================================================
113c=============================================================
114c=============================================================
115c   Initialisation des traceurs
116c=============================================================
117c=============================================================
118c=============================================================
119
120C=========================================================================
121C=========================================================================
122c Caracteristiques des traceurs emis:
123
124c 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
130c source en kg/s
131         source_volcan(1) = 1.
132         source_volcan(2) = 1000.
133c 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
160C=========================================================================
161C=========================================================================
162
163c-------------
164c fin debutphy
165c-------------
166      ENDIF  ! fin debutphy
167
168c======================================================================
169c Emission d'un traceur pendant un certain temps
170c======================================================================
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
179c source appliquee pendant Nemiss Ed
180               if (timesimu .lt. 86400.*Nemiss) then
181
182c 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
196c======================================================================
197c======================================================================
198
199      RETURN
200      END
Note: See TracBrowser for help on using the repository browser.