Changeset 3318 for trunk/LMDZ.TITAN/libf/phytitan/optcv.F90
- Timestamp:
- Apr 26, 2024, 4:27:26 PM (7 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.TITAN/libf/phytitan/optcv.F90
r3090 r3318 1 1 SUBROUTINE OPTCV(PQMO,NLAY,ZLEV,PLEV,TMID,PMID, & 2 2 DTAUV,TAUV,TAUCUMV,WBARV,COSBV,TAURAY,TAUGSURF,SEASHAZEFACT,& 3 POPT_HAZE,POPT_CLOUDS,CDCOLUMN)3 DIAG_OPTH,DIAG_OPTT,CDCOLUMN) 4 4 5 5 use radinc_h … … 11 11 use callkeys_mod, only: continuum,graybody,callgasvis,corrk_recombin, & 12 12 callclouds,callmufi,seashaze,uncoupl_optic_haze,& 13 opt4clouds,FHVIS, Fssa13 opt4clouds,FHVIS,FCVIS 14 14 use tracer_h, only: nmicro,nice,ices_indx 15 15 … … 69 69 REAL*8, INTENT(OUT) :: WBARV(L_NLAYRAD,L_NSPECTV,L_NGAUSS) 70 70 REAL*8, INTENT(OUT) :: TAUGSURF(L_NSPECTV,L_NGAUSS-1) 71 REAL*8, INTENT(OUT) :: POPT_HAZE(L_LEVELS,L_NSPECTI,3)72 REAL*8, INTENT(OUT) :: POPT_CLOUDS(L_LEVELS,L_NSPECTI,3)71 REAL*8, INTENT(OUT) :: DIAG_OPTH(L_LEVELS,L_NSPECTV,6) 72 REAL*8, INTENT(OUT) :: DIAG_OPTT(L_LEVELS,L_NSPECTV,6) 73 73 ! ========================================================== 74 74 … … 124 124 real*8,save :: rhoaer_s(L_NSPECTV),ssa_s(L_NSPECTV),asf_s(L_NSPECTV) 125 125 real*8,save :: rhoaer_f(L_NSPECTV),ssa_f(L_NSPECTV),asf_f(L_NSPECTV) 126 real*8,save :: ssa_ccn(L_NSPECT I),asf_ccn(L_NSPECTI)126 real*8,save :: ssa_ccn(L_NSPECTV),asf_ccn(L_NSPECTV) 127 127 real*8,save :: ssa_cld(L_NSPECTV),asf_cld(L_NSPECTV) 128 128 !$OMP THREADPRIVATE(rhoaer_s,rhoaer_f,ssa_s,ssa_f,ssa_cld,asf_s,asf_f,asf_cld) … … 191 191 end do 192 192 193 DIAG_OPTH(:,:,:) = 0.D0 194 DIAG_OPTT(:,:,:) = 0.D0 195 193 196 do NW=1,L_NSPECTV 194 197 ! We ignore K=1... … … 254 257 ENDIF 255 258 259 ! Tuning of optical properties for haze : 260 !dtauaer_s = dtauaer_s * (FHVIS * (1-ssa_s(nw)) + ssa_s(nw)) 261 !ssa_s(nw) = ssa_s(nw) / (FHVIS * (1-ssa_s(nw)) + ssa_s(nw)) 262 dtauaer_f = dtauaer_f * (FHVIS * (1-ssa_f(nw)) + ssa_f(nw)) 263 ssa_f(nw) = ssa_f(nw) / (FHVIS * (1-ssa_f(nw)) + ssa_f(nw)) 264 256 265 ! Total of Haze opacity (dtau), SSA (w) and ASF (COS) : 257 266 DHAZE_T(k,nw) = dtauaer_s + dtauaer_f … … 265 274 ASF_T(k,nw) = 1.0 266 275 ENDIF 276 267 277 ! Diagnostics for the haze : 268 POPT_HAZE(k,nw,1) = DHAZE_T(k,nw) ! dtau269 POPT_HAZE(k,nw,2) = SSA_T(k,nw) ! wbar270 POPT_HAZE(k,nw,3) = ASF_T(k,nw) ! gbar278 DIAG_OPTH(k,nw,1) = DHAZE_T(k,nw) ! dtau 279 DIAG_OPTH(k,nw,2) = SSA_T(k,nw) ! wbar 280 DIAG_OPTH(k,nw,3) = ASF_T(k,nw) ! gbar 271 281 272 282 !--------------------- … … 277 287 m0ccn = pqmo(ilay,5) / 2.0 278 288 m3ccn = pqmo(ilay,6) / 2.0 279 m3cld = 0.0d0289 m3cld = pqmo(ilay,6) / 2.0 280 290 281 291 ! Clear / Dark column method : … … 309 319 310 320 ! For small dropplets, opacity of nucleus dominates 321 dtau_cld = (dtau_cld*m3ccn + dtau_cld*m3cld) / (m3ccn + m3cld) 311 322 ssa_cld(nw) = (ssa_ccn(nw)*m3ccn + ssa_cld(nw)*m3cld) / (m3ccn + m3cld) 312 ssa_cld(nw) = ssa_cld(nw) * Fssa 313 323 324 ! Tuning of optical properties for clouds : 325 dtau_cld = dtau_cld * (FCVIS * (1-ssa_cld(nw)) + ssa_cld(nw)) 326 ssa_cld(nw) = ssa_cld(nw) / (FCVIS * (1-ssa_cld(nw)) + ssa_cld(nw)) 327 314 328 ! Total of Haze + Clouds opacity (dtau), SSA (w) and ASF (COS) : 315 329 DHAZE_T(k,nw) = dtauaer_s + dtauaer_f + dtau_cld … … 324 338 ENDIF 325 339 326 ! Tuning of optical properties (now useless...) :327 DHAZE_T(k,nw) = DHAZE_T(k,nw) * (FHVIS * (1-SSA_T(k,nw)) + SSA_T(k,nw))328 SSA_T(k,nw) = SSA_T(k,nw) / (FHVIS * (1-SSA_T(k,nw)) + SSA_T(k,nw))329 330 340 ! Diagnostics for clouds : 331 POPT_CLOUDS(k,nw,1) = DHAZE_T(k,nw) ! dtau332 POPT_CLOUDS(k,nw,2) = SSA_T(k,nw) ! wbar333 POPT_CLOUDS(k,nw,3) = ASF_T(k,nw) ! gbar341 DIAG_OPTT(k,nw,1) = DHAZE_T(k,nw) ! dtau 342 DIAG_OPTT(k,nw,2) = SSA_T(k,nw) ! wbar 343 DIAG_OPTT(k,nw,3) = ASF_T(k,nw) ! gbar 334 344 335 345 ELSE 336 346 ! Diagnostics for clouds : 337 POPT_CLOUDS(k,nw,1) = 0.D0 ! dtau338 POPT_CLOUDS(k,nw,2) = 1.0 ! wbar339 POPT_CLOUDS(k,nw,3) = 1.0 ! gbar347 DIAG_OPTT(k,nw,1) = 0.D0 ! dtau 348 DIAG_OPTT(k,nw,2) = 1.0 ! wbar 349 DIAG_OPTT(k,nw,3) = 1.0 ! gbar 340 350 ENDIF 341 351 … … 346 356 if (seashaze) DHAZE_T(k,nw) = DHAZE_T(k,nw)*seashazefact(k) 347 357 ! Diagnostics for the haze : 348 POPT_HAZE(k,nw,1) = DHAZE_T(k,nw) ! dtau349 POPT_HAZE(k,nw,2) = SSA_T(k,nw) ! wbar350 POPT_HAZE(k,nw,3) = ASF_T(k,nw) ! gbar358 DIAG_OPTH(k,nw,1) = DHAZE_T(k,nw) ! dtau 359 DIAG_OPTH(k,nw,2) = SSA_T(k,nw) ! wbar 360 DIAG_OPTH(k,nw,3) = ASF_T(k,nw) ! gbar 351 361 ! Diagnostics for clouds : 352 POPT_CLOUDS(k,nw,1) = 0.D0 ! dtau353 POPT_CLOUDS(k,nw,2) = 1.0 ! wbar354 POPT_CLOUDS(k,nw,3) = 1.0 ! gbar362 DIAG_OPTT(k,nw,1) = 0.D0 ! dtau 363 DIAG_OPTT(k,nw,2) = 1.0 ! wbar 364 DIAG_OPTT(k,nw,3) = 1.0 ! gbar 355 365 ENDIF ! ENDIF callmufi 356 366 … … 472 482 DTAUKV(K,nw,ng) = DRAYAER + DCONT ! Scattering + parameterized continuum absorption, including Titan's haze 473 483 474 end do ! k = L_LEVELS 475 end do ! nw = L_NSPECTI 484 DIAG_OPTH(K,nw,4) = DRAYAER 485 DIAG_OPTH(K,nw,5) = TAUGAS 486 DIAG_OPTH(K,nw,6) = DCONT 487 DIAG_OPTT(K,nw,4) = DRAYAER 488 DIAG_OPTT(K,nw,5) = TAUGAS 489 DIAG_OPTT(K,nw,6) = DCONT 490 491 end do ! K = L_LEVELS 492 end do ! nw = L_NSPECTV 476 493 477 494 !=======================================================================
Note: See TracChangeset
for help on using the changeset viewer.