mod_modis_sim Module


Uses

  • module~~mod_modis_sim~3~~UsesGraph module~mod_modis_sim~3 mod_modis_sim module~mod_cosp_types~2 MOD_COSP_TYPES module~mod_modis_sim~3->module~mod_cosp_types~2 module~mod_cosp_utils MOD_COSP_UTILS module~mod_cosp_types~2->module~mod_cosp_utils module~radar_simulator_types radar_simulator_types module~mod_cosp_types~2->module~radar_simulator_types module~mod_cosp_constants~2 MOD_COSP_CONSTANTS module~mod_cosp_types~2->module~mod_cosp_constants~2 module~mod_cosp_utils->module~mod_cosp_constants~2

Contents


Variables

Type Visibility Attributes Name Initial
real, public, parameter :: ice_density = 0.93
real, public, parameter :: min_OpticalThickness = 0.3
real, public, parameter :: CO2Slicing_PressureLimit = 700.*100.
real, public, parameter :: CO2Slicing_TauLimit = 1.
real, public, parameter :: phase_TauLimit = 1.
real, public, parameter :: size_TauLimit = 2.
real, public, parameter :: phaseDiscrimination_Threshold = 0.7
real, public, parameter :: re_fill = -999.
integer, public, parameter :: phaseIsNone = 0
integer, public, parameter :: phaseIsLiquid = 1
integer, public, parameter :: phaseIsIce = 2
integer, public, parameter :: phaseIsUndetermined = 3
logical, public, parameter :: useSimpleReScheme = .false.
real, public, parameter :: re_water_min = 4.
real, public, parameter :: re_water_max = 30.
real, public, parameter :: re_ice_min = 5.
real, public, parameter :: re_ice_max = 90.
integer, public, parameter :: num_trial_res = 15
real, public, parameter, dimension(num_trial_res) :: trial_re_w = re_water_min+(re_water_max-re_water_min)/(num_trial_res-1)*(/(i-1, i=1, num_trial_res)/)
real, public, parameter, dimension(num_trial_res) :: trial_re_i = re_ice_min+(re_ice_max-re_ice_min)/(num_trial_res-1)*(/(i-1, i=1, num_trial_res)/)
real, public, dimension(num_trial_res) :: g_w
real, public, dimension(num_trial_res) :: g_i
real, public, dimension(num_trial_res) :: w0_w
real, public, dimension(num_trial_res) :: w0_i
integer, public, parameter :: numTauHistogramBins = 6
integer, public, parameter :: numPressureHistogramBins = 7
real, public, parameter, dimension(numTauHistogramBins + 1) :: tauHistogramBoundaries = (/min_OpticalThickness, 1.3, 3.6, 9.4, 23., 60., 10000./)
real, public, parameter, dimension(numPressureHistogramBins + 1) :: pressureHistogramBoundaries = (/0., 18000., 31000., 44000., 56000., 68000., 80000., 1000000./)
real, public, parameter :: highCloudPressureLimit = 440.*100.
real, public, parameter :: lowCloudPressureLimit = 680.*100.
real, public, parameter, dimension(2, numTauHistogramBins) :: nominalTauHistogramBoundaries = reshape(source=(/tauHistogramBoundaries(1), ((tauHistogramBoundaries(k), l=1, 2), k=2, numTauHistogramBins), 100000./), shape=(/2, numTauHistogramBins/))
real, public, parameter, dimension(numTauHistogramBins) :: nominalTauHistogramCenters = (nominalTauHistogramBoundaries(1, :)+nominalTauHistogramBoundaries(2, :))/2.
real, public, parameter, dimension(2, numPressureHistogramBins) :: nominalPressureHistogramBoundaries = reshape(source=(/100000., ((pressureHistogramBoundaries(k), l=1, 2), k=numPressureHistogramBins, 2, -1), 0./), shape=(/2, numPressureHistogramBins/))
real, public, parameter, dimension(numPressureHistogramBins) :: nominalPressureHistogramCenters = (nominalPressureHistogramBoundaries(1, :)+nominalPressureHistogramBoundaries(2, :))/2.
integer, public :: j
integer, public, parameter :: numMODISReffLiqBins = 6
integer, public, parameter :: numMODISReffIceBins = 6
real, public, parameter, dimension(numMODISReffLiqBins+1) :: reffLIQ_binBounds = (/0., 8e-6, 1.0e-5, 1.3e-5, 1.5e-5, 2.0e-5, 3.0e-5/)
real, public, parameter, dimension(numMODISReffIceBins+1) :: reffICE_binBounds = (/0., 1.0e-5, 2.0e-5, 3.0e-5, 4.0e-5, 6.0e-5, 9.0e-5/)
real, public, parameter, dimension(2,numMODISReffIceBins) :: reffICE_binEdges = reshape(source=(/reffICE_binBounds(1), ((reffICE_binBounds(k), l=1, 2), k=2, numMODISReffIceBins), reffICE_binBounds(numMODISReffIceBins+1)/), shape=(/2, numMODISReffIceBins/))
real, public, parameter, dimension(2,numMODISReffLiqBins) :: reffLIQ_binEdges = reshape(source=(/reffLIQ_binBounds(1), ((reffLIQ_binBounds(k), l=1, 2), k=2, numMODISReffLiqBins), reffLIQ_binBounds(numMODISReffIceBins+1)/), shape=(/2, numMODISReffLiqBins/))
real, public, parameter, dimension(numMODISReffIceBins) :: reffICE_binCenters = (reffICE_binEdges(1, :)+reffICE_binEdges(2, :))/2.
real, public, parameter, dimension(numMODISReffLiqBins) :: reffLIQ_binCenters = (reffLIQ_binEdges(1, :)+reffLIQ_binEdges(2, :))/2.

Interfaces

public interface modis_L2_simulator

  • public subroutine modis_L2_simulator_oneTau(temp, pressureLayers, pressureLevels, opticalThickness, cloudWater, cloudIce, waterSize, iceSize, isccpTau, isccpCloudTopPressure, retrievedPhase, retrievedCloudTopPressure, retrievedTau, retrievedSize)

    Arguments

    Type IntentOptional Attributes Name
    real, intent(in), dimension(:) :: temp
    real, intent(in), dimension(:) :: pressureLayers
    real, intent(in), dimension(:) :: pressureLevels
    real, intent(in), dimension(:, :) :: opticalThickness
    real, intent(in), dimension(:, :) :: cloudWater
    real, intent(in), dimension(:, :) :: cloudIce
    real, intent(in), dimension(:, :) :: waterSize
    real, intent(in), dimension(:, :) :: iceSize
    real, intent(in), dimension(:) :: isccpTau
    real, intent(in), dimension(:) :: isccpCloudTopPressure
    integer, intent(out), dimension(:) :: retrievedPhase
    real, intent(out), dimension(:) :: retrievedCloudTopPressure
    real, intent(out), dimension(:) :: retrievedTau
    real, intent(out), dimension(:) :: retrievedSize
  • public subroutine modis_L2_simulator_twoTaus(temp, pressureLayers, pressureLevels, liquid_opticalThickness, ice_opticalThickness, waterSize, iceSize, isccpTau, isccpCloudTopPressure, retrievedPhase, retrievedCloudTopPressure, retrievedTau, retrievedSize)

    Arguments

    Type IntentOptional Attributes Name
    real, intent(in), dimension(:) :: temp
    real, intent(in), dimension(:) :: pressureLayers
    real, intent(in), dimension(:) :: pressureLevels
    real, intent(in), dimension(:, :) :: liquid_opticalThickness
    real, intent(in), dimension(:, :) :: ice_opticalThickness
    real, intent(in), dimension(:, :) :: waterSize
    real, intent(in), dimension(:, :) :: iceSize
    real, intent(in), dimension(:) :: isccpTau
    real, intent(in), dimension(:) :: isccpCloudTopPressure
    integer, intent(out), dimension(:) :: retrievedPhase
    real, intent(out), dimension(:) :: retrievedCloudTopPressure
    real, intent(out), dimension(:) :: retrievedTau
    real, intent(out), dimension(:) :: retrievedSize

Functions

public function cloud_top_pressure(tauIncrement, pressure, tauLimit)

Arguments

Type IntentOptional Attributes Name
real, intent(in), dimension(:) :: tauIncrement
real, intent(in), dimension(:) :: pressure
real, intent(in) :: tauLimit

Return Value real

public function weight_by_extinction(tauIncrement, f, tauLimit)

Arguments

Type IntentOptional Attributes Name
real, intent(in), dimension(:) :: tauIncrement
real, intent(in), dimension(:) :: f
real, intent(in) :: tauLimit

Return Value real

publicpure function compute_nir_reflectance(water_tau, water_size, ice_tau, ice_size)

Arguments

Type IntentOptional Attributes Name
real, intent(in), dimension(:) :: water_tau
real, intent(in), dimension(:) :: water_size
real, intent(in), dimension(:) :: ice_tau
real, intent(in), dimension(:) :: ice_size

Return Value real

publicelemental function retrieve_re(phase, tau, obs_Refl_nir)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: phase
real, intent(in) :: tau
real, intent(in) :: obs_Refl_nir

Return Value real

publicpure function interpolate_to_min(x, y, yobs)

Arguments

Type IntentOptional Attributes Name
real, intent(in), dimension(:) :: x
real, intent(in), dimension(:) :: y
real, intent(in) :: yobs

Return Value real

publicelemental function get_g_nir(phase, re)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: phase
real, intent(in) :: re

Return Value real

publicelemental function get_ssa_nir(phase, re)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: phase
real, intent(in) :: re

Return Value real

publicpure function fit_to_cubic(x, coefficients)

Arguments

Type IntentOptional Attributes Name
real, intent(in) :: x
real, intent(in), dimension(:) :: coefficients

Return Value real

publicpure function fit_to_quadratic(x, coefficients)

Arguments

Type IntentOptional Attributes Name
real, intent(in) :: x
real, intent(in), dimension(:) :: coefficients

Return Value real

publicpure function compute_toa_reflectace(tau, g, w0)

Arguments

Type IntentOptional Attributes Name
real, intent(in), dimension(:) :: tau
real, intent(in), dimension(:) :: g
real, intent(in), dimension(:) :: w0

Return Value real

publicelemental function two_stream_reflectance(tauint, gint, w0int)

Arguments

Type IntentOptional Attributes Name
real, intent(in) :: tauint
real, intent(in) :: gint
real, intent(in) :: w0int

Return Value real


Subroutines

public subroutine modis_L2_simulator_twoTaus(temp, pressureLayers, pressureLevels, liquid_opticalThickness, ice_opticalThickness, waterSize, iceSize, isccpTau, isccpCloudTopPressure, retrievedPhase, retrievedCloudTopPressure, retrievedTau, retrievedSize)

Arguments

Type IntentOptional Attributes Name
real, intent(in), dimension(:) :: temp
real, intent(in), dimension(:) :: pressureLayers
real, intent(in), dimension(:) :: pressureLevels
real, intent(in), dimension(:, :) :: liquid_opticalThickness
real, intent(in), dimension(:, :) :: ice_opticalThickness
real, intent(in), dimension(:, :) :: waterSize
real, intent(in), dimension(:, :) :: iceSize
real, intent(in), dimension(:) :: isccpTau
real, intent(in), dimension(:) :: isccpCloudTopPressure
integer, intent(out), dimension(:) :: retrievedPhase
real, intent(out), dimension(:) :: retrievedCloudTopPressure
real, intent(out), dimension(:) :: retrievedTau
real, intent(out), dimension(:) :: retrievedSize

public subroutine modis_L2_simulator_oneTau(temp, pressureLayers, pressureLevels, opticalThickness, cloudWater, cloudIce, waterSize, iceSize, isccpTau, isccpCloudTopPressure, retrievedPhase, retrievedCloudTopPressure, retrievedTau, retrievedSize)

Arguments

Type IntentOptional Attributes Name
real, intent(in), dimension(:) :: temp
real, intent(in), dimension(:) :: pressureLayers
real, intent(in), dimension(:) :: pressureLevels
real, intent(in), dimension(:, :) :: opticalThickness
real, intent(in), dimension(:, :) :: cloudWater
real, intent(in), dimension(:, :) :: cloudIce
real, intent(in), dimension(:, :) :: waterSize
real, intent(in), dimension(:, :) :: iceSize
real, intent(in), dimension(:) :: isccpTau
real, intent(in), dimension(:) :: isccpCloudTopPressure
integer, intent(out), dimension(:) :: retrievedPhase
real, intent(out), dimension(:) :: retrievedCloudTopPressure
real, intent(out), dimension(:) :: retrievedTau
real, intent(out), dimension(:) :: retrievedSize

public subroutine modis_column(nPoints, nSubCols, phase, cloud_top_pressure, optical_thickness, particle_size, Cloud_Fraction_Total_Mean, Cloud_Fraction_Water_Mean, Cloud_Fraction_Ice_Mean, Cloud_Fraction_High_Mean, Cloud_Fraction_Mid_Mean, Cloud_Fraction_Low_Mean, Optical_Thickness_Total_Mean, Optical_Thickness_Water_Mean, Optical_Thickness_Ice_Mean, Optical_Thickness_Total_MeanLog10, Optical_Thickness_Water_MeanLog10, Optical_Thickness_Ice_MeanLog10, Cloud_Particle_Size_Water_Mean, Cloud_Particle_Size_Ice_Mean, Cloud_Top_Pressure_Total_Mean, Liquid_Water_Path_Mean, Ice_Water_Path_Mean, Optical_Thickness_vs_Cloud_Top_Pressure, Optical_Thickness_vs_ReffIce, Optical_Thickness_vs_ReffLiq)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nPoints
integer, intent(in) :: nSubCols
integer, intent(in), dimension(:,:) :: phase
real, intent(in), dimension(:,:) :: cloud_top_pressure
real, intent(in), dimension(:,:) :: optical_thickness
real, intent(in), dimension(:,:) :: particle_size
real, intent(inout), dimension(:) :: Cloud_Fraction_Total_Mean
real, intent(inout), dimension(:) :: Cloud_Fraction_Water_Mean
real, intent(inout), dimension(:) :: Cloud_Fraction_Ice_Mean
real, intent(inout), dimension(:) :: Cloud_Fraction_High_Mean
real, intent(inout), dimension(:) :: Cloud_Fraction_Mid_Mean
real, intent(inout), dimension(:) :: Cloud_Fraction_Low_Mean
real, intent(inout), dimension(:) :: Optical_Thickness_Total_Mean
real, intent(inout), dimension(:) :: Optical_Thickness_Water_Mean
real, intent(inout), dimension(:) :: Optical_Thickness_Ice_Mean
real, intent(inout), dimension(:) :: Optical_Thickness_Total_MeanLog10
real, intent(inout), dimension(:) :: Optical_Thickness_Water_MeanLog10
real, intent(inout), dimension(:) :: Optical_Thickness_Ice_MeanLog10
real, intent(inout), dimension(:) :: Cloud_Particle_Size_Water_Mean
real, intent(inout), dimension(:) :: Cloud_Particle_Size_Ice_Mean
real, intent(inout), dimension(:) :: Cloud_Top_Pressure_Total_Mean
real, intent(inout), dimension(:) :: Liquid_Water_Path_Mean
real, intent(inout), dimension(:) :: Ice_Water_Path_Mean
real, intent(inout), dimension(:,:,:) :: Optical_Thickness_vs_Cloud_Top_Pressure
real, intent(inout), dimension(:,:,:) :: Optical_Thickness_vs_ReffIce
real, intent(inout), dimension(:,:,:) :: Optical_Thickness_vs_ReffLiq

public subroutine hist2D(var1, var2, npts, bin1, nbin1, bin2, nbin2, jointHist)

Arguments

Type IntentOptional Attributes Name
real, intent(in), dimension(npts) :: var1
real, intent(in), dimension(npts) :: var2
integer, intent(in) :: npts
real, intent(in), dimension(nbin1+1) :: bin1
integer, intent(in) :: nbin1
real, intent(in), dimension(nbin2+1) :: bin2
integer, intent(in) :: nbin2
real, intent(out), dimension(nbin1,nbin2) :: jointHist

public subroutine modis_L3_simulator(phase, cloud_top_pressure, optical_thickness, particle_size, Cloud_Fraction_Total_Mean, Cloud_Fraction_Water_Mean, Cloud_Fraction_Ice_Mean, Cloud_Fraction_High_Mean, Cloud_Fraction_Mid_Mean, Cloud_Fraction_Low_Mean, Optical_Thickness_Total_Mean, Optical_Thickness_Water_Mean, Optical_Thickness_Ice_Mean, Optical_Thickness_Total_MeanLog10, Optical_Thickness_Water_MeanLog10, Optical_Thickness_Ice_MeanLog10, Cloud_Particle_Size_Water_Mean, Cloud_Particle_Size_Ice_Mean, Cloud_Top_Pressure_Total_Mean, Liquid_Water_Path_Mean, Ice_Water_Path_Mean, Optical_Thickness_vs_Cloud_Top_Pressure)

Arguments

Type IntentOptional Attributes Name
integer, intent(in), dimension(:, :) :: phase
real, intent(in), dimension(:, :) :: cloud_top_pressure
real, intent(in), dimension(:, :) :: optical_thickness
real, intent(in), dimension(:, :) :: particle_size
real, intent(out), dimension(:) :: Cloud_Fraction_Total_Mean
real, intent(out), dimension(:) :: Cloud_Fraction_Water_Mean
real, intent(out), dimension(:) :: Cloud_Fraction_Ice_Mean
real, intent(out), dimension(:) :: Cloud_Fraction_High_Mean
real, intent(out), dimension(:) :: Cloud_Fraction_Mid_Mean
real, intent(out), dimension(:) :: Cloud_Fraction_Low_Mean
real, intent(out), dimension(:) :: Optical_Thickness_Total_Mean
real, intent(out), dimension(:) :: Optical_Thickness_Water_Mean
real, intent(out), dimension(:) :: Optical_Thickness_Ice_Mean
real, intent(out), dimension(:) :: Optical_Thickness_Total_MeanLog10
real, intent(out), dimension(:) :: Optical_Thickness_Water_MeanLog10
real, intent(out), dimension(:) :: Optical_Thickness_Ice_MeanLog10
real, intent(out), dimension(:) :: Cloud_Particle_Size_Water_Mean
real, intent(out), dimension(:) :: Cloud_Particle_Size_Ice_Mean
real, intent(out), dimension(:) :: Cloud_Top_Pressure_Total_Mean
real, intent(out), dimension(:) :: Liquid_Water_Path_Mean
real, intent(out), dimension(:) :: Ice_Water_Path_Mean
real, intent(out), dimension(:, :, :) :: Optical_Thickness_vs_Cloud_Top_Pressure

publicpure subroutine two_stream(tauint, gint, w0int, ref, tra)

Arguments

Type IntentOptional Attributes Name
real, intent(in) :: tauint
real, intent(in) :: gint
real, intent(in) :: w0int
real, intent(out) :: ref
real, intent(out) :: tra

publicpure subroutine adding_doubling(Refl, Tran, Refl_tot, Tran_tot)

Arguments

Type IntentOptional Attributes Name
real, intent(in), dimension(:) :: Refl
real, intent(in), dimension(:) :: Tran
real, intent(out) :: Refl_tot
real, intent(out) :: Tran_tot

public subroutine complain_and_die(message)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: message