Changeset 5099 for LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer
- Timestamp:
- Jul 22, 2024, 9:29:09 PM (6 months ago)
- Location:
- LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/aer_sedimnt.F90
r5098 r5099 1 ! 1 2 2 ! $Id$ 3 ! 3 4 4 SUBROUTINE AER_SEDIMNT(pdtphys, t_seri, pplay, paprs, tr_seri, dens_aer) 5 5 -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/aerophys.F90
r4950 r5099 1 1 ! $Id$ 2 ! 2 3 3 MODULE aerophys 4 ! 4 5 5 IMPLICIT NONE 6 ! 6 7 7 REAL,PARAMETER :: ropx=1500.0 ! default aerosol particle mass density [kg/m3] 8 8 REAL,PARAMETER :: dens_aer_dry=1848.682308 ! dry aerosol particle mass density at T_0=293K[kg/m3] … … 25 25 REAL, PARAMETER :: mNatome=14.0067*1.66E-27 ! Mass of an N atome [kg] 26 26 REAL, PARAMETER :: rgas=8.3145 ! molar gas cste (J⋅K−1⋅mol−1=m3⋅Pa⋅K−1⋅mol−1=kg⋅m2⋅s−2⋅K−1⋅mol−1) 27 ! 27 28 28 REAL, PARAMETER :: MH2O =1000.*mH2Omol ! Mass of 1 molec [g] (18.016*1.66E-24) 29 29 REAL, PARAMETER :: MH2SO4=1000.*mH2SO4mol ! Mass of 1 molec [g] (98.082*1.66E-24) 30 30 REAL, PARAMETER :: BOLZ =1.381E-16 ! Boltzmann constant [dyn.cm/K] 31 ! 31 32 32 END MODULE aerophys -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/calcaerosolstrato_rrtm.F90
r5098 r5099 1 ! 1 2 2 ! $Id$ 3 ! 3 4 4 SUBROUTINE calcaerosolstrato_rrtm(pplay,t_seri,paprs,debut) 5 5 -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/coagulate.F90
r5098 r5099 1 ! 1 2 2 ! $Id$ 3 ! 3 4 4 SUBROUTINE COAGULATE(pdtcoag,mdw,tr_seri,t_seri,pplay,dens_aer,is_strato) 5 5 ! ----------------------------------------------------------------------- 6 ! 6 7 7 ! Author : Christoph Kleinschmitt (with Olivier Boucher) 8 8 ! ------ 9 ! 9 10 10 ! purpose 11 11 ! ------- 12 ! 12 13 13 ! interface 14 14 ! --------- … … 17 17 ! tr_seri tracer mixing ratios [kg/kg] 18 18 ! mdw # or mass median diameter [m] 19 ! 19 20 20 ! method 21 21 ! ------ 22 ! 22 23 23 ! ----------------------------------------------------------------------- 24 24 … … 204 204 DO j=1, nbtr_bin 205 205 DO i=1, nbtr_bin 206 ! 206 207 207 num=4.*RPI*(radiuswet(i)+radiuswet(j))*(Di(i)+Di(j)) 208 208 denom=(radiuswet(i)+radiuswet(j))/(radiuswet(i)+radiuswet(j)+sqrt(delta(i)**2.+delta(j)**2.))+ & 209 209 4.*(Di(i)+Di(j))/(sqrt(thvelpar(i)**2.+thvelpar(j)**2.)*(radiuswet(i)+radiuswet(j))) 210 210 beta(i,j)=num/denom 211 ! 211 212 212 !--compute enhancement factor due to van der Waals forces 213 213 IF (ok_vdw == 0) THEN !--no enhancement factor … … 222 222 EvdW = 1. + SQRT(AvdWi/3.)/(1.+bvdW0*SQRT(AvdWi)) + bvdW1*xvdW + bvdW3*xvdW**3. 223 223 ENDIF 224 ! 224 225 225 beta(i,j)=beta(i,j)*EvdW 226 226 … … 247 247 numi=0.0 248 248 DO i=1, k-1 249 ! 249 250 250 ! see Jacobson: " In order to conserve volume and volume concentration (which 251 251 ! coagulation physically does) while giving up some accuracy in number concentration" 252 ! 252 253 253 ! Coagulation of i and j giving k 254 254 ! with V(i) and then V(j) because it considers i,j and j,i with the double loop 255 ! 255 256 256 ! BUT WHY WET VOLUME V(i) in old STRATAER? tracers are already dry aerosols and coagulation 257 257 ! kernel beta(i,j) accounts for wet aerosols -> reply below 258 ! 258 259 259 ! numi=numi+ff(i,j,k)*beta(i,j)*V(i)*tr_tp1(ilon,ilev,i)*tr_t(ilon,ilev,j) 260 260 numi=numi+ff(i,j,k)*beta(i,j)*Vdry(i)*tr_tp1(ilon,ilev,i)*tr_t(ilon,ilev,j) … … 266 266 ! tr_tp1(ilon,ilev,k)=(V(k)*tr_t(ilon,ilev,k)+pdtcoag*num)/( (1.+pdtcoag*denom)*V(k) ) 267 267 tr_tp1(ilon,ilev,k)=(Vdry(k)*tr_t(ilon,ilev,k)+pdtcoag*num)/( (1.+pdtcoag*denom)*Vdry(k) ) 268 ! 268 269 269 ! In constant composition (no dependency on aerosol size because no kelvin effect) 270 270 ! V(l)= (f_r_wet(ilon,ilev)**3)*((mdw(l)/2.)**3) = (f_r_wet(ilon,ilev)**3)*Vdry(i) -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/cond_evap_tstep_mod.F90
r5098 r5099 1 ! 1 2 2 ! $Id$ 3 ! 3 4 4 MODULE cond_evap_tstep_mod 5 5 … … 11 11 SUBROUTINE condens_evapor_rate_kelvin(R2SO4G,t_seri,pplay,R2SO4, & 12 12 DENSO4,f_r_wet,R2SO4ik,DENSO4ik,f_r_wetik,FL,ASO4,DNDR) 13 ! 13 14 14 ! INPUT: 15 15 ! R2SO4G: number density of gaseous H2SO4 [molecules/cm3] … … 127 127 ! Kelvin factor (MKS) 128 128 fkelvin=exp( 2.*1.e-3*surtens*1.e-6*mvh2so4/ (1.e-2*RRSI_wet(IK)*rgas*temp) ) 129 ! 129 130 130 DNDR(IK) =DND*fkelvin 131 131 … … 167 167 SUBROUTINE condens_evapor_rate(R2SO4G,t_seri,pplay,ACTSO4,R2SO4, & 168 168 DENSO4,f_r_wet,FL,ASO4,DNDR) 169 ! 169 170 170 ! INPUT: 171 171 ! R2SO4: aerosol H2SO4 weight fraction (percent) -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/interp_sulf_input.F90
r5098 r5099 1 ! 1 2 2 ! $Id$ 3 ! 3 4 4 SUBROUTINE interp_sulf_input(debutphy,pdtphys,paprs,tr_seri) 5 5 … … 84 84 85 85 REAL H2SO4_lifetime_glo(klon_glo,klev) 86 ! 86 87 87 REAL, ALLOCATABLE, SAVE :: OCS_clim(:,:) 88 88 REAL, ALLOCATABLE, SAVE :: SO2_clim(:,:) 89 89 !$OMP THREADPRIVATE(OCS_clim,SO2_clim) 90 ! 90 91 91 INTEGER i, k, kk, j 92 92 REAL p_bound … … 108 108 2.47875223e+02, 1.50343923e+02, 9.11881985e+01, & 109 109 5.53084382e+01, 3.35462635e+01, 0.0 /) 110 ! 110 111 111 IF (.NOT.ALLOCATED(OCS_clim)) ALLOCATE(OCS_clim(klon,klev)) 112 112 IF (.NOT.ALLOCATED(SO2_clim)) ALLOCATE(SO2_clim(klon,klev)) … … 311 311 312 312 IF (is_mpi_root.AND.is_omp_root) THEN 313 ! 313 314 314 DEALLOCATE(OCS_clim_in,SO2_clim_in,O3_clim_in) 315 315 DEALLOCATE(OCS_clim_mth,SO2_clim_mth,O3_clim_mth) … … 318 318 DEALLOCATE(OCS_lifetime_mth, SO2_lifetime_mth, H2SO4_lifetime_mth) 319 319 DEALLOCATE(OCS_lifetime_tmp, SO2_lifetime_tmp, H2SO4_lifetime_tmp) 320 ! 320 321 321 ENDIF !--is_mpi_root and is_omp_root 322 322 … … 334 334 DO i=1, klon 335 335 DO k=1, klev 336 ! 336 337 337 !--OCS and SO2 prescribed back to their clim values below p_bound 338 338 IF (paprs(i,k)>p_bound) THEN -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/micphy_tstep.F90
r5098 r5099 1 ! 1 2 2 ! $Id$ 3 ! 3 4 4 SUBROUTINE micphy_tstep(pdtphys,tr_seri,t_seri,pplay,paprs,rh,is_strato) 5 5 … … 63 63 64 64 DO ilon=1, klon 65 ! 65 66 66 !--initialisation of diagnostic 67 67 budg_h2so4_to_part(ilon)=0.0 68 ! 68 69 69 DO ilev=1, klev 70 ! 70 71 71 !--initialisation of diagnostic 72 72 budg_3D_nucl(ilon,ilev)=0.0 73 73 budg_3D_cond_evap(ilon,ilev)=0.0 74 ! 74 75 75 ! only in the stratosphere 76 76 IF (is_strato(ilon,ilev)) THEN -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/miecalc_aer.F90
r5098 r5099 3 3 !-------Mie computations for a size distribution 4 4 ! of homogeneous spheres. 5 ! 5 6 6 !========================================================== 7 7 !--Ref : Toon and Ackerman, Applied Optics, 1981 -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/minmaxsimple.F90
r3526 r5099 1 ! 1 2 2 ! $Id$ 3 ! 3 4 4 SUBROUTINE minmaxsimple(zq,qmin,qmax,comment) 5 5 USE dimphy -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/nucleation_tstep_mod.F90
r5098 r5099 1 ! 1 2 2 ! $Id$ 3 ! 3 4 4 MODULE nucleation_tstep_mod 5 5 … … 136 136 137 137 ! Fortran 90 subroutine binapara 138 ! 138 139 139 ! Calculates parametrized values of nucleation rate, 140 140 ! mole fraction of sulphuric acid … … 142 142 ! in H2O-H2SO4 system IF temperature, saturatio ratio of water and 143 143 ! sulfuric acid concentration are given. 144 ! 144 145 145 ! Copyright (C) 2002 Hanna Vehkamäki 146 ! 146 147 147 ! Division of Atmospheric Sciences 148 148 ! Department of Physical Sciences … … 150 150 ! FIN-00014 University of Helsinki 151 151 ! Finland 152 ! 152 153 153 ! hanna.vehkamaki@helsinki.fi 154 154 … … 300 300 301 301 ! Fortran 90 subroutine newbinapara 302 ! 302 303 303 ! Calculates parametrized values for neutral and ion-induced sulfuric acid-water particle formation rate 304 304 ! of critical clusters, … … 307 307 ! and, optionally, either condensation sink due to pre-existing particle and ion pair production rate, 308 308 ! or atmospheric concentration of negative ions are given. 309 ! 309 310 310 ! The code calculates also the kinetic limit and the particle formation rate 311 311 ! above this limit (in which case we set ntot=1 and na=1) 312 ! 312 313 313 ! Copyright (C)2018 Määttänen et al. 2018 314 ! 314 315 315 ! anni.maattanen@latmos.ipsl.fr 316 316 ! joonas.merikanto@fmi.fi 317 317 ! hanna.vehkamaki@helsinki.fi 318 ! 318 319 319 ! References 320 320 ! A. Määttänen, J. Merikanto, H. Henschel, J. Duplissy, R. Makkonen, … … 322 322 ! neutral and ion-induced sulfuric acid-water particle formation in 323 323 ! nucleation and kinetic regimes, J. Geophys. Res. Atmos., 122, doi:10.1002/2017JD027429. 324 ! 324 325 325 ! Brasseur, G., and A. Chatel (1983), paper presented at the 9th Annual Meeting of the 326 326 ! European Geophysical Society, Leeds, Great Britain, August 1982. 327 ! 327 328 328 ! Dunne, Eimear M., et al.(2016), Global atmospheric particle formation from CERN CLOUD measurements, 329 329 ! Science 354.6316, 1119-1124. 330 !331 330 332 331 USE aerophys -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/ocs_to_so2.F90
r5098 r5099 1 ! 1 2 2 ! $Id$ 3 ! 3 4 4 SUBROUTINE ocs_to_so2(pdtphys,tr_seri,t_seri,pplay,paprs,is_strato) 5 5 -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/so2_to_h2so4.F90
r5098 r5099 1 ! 1 2 2 ! $Id$ 3 ! 3 4 4 SUBROUTINE SO2_TO_H2SO4(pdtphys,tr_seri,t_seri,pplay,paprs,is_strato) 5 5 -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/stratH2O_methox.F90
r5098 r5099 1 ! 1 2 2 ! $Id: stratH2O_methox.F90 3677 2020-05-06 15:18:32Z oboucher $ 3 ! 3 4 4 SUBROUTINE stratH2O_methox(debutphy,paprs,dq_ch4mmr) 5 ! 5 6 6 ! output: CH4VMR in MMR/s (mass mixing ratio/s or kg H2O/kg air/s) 7 7 … … 60 60 REAL, ALLOCATABLE :: CH4RVMR_tmp(:, :) 61 61 REAL CH4RVMR_glo(klon_glo,klev) 62 ! 62 63 63 INTEGER i, k, kk, j 64 64 … … 77 77 2.47875223e+02, 1.50343923e+02, 9.11881985e+01, & 78 78 5.53084382e+01, 3.35462635e+01, 0.0 /) 79 ! 80 79 81 80 IF (debutphy .OR. mth_cur /= mth_pre) THEN 82 81 … … 136 135 137 136 DO kk=1, n_lev 138 ! 137 139 138 CH4RVMR_glo(i,k)=CH4RVMR_glo(i,k)+ & 140 139 MAX(0.0,MIN(paprs_glo(i,k),paprs_input(kk)) & -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/strataer_nuc_mod.F90
r4950 r5099 24 24 !Config Def = F 25 25 !Config Help = Used in physiq.F 26 ! 26 27 27 CALL getin_p('flag_nuc_rate_box',flag_nuc_rate_box) 28 28 CALL getin_p('nuclat_min',nuclat_min) -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/stratdistrib.F90
r5098 r5099 1 ! 1 2 2 ! $Id: stratemit.F90 2022-07-04 mmarchand $ 3 ! 3 4 4 SUBROUTINE STRATDISTRIB(altLMDz,altemiss,sigma_alt,f_lay_emiss) 5 ! 5 6 6 USE dimphy, ONLY : klon,klev 7 7 USE strataer_local_var_mod -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/stratemit.F90
r5098 r5099 1 ! 1 2 2 ! $Id: stratemit.F90 2022-07-04 mmarchand $ 3 ! 3 4 4 SUBROUTINE STRATEMIT(pdtphys,pdt,xlat,xlon,t_seri,pplay,paprs,tr_seri,& 5 5 m_emiss_vol_daily,latmin,latmax,lonmin,lonmax,altemiss,sigma_alt,id_spec,& … … 78 78 xlon(i)>=lonmin-dlon .AND. & 79 79 xlon(i)<lonmax+dlon ) THEN 80 ! 80 81 81 WRITE(*,*) 'coordinates of volcanic injection point=',& 82 82 xlat(i),xlon(i),day_cur,mth_cur,year_cur -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/sulfate_aer_mod.F90
r5087 r5099 8 8 !******************************************************************* 9 9 SUBROUTINE STRACOMP_KELVIN(sh,t_seri,pplay) 10 ! 10 11 11 ! Aerosol H2SO4 weight fraction as a function of PH2O and temperature 12 12 ! INPUT: … … 14 14 ! t_seri: temperature (K) 15 15 ! pplay: middle layer pression (Pa) 16 ! 16 17 17 ! Modified in modules: 18 18 ! R2SO4: aerosol H2SO4 weight fraction (percent) … … 115 115 ! aerosol density (gr/cm3) = f(T,h2so4 mass fraction) 116 116 denso4ik=density(temp,wpp) 117 ! 117 118 118 ! recalculate Kelvin factor with surface tension and radwet 119 119 ! with new R2SO4B and DENSO4B … … 134 134 f_r_wetB(ilon,ilev,IK) = (dens_aer_dry/(DENSO4B(ilon,ilev,IK)*1.e3)/ & 135 135 (R2SO4B(ilon,ilev,IK)*1.e-2))**third 136 ! 136 137 137 ! print*,'R,Rwet(m),kelvin,h2so4(%),ro=',RRSI(ik),radwet,fkelvin, & 138 138 ! & R2SO4B(ilon,ilev,IK),DENSO4B(ilon,ilev,IK) … … 160 160 ! klev: number of altitude bands in the model domain 161 161 ! for IFS: perhaps add another dimension for longitude 162 ! 162 163 163 ! OUTPUT: 164 164 ! R2SO4: aerosol H2SO4 weight fraction (percent) … … 175 175 176 176 REAL PMB(klon,klev), H2O(klon,klev) 177 ! 177 178 178 ! working variables 179 179 INTEGER I,J,K … … 187 187 REAL YC(M) 188 188 REAL XC1, XC16, YC1, YC28 189 ! 189 190 190 SAVE INSTEP,F,XC,YC,XC1,XC16,YC1,YC28 191 191 !$OMP THREADPRIVATE(INSTEP,F,XC,YC,XC1,XC16,YC1,YC28) … … 216 216 XC(15)=30.0 217 217 XC(16)=100.0 218 ! 218 219 219 YC(1)=175.0 220 220 DO I=2,28 … … 226 226 XC(I)=XC(I)*1.0E-4 227 227 ENDDO 228 ! 228 229 229 XC1=XC(1)+1.E-10 230 230 XC16=XC(16)-1.E-8 … … 247 247 F(6,17)=86.79 248 248 F(6,18)=88.32 249 ! 249 250 250 ! ADD FACTOR BECAUSE THE SLOP IS TOO IMPORTANT 251 251 ! NOT FOR THIS ONE BUT THE REST … … 256 256 F(6,2)=A*YC(2) + B 257 257 F(6,3)=A*YC(3) + B 258 ! 258 259 259 F(7,4)=37.02 260 260 F(7,5)=49.46 … … 272 272 F(7,17)=85.85 273 273 F(7,18)=87.33 274 ! 274 275 275 A=(F(7,5)-F(7,4))/( (YC(5)-YC(4))*2.0) 276 276 B=-A*YC(4) + F(7,4) … … 278 278 F(7,2)=A*YC(2) + B 279 279 F(7,3)=A*YC(3) + B 280 ! 280 281 281 F(8,4)=25.85 282 282 F(8,5)=42.26 … … 294 294 F(8,17)=84.67 295 295 F(8,18)=86.10 296 ! 296 297 297 A=(F(8,5)-F(8,4))/( (YC(5)-YC(4))*2.5 ) 298 298 B=-A*YC(4) + F(8,4) … … 300 300 F(8,2)=A*YC(2) + B 301 301 F(8,3)=A*YC(3) + B 302 ! 302 303 303 F(9,4)=15.38 304 304 F(9,5)=39.35 … … 316 316 F(9,17)=84.25 317 317 F(9,18)=85.66 318 ! 318 319 319 A=(F(9,5)-F(9,4))/( (YC(5)-YC(4))*7.0) 320 320 B=-A*YC(4) + F(9,4) … … 322 322 F(9,2)=A*YC(2) + B 323 323 F(9,3)=A*YC(3) + B 324 ! 324 325 325 F(10,4)=0.0 326 326 F(10,5)=34.02 … … 338 338 F(10,17)=83.57 339 339 F(10,18)=84.97 340 ! 340 341 341 A=(F(10,6)-F(10,5))/( (YC(6)-YC(5))*1.5) 342 342 B=-A*YC(5) + F(10,5) … … 345 345 F(10,3)=A*YC(3) + B 346 346 F(10,4)=A*YC(4) + B 347 ! 347 348 348 F(11,4)=0.0 349 349 F(11,5)=29.02 … … 361 361 F(11,17)=83.03 362 362 F(11,18)=84.44 363 ! 363 364 364 A=(F(11,6)-F(11,5))/( (YC(6)-YC(5))*2.5 ) 365 365 B=-A*YC(5) + F(11,5) … … 368 368 F(11,3)=A*YC(3) + B 369 369 F(11,4)=A*YC(4) + B 370 ! 370 371 371 F(12,4)=0.0 372 372 F(12,5)=23.13 … … 384 384 F(12,17)=82.58 385 385 F(12,18)=83.99 386 ! 386 387 387 A=(F(12,6)-F(12,5))/( (YC(6)-YC(5))*3.5 ) 388 388 B=-A*YC(5) + F(12,5) … … 391 391 F(12,3)=A*YC(3) + B 392 392 F(12,4)=A*YC(4) + B 393 ! 393 394 394 F(13,4)=0.0 395 395 F(13,5)=0.0 … … 407 407 F(13,17)=82.02 408 408 F(13,18)=83.44 409 ! 409 410 410 A=(F(13,7)-F(13,6))/( (YC(7)-YC(6))*2.0) 411 411 B=-A*YC(6) + F(13,6) … … 415 415 F(13,4)=A*YC(4) + B 416 416 F(13,5)=A*YC(5) + B 417 ! 417 418 418 F(14,4)=0.0 419 419 F(14,5)=0.0 … … 431 431 F(14,17)=81.26 432 432 F(14,18)=82.72 433 ! 433 434 434 A=(F(14,7)-F(14,6))/( (YC(7)-YC(6))*2.5 ) 435 435 B=-A*YC(6) + F(14,6) … … 439 439 F(14,4)=A*YC(4) + B 440 440 F(14,5)=A*YC(5) + B 441 ! 441 442 442 F(15,4)=0.0 443 443 F(15,5)=0.0 … … 455 455 F(15,17)=80.12 456 456 F(15,18)=81.64 457 ! 457 458 458 A=(F(15,8)-F(15,7))/( (YC(8)-YC(7))*1.5) 459 459 B=-A*YC(7) + F(15,7) … … 546 546 ! klev: number of altitude bands in the model domain 547 547 ! for IFS: perhaps add another dimension for longitude 548 ! 548 549 549 ! OUTPUT: 550 550 ! ACTSO4: H2SO4 activity (percent) … … 624 624 ! VERY ROUGH APPROXIMATION (SEE FOR WATER IN HANDBOOK 625 625 ! LINEAR 2% FOR 30 DEGREES with RESPECT TO WATER) 626 ! 626 627 627 ! INPUT: 628 628 ! R2SO4: aerosol H2SO4 weight fraction (percent) … … 631 631 ! klev: number of altitude bands in the model domain 632 632 ! for IFS: perhaps add another dimension for longitude 633 ! 633 634 634 ! OUTPUT: 635 635 ! DENSO4: aerosol mass density (gr/cm3 = aerosol mass/aerosol volume) 636 ! 636 637 637 USE dimphy, ONLY : klon,klev 638 638 USE phys_local_var_mod, ONLY: R2SO4, DENSO4 … … 657 657 !*********************************************************** 658 658 SUBROUTINE FIND(X,Y,XC,YC,F,VAL,N,M) 659 ! 659 660 660 ! BI-LINEAR INTERPOLATION 661 661 … … 666 666 ! YC: Table temperature (K) 667 667 ! F: Table aerosol H2SO4 weight fraction=f(XC,YC) (percent) 668 ! 668 669 669 ! OUTPUT: 670 670 ! VAL: aerosol H2SO4 weight fraction (percent) … … 674 674 INTEGER N,M 675 675 REAL X,Y,XC(N),YC(M),F(N,M),VAL 676 ! 676 677 677 ! working variables 678 678 INTEGER IERX,IERY,JX,JY,JXP1,JYP1 … … 768 768 real function psh2so4(T) result(psh2so4_out) 769 769 ! equilibrium H2SO4 pressure over pure H2SO4 solution (Pa) 770 ! 770 771 771 !---->Ayers et.al. (1980), GRL (7) pp 433-436 772 772 ! plus corrections for lower temperatures by Kulmala and Laaksonen (1990) … … 810 810 real function psh2o(T) result(psh2o_out) 811 811 ! equilibrium H2O pressure over pure liquid water (Pa) 812 ! 812 813 813 implicit none 814 814 real, intent(in) :: T … … 930 930 ! as a function of temperature and H2O pressure, using 931 931 ! the parameterization of Tabazadeh et al., GRL, p1931, 1997. 932 ! 932 933 933 ! Parameters 934 ! 934 935 935 ! input: 936 936 ! T.....temperature (K) 937 937 ! pph2o..... amhbiant 2o pressure (Pa) 938 ! 938 939 939 ! output: 940 940 ! wph2so4......sulfuric acid composition (weight percent wt % h2so4) 941 941 ! = h2so4 mass fraction*100. 942 ! 942 943 943 implicit none 944 944 real, intent(in) :: pph2o, T … … 1059 1059 return 1060 1060 end function rmvh2o 1061 ! 1061 1062 1062 END MODULE sulfate_aer_mod -
LMDZ6/branches/Amaury_dev/libf/phylmd/StratAer/traccoag_mod.F90
r5098 r5099 1 1 MODULE traccoag_mod 2 ! 2 3 3 ! This module calculates the concentration of aerosol particles in certain size bins 4 4 ! considering coagulation and sedimentation. 5 ! 5 6 6 CONTAINS 7 7 … … 190 190 191 191 CASE(2) ! stratospheric aerosol injections (SAI) 192 ! 192 193 193 ! Computing duration of SAI in days... 194 194 ! ... starting from 0...
Note: See TracChangeset
for help on using the changeset viewer.