Esempio n. 1
0
def make_fake_target(config, time_axis, catchment_index):
    print "Fake target Catchment index = {}".format(catchment_index)
    tv=api.TargetSpecificationVector()
    t=api.TargetSpecificationPts()
    simulator = ShyftRunner(config)
    simulator.build_model(time_axis.start(), time_axis.delta(), time_axis.size())
    simulator.run_model()
    ts = simulator.get_sum_catchment_result('SimDischarge',catchment_index)
    mapped_indx = [i for i,j in enumerate(simulator.catchment_map) if j in catchment_index]
    catch_indx = api.IntVector(mapped_indx)
    t.catchment_indexes=catch_indx
    t.scale_factor=1.0
    t.calc_mode=api.NASH_SUTCLIFFE
    t.ts=ts
    tv.push_back(t)
    return tv
Esempio n. 2
0
def _main_runner(config_file):
    print 'Starting runner'
    from shyft.orchestration.utils.ShyftConfig import ShyftConfig
    
    config = ShyftConfig(config_file)
    simulator = ShyftRunner(config)
    simulator.build_model(config.t_start, config.dt, config.n_steps)
    simulator.run_model()
    
    if "shapes" in simulator.cell_data_types():
        extractor = {'Total discharge': lambda x: x.response.total_discharge,
                     'Snow storage': lambda x: x.response.gs.storage*(1.0 - (x.lake_frac + x.reservoir_frac)),
                     'Temperature': lambda x: x.temperature[len(x.temperature)-1],
                     'Precipitation': lambda x: x.precipitation[len(x.precipitation)-1]}
        simulator.plot_distributed_data(simulator.cell_data("shapes"), simulator.model.get_cells(), extractor)

    print "Exit.."
Esempio n. 3
0
   # time_axis = api.FixedIntervalTimeAxis(t_start, delta_t, n_steps)
    time_axis = api.TimeAxis(t_start, delta_t, n_steps)
    config._target = make_fake_target(config.model_config, time_axis, config.catchment_index[0]['catch_id'])
    calibrator = ShyftCalibrator(config)
    calibrator.init(time_axis)
    print calibrator.calibrate(tol=1.0e-5)
    print "Exit.."

if __name__ == "__main__":
    import sys
    import os
    from shyft.orchestration.utils.ShyftRunner import ShyftRunner
    from shyft.orchestration.utils.ShyftConfig import ShyftConfig
    enki_root=os.path.join("D:\\","Users","sih","enki_config_for_test")
    config_file = os.path.join(enki_root, "runner_configurations.yaml")
    config= ShyftConfig(config_file,'NeaNidelva')
    simulator = ShyftRunner(config)
    simulator.build_model(config.t_start, config.dt, config.n_steps)
    simulator.run_model()
    discharge_0=simulator.get_calculated_discharge(38)
    if "shapes" in simulator.cell_data_types():
        extractor = {'Total discharge': lambda x: x.response.total_discharge,
                     'Snow storage': lambda x: x.response.gs.storage*(1.0 - (x.lake_frac + x.reservoir_frac)),
                     'Temperature': lambda x: x.temperature[len(x.temperature)-1],
                     'Precipitation': lambda x: x.precipitation[len(x.precipitation)-1]}
        simulator.plot_distributed_data(simulator.cell_data("shapes"), simulator.model.get_cells(), extractor)
    print "Exit.."
    #default_config_file = os.path.join(os.path.dirname(__file__), "config\NeaNidelva_calibration.yaml")
    #filename = sys.argv[1] if len(sys.argv) == 2 else default_config_file
    #_main_calibration_runner(filename)