def test_ConstantRemoval_load(): dict1 = {'Tank': {0: 0.5}} conc = [] conc1 = [] flow = [] flow1 = [] with Simulation("./inps/tank_variableinflow_notreatment.inp") as sim: CR = Node_Quality(sim, dict1) Outfall = Nodes(sim)["Outfall"] for step in sim: CR.ConstantRemoval() c = Outfall.pollut_quality conc.append(c['P1']) flow.append(sim._model.getNodeResult("Outfall", 0)) load = [a * b for a, b in zip(conc, flow)] cum_load = np.cumsum(load) with Simulation("./inps/tank_variableinflow_constantremoval.inp") as sim: Outfall = Nodes(sim)["Outfall"] for step in sim: c = Outfall.pollut_quality conc1.append(c['P1']) flow1.append(sim._model.getNodeResult("Outfall", 0)) load1 = [a * b for a, b in zip(conc1, flow1)] cum_load1 = np.cumsum(load1) error = (cum_load1[-1] / cum_load[-1]) / cum_load1[-1] print(error) assert error <= 0.03
def test_CSTR_load(): dict1 = {'Tank': {0: [-0.2, 1.0, 0.0]}} conc = [] conc1 = [] flow = [] flow1 = [] with Simulation("./inps/tank_constantinflow_notreatment.inp") as sim: CS = Node_Quality(sim, dict1) Tank = Nodes(sim)["Tank"] Valve = Links(sim)["Valve"] for index, step in enumerate(sim): CS.CSTR_solver(index) c = Tank.pollut_quality conc.append(c['P1']) c1 = Valve.pollut_quality conc1.append(c1['P1']) flow.append(sim._model.getNodeResult("Tank", 0)) flow1.append(sim._model.getLinkResult("Valve", 0)) load = [a * b for a, b in zip(conc, flow)] cum_load = np.cumsum(load) load1 = [a * b for a, b in zip(conc1, flow1)] cum_load1 = np.cumsum(load1) error = (cum_load1[-1] / cum_load[-1]) / cum_load1[-1] print(error) assert error <= 0.03
def test_CSTR_steadystate(): dict1 = {'Tank': {0: [-0.2, 1.0, 0.0]}} conc = [] with Simulation("./inps/tank_constantinflow_notreatment.inp") as sim: CS = Node_Quality(sim, dict1) Tank = Nodes(sim)["Tank"] for index, step in enumerate(sim): CS.CSTR_solver(index) c = Tank.pollut_quality conc.append(c['P1']) C_steadystate = 10.0 / (1 + (0.2 / (5 / 127))) print(C_steadystate) error = (C_steadystate - conc[-1]) / C_steadystate print(error) assert error <= 0.03
def test_ConstantRemoval_conc(): dict1 = {'Tank': {0: 0.5}} conc = [] con = [] with Simulation("./inps/tank_variableinflow_notreatment.inp") as sim: CR = Node_Quality(sim, dict1) Tank = Nodes(sim)["Tank"] for step in sim: CR.ConstantRemoval() c = Tank.pollut_quality conc.append(c['P1']) with Simulation("./inps/tank_variableinflow_constantremoval.inp") as sim: Tank = Nodes(sim)["Tank"] for step in sim: co = Tank.pollut_quality con.append(co['P1']) error = mse(con, conc[1:]) print(error) assert error <= 0.03
def test_GravitySettling_conc(): dict1 = {'Tank': {0: [0.01, 10.0]}} conc = [] con = [] with Simulation("./inps/tank_variableinflow_notreatment.inp") as sim: GS = Node_Quality(sim, dict1) Tank = Nodes(sim)["Tank"] for step in sim: GS.GravitySettling() c = Tank.pollut_quality conc.append(c['P1']) with Simulation("./inps/tank_variableinflow_gravsettling.inp") as sim: Tank = Nodes(sim)["Tank"] for step in sim: co = Tank.pollut_quality con.append(co['P1']) error = mse(con, conc[1:]) print(error) assert error <= 0.03
def test_EventMeanConc_conc(): dict1 = {'Tank': {0: 5.0}} conc = [] con = [] with Simulation("./inps/tank_variableinflow_notreatment.inp") as sim: EMC = Node_Quality(sim, dict1) Tank = Nodes(sim)["Tank"] for step in sim: EMC.EventMeanConc() c = Tank.pollut_quality conc.append(c['P1']) with Simulation("./inps/tank_variableinflow_emc.inp") as sim: Tank = Nodes(sim)["Tank"] for step in sim: co = Tank.pollut_quality con.append(co['P1']) error = mse(con, conc) print(error) assert error <= 0.03
def test_NthOrderReaction_conc(): dict1 = {'Tank': {0: [0.01, 2.0]}} conc = [] con = [] with Simulation("./inps/tank_variableinflow_notreatment.inp") as sim: NOR = Node_Quality(sim, dict1) Tank = Nodes(sim)["Tank"] for step in sim: NOR.NthOrderReaction() c = Tank.pollut_quality conc.append(c['P1']) with Simulation("./inps/tank_variableinflow_nthorderreaction.inp") as sim: Tank = Nodes(sim)["Tank"] for step in sim: co = Tank.pollut_quality con.append(co['P1']) error = mse(con, conc[1:]) print(error) assert error <= 0.03
def test_CoRemoval_conc(): dict1 = {'Tank': {0: [0.75, 0.15]}} dict2 = {'Tank': {1: 0.15}} conc_P1 = [] con_P1 = [] with Simulation("./inps/tank_variableinflow_notreatment2.inp") as sim: CO = Node_Quality(sim, dict1) CR = Node_Quality(sim, dict2) Tank = Nodes(sim)["Tank"] for step in sim: CR.ConstantRemoval() CO.CoRemoval() c = Tank.pollut_quality conc_P1.append(c['P1']) with Simulation("./inps/tank_variableinflow_coremoval.inp") as sim: Tank = Nodes(sim)["Tank"] for step in sim: co = Tank.pollut_quality con_P1.append(co['P1']) error = mse(con_P1, conc_P1[1:]) print(error) assert error <= 0.03
Wetland_depth = [] Wetland_flooding = [] Wetland_outflow = [] Wetland_cumload = [] Wtlnd_bp_inflows = [] Channel_flow = [] Channel_conc = [] Cannel_cuminload = [] Channel_depth = [] Channel_cumload = [] # Setup toolbox simulation with Simulation("./modifiedMBDoyle_TSS_V2.inp") as sim: # Setup toolbox methods GS = Node_Quality(sim, dict1) ER_GS = Link_Quality(sim, dict2) # Get asset information Ellsworth = Nodes(sim)["93-50408"] DBasin = Nodes(sim)["93-50404"] Wetland = Nodes(sim)["93-49759"] Wtlnd_bypass = Links(sim)["95-70294"] Channel = Links(sim)["95-70277"] # Step through the simulation for index, step in enumerate(sim): # Calculate gravity settling in basins GS.GravitySettling() # Calculate erosion andn gravity settling in channels