[1160] | 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 |
---|