- Timestamp:
- Oct 28, 2018, 5:55:23 PM (6 years ago)
- Location:
- trunk/LMDZ.MARS/libf/aeronomars
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/aeronomars/calchim.F90
r2029 r2030 68 68 !======================================================================= 69 69 70 #include "chimiedata.h"71 70 #include "callkeys.h" 72 71 … … 152 151 real :: zv(ngrid,nlayer) ! v component of the wind 153 152 real :: taucol ! dust optical depth at the surface 153 real :: kb ! boltzmann constant 154 154 155 155 logical,save :: firstcall = .true. … … 168 168 real :: surfdust1d(nlayer) ! Dust surface area (cm2/cm3) 169 169 real :: jo3(nlayer) ! Photodissociation rate O3->O1D (s-1) 170 real :: jh2o(nlayer) ! Photodissociation rate H2O->H+OH (s-1) 170 171 real :: em_no(nlayer) ! NO nightglow emission rate 171 172 real :: em_o2(nlayer) ! O2 nightglow emission rate … … 179 180 parameter (output = .true.) 180 181 real :: jo3_3d(ngrid,nlayer) ! Photodissociation rate O3->O1D (s-1) 182 real :: jh2o_3d(ngrid,nlayer) ! Photodissociation rate H2O->H+OH (s-1) 181 183 real :: emission_no(ngrid,nlayer) !NO emission rate 182 184 real :: emission_o2(ngrid,nlayer) !O2 emission rate … … 600 602 dqchim(:,:,:) = 0. 601 603 dqschim(:,:) = 0. 604 605 kb = 1.3806e-23 602 606 603 607 ! latvl1= 22.27 … … 664 668 ig,lswitch,zycol,szacol,ptimestep, & 665 669 zpress,zlocal,ztemp,zdens,zmmean,dist_sol, & 666 surfdust1d,surfice1d,jo3, taucol,iter)670 surfdust1d,surfice1d,jo3,jh2o,taucol,iter) 667 671 668 672 ! ozone photolysis, for output … … 670 674 do l = 1,nlayer 671 675 jo3_3d(ig,l) = jo3(l) 676 jh2o_3d(ig,l) = jh2o(l) 672 677 iter_3d(ig,l) = iter(l) 673 678 end do … … 741 746 call writediagfi(ngrid,'jo3','j o3->o1d', & 742 747 's-1',3,jo3_3d(1,1)) 748 call writediagfi(ngrid,'jh2o','jh2o', & 749 's-1',3,jh2o_3d(1,1)) 743 750 call writediagfi(ngrid,'iter','iterations', & 744 751 ' ',3,iter_3d(1,1)) -
trunk/LMDZ.MARS/libf/aeronomars/chimiedata.h
r2024 r2030 33 33 34 34 data tautab/0., 0.2, 0.4, 0.6, 0.8, 1., 2., 4./ 35 36 !--------------------------------------------37 ! number of reactions in ASIS solver38 !--------------------------------------------39 40 integer, parameter :: nb_phot_max = 2241 integer, parameter :: nb_reaction_3_max = 642 integer, parameter :: nb_reaction_4_max = 31 -
trunk/LMDZ.MARS/libf/aeronomars/concentrations.F
r1660 r2030 28 28 29 29 #include "callkeys.h" 30 #include "chimiedata.h"31 30 32 31 ! input/output -
trunk/LMDZ.MARS/libf/aeronomars/moldiffcoeff.F
r1266 r2030 17 17 c======================================================================= 18 18 #include "callkeys.h" 19 #include "chimiedata.h"20 19 21 20 c----------------------------------------------------------------------- -
trunk/LMDZ.MARS/libf/aeronomars/moldiffcoeff_red.F
r1266 r2030 13 13 c======================================================================= 14 14 #include "callkeys.h" 15 #include "chimiedata.h"16 15 #include "diffusion.h" 17 16 -
trunk/LMDZ.MARS/libf/aeronomars/photochemistry.F90
r2029 r2030 16 16 ig, lswitch, zycol, sza, ptimestep, press, & 17 17 alt, temp, dens, zmmean, dist_sol, surfdust1d,& 18 surfice1d, jo3, tau, iter) 19 18 surfice1d, jo3, jh2o, tau, iter) 19 20 use photolysis_mod, only : nb_phot_max, & 21 nb_reaction_3_max, & 22 nb_reaction_4_max 20 23 implicit none 21 24 22 #include "chimiedata.h"23 25 #include "callkeys.h" 24 26 … … 55 57 integer :: iter(nlayer) ! iteration counter 56 58 real :: jo3(nlayer) ! photodissociation rate o3 -> o1d 59 real :: jh2o(nlayer) ! photodissociation rate h2o -> h + oh 57 60 58 61 !=================================================================== … … 63 66 64 67 integer :: phychemrat ! (physical timestep)/(nominal chemical timestep) 65 integer :: j_o3_o1d, ilev, iesp68 integer :: j_o3_o1d, j_h2o, ilev, iesp 66 69 integer :: lswitch 67 70 logical, save :: firstcall = .true. 68 logical :: jonline 71 logical :: jonline ! switch for online photolysis 69 72 70 73 ! tracer indexes in the chemistry: … … 140 143 !=================================================================== 141 144 142 jonline = .false. ! .false. recommended until the end of testing phase145 jonline = .false. 143 146 144 147 if (jonline) then 145 if (sza <= 1 20.) then ! day146 tau = tau*press(1)/ 6.1! temporary148 if (sza <= 113.) then ! day at 300 km 149 tau = tau*press(1)/7. ! temporary 147 150 call photolysis_online(nlayer, alt, press, temp, zmmean, & 148 151 i_co2, i_co, i_o, i_o1d, i_o2, i_o3, i_h, & … … 158 161 end if 159 162 160 ! save o3 photolysis for output163 ! save o3 and h2o photolysis for output 161 164 162 165 j_o3_o1d = 5 163 166 jo3(:) = v_phot(:,j_o3_o1d) 167 j_h2o = 7 168 jh2o(:) = v_phot(:,j_h2o) 164 169 165 170 !=================================================================== … … 418 423 419 424 use comcstfi_h 425 use photolysis_mod, only : nphot, nb_phot_max, & 426 nb_reaction_3_max, & 427 nb_reaction_4_max 420 428 421 429 implicit none 422 423 #include "chimiedata.h"424 430 425 431 !---------------------------------------------------------------------- … … 473 479 !---------------------------------------------------------------------- 474 480 475 nb_phot = 13 ! jmars.20140930(13) - hno3 - hno4 + h2 + n2481 nb_phot = nphot ! initialised to the number of photolysis rates 476 482 nb_reaction_3 = 0 477 483 nb_reaction_4 = 0 … … 1044 1050 1045 1051 use types_asis 1052 use photolysis_mod, only : nb_phot_max, & 1053 nb_reaction_3_max, & 1054 nb_reaction_4_max 1046 1055 1047 1056 implicit none 1048 1049 #include "chimiedata.h"1050 1057 1051 1058 ! input … … 1170 1177 1171 1178 use types_asis 1179 use photolysis_mod, only : nb_phot_max, & 1180 nb_reaction_3_max, & 1181 nb_reaction_4_max 1172 1182 1173 1183 implicit none 1174 1175 #include "chimiedata.h"1176 1184 1177 1185 ! input -
trunk/LMDZ.MARS/libf/aeronomars/photolysis.F90
r2024 r2030 8 8 9 9 use comcstfi_h 10 use photolysis_mod, only : nb_phot_max 10 11 11 12 implicit none … … 333 334 v_phot(l, 8) = j(l,j_h2o2) 334 335 v_phot(l, 9) = j(l,j_ho2) 335 v_phot(l,10) = 0. ! h2 336 v_phot(l,10) = 0. ! h2 missing in lookup table 336 337 v_phot(l,11) = j(l,j_no) 337 338 v_phot(l,12) = j(l,j_no2) 338 v_phot(l,13) = 0. ! n2 339 v_phot(l,13) = 0. ! n2 missing in lookup table 339 340 end do 340 341 -
trunk/LMDZ.MARS/libf/aeronomars/photolysis_mod.F90
r2029 r2030 3 3 implicit none 4 4 5 integer, parameter :: nphot = 13 ! number of photolysis 6 integer, parameter :: nabs = 10 ! number of absorbing gases 7 8 ! number of reactions in chemical solver 9 10 integer, parameter :: nb_phot_max = nphot + 9 ! photolysis + quenching/heterogeneous 11 integer, parameter :: nb_reaction_3_max = 6 ! quadratic 12 integer, parameter :: nb_reaction_4_max = 31 ! bimolecular 13 5 14 ! spectral grid 6 15 7 integer, parameter :: nw = 1 52 ! number of spectral intervals (low-res)16 integer, parameter :: nw = 162 ! number of spectral intervals (low-res) 8 17 integer :: mopt ! high-res/low-res switch 9 18 … … 136 145 ! 0-60 nm : 6.0 nm 137 146 ! 60-80 nm : 2.0 nm 138 ! 80-120 nm : 5.0 nm 147 ! 80-85 nm : 5.0 nm 148 ! 85-117 nm : 2.0 nm 149 ! 117-120 nm : 5.0 nm 139 150 ! 120-123 nm : 0.2 nm 140 151 ! 123-163 nm : 5.0 nm … … 209 220 wl(kw+1) = wu(kw) 210 221 222 !============================================================ 223 211 224 else if (mopt == 2) then ! low-res 212 225 … … 232 245 END DO 233 246 234 ! define wavelength intervals of width 5.0 nm from 80 to 120nm:247 ! define wavelength intervals of width 5.0 nm from 80 to 85 nm: 235 248 236 249 wincr = 5.0 237 DO iw = 80, 115, 5 250 DO iw = 80, 80, 5 251 kw = kw + 1 252 wl(kw) = real(iw) 253 wu(kw) = wl(kw) + wincr 254 wc(kw) = (wl(kw) + wu(kw))/2. 255 END DO 256 257 ! define wavelength intervals of width 2.0 nm from 85 to 117 nm: 258 259 wincr = 2.0 260 DO iw = 85, 115, 2 261 kw = kw + 1 262 wl(kw) = real(iw) 263 wu(kw) = wl(kw) + wincr 264 wc(kw) = (wl(kw) + wu(kw))/2. 265 END DO 266 267 ! define wavelength intervals of width 5.0 nm from 117 to 120 nm: 268 269 wincr = 3.0 270 DO iw = 117, 117, 3 238 271 kw = kw + 1 239 272 wl(kw) = real(iw) … … 250 283 wu(kw) = wl(kw) + wincr 251 284 wc(kw) = (wl(kw) + wu(kw))/2. 252 END 285 ENDDO 253 286 254 287 ! define wavelength intervals of width 5.0 nm from 123 to 163 nm: … … 260 293 wu(kw) = wl(kw) + wincr 261 294 wc(kw) = (wl(kw) + wu(kw))/2. 262 END 295 ENDDO 263 296 264 297 ! define wavelength intervals of width 2.0 nm from 163 to 175 nm: … … 270 303 wu(kw) = wl(kw) + wincr 271 304 wc(kw) = (wl(kw) + wu(kw))/2. 272 END 305 ENDDO 273 306 274 307 ! define wavelength intervals of width 0.5 nm from 175 to 205 nm: … … 280 313 wu(kw) = wl(kw) + wincr 281 314 wc(kw) = (wl(kw) + wu(kw))/2. 282 END 315 ENDDO 283 316 284 317 ! define wavelength intervals of width 5.0 nm from 205 to 245 nm: … … 290 323 wu(kw) = wl(kw) + wincr 291 324 wc(kw) = (wl(kw) + wu(kw))/2. 292 END 325 ENDDO 293 326 294 327 ! define wavelength intervals of width 10.0 nm from 245 to 415 nm: … … 300 333 wu(kw) = wl(kw) + wincr 301 334 wc(kw) = (wl(kw) + wu(kw))/2. 302 END 335 ENDDO 303 336 304 337 ! define wavelength intervals of width 50.0 nm from 415 to 815 nm: … … 310 343 wu(kw) = wl(kw) + wincr 311 344 wc(kw) = (wl(kw) + wu(kw))/2. 312 END 345 ENDDO 313 346 314 347 wl(kw+1) = wu(kw) 315 348 316 349 end if ! mopt 350 351 print*, 'number of spectral intervals : ', kw+1 317 352 318 ! do iw = 1,nw319 ! write(20,*) iw, wl(iw), wu(iw)320 ! end do321 print*, 'number of spectral intervals : ', kw+1322 323 353 end subroutine gridw 324 354 -
trunk/LMDZ.MARS/libf/aeronomars/photolysis_online.F
r2029 r2030 10 10 11 11 implicit none 12 13 #include "chimiedata.h"14 12 15 13 ! input … … 39 37 ! cross-sections 40 38 41 integer, parameter :: nabs = 10 ! number of absorbing gases42 integer, parameter :: nphot = 13 ! number of photolysis43 39 real, dimension(nlayer,nw,nphot) :: sj ! general cross-section array (cm2) 44 40 … … 920 916 gb = rjp1*rjp1 - rpsinz*rpsinz 921 917 922 IF (ga .LT. 0.0) ga = 0.0923 IF (gb .LT. 0.0) gb = 0.0918 ga = max(ga, 0.) 919 gb = max(gb, 0.) 924 920 925 921 IF (id.GT.i .AND. j.EQ.id) THEN -
trunk/LMDZ.MARS/libf/aeronomars/surfacearea.F
r1528 r2030 20 20 21 21 include "callkeys.h" 22 include "chimiedata.h"23 22 24 23 ! input
Note: See TracChangeset
for help on using the changeset viewer.