Changeset 1519 for trunk/LMDZ.VENUS/libf
- Timestamp:
- Mar 23, 2016, 12:09:36 PM (9 years ago)
- Location:
- trunk/LMDZ.VENUS/libf/phyvenus
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.VENUS/libf/phyvenus/physiq.F
r1506 r1519 227 227 EXTERNAL diagphy 228 228 EXTERNAL mucorr 229 EXTERNAL phytrac230 229 EXTERNAL nirco2abs 231 230 EXTERNAL nir_leedat -
trunk/LMDZ.VENUS/libf/phyvenus/phytrac_emiss.F
r1443 r1519 33 33 use dimphy 34 34 USE comgeomphy 35 USE chemparam_mod,only:M_tr 35 36 IMPLICIT none 36 37 #include "YOMCST.h" … … 65 66 cAA ---------------------------- 66 67 67 C les traceurs68 69 c===================70 c it--------indice de traceur71 c k,i---------indices long, vert72 c===================73 68 c pour emission volcan 74 69 real :: deltatr(klon,klev,nqtot) 75 70 76 integer,parameter :: nb src=2,nblat=5,nblon=477 ! integer,parameter :: Nemiss=1! duree emission (Ed)78 integer,save :: N emiss(nbsrc) ! duration emission (Ed)79 real,save :: so urce_volcan(nbsrc) ! flux emission (kg/s)71 integer,parameter :: nblat=5,nblon=4,nbz=3 72 integer,parameter :: Nemiss=1 ! duree emission (Ed) 73 integer,save :: Nheight(nbz) ! layer emission 74 real,save :: so2_quantity ! quantity so2 (kg) 80 75 real,save :: lat_volcan(nblat),lon_volcan(nblon) 81 76 real,save :: area_emiss(nblat,nblon) 82 77 integer,save :: ig_volcan(nblat,nblon) 83 78 84 c======================================================================85 86 79 INTEGER i, k, it 87 integer ilat,ilon,i emiss80 integer ilat,ilon,iz 88 81 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' 82 c====================================================================== 83 103 84 c EMISSION TRACEURS 104 85 105 86 c--------- 106 87 c debutphy 107 c--------- 88 c--------- 108 89 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========================================================================= 90 91 print*,"DEBUT PHYTRAC" 92 print*,"PHYTRAC: EMISSION" 93 94 ALLOCATE(M_tr(nqtot)) 95 M_tr(:)=64. ! SO2 96 121 97 C========================================================================= 122 98 c Caracteristiques des traceurs emis: 99 C========================================================================= 123 100 124 101 c nombre total de traceur 125 if (nbsrc*nblat*nblon .gt. nqtot) then 102 if (nbz*nblat*nblon .gt. nqtot) then 103 print*, nbz*nblat*nblon, nqtot 126 104 write(*,*) "Attention, pas assez de traceurs" 127 105 write(*,*) "le dernier sera bien le dernier" 128 106 endif 129 107 130 c source en kg/s 131 source_volcan(1) = 1. 132 source_volcan(2) = 1000. 133 c duration in Ed 134 Nemiss(1) = 1 135 Nemiss(2) = 10 108 c quantite en kg 109 so2_quantity = 20.*10.**9. 110 111 c height (in layer index) 112 Nheight(1) = 6 ! ~ 1 km 113 Nheight(2) = 16 ! ~ 25 km 114 Nheight(3) = 24 ! ~ 50 km 115 136 116 c localisation volcan 137 117 lat_volcan(1) = 70. … … 140 120 lat_volcan(4) = -35. 141 121 lat_volcan(5) = -70. 142 lon_volcan(1) = -120. 143 lon_volcan(2) = -30. 144 lon_volcan(3) = 60. 145 lon_volcan(4) = 150. 146 122 lon_volcan(1) = -125. 123 lon_volcan(2) = -35. 124 lon_volcan(3) = 55. 125 lon_volcan(4) = 145. 126 127 ig_volcan(ilat,ilon)= 0 147 128 deltalat = 180./jjm 148 deltalon = 360./jjm 129 deltalon = 360./iim 130 149 131 do i=1,nlon 150 132 do ilat=1,nblat … … 156 138 ig_volcan(ilat,ilon)= i 157 139 area_emiss(ilat,ilon) = airephy(i) 158 endif 159 enddo 160 enddo 161 enddo 162 163 C========================================================================= 164 C========================================================================= 165 140 print*,"Lat,lon=",ilat,ilon," OK" 141 end if 142 end do 143 end do 144 end do 145 146 c Reinit des traceurs si necessaire 147 if (reinit_trac) then 148 tr_seri(:,:,:)=0. 149 endif 150 151 C========================================================================= 152 C========================================================================= 153 ENDIF ! fin debutphy 166 154 c------------- 167 155 c fin debutphy 168 156 c------------- 169 ENDIF ! fin debutphy170 157 171 158 c====================================================================== 172 159 c Emission d'un traceur pendant un certain temps 173 c====================================================================== 174 do i = 1,nlon 175 do iemiss = 1,nbsrc 176 do ilat = 1,nblat 177 do ilon = 1,nblon 178 it=(iemiss-1)*nblat*nblon+(ilat-1)*nblon+ilon 179 it=min(it,nqtot) 180 deltatr(i,1,it) = 0. 181 182 if (i .eq. ig_volcan(ilat,ilon)) then 160 c necessite raz_date=1 dans run.def 161 c et reinit_trac=y 162 c====================================================================== 163 deltatr(:,:,:) = 0. 183 164 184 165 c source appliquee pendant Nemiss Ed 185 if (timesimu .lt. 86400.*Nemiss(iemiss)) then 186 166 if (timesimu .lt. 86400*Nemiss) then 167 168 c emet les traceurs qui sont presents sur la grille 169 do ilat = 1,nblat 170 do ilon = 1,nblon 171 if (ig_volcan(ilat,ilon).ne.0) then 172 173 do iz = 1,nbz 174 it=min( (iz-1)*nblat*nblon+(ilat-1)*nblon+ilon , nqtot ) 175 i=ig_volcan(ilat,ilon) 176 177 c injection dans une seule cellule: 187 178 c source en kg/kg/s 188 deltatr(i,1,it) = source_volcan(iemiss)*RG 189 $ /(area_emiss(ilat,ilon)*(paprs(i,1) - paprs(i,2))) 190 tr_seri(i,1,it) = tr_seri(i,1,it) + deltatr(i,1,it)*pdtphys 191 192 end if ! duree emission 193 end if ! i localisation 194 end do 195 end do 179 c deltatr(i,Nheight(iz),it) = so2_quantity/(86400.*Nemiss) ! kg/s 180 c $ *RG/( area_emiss(ilat,ilon) 181 c $ *(paprs(i,Nheight(iz))-paprs(i,Nheight(iz)+1)) ) ! /kg (masse cellule) 182 183 c tr_seri(i,Nheight(iz),it) = tr_seri(i,Nheight(iz),it) 184 c $ + deltatr(i,Nheight(iz),it)*pdtphys 185 186 c injection dans toute la colonne (a faire): 187 do k=1,Nheight(iz) 188 deltatr(i,k,it) = so2_quantity/(86400.*Nemiss) ! kg/s 189 $ *RG/( area_emiss(ilat,ilon) 190 $ *(paprs(i,1)-paprs(i,Nheight(iz)+1)) ) ! /kg (masse colonne) 191 192 tr_seri(i,k,it) = tr_seri(i,k,it)+deltatr(i,k,it)*pdtphys 193 end do 194 196 195 end do 197 end do 196 197 endif ! ig_volcan!=0 198 end do 199 end do 200 201 end if ! duree emission 202 198 203 c====================================================================== 199 204 c====================================================================== -
trunk/LMDZ.VENUS/libf/phyvenus/phytrac_relax.F
r1443 r1519 30 30 use dimphy 31 31 USE comgeomphy 32 USE chemparam_mod,only:M_tr 32 33 IMPLICIT none 33 34 #include "YOMCST.h" … … 95 96 nqCO_OCS = 6 96 97 98 c !!!!!! ATTENTION: A REVOIR / A VERIFIER 99 c les traceurs sont en mass mixing ratio dans la dyn 100 c et convertis en frac mol avec M_tr dans les sorties... 101 c Mettre le profil de rappel en mass mixing ratio !! 102 103 print*,"METTRE A JOUR phytrac_relax" 104 stop 105 97 106 c--------- 98 107 c debutphy … … 103 112 allocate(zprof(nlev,nqtot),tau(nlev,nqtot)) 104 113 114 ALLOCATE(M_tr(nqtot)) 115 105 116 c============================================================= 106 117 c============================================================= … … 144 155 do it=1,3 145 156 print*,"INIT ZPROF ",tname(it) 157 M_tr(it)=28. ! CO 146 158 do k=1,nlev 147 159 zprof(k,it)=0. … … 183 195 c OCS 184 196 print*,"INIT ZPROF ",tname(it+3) 197 M_tr(it+3)=60. ! OCS 185 198 do k=1,nlev 186 199 zprof(k,it+3)=0.
Note: See TracChangeset
for help on using the changeset viewer.