Changeset 4098
- Timestamp:
- Mar 4, 2026, 8:02:24 AM (5 hours ago)
- File:
-
- 1 edited
-
trunk/LMDZ.VENUS/libf/phyvenus/phytrac_chimie.F (modified) (17 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.VENUS/libf/phyvenus/phytrac_chimie.F
r4095 r4098 61 61 integer, dimension(nlon,nlev) :: iter ! chemical iterations 62 62 real, dimension(nlon,nlev,nqmax) :: d_tr_chem ! chemical tendency for each tracer 63 real, dimension(nlon,nlev,nqmax) :: d_tr_micro ! microphysical tendencies63 real, dimension(nlon,nlev,nqmax) :: d_tr_micro ! microphysical tendencies 64 64 real, dimension(nlon,nlev,nqmax) :: prod_tr, loss_tr ! production and loss terms (for info) 65 65 real, dimension(nlon,nlev) :: no_emi ! no emission … … 75 75 real :: t_elec(nlev) ! electron temperature [K] 76 76 77 integer, parameter :: t_elec_origin=2 78 !Electronic temperature. Index 1 -> Theis et al. 1980 - model data ; Index 2-> Theis et al. 1984 - model data 77 integer, parameter :: t_elec_origin = 2 ! electronic temperature. 78 ! 1 -> Theis et al. 1980 - model data 79 ! 2 -> Theis et al. 1984 - model data 79 80 80 81 integer :: i, iq … … 100 101 integer, save :: nphotion ! number of photoionizations 101 102 integer, save :: nb_reaction_4_ion ! quadratic reactions for ionosphere 102 ! integer, save :: nb_reaction_4_deut ! quadratic reactions for deuterium chem103 ! integer, save :: nb_reaction_4_deut ! quadratic reactions for deuterium chem 103 104 integer, save :: nb_phot_max ! total number of photolysis+photoionizations+quenching reactions 104 105 105 106 ! tracer indexes for the EUV heating: 106 !!! ATTENTION. These values have to be identical to those in euvheat.F90107 !!! If the values are changed there, the same has to be done here !!!107 !!! ATTENTION. These values have to be identical to those in euvheat.F90 108 !!! If the values are changed there, the same has to be done here !!! 108 109 109 110 integer,parameter :: ix_co2 = 1 … … 126 127 127 128 ! NEED TO BE THE SAME AS IN EUVHEAT.F90 129 128 130 integer,parameter :: nespeuv = 17 ! Number of species considered (11, 12 or 17 (with nitrogen)) 129 131 … … 166 168 nb_reaction_4_max = nb_reaction_4_max + nb_reaction_4_ion 167 169 nphotion = 18 ! set number of photoionizations 168 end if170 end if 169 171 170 172 !if(deutchem) then … … 183 185 if (reinit_trac .and. ok_chem) then 184 186 185 !!! in this reinitialisation, trac is VOLUME mixing ratio 186 ! ONLY SO2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 187 ! convert mass to volume mixing ratio 187 ! convert mass to volume mixing ratio 188 188 189 do iq = 1,nqmax - nmicro 189 190 trac(:,:,iq) = trac(:,:,iq)*mmean(:,:)/m_tr(iq) 190 191 end do 191 192 193 print*, "Chemical species are reinitialised" 194 192 195 if (i_so2 /= 0) then 193 print*, "H2SO4 is re-initialised" 194 trac(:,19:23,i_h2so4) = 15.e-6 195 ! print*, "SO2 is re-initialised" 196 197 ! if (i_so2 /= 0) then 198 ! trac(:,25:,i_so2) = 100.e-9 199 ! trac(:,1:24,i_so2) = 15.e-6 200 ! trac(:,25:,i_h2o) = 1.e-6 201 ! trac(:,1:24,i_h2o) = 30.e-6 202 203 ! trac(:,:,i_osso_cis) = 0. 204 ! trac(:,:,i_osso_trans) = 0. 205 ! trac(:,:,i_s2o2_cyc) = 0. 206 ! trac(:,:,i_cl2so2) = 0. 207 208 ! AL TRACERS!!!!!!!!!!!!!!!!!!!!!!!!!!!! 209 ! print*, "Tracers are re-initialised" 210 ! trac(:,:,:) = 1.0e-30 211 212 ! if ((i_ocs /= 0) .and. (i_co /= 0) .and. (i_hcl /= 0) 213 ! $ .and. (i_so2 /= 0) .and. (i_h2o /= 0) 214 ! $ .and. (i_n2 /= 0) .and. (i_co2 /= 0)) then 215 ! trac(:,1:22,i_ocs) = 3.e-6 216 ! trac(:,1:22,i_co) = 25.e-6 217 ! trac(:,:,i_hcl) = 0.4e-6 218 ! trac(:,1:22,i_so2) = 7.e-6 219 ! trac(:,1:22,i_h2o) = 30.e-6 220 ! trac(:,:,i_n2) = 0.35e-1 221 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 222 ! ensure that sum of mixing ratios = 1 196 trac(:,25:,i_so2) = 100.e-9 197 trac(:,1:24,i_so2) = 15.e-6 198 trac(:,25:,i_h2o) = 1.e-6 199 trac(:,1:24,i_h2o) = 30.e-6 200 201 if (cl_scheme == 2) then 202 trac(:,19:23,i_h2so4) = 15.e-6 203 end if 204 205 trac(:,:,i_osso_cis) = 0. 206 trac(:,:,i_osso_trans) = 0. 207 trac(:,:,i_s2o2_cyc) = 0. 208 trac(:,:,i_cl2so2) = 0. 209 210 ! trac(:,1:22,i_ocs) = 3.e-6 211 ! trac(:,1:22,i_co) = 25.e-6 212 ! trac(:,:,i_hcl) = 0.4e-6 213 ! trac(:,1:22,i_so2) = 7.e-6 214 ! trac(:,1:22,i_h2o) = 30.e-6 215 ! trac(:,:,i_n2) = 0.35e-1 216 217 ! ensure that sum of mixing ratios = 1 223 218 224 219 trac_sum(:,:) = 0. … … 230 225 end do 231 226 232 !initialise co2227 ! initialise co2 233 228 234 229 trac(:,:,i_co2) = 1. - trac_sum(:,:) … … 239 234 end if 240 235 241 !update mmean236 ! update mmean 242 237 243 238 mmean(:,:) = 0. … … 247 242 rnew(:,:) = 8.314/mmean(:,:)*1.e3 ! J/kg K 248 243 249 !convert volume to mass mixing ratio244 ! convert volume to mass mixing ratio 250 245 251 246 do iq = 1,nqmax - nmicro … … 255 250 end if ! reinit_trac 256 251 257 ! initilise moments for detailed microphysics 258 259 if (ok_cloud .and. (cl_scheme ==2)) then 260 if ((sum(trac(:,:,i_m0_mode2drop))+ 261 $ sum(trac(:,:,i_m0_mode1drop))) .lt. 1.D0) then 262 263 DO ilon = 1, nlon 264 call init_moment(ilon,nlev,pplay(ilon,:),temp(ilon,:), 265 $ trac(ilon,:,:)) 266 ENDDO 267 268 ! Convert moment/volune to moment/mass 269 270 do iq = nqmax-nmoment+1,nqmax 271 trac(:,:,iq) = trac(:,:,iq)/rho(:,:) 272 enddo 273 endif 274 endif 275 end if ! ok_chem 276 end if ! debutphy 252 ! initialise moments for detailed microphysics 253 254 if (ok_cloud .and. (cl_scheme == 2)) then 255 if ((sum(trac(:,:,i_m0_mode2drop)) 256 $ + sum(trac(:,:,i_m0_mode1drop))) < 1.D0) then 257 258 do ilon = 1, nlon 259 call init_moment(ilon,nlev,pplay(ilon,:), 260 $ temp(ilon,:),trac(ilon,:,:)) 261 end do 262 263 ! convert moment/volune to moment/mass 264 265 do iq = nqmax - nmoment + 1,nqmax 266 trac(:,:,iq) = trac(:,:,iq)/rho(:,:) 267 end do 268 end if ! sum < 1 269 end if ! cl_scheme = 2 270 end if ! ok_chem 271 end if ! debutphy 272 277 273 !=================================================================== 278 274 ! convert mass to volume mixing ratio : gas phase 279 275 !=================================================================== 280 ztrac(:,:,:) = 0.D0 276 281 277 do iq = 1,nqmax - nmicro 282 278 ztrac(:,:,iq) = max(trac(:,:,iq)*mmean(:,:)/m_tr(iq), 1.e-30) 283 279 end do 280 284 281 !=================================================================== 285 282 ! microphysics: simplified scheme (phd aurelien stolzenbach) 286 283 !=================================================================== 284 287 285 if (ok_cloud .and. cl_scheme == 1) then 288 286 … … 320 318 321 319 !=================================================================== 322 ! microphysics: detailed scheme (phd sabrina guilbon )323 ! !!! to be confirmed whether mad_muphy expects mmr or vmr for h2o and h2so4320 ! microphysics: detailed scheme (phd sabrina guilbon and nicolas 321 ! streel) 324 322 !=================================================================== 325 323 326 324 if (ok_cloud .and. cl_scheme == 2) then 327 325 328 ! Initiating d_tr_micro with 0329 330 d_tr_micro(:,:,:) =0.D0331 momtrac(:,:,:) = 0.D0326 ! initialisations 327 328 d_tr_micro(:,:,:) = 0.D0 329 momtrac(:,:,:) = 0.D0 332 330 r1 = 0.D0 333 331 r2 = 0.D0 334 332 335 ! Setting up the values333 ! mixing ratios 336 334 337 335 mitrac(:,:,1) = ztrac(:,:,i_h2o) … … 339 337 340 338 do iq = nqmax-nmoment+1,nqmax 341 momtrac(:,:,iq) = trac(:,:,iq)*rho(:,:)342 ztrac(:,:,iq) = momtrac(:,:,iq)343 end do344 345 ! Compute WSAV and RHOSA339 momtrac(:,:,iq) = trac(:,:,iq)*rho(:,:) 340 ztrac(:,:,iq) = momtrac(:,:,iq) 341 end do 342 343 ! compute WSAV and RHOSA 346 344 347 345 do ilon = 1,nlon 348 do ilev = 1, nlev 349 if (((ztrac(ilon,ilev,i_m3_mode1sa)+ 350 $ ztrac(ilon,ilev,i_m3_mode2sa))+ 351 $ (ztrac(ilon,ilev,i_m3_mode1wv)+ 352 $ ztrac(ilon,ilev,i_m3_mode2wv))) .gt. 353 $ 1e-30) then 354 355 WSAV = (ztrac(ilon,ilev,i_m3_mode1sa) + 356 $ ztrac(ilon,ilev,i_m3_mode2sa))/ 357 $ ((ztrac(ilon,ilev,i_m3_mode1sa) + 358 $ ztrac(ilon,ilev,i_m3_mode2sa))+ 359 $ (ztrac(ilon,ilev,i_m3_mode1wv) + 360 $ ztrac(ilon,ilev,i_m3_mode2wv))) 361 362 RHOSA = ROSAS(temp, (WSAV*RHOas * 1/(WSAV*RHOas + 346 do ilev = 1,nlev 347 if (ztrac(ilon,ilev,i_m3_mode1sa) 348 $ + ztrac(ilon,ilev,i_m3_mode2sa) 349 $ + ztrac(ilon,ilev,i_m3_mode1wv) 350 $ + ztrac(ilon,ilev,i_m3_mode2wv) > 1.e-30) then 351 352 WSAV = (ztrac(ilon,ilev,i_m3_mode1sa) 353 $ + ztrac(ilon,ilev,i_m3_mode2sa)) 354 $ /(ztrac(ilon,ilev,i_m3_mode1sa) 355 $ + ztrac(ilon,ilev,i_m3_mode2sa) 356 $ + ztrac(ilon,ilev,i_m3_mode1wv) 357 $ + ztrac(ilon,ilev,i_m3_mode2wv)) 358 359 RHOSA = ROSAS(temp, (WSAV*RHOas*1./(WSAV*RHOas + 363 360 $ (1.D0-WSAV)*RHOwv))) 364 else365 WSAV= WSAVtab(ilon,ilev)366 RHOSA = RHOtab(ilon,ilev)367 endif368 369 ! Compute liquids mmr before microphysics and saving them361 else 362 WSAV = WSAVtab(ilon,ilev) 363 RHOSA = RHOtab(ilon,ilev) 364 end if 365 366 ! compute liquids mmr before microphysics and saving them 370 367 371 368 trac(ilon,ilev,i_h2so4liq) = 372 $ ((trac(ilon,ilev,i_m3_mode1sa)+trac(ilon,ilev,i_m3_mode2sa)) 373 $ *(4.D0*PI/3.D0) *RHOas/rho(ilon,ilev) * mmean(ilon,ilev)/MSA) 374 375 trac(ilon,ilev,i_h2oliq) = 376 $ ((trac(ilon,ilev,i_m3_mode1wv)+trac(ilon,ilev,i_m3_mode2wv)) 377 $ *(4.D0*PI/3.D0)*RHOwv/rho(ilon,ilev) * mmean(ilon,ilev)*MWV) 369 $ ((trac(ilon,ilev,i_m3_mode1sa) 370 $ + trac(ilon,ilev,i_m3_mode2sa)) 371 $ *(4.D0*PI/3.D0)*RHOas/rho(ilon,ilev) 372 $ *mmean(ilon,ilev)/MSA) 373 374 trac(ilon,ilev,i_h2oliq) = 375 $ ((trac(ilon,ilev,i_m3_mode1wv) 376 $ + trac(ilon,ilev,i_m3_mode2wv)) 377 $ *(4.D0*PI/3.D0)*RHOwv/rho(ilon,ilev) 378 $ *mmean(ilon,ilev)*MWV) 378 379 379 380 ztrac(ilon,ilev,i_h2so4liq) = trac(ilon,ilev,i_h2so4liq) 380 381 ztrac(ilon,ilev,i_h2oliq) = trac(ilon,ilev,i_h2oliq) 381 382 382 ! Microphysical scheme 383 384 if (temp(ilon,ilev) .lt. 400) then 385 call mad_muphy(pdtphys,ilon,ilev, ! timestep 386 $ temp(ilon,ilev),pplay(ilon,ilev), ! temperature and pressure 387 $ mitrac(ilon,ilev,1), ! H2O vapor 388 $ mitrac(ilon,ilev,2), ! H2SO4 vapor 389 $ ztrac(ilon,ilev,i_h2oliq), ! H2O liquid 390 $ ztrac(ilon,ilev,i_h2so4liq), ! H2SO4 liquid 391 $ rho(ilon,ilev),mmean(ilon,ilev), ! density and mean molecular mass 392 $ ztrac(ilon,ilev,i_m0_aer), 393 $ ztrac(ilon,ilev,i_m3_aer), 394 $ ztrac(ilon,ilev,i_m0_mode1drop), 395 $ ztrac(ilon,ilev,i_m0_mode1ccn), 396 $ ztrac(ilon,ilev,i_m3_mode1sa), 397 $ ztrac(ilon,ilev,i_m3_mode1wv), 398 $ ztrac(ilon,ilev,i_m3_mode1ccn), 399 $ ztrac(ilon,ilev,i_m0_mode2drop), 400 $ ztrac(ilon,ilev,i_m0_mode2ccn), 401 $ ztrac(ilon,ilev,i_m3_mode2sa), 402 $ ztrac(ilon,ilev,i_m3_mode2wv), 403 $ ztrac(ilon,ilev,i_m3_mode2ccn)) 404 satm1(ilon,ilev) = sat1 405 satm2(ilon,ilev) = sat2 406 407 ! Compute liquids mmr after microphysics 408 409 ztrac(ilon,ilev,i_h2so4liq) = 410 $ ((ztrac(ilon,ilev,i_m3_mode1sa)+ztrac(ilon,ilev,i_m3_mode2sa)) 411 $ *(4.D0*PI/3.D0) *RHOas/rho(ilon,ilev) * mmean(ilon,ilev)/MSA) 412 ztrac(ilon,ilev,i_h2oliq) = 413 $ ((ztrac(ilon,ilev,i_m3_mode1wv)+ztrac(ilon,ilev,i_m3_mode2wv)) 414 $ *(4.D0*PI/3.D0)*RHOwv/rho(ilon,ilev) * mmean(ilon,ilev)/MWV) 415 416 ! Compute tendencides of the vapors 417 418 d_tr_micro(:,:,i_h2so4) = MSA/mmean(:,:)*(mitrac(:,:,2) 419 $ - ztrac(:,:,i_h2so4))/pdtphys 420 d_tr_micro(:,:,i_h2o) = MWV/mmean(:,:)*(mitrac(:,:,1) 421 $ - ztrac(:,:,i_h2o))/pdtphys 422 423 ! Saving the radius, WSA and rho of the droplets 424 425 r2tab(ilon,ilev)=r2 426 r1tab(ilon,ilev)=r1 427 428 if (((ztrac(ilon,ilev,i_m3_mode1sa)+ 429 $ ztrac(ilon,ilev,i_m3_mode2sa))+ 430 $ (ztrac(ilon,ilev,i_m3_mode1wv) 431 $ +ztrac(ilon,ilev,i_m3_mode2wv))).gt. 432 $ 1e-30) then 433 434 WSAVtab(ilon,ilev) = 435 $ (ztrac(ilon,ilev,i_m3_mode1sa)+ztrac(ilon,ilev,i_m3_mode2sa))/ 436 $ ((ztrac(ilon,ilev,i_m3_mode1sa)+ztrac(ilon,ilev,i_m3_mode2sa))+ 437 $ (ztrac(ilon,ilev,i_m3_mode1wv)+ztrac(ilon,ilev,i_m3_mode2wv))) 438 else 439 WSAVtab(ilon,ilev)=WSAV 440 endif 441 RHOtab(ilon,ilev) = RHOSA 442 RHtab(ilon,ilev) = SH2SO4*100.D0 443 444 end if 445 end do 446 end do 383 ! microphysical scheme 384 385 if (temp(ilon,ilev) < 400.) then 386 call mad_muphy(pdtphys,ilon,ilev, ! timestep 387 $ temp(ilon,ilev),pplay(ilon,ilev), ! temperature and pressure 388 $ mitrac(ilon,ilev,1), ! H2O vapor 389 $ mitrac(ilon,ilev,2), ! H2SO4 vapor 390 $ ztrac(ilon,ilev,i_h2oliq), ! H2O liquid 391 $ ztrac(ilon,ilev,i_h2so4liq), ! H2SO4 liquid 392 $ rho(ilon,ilev),mmean(ilon,ilev), ! density and mean molecular mass 393 $ ztrac(ilon,ilev,i_m0_aer), 394 $ ztrac(ilon,ilev,i_m3_aer), 395 $ ztrac(ilon,ilev,i_m0_mode1drop), 396 $ ztrac(ilon,ilev,i_m0_mode1ccn), 397 $ ztrac(ilon,ilev,i_m3_mode1sa), 398 $ ztrac(ilon,ilev,i_m3_mode1wv), 399 $ ztrac(ilon,ilev,i_m3_mode1ccn), 400 $ ztrac(ilon,ilev,i_m0_mode2drop), 401 $ ztrac(ilon,ilev,i_m0_mode2ccn), 402 $ ztrac(ilon,ilev,i_m3_mode2sa), 403 $ ztrac(ilon,ilev,i_m3_mode2wv), 404 $ ztrac(ilon,ilev,i_m3_mode2ccn)) 405 406 satm1(ilon,ilev) = sat1 407 satm2(ilon,ilev) = sat2 408 409 ! compute liquid mmr of h2so4 and h2o after microphysics 410 411 ztrac(ilon,ilev,i_h2so4liq) = 412 $ ((ztrac(ilon,ilev,i_m3_mode1sa) 413 $ + ztrac(ilon,ilev,i_m3_mode2sa)) 414 $ *(4.D0*PI/3.D0)*RHOas/rho(ilon,ilev) 415 $ *mmean(ilon,ilev)/MSA) 416 417 ztrac(ilon,ilev,i_h2oliq) = 418 $ ((ztrac(ilon,ilev,i_m3_mode1wv) 419 $ + ztrac(ilon,ilev,i_m3_mode2wv)) 420 $ *(4.D0*PI/3.D0)*RHOwv/rho(ilon,ilev) 421 $ *mmean(ilon,ilev)/MWV) 422 423 ! compute tendencies of gas-phase h2so4 and h2o 424 425 d_tr_micro(:,:,i_h2so4) = MSA/mmean(:,:)*(mitrac(:,:,2) 426 $ - ztrac(:,:,i_h2so4))/pdtphys 427 d_tr_micro(:,:,i_h2o) = MWV/mmean(:,:)*(mitrac(:,:,1) 428 $ - ztrac(:,:,i_h2o))/pdtphys 429 430 ! saving the radius, WSA and rho of the droplets 431 432 r2tab(ilon,ilev) = r2 433 r1tab(ilon,ilev) = r1 434 435 if (ztrac(ilon,ilev,i_m3_mode1sa) 436 $ + ztrac(ilon,ilev,i_m3_mode2sa) 437 $ + ztrac(ilon,ilev,i_m3_mode1wv) 438 $ + ztrac(ilon,ilev,i_m3_mode2wv) > 1.e-30) then 439 440 WSAVtab(ilon,ilev) = 441 $ (ztrac(ilon,ilev,i_m3_mode1sa) 442 $ + ztrac(ilon,ilev,i_m3_mode2sa)) 443 $ /(ztrac(ilon,ilev,i_m3_mode1sa) 444 $ + ztrac(ilon,ilev,i_m3_mode2sa) 445 $ + ztrac(ilon,ilev,i_m3_mode1wv) 446 $ + ztrac(ilon,ilev,i_m3_mode2wv)) 447 else 448 WSAVtab(ilon,ilev) = WSAV 449 end if 450 451 RHOtab(ilon,ilev) = RHOSA 452 RHtab(ilon,ilev) = SH2SO4*100.D0 453 454 end if ! t < 400 k 455 end do ! ilev 456 end do ! ilon 447 457 end if ! detailed scheme 458 448 459 !=================================================================== 449 460 ! photochemistry … … 457 468 458 469 if (ok_ionchem) then 459 460 vmr_dens_euv(:,:,ix_co2) = ztrac(:,:,i_co2) ! CO2 461 vmr_dens_euv(:,:,ix_co) = ztrac(:,:,i_co) ! CO 462 vmr_dens_euv(:,:,ix_o) = ztrac(:,:,i_o) ! O 463 vmr_dens_euv(:,:,ix_o1d) = ztrac(:,:,i_o1d) ! O(1D) 464 vmr_dens_euv(:,:,ix_o2) = ztrac(:,:,i_o2) ! O2 465 vmr_dens_euv(:,:,ix_o3) = ztrac(:,:,i_o3) ! O3 466 vmr_dens_euv(:,:,ix_h) = ztrac(:,:,i_h) ! H 467 vmr_dens_euv(:,:,ix_h2) = ztrac(:,:,i_h2) ! H2 468 vmr_dens_euv(:,:,ix_oh) = ztrac(:,:,i_oh) ! OH 469 vmr_dens_euv(:,:,ix_ho2) = ztrac(:,:,i_ho2) ! HO2 470 vmr_dens_euv(:,:,ix_h2o2)= ztrac(:,:,i_h2o2) ! H2O2 471 vmr_dens_euv(:,:,ix_h2o) = ztrac(:,:,i_h2o) ! H2O 472 vmr_dens_euv(:,:,ix_n) = ztrac(:,:,i_n) ! N 473 vmr_dens_euv(:,:,ix_n2d) = ztrac(:,:,i_n2d) ! N(2D) 474 vmr_dens_euv(:,:,ix_no) = ztrac(:,:,i_no) ! NO 475 vmr_dens_euv(:,:,ix_no2) = ztrac(:,:,i_no2) ! NO2 476 vmr_dens_euv(:,:,ix_n2) = ztrac(:,:,i_n2) ! N2 477 470 vmr_dens_euv(:,:,ix_co2) = ztrac(:,:,i_co2) ! CO2 471 vmr_dens_euv(:,:,ix_co) = ztrac(:,:,i_co) ! CO 472 vmr_dens_euv(:,:,ix_o) = ztrac(:,:,i_o) ! O 473 vmr_dens_euv(:,:,ix_o1d) = ztrac(:,:,i_o1d) ! O(1D) 474 vmr_dens_euv(:,:,ix_o2) = ztrac(:,:,i_o2) ! O2 475 vmr_dens_euv(:,:,ix_o3) = ztrac(:,:,i_o3) ! O3 476 vmr_dens_euv(:,:,ix_h) = ztrac(:,:,i_h) ! H 477 vmr_dens_euv(:,:,ix_h2) = ztrac(:,:,i_h2) ! H2 478 vmr_dens_euv(:,:,ix_oh) = ztrac(:,:,i_oh) ! OH 479 vmr_dens_euv(:,:,ix_ho2) = ztrac(:,:,i_ho2) ! HO2 480 vmr_dens_euv(:,:,ix_h2o2)= ztrac(:,:,i_h2o2) ! H2O2 481 vmr_dens_euv(:,:,ix_h2o) = ztrac(:,:,i_h2o) ! H2O 482 vmr_dens_euv(:,:,ix_n) = ztrac(:,:,i_n) ! N 483 vmr_dens_euv(:,:,ix_n2d) = ztrac(:,:,i_n2d) ! N(2D) 484 vmr_dens_euv(:,:,ix_no) = ztrac(:,:,i_no) ! NO 485 vmr_dens_euv(:,:,ix_no2) = ztrac(:,:,i_no2) ! NO2 486 vmr_dens_euv(:,:,ix_n2) = ztrac(:,:,i_n2) ! N2 478 487 end if 479 488 … … 482 491 483 492 ! solar zenith angle 484 ! sza_local = acos(cos(lat_local(ilon))*cos(lon_local(ilon)) 485 ! $ *cos(lon_sun) + cos(lat_local(ilon)) 486 ! $ *sin(lon_local(ilon))*sin(lon_sun))*180./rpi 493 494 ! sza_local = acos(cos(lat_local(ilon))*cos(lon_local(ilon)) 495 ! $ *cos(lon_sun) + cos(lat_local(ilon)) 496 ! $ *sin(lon_local(ilon))*sin(lon_sun))*180./rpi 487 497 488 498 sza_local = cos(lat_local(ilon))*cos(lon_local(ilon)) … … 490 500 $ *sin(lon_local(ilon))*sin(lon_sun) 491 501 492 ! Security - Handle rare cases where |sza_local| > 1 502 ! handle rare cases where |sza_local| > 1 503 493 504 sza_local = min(sza_local,1.) 494 505 sza_local = max(-1.,sza_local) … … 569 580 $ (ztrac(:,:,i_h2oliq) - momtrac(:,:,i_h2oliq)))/pdtphys 570 581 571 572 582 d_tr_micro(:,:,i_m0_aer) = (ztrac(:,:,i_m0_aer) 573 583 $ - momtrac(:,:,i_m0_aer))/(rho(:,:)*pdtphys) … … 598 608 d_tr_micro(:,:,i_m3_mode2ccn) = (ztrac(:,:,i_m3_mode2ccn) 599 609 $ - momtrac(:,:,i_m3_mode2ccn))/(rho(:,:)*pdtphys) 600 endif610 end if 601 611 602 612 end subroutine phytrac_chimie
Note: See TracChangeset
for help on using the changeset viewer.
