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))
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])
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 }
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,
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])
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,