Skip to content

Commit df36cf6

Browse files
committed
Implemented fixes for bugs.
1 parent 7fc6532 commit df36cf6

File tree

1 file changed

+42
-32
lines changed

1 file changed

+42
-32
lines changed

MODIS_simulator/modis_simulator.F90

Lines changed: 42 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -501,34 +501,47 @@ subroutine modis_column(nPoints,nSubCols,phase, cloud_top_pressure, optical_thic
501501
! ########################################################################################
502502
! Compute mean optical thickness.
503503
! ########################################################################################
504-
Optical_Thickness_Total_Mean(1:nPoints) = sum(optical_thickness, mask = cloudMask, dim = 2) / &
505-
Cloud_Fraction_Total_Mean(1:nPoints)
506-
Optical_Thickness_Water_Mean(1:nPoints) = sum(optical_thickness, mask = waterCloudMask, dim = 2) / &
507-
Cloud_Fraction_Water_Mean(1:nPoints)
508-
Optical_Thickness_Ice_Mean(1:nPoints) = sum(optical_thickness, mask = iceCloudMask, dim = 2) / &
509-
Cloud_Fraction_Ice_Mean(1:nPoints)
510-
511-
! ########################################################################################
512-
! We take the absolute value of optical thickness here to satisfy compilers that complains
513-
! when we evaluate the logarithm of a negative number, even though it's not included in
514-
! the sum.
515-
! ########################################################################################
516-
Optical_Thickness_Total_MeanLog10(1:nPoints) = sum(log10(abs(optical_thickness)), mask = cloudMask, &
517-
dim = 2) / Cloud_Fraction_Total_Mean(1:nPoints)
518-
Optical_Thickness_Water_MeanLog10(1:nPoints) = sum(log10(abs(optical_thickness)), mask = waterCloudMask,&
519-
dim = 2) / Cloud_Fraction_Water_Mean(1:nPoints)
520-
Optical_Thickness_Ice_MeanLog10(1:nPoints) = sum(log10(abs(optical_thickness)), mask = iceCloudMask,&
521-
dim = 2) / Cloud_Fraction_Ice_Mean(1:nPoints)
522-
Cloud_Particle_Size_Water_Mean(1:nPoints) = sum(particle_size, mask = waterCloudMask, dim = 2) / &
523-
Cloud_Fraction_Water_Mean(1:nPoints)
524-
Cloud_Particle_Size_Ice_Mean(1:nPoints) = sum(particle_size, mask = iceCloudMask, dim = 2) / &
525-
Cloud_Fraction_Ice_Mean(1:nPoints)
526-
Cloud_Top_Pressure_Total_Mean(1:nPoints) = sum(cloud_top_pressure, mask = cloudMask, dim = 2) / &
527-
max(1, count(cloudMask, dim = 2))
528-
Liquid_Water_Path_Mean(1:nPoints) = LWP_conversion*sum(particle_size*optical_thickness, &
529-
mask=waterCloudMask,dim=2)/Cloud_Fraction_Water_Mean(1:nPoints)
530-
Ice_Water_Path_Mean(1:nPoints) = LWP_conversion * ice_density*sum(particle_size*optical_thickness,&
531-
mask=iceCloudMask,dim = 2) /Cloud_Fraction_Ice_Mean(1:nPoints)
504+
where(Cloud_Fraction_Total_Mean(1:nPoints) > 0)
505+
Optical_Thickness_Total_Mean(1:nPoints) = sum(optical_thickness, mask = cloudMask, dim = 2) / &
506+
Cloud_Fraction_Total_Mean(1:nPoints)
507+
Optical_Thickness_Total_MeanLog10(1:nPoints) = sum(log10(abs(optical_thickness)), mask = cloudMask, &
508+
dim = 2) / Cloud_Fraction_Total_Mean(1:nPoints)
509+
elsewhere
510+
Optical_Thickness_Total_Mean = 0.
511+
Optical_Thickness_Total_MeanLog10 = 0.
512+
endwhere
513+
where(Cloud_Fraction_Water_Mean(1:nPoints) > 0)
514+
Optical_Thickness_Water_Mean(1:nPoints) = sum(optical_thickness, mask = waterCloudMask, dim = 2) / &
515+
Cloud_Fraction_Water_Mean(1:nPoints)
516+
Liquid_Water_Path_Mean(1:nPoints) = LWP_conversion*sum(particle_size*optical_thickness, &
517+
mask=waterCloudMask,dim=2)/Cloud_Fraction_Water_Mean(1:nPoints)
518+
Optical_Thickness_Water_MeanLog10(1:nPoints) = sum(log10(abs(optical_thickness)), mask = waterCloudMask,&
519+
dim = 2) / Cloud_Fraction_Water_Mean(1:nPoints)
520+
Cloud_Particle_Size_Water_Mean(1:nPoints) = sum(particle_size, mask = waterCloudMask, dim = 2) / &
521+
Cloud_Fraction_Water_Mean(1:nPoints)
522+
elsewhere
523+
Optical_Thickness_Water_Mean = 0.
524+
Optical_Thickness_Water_MeanLog10 = 0.
525+
Cloud_Particle_Size_Water_Mean = 0.
526+
Liquid_Water_Path_Mean = 0.
527+
endwhere
528+
where(Cloud_Fraction_Ice_Mean(1:nPoints) > 0)
529+
Optical_Thickness_Ice_Mean(1:nPoints) = sum(optical_thickness, mask = iceCloudMask, dim = 2) / &
530+
Cloud_Fraction_Ice_Mean(1:nPoints)
531+
Ice_Water_Path_Mean(1:nPoints) = LWP_conversion * ice_density*sum(particle_size*optical_thickness,&
532+
mask=iceCloudMask,dim = 2) /Cloud_Fraction_Ice_Mean(1:nPoints)
533+
Optical_Thickness_Ice_MeanLog10(1:nPoints) = sum(log10(abs(optical_thickness)), mask = iceCloudMask,&
534+
dim = 2) / Cloud_Fraction_Ice_Mean(1:nPoints)
535+
Cloud_Particle_Size_Ice_Mean(1:nPoints) = sum(particle_size, mask = iceCloudMask, dim = 2) / &
536+
Cloud_Fraction_Ice_Mean(1:nPoints)
537+
elsewhere
538+
Optical_Thickness_Ice_Mean = 0.
539+
Optical_Thickness_Ice_MeanLog10 = 0.
540+
Cloud_Particle_Size_Ice_Mean = 0.
541+
Ice_Water_Path_Mean = 0.
542+
endwhere
543+
Cloud_Top_Pressure_Total_Mean = sum(cloud_top_pressure, mask = cloudMask, dim = 2) / &
544+
max(1, count(cloudMask, dim = 2))
532545

533546
! ########################################################################################
534547
! Normalize pixel counts to fraction.
@@ -560,10 +573,7 @@ subroutine modis_column(nPoints,nSubCols,phase, cloud_top_pressure, optical_thic
560573
Cloud_Particle_Size_Ice_Mean = R_UNDEF
561574
Ice_Water_Path_Mean = R_UNDEF
562575
endwhere
563-
where (Cloud_Fraction_High_Mean == 0) Cloud_Fraction_High_Mean = R_UNDEF
564-
where (Cloud_Fraction_Mid_Mean == 0) Cloud_Fraction_Mid_Mean = R_UNDEF
565-
where (Cloud_Fraction_Low_Mean == 0) Cloud_Fraction_Low_Mean = R_UNDEF
566-
576+
567577
! ########################################################################################
568578
! Joint histogram
569579
! ########################################################################################

0 commit comments

Comments
 (0)