Example #1
0
parser.add_argument('output_file', metavar = 'output_file', type = str, nargs = 1)

args = parser.parse_args()
i_start = args.start_index[0]
i_end   = args.end_index[0]
scene   = args.scene[0]
output_file = args.output_file[0]

print(i_start, i_end, scene, output_file)

n = i_end - i_start

#
# Setup the simulation.
#

hydrometeors = gem_hydrometeors
kwargs = {"ice_psd"     : hydrometeors[0].psd,
          "snow_psd"    : hydrometeors[1].psd,
          "hail_psd"    : hydrometeors[2].psd,
          "graupel_psd" : hydrometeors[3].psd,
          "liquid_psd"  : hydrometeors[4].psd}
data_provider = ModelDataProvider(99, scene = scene, **kwargs)
sensors       = [lcpr, mwi, ici]
simulation    = CloudSimulation(hydrometeors[1:2], sensors, data_provider)

simulation.setup(verbosity = 0)
dimensions = [("profile", n, i_start)]
simulation.simulation.initialize_output_file(output_file, dimensions, "w")
simulation.simulation.run_ranges(range(i_start, i_end))
Example #2
0
        from mcrf.liras.single_species import ice, rain
        from mcrf.liras import snow, h2o_a_priori, cloud_water_a_priori
    ice_shape = os.path.join(liras_path, "data", "scattering", ice_shape)
    ice.scattering_data = ice_shape
    hydrometeors = [ice, rain]

#
# Create the data provider.
#

if not snow_shape == "None":
    kwargs = {"ice_psd": ice.psd, "snow_psd": snow.psd, "liquid_psd": rain.psd}
else:
    kwargs = {"ice_psd": ice.psd, "liquid_psd": rain.psd}

data_provider = ModelDataProvider(99, scene=scene.upper(), **kwargs)
#
# Define hydrometeors and sensors.
#

sensors = [lcpr]

#
# Add a priori providers.
#

observation_errors = mcrf.liras.ObservationError(sensors)
data_provider.add(ice.a_priori[0])
data_provider.add(ice.a_priori[1])
data_provider.add(snow.a_priori[0])
data_provider.add(snow.a_priori[1])
Example #3
0
def get_reference_data(scene="a", i_start=3000, i_end=3800):
    """
    Get reference data from cloud scene.

    Arguments:

        scene: From which scene to take the values ("a", "b")

        i_start: Start index of the scene

        i_end: End index of the scene
    """
    n = i_end - i_start

    ice_psd = D14NDmIce()
    snow_psd = D14NDmSnow()
    liquid_psd = D14NDmLiquid()
    data_provider = ModelDataProvider(99,
                                      scene=scene.upper(),
                                      ice_psd=ice_psd,
                                      snow_psd=snow_psd,
                                      hail_psd=snow_psd,
                                      graupel_psd=snow_psd,
                                      liquid_psd=liquid_psd)
    z = data_provider.get_altitude(i_start)

    iwc, swc, gwc, hwc, lwc, rwc = np.zeros((6, n, z.size))
    iwc_nd, swc_nd, gwc_nd, hwc_nd, lwc_nd, rwc_nd = np.zeros((6, n, z.size))
    iwc_dm, swc_dm, gwc_dm, hwc_dm, lwc_dm, rwc_dm = np.zeros((6, n, z.size))
    iwc_n0, swc_n0, gwc_n0, hwc_n0, lwc_n0, rwc_n0 = np.zeros((6, n, z.size))
    lats, lons = np.zeros((2, n))
    h2o = np.zeros((n, z.size))
    temperature = np.zeros((n, z.size))

    for i in range(i_start, i_end):
        j = i - i_start
        iwc[j, :] = data_provider.get_gem_ice_mass_density(i)
        swc[j, :] = data_provider.get_gem_snow_mass_density(i)
        hwc[j, :] = data_provider.get_gem_hail_mass_density(i)
        gwc[j, :] = data_provider.get_gem_graupel_mass_density(i)
        rwc[j, :] = data_provider.get_gem_rain_mass_density(i)
        lwc[j, :] = data_provider.get_gem_liquid_mass_density(i)
        iwc_nd[j, :] = data_provider.get_gem_ice_number_density(i)
        swc_nd[j, :] = data_provider.get_gem_snow_number_density(i)
        hwc_nd[j, :] = data_provider.get_gem_hail_number_density(i)
        gwc_nd[j, :] = data_provider.get_gem_graupel_number_density(i)
        rwc_nd[j, :] = data_provider.get_gem_rain_number_density(i)
        lwc_nd[j, :] = data_provider.get_gem_liquid_number_density(i)
        iwc_dm[j, :] = data_provider.get_ice_dm(i)
        swc_dm[j, :] = data_provider.get_snow_dm(i)
        hwc_dm[j, :] = data_provider.get_hail_dm(i)
        gwc_dm[j, :] = data_provider.get_graupel_dm(i)
        rwc_dm[j, :] = data_provider.get_rain_dm(i)
        lwc_dm[j, :] = data_provider.get_cloud_water_dm(i)
        iwc_n0[j, :] = data_provider.get_ice_n0(i)
        swc_n0[j, :] = data_provider.get_snow_n0(i)
        hwc_n0[j, :] = data_provider.get_hail_n0(i)
        gwc_n0[j, :] = data_provider.get_graupel_n0(i)
        rwc_n0[j, :] = data_provider.get_rain_n0(i)
        lwc_n0[j, :] = data_provider.get_cloud_water_n0(i)
        h2o[j, :] = data_provider.get_relative_humidity(i)
        lats[j] = data_provider.get_latitude(i)
        lons[j] = data_provider.get_longitude(i)
        temperature[j, :] = data_provider.get_temperature(i)

    return {
        "iwc": iwc,
        "iwc_nd": iwc_nd,
        "iwc_dm": iwc_dm,
        "iwc_n0": iwc_n0,
        "swc": swc,
        "swc_nd": swc_nd,
        "swc_dm": swc_dm,
        "swc_n0": swc_n0,
        "hwc": hwc,
        "hwc_nd": hwc_nd,
        "hwc_dm": hwc_dm,
        "hwc_n0": hwc_n0,
        "gwc": gwc,
        "gwc_nd": gwc_nd,
        "gwc_dm": gwc_dm,
        "gwc_n0": gwc_n0,
        "rwc": rwc,
        "rwc_nd": rwc_nd,
        "rwc_dm": rwc_dm,
        "rwc_n0": rwc_n0,
        "lwc": lwc,
        "lwc_nd": lwc_nd,
        "lwc_dm": lwc_dm,
        "lwc_n0": lwc_n0,
        "h2o": h2o,
        "lat": lats,
        "lon": lons,
        "z": z,
        "temperature": temperature
    }
Example #4
0
offsets = {"a": 3000, "b": 2800}

scene = "b"
offset = offsets[scene]
observations = NetCDFDataProvider(filename)
observations.add_offset("profile", -offset)

#
# Create the data provider.
#

ip = offset + 253 * 3 + 32

data_provider = ModelDataProvider(99,
                                  ice_psd=ice.psd,
                                  liquid_psd=rain.psd,
                                  scene=scene.upper())

#
# Define hydrometeors and sensors.
#

hydrometeors = [ice, rain]
sensors = [mwi, ici]

#
# Add a priori providers.
#

observation_error = mcrf.liras.ObservationError(sensors,
                                                forward_model_error=False,
Example #5
0
offsets = {"a": 3000, "b": 2800}

scene = filename[-4]
offset = offsets[scene]
observations = NetCDFDataProvider(filename)
observations.add_offset("profile", -offset)

#
# Create the data provider.
#

ip = offset + 300

data_provider = ModelDataProvider(99,
                                  ice_psd=ice.psd,
                                  snow_psd=snow.psd,
                                  liquid_psd=liquid.psd,
                                  scene=scene.upper())

#
# Define hydrometeors and sensors.
#

hydrometeors = [ice, rain]
sensors = [lcpr, mwi, ici]

#
# Add a priori providers.
#

data_provider.add(ice.a_priori[0])
Example #6
0
filename = os.path.join(mcrf.liras.liras_path, "data",
                        "forward_simulations_a_noise.nc")
offsets = {"a": 3000, "b": 2200}
scene = filename.split("_")[-2]
offset = offsets[scene]
observations = NetCDFDataProvider(filename)
observations.add_offset("profile", -offset)
shape = "LargePlateAggregate"

#
# Create the data provider.
#

ip = offset + 655
data_provider = ModelDataProvider(99,
                                  ice_psd=ice.psd,
                                  snow_psd=snow.psd,
                                  scene=scene.upper())
#
# Define hydrometeors and sensors.
#

#hydrometeors = [snow, ice, rain]
hydrometeors = [ice, rain]
sensors = [lcpr, mwi, ici]

#
# Add a priori providers.
#

observation_error = mcrf.liras.ObservationError(sensors,
                                                forward_model_error=False,