Ignore:
Timestamp:
Mar 6, 2018, 10:46:13 AM (6 years ago)
Author:
idelkadi
Message:
  • Corrections pour tourner en mode debug, controle par la cles ok_debug_cosp dans mod_cosp_constants.F90 la valeur par defaut etant .false.
  • Rajouter "implicit none" pour les routines ne le comportant pas
  • Nettoyage du code (suppression des commentaires unitils)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/cosp/mod_modis_sim.F90

    r3233 r3241  
    5252!
    5353module mod_modis_sim
    54   USE MOD_COSP_TYPES, only: R_UNDEF
     54  USE MOD_COSP_TYPES, only: R_UNDEF, ok_debug_cosp
    5555  implicit none
    5656  ! ------------------------------
     
    384384           liquid_opticalThickness, ice_opticalThickness, tauLiquidFraction
    385385   
     386    real :: seuil
    386387    ! ---------------------------------------------------
    387388   
     389    if (ok_debug_cosp) then
     390       seuil=1.e-9
     391    else
     392       seuil=0.0
     393    endif
     394
    388395    where(cloudIce(:, :) <= 0.)
    389396      tauLiquidFraction(:, :) = 1.
     
    395402        ! Geometic optics limit - tau as LWP/re  (proportional to LWC/re)
    396403        !
    397         tauLiquidFraction(:, :) = (cloudWater(:, :)/waterSize(:, :)) / &
    398                                   (cloudWater(:, :)/waterSize(:, :) + cloudIce(:, :)/(ice_density * iceSize(:, :)) )
     404! Modif AI 02 2018
     405        tauLiquidFraction(:, :) = (cloudWater(:, :)/max(waterSize(:, :), seuil) ) / &
     406                                  (cloudWater(:, :)/max(waterSize(:, :), seuil) + &
     407                                   cloudIce(:, :)/(ice_density * max(iceSize(:, :), seuil)) )
    399408      end where
    400409    end where
     
    502511    ! Compute mean optical thickness.
    503512    ! ########################################################################################
    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        
     513    where (Cloud_Fraction_Total_Mean == 0)
     514       Optical_Thickness_Total_Mean      = R_UNDEF
     515    elsewhere
     516       Optical_Thickness_Total_Mean(1:nPoints) = sum(optical_thickness, mask = cloudMask,      dim = 2) / &
     517                                                 Cloud_Fraction_Total_Mean(1:nPoints)
     518    endwhere
     519    where (Cloud_Fraction_Water_Mean == 0)
     520       Optical_Thickness_Water_Mean      = R_UNDEF
     521    elsewhere
     522       Optical_Thickness_Water_Mean(1:nPoints) = sum(optical_thickness, mask = waterCloudMask, dim = 2) / &
     523                                                 Cloud_Fraction_Water_Mean(1:nPoints)
     524    endwhere
     525    where (Cloud_Fraction_Ice_Mean == 0)
     526       Optical_Thickness_Ice_Mean        = R_UNDEF
     527    elsewhere
     528       Optical_Thickness_Ice_Mean(1:nPoints)   = sum(optical_thickness, mask = iceCloudMask,   dim = 2) / &
     529                                                 Cloud_Fraction_Ice_Mean(1:nPoints)
     530    endwhere
     531   
    511532    ! ########################################################################################
    512533    ! We take the absolute value of optical thickness here to satisfy compilers that complains
     
    514535    ! the sum.
    515536    ! ########################################################################################
    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)
    532 
     537    where (Cloud_Fraction_Total_Mean == 0)
     538       Optical_Thickness_Total_MeanLog10 = R_UNDEF
     539    elsewhere
     540       Optical_Thickness_Total_MeanLog10(1:nPoints) = sum(log10(abs(optical_thickness)), mask = cloudMask, &
     541           dim = 2) / Cloud_Fraction_Total_Mean(1:nPoints)
     542    endwhere
     543    where (Cloud_Fraction_Water_Mean == 0)
     544       Optical_Thickness_Water_MeanLog10 = R_UNDEF
     545    elsewhere
     546       Optical_Thickness_Water_MeanLog10(1:nPoints) = sum(log10(abs(optical_thickness)), mask = waterCloudMask,&
     547            dim = 2) / Cloud_Fraction_Water_Mean(1:nPoints)
     548    endwhere
     549    where (Cloud_Fraction_Ice_Mean == 0)
     550       Optical_Thickness_Ice_MeanLog10   = R_UNDEF
     551    elsewhere
     552       Optical_Thickness_Ice_MeanLog10(1:nPoints) = sum(log10(abs(optical_thickness)), mask = iceCloudMask,&
     553            dim = 2) / Cloud_Fraction_Ice_Mean(1:nPoints)
     554    endwhere
     555    where (Cloud_Fraction_Water_Mean == 0)
     556       Cloud_Particle_Size_Water_Mean    = R_UNDEF
     557    elsewhere
     558       Cloud_Particle_Size_Water_Mean(1:nPoints) = sum(particle_size, mask = waterCloudMask, dim = 2) / &
     559            Cloud_Fraction_Water_Mean(1:nPoints)
     560    endwhere
     561    where (Cloud_Fraction_Ice_Mean == 0)
     562       Cloud_Particle_Size_Ice_Mean      = R_UNDEF 
     563    elsewhere
     564       Cloud_Particle_Size_Ice_Mean(1:nPoints) = sum(particle_size, mask = iceCloudMask,   dim = 2) / &
     565            Cloud_Fraction_Ice_Mean(1:nPoints)
     566    endwhere
     567    where (Cloud_Fraction_Total_Mean == 0)
     568       Cloud_Top_Pressure_Total_Mean     = R_UNDEF
     569    elsewhere
     570       Cloud_Top_Pressure_Total_Mean(1:nPoints) = sum(cloud_top_pressure, mask = cloudMask, dim = 2) / &
     571            max(1, count(cloudMask, dim = 2))
     572    endwhere
     573    where (Cloud_Fraction_Water_Mean == 0)
     574       Liquid_Water_Path_Mean            = R_UNDEF
     575    elsewhere
     576       Liquid_Water_Path_Mean(1:nPoints) = LWP_conversion*sum(particle_size*optical_thickness, &
     577            mask=waterCloudMask,dim=2)/Cloud_Fraction_Water_Mean(1:nPoints)
     578    endwhere
     579    where (Cloud_Fraction_Ice_Mean == 0)
     580       Ice_Water_Path_Mean               = R_UNDEF
     581    elsewhere
     582       Ice_Water_Path_Mean(1:nPoints) = LWP_conversion * ice_density*sum(particle_size*optical_thickness,&
     583             mask=iceCloudMask,dim = 2) /Cloud_Fraction_Ice_Mean(1:nPoints)
     584    endwhere
    533585    ! ########################################################################################
    534586    ! Normalize pixel counts to fraction.
     
    544596    ! Set clear-scenes to undefined
    545597    ! ########################################################################################
    546     where (Cloud_Fraction_Total_Mean == 0)
    547        Optical_Thickness_Total_Mean      = R_UNDEF
    548        Optical_Thickness_Total_MeanLog10 = R_UNDEF
    549        Cloud_Top_Pressure_Total_Mean     = R_UNDEF
    550     endwhere
    551     where (Cloud_Fraction_Water_Mean == 0)
    552        Optical_Thickness_Water_Mean      = R_UNDEF
    553        Optical_Thickness_Water_MeanLog10 = R_UNDEF
    554        Cloud_Particle_Size_Water_Mean    = R_UNDEF
    555        Liquid_Water_Path_Mean            = R_UNDEF
    556     endwhere
    557     where (Cloud_Fraction_Ice_Mean == 0)
    558        Optical_Thickness_Ice_Mean        = R_UNDEF
    559        Optical_Thickness_Ice_MeanLog10   = R_UNDEF
    560        Cloud_Particle_Size_Ice_Mean      = R_UNDEF
    561        Ice_Water_Path_Mean               = R_UNDEF
    562     endwhere
    563598    where (Cloud_Fraction_High_Mean == 0)  Cloud_Fraction_High_Mean = R_UNDEF
    564599    where (Cloud_Fraction_Mid_Mean == 0)   Cloud_Fraction_Mid_Mean = R_UNDEF
Note: See TracChangeset for help on using the changeset viewer.