3131! Mar 2018- R. Guzman - Added OPAQ diagnostics and GLID simulator
3232! Apr 2018- R. Guzman - Added ATLID simulator
3333! Nov 2018- T. Michibata - Added CloudSat+MODIS Warmrain Diagnostics
34+ ! Mar 2024- C. Wall - Added MODIS joint-histogram diagnostics
3435!
3536! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3637
@@ -45,6 +46,7 @@ MODULE MOD_COSP
4546 CFODD_NDBZE, CFODD_NICOD, &
4647 numMODISTauBins,numMODISPresBins, &
4748 numMODISReffIceBins,numMODISReffLiqBins, &
49+ numMODISLWPBins,numMODISIWPBins, &
4850 numISCCPTauBins,numISCCPPresBins,numMISRTauBins,&
4951 ntau,modis_histTau,tau_binBounds, &
5052 modis_histTauEdges,tau_binEdges,nCloudsatPrecipClass,&
@@ -290,6 +292,12 @@ MODULE MOD_COSP
290292 modis_Optical_Thickness_vs_ReffICE = > null (), & ! Tau/ReffICE joint histogram
291293 modis_Optical_Thickness_vs_ReffLIQ = > null () ! Tau/ReffLIQ joint histogram
292294
295+ real (wp),pointer ,dimension (:,:,:) :: &
296+ modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq = > null (), & ! Tau/Pressure Liq joint histogram
297+ modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice = > null (), & ! Tau/Pressure Ice joint histogram
298+ modis_LWP_vs_ReffLIQ = > null (), & ! LWP/ReffLIQ joint histogram
299+ modis_IWP_vs_ReffICE = > null () ! IWP/ReffICE joint histogram
300+
293301 ! RTTOV outputs
294302 real (wp),pointer :: &
295303 rttov_tbs(:,:) = > null () ! Brightness Temperature
@@ -379,6 +387,8 @@ function COSP_SIMULATOR(cospIN,cospgridIN,cospOUT,start_idx,stop_idx,debug)
379387 grLidar532_beta_mol,atlid_beta_mol
380388 REAL (WP), dimension (:,:,:),allocatable :: &
381389 modisJointHistogram,modisJointHistogramIce,modisJointHistogramLiq, &
390+ modisJointHistogram_CtpCodLiq,modisJointHistogram_CtpCodIce, &
391+ modisJointHistogram_LwpRefLiq,modisJointHistogram_IwpRefIce, &
382392 calipso_beta_tot,calipso_betaperp_tot, cloudsatDBZe,parasolPix_refl, &
383393 grLidar532_beta_tot,atlid_beta_tot,cloudsatZe_non
384394 real (wp),dimension (:),allocatable ,target :: &
@@ -1309,7 +1319,12 @@ function COSP_SIMULATOR(cospIN,cospgridIN,cospOUT,start_idx,stop_idx,debug)
13091319 modisMeanIceWaterPath(modisIN% nSunlit), &
13101320 modisJointHistogram(modisIN% nSunlit,numMODISTauBins,numMODISPresBins),&
13111321 modisJointHistogramIce(modisIN% nSunlit,numModisTauBins,numMODISReffIceBins),&
1312- modisJointHistogramLiq(modisIN% nSunlit,numModisTauBins,numMODISReffLiqBins))
1322+ modisJointHistogramLiq(modisIN% nSunlit,numModisTauBins,numMODISReffLiqBins),&
1323+ modisJointHistogram_CtpCodLiq(modisIN% nSunlit,numMODISTauBins,numMODISPresBins),&
1324+ modisJointHistogram_CtpCodIce(modisIN% nSunlit,numMODISTauBins,numMODISPresBins),&
1325+ modisJointHistogram_LwpRefLiq(modisIN% nSunlit,numMODISLWPBins,numMODISReffLiqBins), &
1326+ modisJointHistogram_IwpRefIce(modisIN% nSunlit,numMODISIWPBins,numMODISReffIceBins) &
1327+ )
13131328 ! Call simulator
13141329 call modis_column(modisIN% nSunlit, modisIN% Ncolumns,modisRetrievedPhase, &
13151330 modisRetrievedCloudTopPressure,modisRetrievedTau, &
@@ -1320,7 +1335,12 @@ function COSP_SIMULATOR(cospIN,cospgridIN,cospOUT,start_idx,stop_idx,debug)
13201335 modisMeanSizeLiquid, modisMeanSizeIce, &
13211336 modisMeanCloudTopPressure, modisMeanLiquidWaterPath, &
13221337 modisMeanIceWaterPath, modisJointHistogram, &
1323- modisJointHistogramIce,modisJointHistogramLiq)
1338+ modisJointHistogramIce,modisJointHistogramLiq, &
1339+ modisJointHistogram_CtpCodLiq, &
1340+ modisJointHistogram_CtpCodIce, &
1341+ modisJointHistogram_LwpRefLiq, &
1342+ modisJointHistogram_IwpRefIce &
1343+ )
13241344 ! Store data (if requested)
13251345 if (associated (cospOUT% modis_Cloud_Fraction_Total_Mean)) then
13261346 cospOUT% modis_Cloud_Fraction_Total_Mean(ij+ int (modisIN% sunlit(:))- 1 ) = &
@@ -1397,6 +1417,30 @@ function COSP_SIMULATOR(cospIN,cospgridIN,cospOUT,start_idx,stop_idx,debug)
13971417 cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure(ij:ik,:,:) = &
13981418 cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure(ij:ik,:,numMODISPresBins:1 :- 1 )
13991419 endif
1420+
1421+ if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq)) then
1422+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq(ij+ &
1423+ int (modisIN% sunlit(:))- 1 , 1 :numModisTauBins, :) = modisJointHistogram_CtpCodLiq(:, :, :)
1424+ ! Reorder pressure bins in joint histogram to go from surface to TOA
1425+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq(ij:ik,:,:) = &
1426+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq(ij:ik,:,numMODISPresBins:1 :- 1 )
1427+ endif
1428+ if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice)) then
1429+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice(ij+ &
1430+ int (modisIN% sunlit(:))- 1 , 1 :numModisTauBins, :) = modisJointHistogram_CtpCodIce(:, :, :)
1431+ ! Reorder pressure bins in joint histogram to go from surface to TOA
1432+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice(ij:ik,:,:) = &
1433+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice(ij:ik,:,numMODISPresBins:1 :- 1 )
1434+ endif
1435+ if (associated (cospOUT% modis_LWP_vs_ReffLIQ)) then
1436+ cospOUT% modis_LWP_vs_ReffLIQ(ij+ int (modisIN% sunlit(:))- 1 , 1 :numMODISLWPBins,:) = &
1437+ modisJointHistogram_LwpRefLiq(:,:,:)
1438+ endif
1439+ if (associated (cospOUT% modis_IWP_vs_ReffICE)) then
1440+ cospOUT% modis_IWP_vs_ReffICE(ij+ int (modisIN% sunlit(:))- 1 , 1 :numMODISIWPBins,:) = &
1441+ modisJointHistogram_IwpRefIce(:,:,:)
1442+ endif
1443+
14001444 if (associated (cospOUT% modis_Optical_Thickness_vs_ReffIce)) then
14011445 cospOUT% modis_Optical_Thickness_vs_ReffIce(ij+ int (modisIN% sunlit(:))- 1 , 1 :numMODISTauBins,:) = &
14021446 modisJointHistogramIce(:,:,:)
@@ -1507,6 +1551,10 @@ function COSP_SIMULATOR(cospIN,cospgridIN,cospOUT,start_idx,stop_idx,debug)
15071551 if (allocated (modisMeanLiquidWaterPath)) deallocate (modisMeanLiquidWaterPath)
15081552 if (allocated (modisMeanIceWaterPath)) deallocate (modisMeanIceWaterPath)
15091553 if (allocated (modisJointHistogram)) deallocate (modisJointHistogram)
1554+ if (allocated (modisJointHistogram_CtpCodLiq)) deallocate (modisJointHistogram_CtpCodLiq)
1555+ if (allocated (modisJointHistogram_CtpCodIce)) deallocate (modisJointHistogram_CtpCodIce)
1556+ if (allocated (modisJointHistogram_LwpRefLiq)) deallocate (modisJointHistogram_LwpRefLiq)
1557+ if (allocated (modisJointHistogram_IwpRefIce)) deallocate (modisJointHistogram_IwpRefIce)
15101558 if (allocated (modisJointHistogramIce)) deallocate (modisJointHistogramIce)
15111559 if (allocated (modisJointHistogramLiq)) deallocate (modisJointHistogramLiq)
15121560 if (allocated (isccp_boxttop)) deallocate (isccp_boxttop)
@@ -2431,6 +2479,14 @@ subroutine cosp_errorCheck(cospgridIN, cospIN, Lisccp_subcolumn, Lisccp_column,
24312479 cospOUT% modis_Ice_Water_Path_Mean(:) = R_UNDEF
24322480 if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure)) &
24332481 cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure(:,:,:) = R_UNDEF
2482+ if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq)) &
2483+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq(:,:,:) = R_UNDEF
2484+ if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice)) &
2485+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice(:,:,:) = R_UNDEF
2486+ if (associated (cospOUT% modis_LWP_vs_ReffLIQ)) &
2487+ cospOUT% modis_LWP_vs_ReffLIQ(:,:,:) = R_UNDEF
2488+ if (associated (cospOUT% modis_IWP_vs_ReffICE)) &
2489+ cospOUT% modis_IWP_vs_ReffICE(:,:,:) = R_UNDEF
24342490 if (associated (cospOUT% modis_Optical_Thickness_vs_ReffICE)) &
24352491 cospOUT% modis_Optical_Thickness_vs_ReffICE(:,:,:) = R_UNDEF
24362492 if (associated (cospOUT% modis_Optical_Thickness_vs_ReffLIQ)) &
@@ -2630,6 +2686,14 @@ subroutine cosp_errorCheck(cospgridIN, cospIN, Lisccp_subcolumn, Lisccp_column,
26302686 cospOUT% modis_Ice_Water_Path_Mean(:) = R_UNDEF
26312687 if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure)) &
26322688 cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure(:,:,:) = R_UNDEF
2689+ if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq)) &
2690+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq(:,:,:) = R_UNDEF
2691+ if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice)) &
2692+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice(:,:,:) = R_UNDEF
2693+ if (associated (cospOUT% modis_LWP_vs_ReffLIQ)) &
2694+ cospOUT% modis_LWP_vs_ReffLIQ(:,:,:) = R_UNDEF
2695+ if (associated (cospOUT% modis_IWP_vs_ReffICE)) &
2696+ cospOUT% modis_IWP_vs_ReffICE(:,:,:) = R_UNDEF
26332697 if (associated (cospOUT% modis_Optical_Thickness_vs_ReffICE)) &
26342698 cospOUT% modis_Optical_Thickness_vs_ReffICE(:,:,:) = R_UNDEF
26352699 if (associated (cospOUT% modis_Optical_Thickness_vs_ReffLIQ)) &
@@ -2770,6 +2834,14 @@ subroutine cosp_errorCheck(cospgridIN, cospIN, Lisccp_subcolumn, Lisccp_column,
27702834 cospOUT% modis_Ice_Water_Path_Mean(:) = R_UNDEF
27712835 if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure)) &
27722836 cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure(:,:,:) = R_UNDEF
2837+ if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq)) &
2838+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq(:,:,:) = R_UNDEF
2839+ if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice)) &
2840+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice(:,:,:) = R_UNDEF
2841+ if (associated (cospOUT% modis_LWP_vs_ReffLIQ)) &
2842+ cospOUT% modis_LWP_vs_ReffLIQ(:,:,:) = R_UNDEF
2843+ if (associated (cospOUT% modis_IWP_vs_ReffICE)) &
2844+ cospOUT% modis_IWP_vs_ReffICE(:,:,:) = R_UNDEF
27732845 if (associated (cospOUT% modis_Optical_Thickness_vs_ReffICE)) &
27742846 cospOUT% modis_Optical_Thickness_vs_ReffICE(:,:,:) = R_UNDEF
27752847 if (associated (cospOUT% modis_Optical_Thickness_vs_ReffLIQ)) &
@@ -3090,6 +3162,14 @@ subroutine cosp_errorCheck(cospgridIN, cospIN, Lisccp_subcolumn, Lisccp_column,
30903162 cospOUT% modis_Ice_Water_Path_Mean(:) = R_UNDEF
30913163 if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure)) &
30923164 cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure(:,:,:) = R_UNDEF
3165+ if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq)) &
3166+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq(:,:,:) = R_UNDEF
3167+ if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice)) &
3168+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice(:,:,:) = R_UNDEF
3169+ if (associated (cospOUT% modis_LWP_vs_ReffLIQ)) &
3170+ cospOUT% modis_LWP_vs_ReffLIQ(:,:,:) = R_UNDEF
3171+ if (associated (cospOUT% modis_IWP_vs_ReffICE)) &
3172+ cospOUT% modis_IWP_vs_ReffICE(:,:,:) = R_UNDEF
30933173 if (associated (cospOUT% modis_Optical_Thickness_vs_ReffICE)) &
30943174 cospOUT% modis_Optical_Thickness_vs_ReffICE(:,:,:) = R_UNDEF
30953175 if (associated (cospOUT% modis_Optical_Thickness_vs_ReffLIQ)) &
@@ -3155,6 +3235,14 @@ subroutine cosp_errorCheck(cospgridIN, cospIN, Lisccp_subcolumn, Lisccp_column,
31553235 cospOUT% modis_Ice_Water_Path_Mean(:) = R_UNDEF
31563236 if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure)) &
31573237 cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure(:,:,:) = R_UNDEF
3238+ if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq)) &
3239+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq(:,:,:) = R_UNDEF
3240+ if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice)) &
3241+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice(:,:,:) = R_UNDEF
3242+ if (associated (cospOUT% modis_LWP_vs_ReffLIQ)) &
3243+ cospOUT% modis_LWP_vs_ReffLIQ(:,:,:) = R_UNDEF
3244+ if (associated (cospOUT% modis_IWP_vs_ReffICE)) &
3245+ cospOUT% modis_IWP_vs_ReffICE(:,:,:) = R_UNDEF
31583246 if (associated (cospOUT% modis_Optical_Thickness_vs_ReffICE)) &
31593247 cospOUT% modis_Optical_Thickness_vs_ReffICE(:,:,:) = R_UNDEF
31603248 if (associated (cospOUT% modis_Optical_Thickness_vs_ReffLIQ)) &
@@ -3201,6 +3289,14 @@ subroutine cosp_errorCheck(cospgridIN, cospIN, Lisccp_subcolumn, Lisccp_column,
32013289 cospOUT% modis_Ice_Water_Path_Mean(:) = R_UNDEF
32023290 if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure)) &
32033291 cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure(:,:,:) = R_UNDEF
3292+ if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq)) &
3293+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Liq(:,:,:) = R_UNDEF
3294+ if (associated (cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice)) &
3295+ cospOUT% modis_Optical_Thickness_vs_Cloud_Top_Pressure_Ice(:,:,:) = R_UNDEF
3296+ if (associated (cospOUT% modis_LWP_vs_ReffLIQ)) &
3297+ cospOUT% modis_LWP_vs_ReffLIQ(:,:,:) = R_UNDEF
3298+ if (associated (cospOUT% modis_IWP_vs_ReffICE)) &
3299+ cospOUT% modis_IWP_vs_ReffICE(:,:,:) = R_UNDEF
32043300 if (associated (cospOUT% modis_Optical_Thickness_vs_ReffICE)) &
32053301 cospOUT% modis_Optical_Thickness_vs_ReffICE(:,:,:) = R_UNDEF
32063302 if (associated (cospOUT% modis_Optical_Thickness_vs_ReffLIQ)) &
0 commit comments