Changeset 1160 for trunk/LMDZ.VENUS/libf/phyvenus
- Timestamp:
- Jan 16, 2014, 9:49:42 AM (11 years ago)
- Location:
- trunk/LMDZ.VENUS/libf/phyvenus
- Files:
-
- 1 added
- 3 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.VENUS/libf/phyvenus/clesphys.h
r1120 r1160 10 10 LOGICAL cycle_diurne,soil_model 11 11 LOGICAL ok_orodr,ok_orolf,ok_gw_nonoro 12 LOGICAL ok_kzmin 12 13 INTEGER nbapp_rad, nbapp_chim, iflag_con, iflag_ajs 14 INTEGER lev_histhf, lev_histday, lev_histmth 15 INTEGER tr_scheme 13 16 REAL ecriphy 14 17 REAL solaire 15 18 REAL z0, lmixmin 16 19 REAL ksta, inertie 17 LOGICAL ok_kzmin18 INTEGER lev_histhf, lev_histday, lev_histmth19 20 20 COMMON/clesphys/cycle_diurne, soil_model, & 21 & ok_orodr, ok_orolf, ok_gw_nonoro, nbapp_rad, nbapp_chim & 22 & , ecriphy & 23 & , iflag_con, iflag_ajs, solaire, z0, lmixmin, ksta & 24 & , ok_kzmin, lev_histhf, lev_histday, lev_histmth & 25 & , inertie 21 COMMON/clesphys_l/cycle_diurne, soil_model, & 22 & ok_orodr, ok_orolf, ok_gw_nonoro, ok_kzmin 26 23 24 COMMON/clesphys_i/nbapp_rad, nbapp_chim, & 25 & iflag_con, iflag_ajs, & 26 & lev_histhf, lev_histday, lev_histmth, tr_scheme 27 28 COMMON/clesphys_r/ecriphy, solaire, z0, lmixmin, & 29 & ksta, inertie 30 -
trunk/LMDZ.VENUS/libf/phyvenus/conf_phys.F90
r1120 r1160 190 190 call getin('solaire', solaire) 191 191 ! 192 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 193 ! PARAMETER FOR THE TRACERS 194 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 195 ! 196 !Config Key = tr_scheme 197 !Config Desc = 198 !Config Def = 0 199 !Config Help = 200 ! 201 ! 0 = Nothing is done (passive tracers) 202 ! 1 = pseudo-chemistry with relaxation toward fixed profile 203 ! See Marcq&Lebonnois 2013 204 ! 2 = surface emission 205 ! For the moment, inspired from Mars version 206 ! However, the variable 'source' could be used in physiq 207 ! so the call to phytrac_emiss could be to initialise it. 208 ! 3 = Full chemistry 209 ! To be added by Aurelien 210 tr_scheme = 0 211 call getin('tr_scheme',tr_scheme) 212 192 213 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 193 214 ! PARAMETER FOR THE PLANETARY BOUNDARY LAYER AND SOIL … … 323 344 write(numout,*)' Equinoxe = ',R_peri 324 345 write(numout,*)' Inclinaison =',R_incl 346 write(numout,*)' tr_scheme = ', tr_scheme 325 347 write(numout,*)' iflag_pbl = ', iflag_pbl 326 348 write(numout,*)' z0 = ',z0 -
trunk/LMDZ.VENUS/libf/phyvenus/physiq.F
r1120 r1160 669 669 670 670 if (iflag_trac.eq.1) then 671 call phytrac ( 672 I itap, gmtime, 673 I debut,lafin, 674 I nqmax, 675 I nlon,nlev,dtime, 676 I u,v,t,paprs,pplay, 677 I rlatd, 678 I rlond,presnivs,pphis,pphi, 679 I falbe, 671 672 if (tr_scheme.eq.1) then 673 ! Case 1: pseudo-chemistry with relaxation toward fixed profile 674 call phytrac_relax (debut,lafin,nqmax, 675 I nlon,nlev,dtime,pplay, 680 676 O tr_seri) 677 678 elseif (tr_scheme.eq.2) then 679 ! Case 2: surface emission 680 ! For the moment, inspired from Mars version 681 ! However, the variable 'source' could be used in physiq 682 ! so the call to phytrac_emiss could be to initialise it. 683 call phytrac_emiss ( (rjourvrai+gmtime)*RDAY, 684 I debut,lafin,nqmax, 685 I nlon,nlev,dtime,paprs, 686 I rlatd,rlond, 687 O tr_seri) 688 elseif (tr_scheme.eq.3) then 689 ! Case 3: Full chemistry 690 ! call phytrac_chem ( ?? ) 691 print*,"Chemistry not yet implemented..." 692 print*,"See Aurelien Stolzenbach" 693 endif 681 694 endif 682 695 -
trunk/LMDZ.VENUS/libf/phyvenus/phytrac_relax.F
r1157 r1160 4 4 c 5 5 c 6 SUBROUTINE phytrac (nstep, 7 I gmtime, 8 I debutphy, 9 I lafin, 6 SUBROUTINE phytrac_relax (debutphy,lafin, 10 7 I nqmax, 11 8 I nlon, 12 9 I nlev, 13 10 I pdtphys, 14 I u,15 I v,16 I t_seri,17 I paprs,18 11 I pplay, 19 I xlat,20 I xlon,21 I presnivs,22 I pphis,23 I pphi,24 I albsol,25 12 O tr_seri) 26 13 … … 32 19 cAA-------------------- 33 20 cAA 1/ le call phytrac se fait avec nqmax 21 c 22 c SL: Janvier 2014 23 c Version developed by E. Marcq for pseudo-chemistry relaxation 24 c See Marcq&Lebonnois 2013. 25 c 34 26 c====================================================================== 35 27 USE ioipsl … … 41 33 #include "YOMCST.h" 42 34 #include "dimensions.h" 43 #include "clesphys.h" !///utile?35 #include "clesphys.h" 44 36 #include "temps.h" 45 37 #include "paramet.h" … … 47 39 48 40 c Arguments: 49 c 41 50 42 c EN ENTREE: 51 43 c ========== 52 c 53 c divers: 54 c ------- 55 c 44 45 logical debutphy ! le flag de l'initialisation de la physique 46 logical lafin ! le flag de la fin de la physique 47 integer nqmax ! nombre de traceurs auxquels on applique la physique 56 48 integer nlon ! nombre de points horizontaux 57 49 integer nlev ! nombre de couches verticales 58 integer nqmax ! nombre de traceurs auxquels on applique la physique59 integer nstep ! appel physique60 integer nseuil ! numero du premier traceur non CV61 c integer julien !jour julien62 c integer itop_con(nlon)63 c integer ibas_con(nlon)64 real gmtime65 50 real pdtphys ! pas d'integration pour la physique (seconde) 66 real t_seri(nlon,nlev) ! temperature 51 real pplay(nlon,nlev) ! pression pour le mileu de chaque couche (en Pa) 52 53 c EN ENTREE/SORTIE: 54 c ================= 55 67 56 real tr_seri(nlon,nlev,nqmax) ! traceur 68 real u(nlon,nlev)69 real v(nlon,nlev)70 real albsol(nlon) ! albedo surface71 real paprs(nlon,nlev+1) ! pression pour chaque inter-couche (en Pa)72 real ps(nlon) ! pression surface73 real pplay(nlon,nlev) ! pression pour le mileu de chaque couche (en Pa)74 real pphi(nlon,nlev) ! geopotentiel75 real pphis(nlon)76 REAL xlat(nlon) ! latitudes pour chaque point77 REAL xlon(nlon) ! longitudes pour chaque point78 REAL presnivs(nlev)79 logical debutphy ! le flag de l'initialisation de la physique80 logical lafin ! le flag de la fin de la physique81 c REAL flxmass_w(nlon,nlev)82 57 83 58 cAA ---------------------------- 84 59 cAA VARIABLES LOCALES TRACEURS 85 60 cAA ---------------------------- 86 cAA87 61 88 62 C les traceurs 89 C 90 logical flagCO_OCS 63 91 64 c=================== 92 65 c it--------indice de traceur … … 94 67 c=================== 95 68 c Variables deja declarees dont on a besoin pour traceurs 96 c k,i,it,tr_seri( klon,klev,nqmax),pplay(nlon,nlev),69 c k,i,it,tr_seri(nlon,nlev,nqmax),pplay(nlon,nlev), 97 70 integer nqCO_OCS 98 71 c real pzero,gamma … … 100 73 c parameter (gamma=5000.) 101 74 REAL alpha 102 real deltatr( klon,klev,nqtot) ! ecart au profil de ref zprof75 real deltatr(nlon,nlev,nqtot) ! ecart au profil de ref zprof 103 76 real,save,allocatable :: zprof(:,:) 104 77 real,save,allocatable :: tau(:,:) ! temps de relaxation vers le profil (s) 105 78 c====================================================================== 106 c 107 c Declaration des procedures appelees 108 c 109 c--modif convection tiedtke 79 110 80 INTEGER i, k, it 111 INTEGER iq, iiq 112 REAL delp(klon,klev) 113 c--end modif 114 c 81 115 82 c Variables liees a l'ecriture de la bande histoire physique 116 c 83 117 84 c Variables locales pour effectuer les appels en serie 118 85 c---------------------------------------------------- 119 c 120 REAL d_tr(klon,klev), d_trs(klon) ! tendances de traceurs 121 REAL d_tr_cl(klon,klev,nqmax) ! tendance de traceurs couche limite 122 REAL d_tr_cv(klon,klev,nqmax) ! tendance de traceurs conv pour chq traceur 123 C 86 87 REAL d_tr(nlon,nlev) ! tendances de traceurs 88 124 89 character*20 modname 125 90 character*80 abort_message 126 c 127 c Controles 128 c------------- 129 logical first,couchelimite,convection 130 save first,couchelimite,convection 131 c Olivia 132 data first,couchelimite,convection 133 s /.true.,.false.,.false./ 134 135 modname = 'phytrac' 136 c====================================================================== 137 138 if(first) then 139 allocate(zprof(klev,nqtot),tau(klev,nqtot)) 140 first = .false. 141 endif 142 143 ps(:)=paprs(:,1) 91 92 c====================================================================== 93 94 modname = 'phytrac_relax' 144 95 c TRACEURS TYPE CO ET OCS 145 flagCO_OCS = .true. 146 if (flagCO_OCS) then 147 nqCO_OCS = 6 148 else 149 nqCO_OCS = 0 150 endif ! flagCO_OCS 96 nqCO_OCS = 6 151 97 152 98 c--------- 153 99 c debutphy 154 100 c--------- 155 if (debutphy) then 156 print*,"DEBUT PHYTRAC" 157 C 101 if (debutphy) then 102 print*,"DEBUT PHYTRAC" 103 print*,"PHYTRAC: RELAXATION" 104 allocate(zprof(nlev,nqtot),tau(nlev,nqtot)) 105 158 106 c============================================================= 159 107 c============================================================= … … 163 111 c============================================================= 164 112 c============================================================= 165 c 166 c============================================================= 167 c============================================================= 168 169 C========================================================================= 170 C========================================================================= 171 if (flagCO_OCS) then 113 114 C========================================================================= 115 C========================================================================= 116 172 117 c II) Declaration d'un profil vertical de traceur OK 173 118 c … … 187 132 188 133 print*,"INIT TAU" 189 do k=1, klev134 do k=1,nlev 190 135 tau(k,1)=1.e6 191 136 tau(k,2)=1.e7 … … 200 145 do it=1,3 201 146 print*,"INIT ZPROF ",tname(it) 202 do k=1, klev147 do k=1,nlev 203 148 zprof(k,it)=0. 204 149 c pour l'instant, tau fixe, mais possibilite de le faire varier avec z 205 if (pplay( klon/2,k) >= 4.8e6) then150 if (pplay(nlon/2,k) >= 4.8e6) then 206 151 zprof(k,it)=14. 207 152 endif 208 if ((pplay( klon/2,k)<=4.8e6).and.(pplay(klon/2,k)>=1.9e6)) then209 alpha=(log(pplay( klon/2,k))-log(1.9e6))/153 if ((pplay(nlon/2,k)<=4.8e6).and.(pplay(nlon/2,k)>=1.9e6)) then 154 alpha=(log(pplay(nlon/2,k))-log(1.9e6))/ 210 155 . (log(4.8e6)-log(1.9e6)) 211 156 zprof(k,it)=20.*(14./20.)**alpha 212 157 endif 213 if ((pplay( klon/2,k)<=1.9e6).and.(pplay(klon/2,k)>=1.5e5)) then214 alpha=(log(pplay( klon/2,k))-log(1.5e5))/158 if ((pplay(nlon/2,k)<=1.9e6).and.(pplay(nlon/2,k)>=1.5e5)) then 159 alpha=(log(pplay(nlon/2,k))-log(1.5e5))/ 215 160 . (log(1.9e6)-log(1.5e5)) 216 161 zprof(k,it)=39.*(20./39.)**alpha 217 162 endif 218 if ((pplay( klon/2,k)<=1.5e5).and.(pplay(klon/2,k)>=1.1e4)) then219 alpha=(log(pplay( klon/2,k))-log(1.1e4))/163 if ((pplay(nlon/2,k)<=1.5e5).and.(pplay(nlon/2,k)>=1.1e4)) then 164 alpha=(log(pplay(nlon/2,k))-log(1.1e4))/ 220 165 . (log(2.73e5)-log(1.1e4)) 221 166 zprof(k,it)=50.*(39./50.)**alpha 222 167 endif 223 if ((pplay( klon/2,k)<=1.1e4).and.(pplay(klon/2,k)>=1.3e3)) then224 alpha=(log(pplay( klon/2,k))-log(1.3e3))/168 if ((pplay(nlon/2,k)<=1.1e4).and.(pplay(nlon/2,k)>=1.3e3)) then 169 alpha=(log(pplay(nlon/2,k))-log(1.3e3))/ 225 170 . (log(1.1e4)-log(1.3e3)) 226 171 zprof(k,it)=2.*(50./2.)**alpha 227 172 endif 228 if ((pplay( klon/2,k)<=1.3e3).and.(pplay(klon/2,k)>=2.4)) then229 alpha=(log(pplay( klon/2,k))-log(2.4))/173 if ((pplay(nlon/2,k)<=1.3e3).and.(pplay(nlon/2,k)>=2.4)) then 174 alpha=(log(pplay(nlon/2,k))-log(2.4))/ 230 175 . (log(1.3e3)-log(2.4)) 231 176 zprof(k,it)=1000.*(2./1000.)**alpha 232 177 endif 233 if (pplay( klon/2,k) <= 2.4) then178 if (pplay(nlon/2,k) <= 2.4) then 234 179 zprof(k,it)=1000. 235 180 endif … … 239 184 c OCS 240 185 print*,"INIT ZPROF ",tname(it+3) 241 do k=1, klev186 do k=1,nlev 242 187 zprof(k,it+3)=0. 243 if (pplay( klon/2,k) >= 4.8e6) then188 if (pplay(nlon/2,k) >= 4.8e6) then 244 189 zprof(k,it+3)=30. 245 190 endif 246 if ((pplay( klon/2,k)<=4.8e6).and.(pplay(klon/2,k)>=9.4e5))191 if ((pplay(nlon/2,k)<=4.8e6).and.(pplay(nlon/2,k)>=9.4e5)) 247 192 * then 248 alpha=(log(pplay( klon/2,k))-log(9.4e5))/193 alpha=(log(pplay(nlon/2,k))-log(9.4e5))/ 249 194 * (log(4.8e6)-log(9.4e5)) 250 195 zprof(k,it+3)=20.*(30/20.)**alpha 251 196 endif 252 if ((pplay( klon/2,k)<=9.4e5).and.(pplay(klon/2,k)>=4.724e5))197 if ((pplay(nlon/2,k)<=9.4e5).and.(pplay(nlon/2,k)>=4.724e5)) 253 198 * then 254 alpha=(log(pplay( klon/2,k))-log(4.724e5))/199 alpha=(log(pplay(nlon/2,k))-log(4.724e5))/ 255 200 * (log(9.4e5)-log(4.724e5)) 256 201 zprof(k,it+3)=0.5*(20/0.5)**alpha 257 202 endif 258 if ((pplay( klon/2,k)<=4.724e5).and.(pplay(klon/2,k)>=1.1e4))203 if ((pplay(nlon/2,k)<=4.724e5).and.(pplay(nlon/2,k)>=1.1e4)) 259 204 * then 260 alpha=(log(pplay( klon/2,k))-log(1.1e4))/205 alpha=(log(pplay(nlon/2,k))-log(1.1e4))/ 261 206 * (log(4.724e5)-log(1.1e4)) 262 207 zprof(k,it+3)=0.005*(0.5/0.005)**alpha 263 208 endif 264 if (pplay( klon/2,k)<=1.1e4) then209 if (pplay(nlon/2,k)<=1.1e4) then 265 210 zprof(k,it+3)=0. 266 211 endif … … 271 216 c Initialisation du traceur s'il est nul: 272 217 do it=1,nqCO_OCS 273 if ((tr_seri( klon/2,1,it).eq.0.).and.274 . (tr_seri( klon/2,klev/2,it).eq.0.).and.275 . (tr_seri( klon/2,klev,it).eq.0.)) then218 if ((tr_seri(nlon/2,1,it).eq.0.).and. 219 . (tr_seri(nlon/2,nlev/2,it).eq.0.).and. 220 . (tr_seri(nlon/2,nlev,it).eq.0.)) then 276 221 print*,"INITIALISATION DE ",tname(it) 277 do k=1, klev278 do i=1, klon222 do k=1,nlev 223 do i=1,nlon 279 224 tr_seri(i,k,it) = zprof(k,it) 280 225 enddo … … 283 228 enddo 284 229 285 C=========================================================================286 endif ! flagCO_OCS287 230 C========================================================================= 288 231 C========================================================================= … … 294 237 295 238 c====================================================================== 296 if (flagCO_OCS) then297 239 c Rappel vers un profil 298 240 c====================================================================== 299 241 do it=1,nqCO_OCS 300 do k=1, klev301 do i=1, klon242 do k=1,nlev 243 do i=1,nlon 302 244 c VERIF 303 245 if (tr_seri(i,k,it).lt.0) then … … 322 264 323 265 c====================================================================== 324 endif ! flagCO_OCS325 c======================================================================326 327 c======================================================================328 c Calcul de l'effet de la couche limite remis directement dans physiq329 266 c====================================================================== 330 267 … … 334 271 335 272 336 c=========================================================================337 c=========================================================================338 c=========================================================================339 c ARCHIVES ===============================================================340 c=========================================================================341 c=========================================================================342 c=========================================================================343 344 c===========345 c definition de traceurs idealises346 c==========347 c348 c I) Declaration directe du traceur a altitude fixee349 c350 c a) traceur en carre OK351 c352 c do i=1,klon353 c tr_seri(i,:,1)=0.354 c if ((xlat(i)>=0.).and.(xlat(i)<=-30.)) then355 c if ((xlon(i)>=0.).and.(xlon(i)<=40.)) then356 c tr_seri(i,10,1)=1.357 c endif358 c endif359 c end do360 c361 c a bis) 2 traceurs en carre lat/alt, uniforme en longitude OK362 c363 C entre 45-55 km364 c365 c do i=1,klon366 c do k=1,klev+1367 cc tr_seri(i,k,1)=0.368 c if ((xlat(i)>=60.).and.(xlat(i)<=80.)) then369 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then370 c if ((pplay(klon/2,k)>=5.e4).and.(pplay(klon/2,k)<=4.e5)) then371 c tr_seri(i,k,1)=1.372 c endif373 c endif374 c endif375 c else376 c tr_seri(i,k,1)=0.377 c end do378 c end do379 cc380 c do i=1,klon381 c do k=1,klev+1382 cc tr_seri(i,k,2)=0.383 c if ((xlat(i)>=-60.).and.(xlat(i)<=-80.)) then384 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then385 c if ((pplay(klon/2,k)>=5.e4).and.(pplay(klon/2,k)<=4.e5)) then386 c tr_seri(i,k,2)=1.387 c endif388 c endif389 c endif390 c else391 c tr_seri(i,k,2)=0.392 c end do393 c end do394 cc395 c do i=1,klon396 c do k=1,klev+1397 cc tr_seri(i,k,3)=0.398 c if ((xlat(i)>=40.).and.(xlat(i)<=60.)) then399 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then400 c if ((pplay(klon/2,k)>=5.e4).and.(pplay(klon/2,k)<=4.e5)) then401 c tr_seri(i,k,3)=1.402 c endif403 c endif404 c endif405 c else406 c tr_seri(i,k,3)=0.407 c end do408 c end do409 cc410 c do i=1,klon411 c do k=1,klev+1412 cc tr_seri(i,k,4)=0.413 c if ((xlat(i)>=-40.).and.(xlat(i)<=-60.)) then414 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then415 c if ((pplay(klon/2,k)>=5.e4).and.(pplay(klon/2,k)<=4.e5)) then416 c tr_seri(i,k,4)=1.417 c endif418 c endif419 c endif420 c else421 c tr_seri(i,k,4)=0.422 c end do423 c end do424 cc425 c do i=1,klon426 c do k=1,klev+1427 cc tr_seri(i,k,5)=0.428 c if ((xlat(i)>=-20.).and.(xlat(i)<=20.)) then429 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then430 c if ((pplay(klon/2,k)>=5.e4).and.(pplay(klon/2,k)<=4.e5)) then431 c tr_seri(i,k,5)=1.432 c endif433 c endif434 c endif435 c else436 c tr_seri(i,k,5)=0.437 c end do438 c end do439 c440 c entre 35-45 km441 c442 c do i=1,klon443 c do k=1,klev+1444 cc tr_seri(i,k,6)=0.445 c if ((xlat(i)>=60.).and.(xlat(i)<=80.)) then446 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then447 c if ((pplay(klon/2,k)>=4.e5).and.(pplay(klon/2,k)<=8.e6)) then448 c tr_seri(i,k,6)=1.449 c endif450 c endif451 c endif452 c else453 c tr_seri(i,k,6)=0.454 c end do455 c end do456 c457 c do i=1,klon458 c do k=1,klev+1459 cc tr_seri(i,k,7)=0.460 c if ((xlat(i)>=-60.).and.(xlat(i)<=-80.)) then461 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then462 c if ((pplay(klon/2,k)>=4.e5).and.(pplay(klon/2,k)<=8.e6)) then463 c tr_seri(i,k,7)=1.464 c endif465 c endif466 c endif467 c else468 c tr_seri(i,k,7)=0.469 c end do470 c end do471 c472 C entre 50-60 km473 c474 c do i=1,klon475 c do k=1,klev+1476 cc tr_seri(i,k,8)=0.477 c if ((xlat(i)>=60.).and.(xlat(i)<=80.)) then478 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then479 c if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=1.e5)) then480 c tr_seri(i,k,8)=1.481 c endif482 c endif483 c endif484 c else485 c tr_seri(i,k,8)=0.486 c end do487 c end do488 c489 c do i=1,klon490 c do k=1,klev+1491 cc tr_seri(i,k,9)=0.492 c if ((xlat(i)>=-80.).and.(xlat(i)<=-60.)) then493 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then494 c if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=1.e5)) then495 c tr_seri(i,k,9)=1.496 c endif497 c endif498 c endif499 c else500 c tr_seri(i,k,9)=0.501 c end do502 c end do503 c504 c do i=1,klon505 c do k=1,klev+1506 cc tr_seri(i,k,10)=0.507 c if ((xlat(i)>=40.).and.(xlat(i)<=60.)) then508 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then509 c if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=1.e5)) then510 c tr_seri(i,k,10)=1.511 c endif512 c endif513 c endif514 c else515 c tr_seri(i,k,10)=0.516 c end do517 c end do518 c519 c do i=1,klon520 c do k=1,klev+1521 cc tr_seri(i,k,11)=0.522 c if ((xlat(i)>=-60.).and.(xlat(i)<=-40.)) then523 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then524 c if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=1.e5)) then525 c tr_seri(i,k,11)=1.526 c endif527 c endif528 c endif529 c else530 c tr_seri(i,k,11)=0.531 c end do532 c end do533 c534 c do i=1,klon535 c do k=1,klev+1536 cc tr_seri(i,k,12)=0.537 c if ((xlat(i)>=-20.).and.(xlat(i)<=20.)) then538 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then539 c if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=1.e5)) then540 c tr_seri(i,k,12)=1.541 c endif542 c endif543 c endif544 c else545 c tr_seri(i,k,12)=0.546 c end do547 c end do548 c549 c entre 20-30 km550 c551 c do i=1,klon552 c do k=1,klev+1553 cc tr_seri(i,k,13)=0.554 c if ((xlat(i)>=60.).and.(xlat(i)<=80.)) then555 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then556 c if ((pplay(klon/2,k)>=1.e6).and.(pplay(klon/2,k)<=2.e6)) then557 c tr_seri(i,k,13)=1.558 c endif559 c endif560 c endif561 c else562 c tr_seri(i,k,13)=0.563 c end do564 c end do565 c566 c do i=1,klon567 c do k=1,klev+1568 cc tr_seri(i,k,14)=0.569 c if ((xlat(i)>=-80.).and.(xlat(i)<=-60.)) then570 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then571 c if ((pplay(klon/2,k)>=1.e6).and.(pplay(klon/2,k)<=2.e6)) then572 c tr_seri(i,k,14)=1.573 c endif574 c endif575 c endif576 c else577 c tr_seri(i,k,14)=0.578 c end do579 c end do580 c581 c do i=1,klon582 c do k=1,klev+1583 cc tr_seri(i,k,15)=0.584 c if ((xlat(i)>=-20.).and.(xlat(i)<=20.)) then585 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then586 c if ((pplay(klon/2,k)>=1.e6).and.(pplay(klon/2,k)<=2.e6)) then587 c tr_seri(i,k,15)=1.588 c endif589 c endif590 c endif591 c else592 c tr_seri(i,k,15)=0.593 c end do594 c end do595 c596 c entre 55-65 km597 c598 c do i=1,klon599 c do k=1,klev+1600 cc tr_seri(i,k,16)=0.601 c if ((xlat(i)>=60.).and.(xlat(i)<=80.)) then602 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then603 c if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=5.e4)) then604 c tr_seri(i,k,16)=1.605 c endif606 c endif607 c endif608 c endif609 c else610 c tr_seri(i,k,16)=0.611 c end do612 c end do613 c614 c do i=1,klon615 c do k=1,klev+1616 cc tr_seri(i,k,17)=0.617 c if ((xlat(i)>=-80.).and.(xlat(i)<=-60.)) then618 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then619 c if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=5.e4)) then620 c tr_seri(i,k,17)=1.621 c endif622 c endif623 c endif624 c endif625 c else626 c tr_seri(i,k,17)=0.627 c end do628 c end do629 c630 c do i=1,klon631 c do k=1,klev+1632 cc tr_seri(i,k,18)=0.633 c if ((xlat(i)>=-20.).and.(xlat(i)<=20.)) then634 c if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then635 c if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=5.e4)) then636 c tr_seri(i,k,18)=1.637 c endif638 c endif639 c endif640 c endif641 c else642 c tr_seri(i,k,18)=0.643 c end do644 c end do645 c646 c b) traceur a une bande en latitudeOK647 c648 c a 65km649 c650 c do i=1,klon651 c tr_seri(i,:,1)=0.652 c if ((xlat(i)>=60.).and.(xlat(i)<=80.)) then653 c tr_seri(i,20,1)=1.654 c endif655 c end do656 c657 c do i=1,klon658 c tr_seri(i,:,2)=0.659 c if ((xlat(i)>=40.).and.(xlat(i)<=60.)) then660 c tr_seri(i,20,2)=1.661 c endif662 c end do663 c664 c do i=1,klon665 c tr_seri(i,:,3)=0.666 c if ((xlat(i)>=20.).and.(xlat(i)<=40.)) then667 c tr_seri(i,20,3)=1.668 c endif669 c end do670 c671 c do i=1,klon672 c tr_seri(i,:,4)=0.673 c if ((xlat(i)>=0.).and.(xlat(i)<=20.)) then674 c tr_seri(i,20,4)=1.675 c endif676 c end do677 c678 c do i=1,klon679 c tr_seri(i,:,5)=0.680 c if ((xlat(i)>=-20.).and.(xlat(i)<=0.)) then681 c tr_seri(i,20,5)=1.682 c endif683 c end do684 c685 c do i=1,klon686 c tr_seri(i,:,6)=0.687 c if ((xlat(i)>=-40.).and.(xlat(i)<=-20.)) then688 c tr_seri(i,20,6)=1.689 c endif690 c end do691 c692 c do i=1,klon693 c tr_seri(i,:,7)=0.694 c if ((xlat(i)>=-60.).and.(xlat(i)<=-40.)) then695 c tr_seri(i,20,7)=1.696 c endif697 c end do698 c699 c do i=1,klon700 c tr_seri(i,:,8)=0.701 c if ((xlat(i)>=-80.).and.(xlat(i)<=-60.)) then702 c tr_seri(i,20,8)=1.703 c endif704 c end do705 c706 c a 50km707 c708 c do i=1,klon709 c tr_seri(i,:,1)=0.710 c if ((xlat(i)>=40.).and.(xlat(i)<=60.)) then711 c tr_seri(i,27,1)=1.712 c endif713 c end do714 c715 c do i=1,klon716 c tr_seri(i,:,2)=0.717 c if ((xlat(i)>=60.).and.(xlat(i)<=80.)) then718 c tr_seri(i,27,2)=1.719 c endif720 c end do721 c722 c do i=1,klon723 c tr_seri(i,:,3)=0.724 c if ((xlat(i)>=20.).and.(xlat(i)<=40.)) then725 c tr_seri(i,27,3)=1.726 c endif727 c end do728 c729 c do i=1,klon730 c tr_seri(i,:4)=0.731 c if ((xlat(i)>=0.).and.(xlat(i)<=20.)) then732 c tr_seri(i,27,4)=1.733 c endif734 c end do735 c736 c do i=1,klon737 c tr_seri(i,:,5)=0.738 c if ((xlat(i)>=-20.).and.(xlat(i)<=0.)) then739 c tr_seri(i,27,5)=1.740 c endif741 c end do742 c743 c do i=1,klon744 c tr_seri(i,:,6)=0.745 c if ((xlat(i)>=-40.).and.(xlat(i)<=-20.)) then746 c tr_seri(i,27,6)=1.747 c endif748 c end do749 c750 c do i=1,klon751 c tr_seri(i,:,7)=0.752 c if ((xlat(i)>=-60.).and.(xlat(i)<=-40.)) then753 c tr_seri(i,27,7)=1.754 c endif755 c end do756 c757 c do i=1,klon758 c tr_seri(i,:,8)=0.759 c if ((xlat(i)>=-80.).and.(xlat(i)<=-60.)) then760 c tr_seri(i,27,8)=1.761 c endif762 c end do763 c764 c c) traceur a plusieurs bandes en latitude OK765 c766 c do i=1,klon767 c tr_seri(i,:,2)=0.768 c if ((xlat(i)>=50.).and.(xlat(i)<=70.)) then769 c tr_seri(i,10,2)=1.770 c endif771 c if ((xlat(i)>=-10.).and.(xlat(i)<=10.)) then772 c tr_seri(i,10,2)=1.773 c endif774 c775 c if ((xlat(i)>=-70.).and.(xlat(i)<=-50.)) then776 c tr_seri(i,10,2)=1.777 c endif778 c end do779 c780 c d) traceur a une bande en altitude OK781 c782 c do k=1,klev+1783 c tr_seri(:,k,1)=0.784 c if ((pplay(klon/2,k)>=1.e5).and.(pplay(klon/2,k)<=1.e6)) then785 c tr_seri(:,k,1)=1.786 c endif787 c end do788 c789 c dbis) plusieurs traceurs a une bande en altitude OK790 c791 c bande tres basse tropo792 c do k=1,klev793 c tr_seri(:,k,1)=0.794 c if ((pplay(klon/2,k)>=5.e5).and.(pplay(klon/2,k)<=5.e6)) then795 c tr_seri(:,k,1)=1.796 c endif797 c end do798 c bande dans les nuages et un peu en-dessous799 c do k=1,klev800 c tr_seri(:,k,2)=0.801 c if ((pplay(klon/2,k)>=5.e4).and.(pplay(klon/2,k)<=5.e5)) then802 c tr_seri(:,k,2)=1.803 c endif804 c end do805 cune grosse epaisseur: inclue toute la circulation meridienne806 c do k=1,klev807 c tr_seri(:,k,1)=0.808 c if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=1.e6)) then809 c tr_seri(:,k,1)=1.810 c endif811 c end do812 cune grosse epaisseur: inclue la mesosphere813 c do k=1,klev814 c tr_seri(:,k,2)=0.815 c if ((pplay(klon/2,k)>=2.e2).and.(pplay(klon/2,k)<=1.e4)) then816 c tr_seri(:,k,2)=1.817 c endif818 c end do819 c820 c do k=1,klev821 c tr_seri(:,k,3)=0.822 c if ((pplay(klon/2,k)>=5.e1).and.(pplay(klon/2,k)<=5.e2)) then823 c tr_seri(:,k,3)=1.824 c endif825 c end do826 c827 c e) plusieurs couches verticales de traceurs, a plusieurs bandes en latitude???828 c829 c au sol830 c do i=1,klon831 c tr_seri(i,:,1)=0.832 c if ((xlat(i)>=50.).and.(xlat(i)<=70.)) then833 c tr_seri(i,5,1)=1.834 c endif835 c if ((xlat(i)>=-10.).and.(xlat(i)<=10.)) then836 c tr_seri(i,5,1)=1.837 c endif838 c839 c if ((xlat(i)>=-70.).and.(xlat(i)<=-50.)) then840 c tr_seri(i,5,1)=1.841 c endif842 c end do843 c844 c do i=1,klon845 c tr_seri(i,:,2)=0.846 c if ((xlat(i)>=50.).and.(xlat(i)<=70.)) then847 c tr_seri(i,10,2)=1.848 c endif849 c if ((xlat(i)>=-10.).and.(xlat(i)<=10.)) then850 c tr_seri(i,10,2)=1.851 c endif852 c853 c if ((xlat(i)>=-70.).and.(xlat(i)<=-50.)) then854 c tr_seri(i,10,2)=1.855 c endif856 c end do857 c858 c do i=1,klon859 c tr_seri(i,:,3)=0.860 c if ((xlat(i)>=50.).and.(xlat(i)<=70.)) then861 c tr_seri(i,30,3)=1.862 c endif863 c if ((xlat(i)>=-10.).and.(xlat(i)<=10.)) then864 c tr_seri(i,30,3)=1.865 c endif866 c867 c if ((xlat(i)>=-70.).and.(xlat(i)<=-50.)) then868 c tr_seri(i,30,3)=1.869 c endif870 c end do871 c872 c do i=1,klon873 c tr_seri(i,:,4)=0.874 c if ((xlat(i)>=50.).and.(xlat(i)<=70.)) then875 c tr_seri(i,45,4)=1.876 c endif877 c if ((xlat(i)>=-10.).and.(xlat(i)<=10.)) then878 c tr_seri(i,45,4)=1.879 c endif880 c881 c if ((xlat(i)>=-70.).and.(xlat(i)<=-50.)) then882 c tr_seri(i,45,4)=1.883 c endif884 c end do885 c886
Note: See TracChangeset
for help on using the changeset viewer.