@@ -199,7 +199,8 @@ SUBROUTINE lidar_simulator(npoints,nlev,npart,nrefl &
199199 REAL pnorm_ice(npoints,nlev) ! lidar backscattered signal power for ice
200200 REAL pnorm_perp_ice(npoints,nlev) ! perpendicular lidar backscattered signal power for ice
201201 REAL pnorm_perp_liq(npoints,nlev) ! perpendicular lidar backscattered signal power for liq
202-
202+ real epsreal
203+
203204! Output variable
204205 REAL pnorm_perp_tot (npoints,nlev) ! perpendicular lidar backscattered signal power
205206
@@ -498,20 +499,24 @@ SUBROUTINE lidar_simulator(npoints,nlev,npart,nrefl &
498499 ENDDO
499500
500501! Computation of beta_perp_ice/liq using the lidar equation
502+ epsreal = epsilon (1 .)
501503! Ice only
502504! Upper layer
503505 beta_perp_ice(:,nlev) = pnorm_perp_ice(:,nlev) * (2 .* tautot_ice(:,nlev)) &
504506 & / (1 .- exp (- 2.0 * tautot_ice(:,nlev)))
505507
506508 DO k= nlev-1 , 1 , - 1
507- tautot_lay_ice(:) = tautot_ice(:,k)- tautot_ice(:,k+1 )
508- WHERE (tautot_lay_ice(:).GT. 0 .)
509- beta_perp_ice(:,k) = pnorm_perp_ice(:,k)/ EXP (- 2.0 * tautot_ice(:,k+1 )) * (2 .* tautot_lay_ice(:)) &
510- & / (1 .- exp (- 2.0 * tautot_lay_ice(:)))
511-
512- ELSEWHERE
513- beta_perp_ice(:,k)= pnorm_perp_ice(:,k)/ EXP (- 2.0 * tautot_ice(:,k+1 ))
514- END WHERE
509+ tautot_lay_ice(:) = tautot_ice(:,k)- tautot_ice(:,k+1 )
510+ WHERE ( EXP (- 2.0 * tautot_ice(:,k+1 )) .gt. epsreal )
511+ WHERE (tautot_lay_ice(:).GT. 0 .)
512+ beta_perp_ice(:,k) = pnorm_perp_ice(:,k)/ EXP (- 2.0 * tautot_ice(:,k+1 )) * (2 .* tautot_lay_ice(:)) &
513+ & / (1 .- exp (- 2.0 * tautot_lay_ice(:)))
514+ ELSEWHERE
515+ beta_perp_ice(:,k)= pnorm_perp_ice(:,k)/ EXP (- 2.0 * tautot_ice(:,k+1 ))
516+ END WHERE
517+ elsewhere
518+ beta_perp_ice(:,k)= pnorm_perp_ice(:,k)/ epsreal
519+ endwhere
515520 ENDDO
516521
517522! Liquid only
@@ -521,13 +526,16 @@ SUBROUTINE lidar_simulator(npoints,nlev,npart,nrefl &
521526
522527 DO k= nlev-1 , 1 , - 1
523528 tautot_lay_liq(:) = tautot_liq(:,k)- tautot_liq(:,k+1 )
524- WHERE (tautot_lay_liq(:).GT. 0 .)
525- beta_perp_liq(:,k) = pnorm_perp_liq(:,k)/ EXP (- 2.0 * tautot_liq(:,k+1 )) * (2 .* tautot_lay_liq(:)) &
526- & / (1 .- exp (- 2.0 * tautot_lay_liq(:)))
527-
528- ELSEWHERE
529- beta_perp_liq(:,k)= pnorm_perp_liq(:,k)/ EXP (- 2.0 * tautot_liq(:,k+1 ))
530- END WHERE
529+ WHERE ( EXP (- 2.0 * tautot_liq(:,k+1 )) .gt. epsreal )
530+ WHERE (tautot_lay_liq(:).GT. 0 .)
531+ beta_perp_liq(:,k) = pnorm_perp_liq(:,k)/ EXP (- 2.0 * tautot_liq(:,k+1 )) * (2 .* tautot_lay_liq(:)) &
532+ & / (1 .- exp (- 2.0 * tautot_lay_liq(:)))
533+ ELSEWHERE
534+ beta_perp_liq(:,k)= pnorm_perp_liq(:,k)/ EXP (- 2.0 * tautot_liq(:,k+1 ))
535+ END WHERE
536+ elsewhere
537+ beta_perp_liq(:,k)= pnorm_perp_liq(:,k)/ epsreal
538+ endwhere
531539 ENDDO
532540
533541
0 commit comments