Exemple #1
0
def test_gage_precipitation(run_sim):
    total = solver.raingage_get_precipitation(0, shared_enum.RainResult.TOTAL)
    snowfall = solver.raingage_get_precipitation(0, shared_enum.RainResult.SNOWFALL)
    rainfall = solver.raingage_get_precipitation(0, shared_enum.RainResult.RAINFALL)
    assert total == 0.0
    assert snowfall == 0.0
    assert rainfall == 0.0

    for i in range(0, 250):
        solver.swmm_step()

    total = solver.raingage_get_precipitation(0, shared_enum.RainResult.TOTAL)
    snowfall = solver.raingage_get_precipitation(0, shared_enum.RainResult.SNOWFALL)
    rainfall = solver.raingage_get_precipitation(0, shared_enum.RainResult.RAINFALL)
    assert total == 0.4
    assert snowfall == 0.0
    assert rainfall == 0.4

    solver.raingage_set_precipitation(0, 1.0)

    for i in range(0, 250):
        solver.swmm_step()

    total = solver.raingage_get_precipitation(0, shared_enum.RainResult.TOTAL)
    snowfall = solver.raingage_get_precipitation(0, shared_enum.RainResult.SNOWFALL)
    rainfall = solver.raingage_get_precipitation(0, shared_enum.RainResult.RAINFALL)
    assert total == 1.0
    assert snowfall == 0.0
    assert rainfall == 1.0
Exemple #2
0
def test_subcatch_get_result(run_sim):
    rain = solver.subcatch_get_result(0, shared_enum.SubcatchResult.RAIN)
    evaporation = solver.subcatch_get_result(0, shared_enum.SubcatchResult.EVAPORATION)
    assert rain == 0.0
    assert evaporation == 0.0
    for i in range(0, 100):
        solver.swmm_step()
    rain = solver.subcatch_get_result(0, shared_enum.SubcatchResult.RAIN)
    evaporation = solver.subcatch_get_result(0, shared_enum.SubcatchResult.EVAPORATION)
    assert rain == pytest.approx(0.25, 0.1)
    assert evaporation == pytest.approx(0.0, 0.1)
Exemple #3
0
def test_node_get_result(run_sim):
    total_inflow = solver.node_get_result(0, shared_enum.NodeResult.TOTAL_INFLOW)
    total_outflow = solver.node_get_result(0, shared_enum.NodeResult.TOTAL_OUTFLOW)
    assert total_inflow == 0.0
    assert total_outflow == 0.0
    for i in range(0, 100):
        solver.swmm_step()
    total_inflow = solver.node_get_result(0, shared_enum.NodeResult.TOTAL_INFLOW)
    total_outflow = solver.node_get_result(0, shared_enum.NodeResult.TOTAL_OUTFLOW)
    assert total_inflow == pytest.approx(1.07, 0.1)
    assert total_outflow == pytest.approx(1.07, 0.1)
Exemple #4
0
def test_link_get_result(run_sim):
    flow = solver.link_get_result(0, shared_enum.LinkResult.FLOW)
    depth = solver.link_get_result(0, shared_enum.LinkResult.DEPTH)
    assert flow == 0.0
    assert depth == 0.0
    for i in range(0, 100):
        solver.swmm_step()
    flow = solver.link_get_result(0, shared_enum.LinkResult.FLOW)
    depth = solver.link_get_result(0, shared_enum.LinkResult.DEPTH)
    assert flow == pytest.approx(1.054, 0.1)
    assert depth == pytest.approx(0.268, 0.1)
Exemple #5
0
def test_outfall_set_stage(run_sim):
    head = solver.node_get_result(13, shared_enum.NodeResult.HEAD)
    head == 975

    for i in range(0, 100):
        solver.swmm_step()

    head = solver.node_get_result(13, shared_enum.NodeResult.HEAD)
    assert head == pytest.approx(975.519, 0.1)

    solver.outfall_set_stage(13, 1000)
    solver.swmm_step()
Exemple #6
0
def test_link_set_target_setting(run_sim):
    target_setting = solver.link_get_result(0, shared_enum.LinkResult.TARGET_SETTING)
    assert target_setting == 1.0
    solver.link_set_target_setting(0, 0.5)
    target_setting = solver.link_get_result(0, shared_enum.LinkResult.TARGET_SETTING)
    assert target_setting == 0.5

    for i in range(0, 250):
        solver.swmm_step()

    target_setting = solver.link_get_result(0, shared_enum.LinkResult.TARGET_SETTING)
    target_setting == 0.5
Exemple #7
0
def test_subcatch_get_pollutant(run_sim):
    pollut = solver.subcatch_get_pollutant(0, shared_enum.SubcatchPollutant.BUILD_UP)
    tss, lead = tuple(pollut)
    assert tss == 0.0
    assert lead == 0.0

    for i in range(0, 250):
        solver.swmm_step()
    pollut = solver.subcatch_get_pollutant(0, shared_enum.SubcatchPollutant.BUILD_UP)

    tss, lead = tuple(pollut)
    assert tss == pytest.approx(44.246, 0.1)
    assert lead == 0.0
Exemple #8
0
def test_node_get_pollutant(run_sim):
    pollut = solver.node_get_pollutant(0, shared_enum.NodePollutant.QUALITY)
    tss, lead = tuple(pollut)
    assert tss == 0.0
    assert lead == 0.0

    for i in range(0, 250):
        solver.swmm_step()
    pollut = solver.node_get_pollutant(0, shared_enum.NodePollutant.QUALITY)

    tss, lead = tuple(pollut)
    assert tss == pytest.approx(14.7179, 0.1)
    assert lead == pytest.approx(2.9435, 0.1)
Exemple #9
0
def test_subcatch_get_stats(run_sim):
    while True:
        time = solver.swmm_step()
        if time == 0:
            break

    stats = solver.subcatch_get_stats(0)
Exemple #10
0
def test_link_get_stats(run_sim):
    while True:
        time = solver.swmm_step()
        if time == 0:
            break

    link_stats = solver.link_get_stats(0)
Exemple #11
0
def test_lid_usage_get_result(run_lid_sim):
    while True:
        time = solver.swmm_step()
        if time == 0:
            break

    result = solver.lid_usage_get_result(0, 0, shared_enum.LidResult.SURFACE_OUTFLOW)
Exemple #12
0
def test_lid_usage_get_flux_rate(run_lid_sim):
    while True:
        time = solver.swmm_step()
        if time == 0:
            break

    rate = solver.lid_usage_get_flux_rate(0, 0, shared_enum.LidLayer.SURFACE)
Exemple #13
0
def test_node_get_stats(before_end):
    while True:
        time = solver.swmm_step()
        if time == 0:
            break

    node_stats = solver.node_get_stats(5)
    assert node_stats.maxDepth == pytest.approx(1.15, 0.1)
Exemple #14
0
def test_pump_get_stats(run_sim):
    index = solver.project_get_index(shared_enum.ObjectType.LINK, 'P1')
    while True:
        time = solver.swmm_step()
        if time == 0:
            break

    stats = solver.pump_get_stats(index)
Exemple #15
0
def test_lid_group_get_result(run_lid_sim):
    index = solver.project_get_index(shared_enum.ObjectType.SUBCATCH, 'wBC')
    while True:
        time = solver.swmm_step()
        if time == 0:
            break

    result = solver.lid_group_get_result(index, shared_enum.LidResult.OLD_DRAIN_FLOW)
Exemple #16
0
def test_node_total_inflow(run_sim):
    total_inflow = solver.node_get_total_inflow(0)
    assert total_inflow == 0.0

    for i in range(0, 550):
        solver.swmm_step()

    total_inflow = solver.node_get_total_inflow(0)
    assert total_inflow == pytest.approx(42639.814, 0.1)

    solver.node_set_total_inflow(0, 1.0)

    for i in range(0, 550):
        solver.swmm_step()

    total_inflow = solver.node_get_total_inflow(0)
    assert total_inflow == pytest.approx(75644.471, 0.1)
Exemple #17
0
def test_storage_get_stats(before_end):
    node_index = solver.project_get_index(shared_enum.ObjectType.NODE, 'SU1')
    while True:
        time = solver.swmm_step()
        if time == 0:
            break

    stor_stats = solver.storage_get_stats(node_index)
    assert stor_stats.avgVol == pytest.approx(0, 0.1)
Exemple #18
0
def test_step(handle):
    solver.swmm_start(0)

    while True:
        time = solver.swmm_step()
        if time == 0:
            break

    solver.swmm_end()
    solver.swmm_report()
Exemple #19
0
def before_end(request):
    solver.swmm_open(INPUT_FILE_EXAMPLE_1, REPORT_FILE_TEST_1,
                     OUTPUT_FILE_TEST_1)
    solver.swmm_start(0)

    while True:
        time = solver.swmm_step()
        if time == 0:
            break

    def close():
        solver.swmm_end()
        solver.swmm_close()

    request.addfinalizer(close)