Skip to content

Commit 1b34839

Browse files
Alejandro Bodas-SalcedoAlejandro Bodas-Salcedo
authored andcommitted
Partial implementation of ICE-RF optics.
1 parent faf1773 commit 1b34839

File tree

1 file changed

+54
-18
lines changed

1 file changed

+54
-18
lines changed

subsample_and_optics_example/optics/cosp_optics.F90

Lines changed: 54 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,9 @@ subroutine lidar_optics(npoints, ncolumns, nlev, npart, ice_type, lidar_freq, lg
291291
polpartLSICE0 = (/-1.0176e-8_wp, 1.7615e-6_wp, -1.0480e-4_wp, 0.0019_wp, 0.0460_wp/), &
292292
polpartCVICE1 = (/ 1.3615e-8_wp, -2.04206e-6_wp, 7.51799e-5_wp, 0.00078213_wp, 0.0182131_wp/), &
293293
polpartLSICE1 = (/ 1.3615e-8_wp, -2.04206e-6_wp, 7.51799e-5_wp, 0.00078213_wp, 0.0182131_wp/)
294+
! ICE-RF parameterization
295+
REAL(WP),PARAMETER,dimension(6) :: &
296+
a_plates = (/ 2.068242e-7_wp, -1.028329e+6_wp, 3.402644e+4_wp, 2.548990e+4_wp, -2.334362e+3_wp, 88.1488/)
294297
! ##############################################################################
295298

296299
! Which LIDAR frequency are we using?
@@ -343,8 +346,6 @@ subroutine lidar_optics(npoints, ncolumns, nlev, npart, ice_type, lidar_freq, lg
343346
polpart(INDX_LSICE,1:5) = polpartLSICE1
344347
polpart(INDX_CVICE,1:5) = polpartCVICE1
345348
endif
346-
if (ice_type .eq. 2) then
347-
endif
348349

349350
! Effective radius particles:
350351
rad_part(1:npoints,1:nlev,INDX_LSLIQ) = ls_radliq(1:npoints,1:nlev)
@@ -394,24 +395,59 @@ subroutine lidar_optics(npoints, ncolumns, nlev, npart, ice_type, lidar_freq, lg
394395
! ##############################################################################
395396
! *) Particles alpha, beta and optical thickness
396397
! ##############################################################################
397-
! Polynomials kp_lidar derived from Mie theory
398-
do i = 1, npart
399-
do j = 1, nlev
400-
do k = 1, npoints
401-
if (rad_part(k,j,i) .gt. 0._wp) then
402-
x = rad_part(k,j,i)*1.0e6_wp
403-
kp_part(k,j,i) = &
404-
polpart(i,1)*x**4 &
405-
+ polpart(i,2)*x**3 &
406-
+ polpart(i,3)*x**2 &
407-
+ polpart(i,4)*x &
408-
+ polpart(i,5)
409-
else
410-
kp_part(k,j,i) = 0._wp
411-
endif
398+
if (ice_type .eq. 2) then
399+
! Polynomials kp_lidar derived from Mie theory
400+
do i = 1, 3, 2
401+
do j = 1, nlev
402+
do k = 1, npoints
403+
if (rad_part(k,j,i) .gt. 0._wp) then
404+
x = rad_part(k,j,i)*1.0e6_wp
405+
kp_part(k,j,i) = &
406+
polpart(i,1)*x**4 &
407+
+ polpart(i,2)*x**3 &
408+
+ polpart(i,3)*x**2 &
409+
+ polpart(i,4)*x &
410+
+ polpart(i,5)
411+
else
412+
kp_part(k,j,i) = 0._wp
413+
endif
414+
enddo
415+
enddo
416+
enddo
417+
! Ice hydrometeors with Baran's parameterization
418+
do i = 2, 4, 2
419+
do j = 1, nlev
420+
do k = 1, npoints
421+
if (rad_part(k,j,i) .gt. 0._wp) then
422+
x = rad_part(k,j,i)*1.0e6_wp
423+
kp_part(k,j,i) = (a_plates(1) + a_plates(2)*x + a_plates(3)*x**2) / &
424+
(1._wp + a_plates(4)*x + a_plates(5)*x**2 + a_plates(6)*x**3)
425+
else
426+
kp_part(k,j,i) = 0._wp
427+
endif
428+
enddo
429+
enddo
430+
enddo
431+
else
432+
! Polynomials kp_lidar derived from Mie theory
433+
do i = 1, npart
434+
do j = 1, nlev
435+
do k = 1, npoints
436+
if (rad_part(k,j,i) .gt. 0._wp) then
437+
x = rad_part(k,j,i)*1.0e6_wp
438+
kp_part(k,j,i) = &
439+
polpart(i,1)*x**4 &
440+
+ polpart(i,2)*x**3 &
441+
+ polpart(i,3)*x**2 &
442+
+ polpart(i,4)*x &
443+
+ polpart(i,5)
444+
else
445+
kp_part(k,j,i) = 0._wp
446+
endif
447+
enddo
412448
enddo
413449
enddo
414-
enddo
450+
endif
415451

416452
! Initialize (if necessary)
417453
if (lparasol) then

0 commit comments

Comments
 (0)