Changeset 3802
- Timestamp:
- Jun 10, 2025, 11:20:19 AM (4 days ago)
- Location:
- trunk/LMDZ.PLUTO/libf/phypluto
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.PLUTO/libf/phypluto/aeropacity.F90
r3585 r3802 122 122 ! Spherical aerosols 123 123 sig = 0.2 124 dtau_aer(:,:,1) = m0as(:,:) * QREFvis3d(:,:,1) * pi * mp2m_rc_sph(:,:)**2 * exp(2*sig**2) 124 where ((m0as(:,:) >= 1e-8).and.(mp2m_rc_sph(:,:) >= 5e-9)) 125 dtau_aer(:,:,1) = m0as(:,:) * QREFvis3d(:,:,1) * pi * mp2m_rc_sph(:,:)**2 * exp(2*sig**2) 126 elsewhere 127 dtau_aer(:,:,1) = 0d0 128 endwhere 125 129 ! Fractal aerosols 126 130 sig = 0.35 127 dtau_aer(:,:,2) = m0af(:,:) * QREFvis3d(:,:,2) * pi * mp2m_rc_fra(:,:)**2 * exp(2*sig**2) 131 where ((m0af(:,:) >= 1e-8).and.(mp2m_rc_fra(:,:) >= 1e-8)) 132 dtau_aer(:,:,2) = m0af(:,:) * QREFvis3d(:,:,2) * pi * mp2m_rc_fra(:,:)**2 * exp(2*sig**2) 133 elsewhere 134 dtau_aer(:,:,2) = 0d0 135 endwhere 128 136 129 137 ! write(*,*) 'dtau_as :', MINVAL(dtau_aer(:,:,1)), '-', MAXVAL(dtau_aer(:,:,1)) -
trunk/LMDZ.PLUTO/libf/phypluto/aeroptproperties.F90
r3642 r3802 38 38 ! ============================================================== 39 39 40 ! Local variables 41 ! --------------- 42 43 40 ! INPUTS 41 ! ------ 42 INTEGER :: ngrid,nlayer 43 ! Aerosol effective radius used for radiative transfer (meter) 44 REAL :: reffrad(ngrid,nlayer,naerkind) 45 ! Aerosol effective variance used for radiative transfer (n.u.) 46 REAL,INTENT(IN) :: nueffrad(ngrid,nlayer,naerkind) 47 48 ! OUTPUTS 49 ! ------- 50 REAL,INTENT(OUT) :: QVISsQREF3d(ngrid,nlayer,L_NSPECTV,naerkind) 51 REAL,INTENT(OUT) :: omegaVIS3d(ngrid,nlayer,L_NSPECTV,naerkind) 52 REAL,INTENT(OUT) :: gVIS3d(ngrid,nlayer,L_NSPECTV,naerkind) 53 54 REAL,INTENT(OUT) :: QIRsQREF3d(ngrid,nlayer,L_NSPECTI,naerkind) 55 REAL,INTENT(OUT) :: omegaIR3d(ngrid,nlayer,L_NSPECTI,naerkind) 56 REAL,INTENT(OUT) :: gIR3d(ngrid,nlayer,L_NSPECTI,naerkind) 57 58 REAL,INTENT(OUT) :: QREFvis3d(ngrid,nlayer,naerkind) 59 REAL,INTENT(OUT) :: QREFir3d(ngrid,nlayer,naerkind) 60 61 ! REAL :: omegaREFvis3d(ngrid,nlayer,naerkind) 62 ! REAL :: omegaREFir3d(ngrid,nlayer,naerkind) 44 63 45 64 ! ============================================================= … … 48 67 49 68 ! Min. and max radius of the interpolation grid (in METERS) 50 REAL, PARAMETER :: refftabmin = 2e-8!2e-869 REAL, PARAMETER :: refftabmin = 4e-9 !2e-8 51 70 ! REAL, PARAMETER :: refftabmax = 35e-6 52 71 REAL, PARAMETER :: refftabmax = 1e-3 … … 95 114 INTEGER :: ig,lg,chg 96 115 116 97 117 ! Local saved variables 98 118 ! --------------------- 99 100 119 ! Radius axis of the interpolation grid 101 120 REAL,SAVE :: refftab(refftabsize) … … 170 189 !$OMP THREADPRIVATE(omegIRa,omegrefIRa,omegIRb,omegrefIRb,gIRa,gIRb) 171 190 191 ! Local variables: 192 !----------------- 172 193 REAL :: radiusm 173 194 REAL :: radiusr 174 175 ! Inputs176 ! ------177 178 INTEGER :: ngrid,nlayer179 ! Aerosol effective radius used for radiative transfer (meter)180 REAL :: reffrad(ngrid,nlayer,naerkind)181 ! Aerosol effective variance used for radiative transfer (n.u.)182 REAL,INTENT(IN) :: nueffrad(ngrid,nlayer,naerkind)183 184 ! Outputs185 ! -------186 187 REAL,INTENT(OUT) :: QVISsQREF3d(ngrid,nlayer,L_NSPECTV,naerkind)188 REAL,INTENT(OUT) :: omegaVIS3d(ngrid,nlayer,L_NSPECTV,naerkind)189 REAL,INTENT(OUT) :: gVIS3d(ngrid,nlayer,L_NSPECTV,naerkind)190 191 REAL,INTENT(OUT) :: QIRsQREF3d(ngrid,nlayer,L_NSPECTI,naerkind)192 REAL,INTENT(OUT) :: omegaIR3d(ngrid,nlayer,L_NSPECTI,naerkind)193 REAL,INTENT(OUT) :: gIR3d(ngrid,nlayer,L_NSPECTI,naerkind)194 195 REAL,INTENT(OUT) :: QREFvis3d(ngrid,nlayer,naerkind)196 REAL,INTENT(OUT) :: QREFir3d(ngrid,nlayer,naerkind)197 198 ! REAL :: omegaREFvis3d(ngrid,nlayer,naerkind)199 ! REAL :: omegaREFir3d(ngrid,nlayer,naerkind)200 195 201 196 REAL :: minrad ! minimal radius in table .dat radiustab (outside 0) … … 260 255 ENDIF ! of IF (first_allocate) 261 256 257 262 258 DO iaer = 1, naerkind ! Loop on aerosol kind 259 !================================================================== 260 ! If there is one single particle size, optical 261 ! properties of the considered aerosol are homogeneous 263 262 IF ( (nsize(iaer,1).EQ.1).AND.(nsize(iaer,2).EQ.1) ) THEN 264 !================================================================== 265 ! If there is one single particle size, optical 266 ! properties of the considered aerosol are homogeneous 263 267 264 DO lg = 1, nlayer 268 265 DO ig = 1, ngrid … … 289 286 endif 290 287 291 ELSE ! Varying effective radius and variance 288 !================================================================== 289 ! Various particule size 290 ! Varying effective radius and variance 291 ELSE 292 292 293 DO idomain = 1, 2 ! Loop on visible or infrared channel 293 !==================================================================294 294 ! 1. Creating the effective radius and variance grid 295 295 ! -------------------------------------------------- … … 487 487 ! 2.1 Effective radius index and kx calculation 488 488 var_tmp=reffrad(ig,lg,iaer)/refftabmin 489 var_tmp=log(var_tmp)*3. 489 if (var_tmp.GT.0.) then ! for debug 490 var_tmp=log(var_tmp)*3. 491 else 492 var_tmp=0. 493 endif 490 494 var_tmp=var_tmp/logvratgrid+1. 491 495 grid_i=floor(var_tmp)
Note: See TracChangeset
for help on using the changeset viewer.