在海绵城市设计过程中"年径流总量控制率"与"年径流污染总量削减率"是两个关键的控制指标。武理排水管网模拟分析系统可以通过读取模拟结果文件(out文件)对模型总体的"径流总量控制率"与"污染总量削减率"进行计算,也可以对指定的汇水子面积进行这两个指标的计算。当模型选择合适的降雨(年径流总量控制率对应的设计日降雨过程或者实际的年降雨过程)时,其获得的"径流总量控制率"与"污染总量削减率"即为"年径流总量控制率"与"年径流污染总量削减率"的结果。
1 径流总量控制率的计算方法
1.1 总体径流总量控制率
径流总量控制率可以通过水文计算结果获得,水文计算中存在水量平衡关系式:VTPV_{TP}VTP +VISV_{IS}VIS = VELV_{EL}VEL+VILV_{IL}VIL+VSRV_{SR}VSR+VLDV_{LD}VLD+VFSV_{FS}VFS, 其中:
- VTPV_{TP}VTP:总降雨量(Total Precipitation),m3m^3m3;
- VISV_{IS}VIS:模拟起始时刻lid设施中的含水量(Initial LID Storage),m3m^3m3;
- VILV_{IL}VIL:下渗量(Infiltration Loss),m3m^3m3;
- VELV_{EL}VEL:蒸发量(Evaporation Loss),m3m^3m3;
- VFSV_{FS}VFS:存蓄量(Final Storage),m3m^3m3;
- VSRV_{SR}VSR:地表径流量(Surface Runoff),m3m^3m3;
- VLDV_{LD}VLD:LID设施排泄量(LID Drainage),m3m^3m3;
通过上述变量可以计算径流总量控制率如下:
rvcr=VTP−VSRVTP×100rvcr=\frac{V_{TP}-V_{SR}}{V_{TP}}\times 100rvcr=VTPVTP−VSR×100
因为水文计算过程中地表径流量被认为是没有控制住的水量,所以用上式计算径流总量控制率.
1.2 汇水子面积径流总量控制率
在SWMM模型中 LID措施布置于汇水子面积之中,通过处理汇水子面积产生的地表径流实现对地表径流的控制。当需要对具体的 LID措施效果进行评估或参数调整时,对单个汇水子面积的径流控制率分析显得十分必要。 下图展示了汇水子面积水文过程中的径流路径。

汇水子面积内部可以细分为三种面积:不透水面积、透水面积、 LID设施面积。
不透水面积及透水面积上接受的降雨去除蒸发、下渗以及地表积洼水量之后剩余的水量为地表径流水量,地表径流水量按照建模人员事先设置的比例分别流至下游出口 (VSR1V_{SR1}VSR1、 VSR3V_{SR3}VSR3)以及LID设施面积( VSR2V_{SR2}VSR2、 VSR4V_{SR4}VSR4),直接流至下游节点的地表径流 (VSR1V_{SR1}VSR1、 VSR3V_{SR3}VSR3)属于未被控制的流量。 LID设施面积接受的水量包括降雨(VTPV_{TP}VTP)以及不透水及透水面积上的部分地表径流( VSR2V_{SR2}VSR2、 VSR4V_{SR4}VSR4)。经过 LID设施处理后的径流量一部分通过渗、蓄、蒸发等效应被消减去除,如果 LID设施中含有排水功能层,则会有部分径流量(VLDV_{LD}VLD)排至下游节点,这种经过 LID设施处理后排出的径流量可以认为是被控制的水量。当 LID设施接受的水量超过其处理能力时,会产生地表溢流(VSR5V_{SR5}VSR5),这部分地表溢流会直接流至下游节点,由于这部分溢流没有经过 LID设施功能层的处理所以被认为是未被控制的水量。
可以看出含有LID设施的汇水子面积的外排流量分为两部分:未经 LID设施处理的径流量 VSRV_{SR}VSR(为VSR1V_{SR1}VSR1、 VSR3V_{SR3}VSR3、VSR5V_{SR5}VSR5三者之和)以 及经过 LID设施处理后的径流量 VLDV_{LD}VLD。通过上述分析可以看出汇水子面积径流控制率计算公式仍然为rvcr=VTP−VSRVTP×100rvcr=\frac{V_{TP}-V_{SR}}{V_{TP}}\times 100rvcr=VTPVTP−VSR×100
2 污染总量削减率的计算方法
2.1 总体污染总量削减率
污染物总量在水文计算中也存在质量平衡关系式:
MWDM_{WD}MWD +MIBM_{IB}MIB +MSBM_{SB}MSB = MSWM_{SW}MSW+MILM_{IL}MIL+MBRM_{BR}MBR+MSRM_{SR}MSR+MRBM_{RB}MRB, 其中:
- MWDM_{WD}MWD:降雨中的污染物量(Wet Deposition),kg;
- MIBM_{IB}MIB:模拟起始时刻地表污染物量(Initial Buildup),kg;
- MSBM_{SB}MSB:模拟过程中地表累积污染物量(Surface Buildup),kg;
- MSWM_{SW}MSW:清扫去除污染物量(Sweeping Removal),kg;
- MILM_{IL}MIL:下渗污染物量(Infiltration Loss),kg;
- MBRM_{BR}MBR:BMP措施及LID措施削减污染物量(BMP Removal),kg,被削减(控制住)的污染物,不会进入管道系统;
- MSRM_{SR}MSR:地表径流中未被控制的污染物量(Surface Runoff),kg,会进入管道系统,从而对受纳水体造成污染;
- MRBM_{RB}MRB:模拟结束时地表残留污染物量(Remaining Buildup),kg;
污染物总量削减率可由下式计算:
prr=MIL+MBRMWD+MIB+MSB−MSW−MRB×100prr=\frac{M_{IL}+M_{BR}}{M_{WD} +M_{IB} +M_{SB}-M_{SW}-M_{RB}}\times 100prr=MWD+MIB+MSB−MSW−MRBMIL+MBR×100
或
prr=(1−MSRMWD+MIB+MSB−MSW−MRB)×100prr=(1-\frac{M_{SR}}{M_{WD} +M_{IB} +M_{SB}-M_{SW}-M_{RB}})\times 100prr=(1−MWD+MIB+MSB−MSW−MRBMSR)×100
上式中MIL+MBRM_{IL}+M_{BR}MIL+MBR为通过下渗和lid、bmp措施等削减的污染物的量,MWD+MIB+MSB−MSW−MRBM_{WD} +M_{IB} +M_{SB}-M_{SW}-M_{RB}MWD+MIB+MSB−MSW−MRB为降雨过程中地表径流中的污染物总量,由降雨中的污染物和地面被冲刷的污染物构成,只有这些污染物量才能算作对水体有潜在污染的污染物,所以这部分污染物中被削减的量才能用于计算削减率。
2.2 汇水子面积污染总量削减率
对于单个汇水子面积,污染物削减率可由下式计算:
prr=MBRMSR×100prr=\frac{M_{BR}}{M_{SR}}\times 100prr=MSRMBR×100
- MSRM_{SR}MSR:单个汇水子面积的已经去掉了下渗和蒸发等水量后,地表的径流量中的污染物,kg,包含了降雨中的污染物、地表冲刷的污染物的质量之和,这些污染物量对水体有潜在污染的可能。
- MBRM_{BR}MBR:BMP措施及LID措施削减污染物量,kg,被削减(控制住)的污染物,不会进入管道系统;
3 年径流总量控制率及年径流污染总量削减率的自动计算
3.1 案例项目内容
本专题对应的开发案例为\software\tutorial\exp_swmmcpp_lid文件夹中的内容,其中SWMMCPP_lid子文件夹为VS2022 C++项目内容, swmm_network子文件夹为管网模型数据,即network.inp文件。建议按照本文内容自己新建项目,编写代码以便通过练习掌握"武理排水管网模拟分析系统"相关使用方法。按照专题1内容在\software\tutorial\exp_swmmcpp_lid文件夹中新建项目,并添加头文件及库文件。对于新建项目的:配置属性->常规->输出目录设置为:
"$(SolutionDir)$(Platform)\$(Configuration)\",
这样可执行文件会生成于\software\tutorial\x64\Debug文件夹下面,将\software\bin文件夹中内容全部拷贝至Debug文件夹,可以直接编译运行案例项目,方便统一进行调试运行。
3.2 路径处理相关函数
在main.cpp文件的最上面中添加路径处理相关函数,由于本案例会采用接口的实现类projectClass进行模拟计算,所以需要添加projectClass.h, 需要使用outputReaderClass类实现模拟结果的读取,所以添加outputReaderClass.h
c
#include <windows.h>
#include <filesystem>
#include <shlwapi.h>
// TODO: 在此处引用程序需要的其他头文件
#include "swmm_cs.h"
#include "projectClass.h"
#include "outputReaderClass.h"
#include "enum.h"
#pragma comment(lib, "Shlwapi.lib")
std::string GetExecutablePath()
{
std::vector<char> buffer(MAX_PATH);
DWORD len = GetModuleFileNameA(NULL, buffer.data(), MAX_PATH);
if (len == 0 || len == MAX_PATH) {
// 缓冲区不够,动态扩容
while (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
buffer.resize(buffer.size() * 2);
len = GetModuleFileNameA(NULL, buffer.data(), buffer.size());
}
}
return std::string(buffer.data(), len);
}
// 获取 exe 所在目录
std::string GetExecutableDirectory()
{
std::string exePath = GetExecutablePath();
char dir[MAX_PATH];
lstrcpyA(dir, exePath.c_str());
PathRemoveFileSpecA(dir); // 去掉文件名,留下目录
return std::string(dir);
}
3.3 outputReaderClass类实现径流总量控制率的计算
outputReaderClass类不仅可以读取二进制结果文件,还可以通过结果进行海绵相关控制指标的计算。使用outputReaderClass对象打开out文件后使用swmm_RunoffVcr_whole方法获得总体径流总量控制率。
c
int RunoffVolumeControlRate_whole(outputReaderClass* pOutReader)
{
//计算整个模型的径流总量控制率
float totalpre = 0, evapLoss = 0, infilLoss = 0, surRunoff = 0, lidDrain = 0, finalStore = 0, runoffVolControlRate = 0;
//获得与径流量相关的变量值
pOutReader->swmm_getWaterBalanceSysResult(2, &totalpre);
pOutReader->swmm_getWaterBalanceSysResult(4, &evapLoss);
pOutReader->swmm_getWaterBalanceSysResult(5, &infilLoss);
pOutReader->swmm_getWaterBalanceSysResult(6, &surRunoff);
pOutReader->swmm_getWaterBalanceSysResult(7, &lidDrain);
pOutReader->swmm_getWaterBalanceSysResult(10, &finalStore);
//获得径流总量控制率
pOutReader->swmm_RunoffVcr_whole(&runoffVolControlRate);
printf("total precipitation is %9.3f m^3\n", totalpre);
printf("total evap loss is %9.3f m^3\n", evapLoss);
printf("total infil loss is %9.3f m^3\n", infilLoss);
printf("total sur runoff is %9.3f m^3\n", surRunoff);
printf("total lid drain is %9.3f m^3\n", lidDrain);
printf("total final storage is %9.3f m^3\n", finalStore);
printf("the overall runoff volume control rate is %f%%\n\n", runoffVolControlRate);
return 0;
}
对于单个汇水子面积可以采用swmm_RunoffVcr_subcatch函数获得指定汇水子面积的径流总量控制率,如下代码为使用案例:
c
int RunoffVolumeControlRate_subcatch(outputReaderClass* pOutReader)
{
int i = 0, j = 0;
//计算单个汇水子面积的径流总量控制率
float totalpre = 0, evapLoss = 0, infilLoss = 0, surRunoff = 0, lidDrain = 0, finalStore = 0, runoffVolControlRate = 0;
printf("subcatch runoff volume control rate\n");
//计算每个汇水子面积的径流总量控制率,汇水子面积的未控制径流量=runoff-lidDrain
if (pOutReader->SWMM_FlowUnits == 3)
printf("id\tprec(m3)\tevaploss(m3)\tinfilloss(m3)\trunoff(m3)\tliddrain(m3)\tcontrol rate%%\n");
else
printf("id\tprec(L)\tevaploss(L)\tinfilloss(L)\trunoff(L)\tliddrain(L)\tcontrol rate%%\n");
for (i = 0; i < pOutReader->SWMM_Nsubcatch; i++)
{
totalpre = 0;
evapLoss = 0;
infilLoss = 0;
surRunoff = 0;
lidDrain = 0;
float area = 0;
char id[MAXFNAME] = { 0 };
pOutReader->swmm_getOutObjectId(0, i, id);
pOutReader->swmm_getOutObjectProperty(0, i, 0, &area);
for (j = 0; j < pOutReader->SWMM_Nperiods; j++)
{
float prec = 0, el = 0, il = 0, runoff = 0, ld = 0;
pOutReader->swmm_getOutResult(0, i, SUBCATCH_RAINFALL, j, &prec);
pOutReader->swmm_getOutResult(0, i, SUBCATCH_EVAP, j, &el);
pOutReader->swmm_getOutResult(0, i, SUBCATCH_INFIL, j, &il);
pOutReader->swmm_getOutResult(0, i, SUBCATCH_RUNOFF, j, &runoff);
pOutReader->swmm_getOutResult(0, i, SUBCATCH_LID_DRAIN, j, &ld);
if (pOutReader->SWMM_FlowUnits == 3)//流量单位为m3/s
{
//prec单位mm/hr,area单位公顷,numbers[6]为时间步长,单位s,计算结果单位为m3
totalpre += prec * area * pOutReader->SWMM_ReportStep / 360.0;
evapLoss += el * area * pOutReader->SWMM_ReportStep / 8640.0;//el单位为mm/day,计算结果单位为m3
infilLoss += il * area * pOutReader->SWMM_ReportStep / 360.0;//il单位为mm/hr,计算结果单位为m3
surRunoff += runoff * pOutReader->SWMM_ReportStep;//runoff单位为m3
lidDrain += ld * pOutReader->SWMM_ReportStep;//ld单位为m3
}
else//否则按流量单位L/s计算
{
//prec单位mm/hr,area单位公顷,numbers[6]为时间步长,单位s,计算结果单位为L
totalpre += prec * area * pOutReader->SWMM_ReportStep / 0.36;
evapLoss += el * area * pOutReader->SWMM_ReportStep / 8.64;//el单位为mm/day,计算结果单位为L
infilLoss += il * area * pOutReader->SWMM_ReportStep / 0.36;//il单位为mm/hr,计算结果单位为L
surRunoff += runoff * pOutReader->SWMM_ReportStep;//runoff单位为L
lidDrain += ld * pOutReader->SWMM_ReportStep;//ld单位为L
}
}
//获得径流总量控制率
pOutReader->swmm_RunoffVcr_subcatch(i, &runoffVolControlRate);
printf("%s\t%9.3f\t%9.3f\t%9.3f\t%9.3f\t%9.3f\t%9.3f\n", id, totalpre, evapLoss, infilLoss, surRunoff, lidDrain, runoffVolControlRate);
}
return 0;
}
3.4 outputReaderClass类实现污染总量削减率的计算
使用swmm_PollutReducr_whole方法获得总体污染总量削减率,例如:
c
int PollutantReductionRate_whole(outputReaderClass* pOutReader)
{
int i = 0, j = 0;
char pollutid[MAXFNAME] = { 0 };
//污染物削减率是指雨水造成的冲刷中所携带的总污染物量中,被控制住的污染物的量的比例
float ib = 0;//地面累计的初始污染物量
float sb = 0;//模拟时段地面累计的污染物量
float wd = 0;//降雨中的污染物量
float sr = 0;//街道清扫去除的污染物量
float rb = 0;//模拟结束时地面残余的污染物量
float il = 0;/*下渗污染物量,控制住的污染物量*/;
float br = 0;/*bmp和lid措施去除掉污染物量,控制住的污染物量*/
float rf = 0;//地表径流中的污染物量
float pollutReductionRate = 0;
//计算整体的污染物削减率
printf("overall pollut reduction rate\n");
printf("pollutId\tinitBuild\tsurBuild \twetDepos \tsweepRemo\tinfilLoss\tbmpRemove\tfinalRema\treductionRate%%\n");
for (i = 0; i < pOutReader->SWMM_Npolluts; i++)
{
pOutReader->swmm_getOutPollutId(i, pollutid);
pOutReader->swmm_getWaterBalanceSysResult(24 + i * 8 + 0, &ib);
pOutReader->swmm_getWaterBalanceSysResult(24 + i * 8 + 1, &sb);
pOutReader->swmm_getWaterBalanceSysResult(24 + i * 8 + 2, &wd);
pOutReader->swmm_getWaterBalanceSysResult(24 + i * 8 + 3, &sr);
pOutReader->swmm_getWaterBalanceSysResult(24 + i * 8 + 4, &il);
pOutReader->swmm_getWaterBalanceSysResult(24 + i * 8 + 5, &br);
pOutReader->swmm_getWaterBalanceSysResult(24 + i * 8 + 6, &rf);
pOutReader->swmm_getWaterBalanceSysResult(24 + i * 8 + 7, &rb);
pOutReader->swmm_PollutReducr_whole(i, &pollutReductionRate);
printf("%8s\t%11.3f\t%10.3f\t%9.3f\t%9.3f\t%9.3f\t%9.3f\t%9.3f\t%9.3f\n",
pollutid, ib, sb, wd, sr, il, br, rb, pollutReductionRate);
}
return 0;
}
使用swmm_PollutReducr_subcatch方法获得单个汇水子面积的污染总量削减率,例如:
c
int PollutantReductionRate_subcatch(outputReaderClass* pOutReader)
{
int i = 0, j = 0;
char pollutid[MAXFNAME] = { 0 };
char subcatchid[MAXFNAME] = { 0 };
//计算每个汇水子面积的污染物削减率
printf("subcatch pollut reduction rate\n");
printf("subcatch \tpollutId \tuncontrol\ttotalMass\treductionRate%%\n");
int conUnit = 0;//污染物浓度单位
float con = 0;//浓度
float runoff = 0;//地表径流量
float washoff = 0;//冲刷污染物总量
float ucf = 0;//污染物质量单位转换为kg对应的单位转换系数
float totalWashoff = 0;
float totalUncontroledPollut = 0;
float pollutReductionRate = 0;
//遍历汇水子面积
for (i = 0; i < pOutReader->SWMM_Nsubcatch; i++)
{
pOutReader->swmm_getOutObjectId(0, i, subcatchid);
//遍历污染物
for (j = 0; j < pOutReader->SWMM_Npolluts; j++)
{
totalWashoff = 0;
totalUncontroledPollut = 0;
pOutReader->swmm_getOutPollutId(j, pollutid);
pOutReader->swmm_getOutPollutUnit(j, &conUnit);
if (pOutReader->SWMM_FlowUnits == 3)//流量单位为m3/s
{
if (conUnit == 0)//浓度单位为mg/L
ucf = 0.001;
else//浓度单位为ug/L
ucf = 0.000001;
}
else//流量单位为L/s
{
if (conUnit == 0)//浓度单位为mg/L
ucf = 0.000001;
else//浓度单位为ug/L
ucf = 0.000000001;
}
//遍历时间步长
for (int k = 0; k < pOutReader->SWMM_Nperiods; k++)
{
pOutReader->swmm_getOutResult(0, i, SUBCATCH_RUNOFF, k, &runoff);
pOutReader->swmm_getOutResult(0, i, SUBCATCH_WASHOFF + j, k, &con);
pOutReader->swmm_getOutResult(0, i, SUBCATCH_WASHOFF + pOutReader->SWMM_Npolluts + j, k, &washoff);
totalUncontroledPollut += runoff * con * pOutReader->SWMM_ReportStep * ucf;
totalWashoff += washoff * ucf * 0.001;
}
pOutReader->swmm_PollutReducr_subcatch(j, i, &pollutReductionRate);
printf("%9s\t%9s\t%9.3f\t%9.3f\t%9.3f\n", subcatchid, pollutid, totalUncontroledPollut, totalWashoff,
pollutReductionRate);
}
}
return 0;
}
3.5 main函数
main函数内容如下
c
int main() {
//获得当前路径
std::string exeFileDic = GetExecutableDirectory();
std::filesystem::path p(exeFileDic);
std::filesystem::path parent = p.parent_path(); // 获取父目录
parent = parent.parent_path(); // 获取父目录
//根据当前路径获得模型文件位置,并根据模型文件名,生成报告文件及结果文件的
//文件名
std::string inpFilePath = parent.string() + "\\exp_swmmcpp_lid\\swmm_network\\network.inp";
std::string rptFilePath = inpFilePath;
rptFilePath.replace(rptFilePath.length() - 3, 3, "rpt");
std::string outFilePath = inpFilePath;
outFilePath.replace(outFilePath.length() - 3, 3, "out");
//模拟计算,使用原始指针
SWMMCPP::projectClass* pswmm = NULL;
if (GetSwmmSimulation((void**)&pswmm) != 0)
{
printf("create swmm simulation interface object failed\n");
return 1;
}
//模拟计算
if (pswmm->swmm_run(inpFilePath.data(), rptFilePath.data(), outFilePath.data()) != 0)
{
printf("swmm_run failed\n");
ReleaseSwmmSimulation((void*&)pswmm);
return 1;
}
//显式释放资源
ReleaseSwmmSimulation((void*&)pswmm);
//获得结果,这里使用智能指针,如果使用原始指针,需要使用ReleaseSwmmOutReader显式释放资源
std::unique_ptr<outputReaderClass> pOutReader = std::make_unique<outputReaderClass>();
int numbers[7] = { 0 };
int vars[4] = { 0 };
double startDateTime = 0;
pOutReader->swmm_openOutFile(outFilePath.data(), numbers, vars, &startDateTime);
//调用函数
RunoffVolumeControlRate_whole(pOutReader.get());
RunoffVolumeControlRate_subcatch(pOutReader.get());
PollutantReductionRate_whole(pOutReader.get());
PollutantReductionRate_subcatch(pOutReader.get());
}
3.6 编译运行
编译运行结果如下:
c
o Simulating Simulation complete
total precipitation is 45133.789 m^3
total evap loss is 0.000 m^3
total infil loss is 4764.348 m^3
total sur runoff is 21981.154 m^3
total lid drain is 1873.718 m^3
total final storage is 18824.713 m^3
the overall runoff volume control rate is 51.297787%
subcatch runoff volume control rate
id prec(m3) evaploss(m3) infilloss(m3) runoff(m3) liddrain(m3) control rate%
S3104 3747.399 0.000 476.503 372.718 372.241 99.987
S3242 3212.700 0.000 394.429 318.366 317.881 99.985
S3114 2947.137 0.000 361.903 263.973 263.177 99.973
S1409 2737.684 0.000 343.113 266.720 266.194 99.981
S1273 2629.229 0.000 340.383 307.821 307.468 99.987
S3228 2341.817 0.000 304.543 246.592 246.321 99.988
S1555 1828.970 0.000 168.797 1277.975 0.000 30.126
S1614 1768.593 0.000 163.225 1271.145 0.000 28.127
S2790 1616.361 0.000 149.176 1179.373 0.000 27.035
S1793 1299.891 0.000 119.968 993.521 0.000 23.569
S1303 1150.140 0.000 106.147 854.470 0.000 25.707
S1826 886.335 0.000 81.801 694.166 0.000 21.681
S2779 851.011 0.000 78.541 679.323 0.000 20.175
S1641 830.211 0.000 76.621 662.450 0.000 20.207
S1402 788.095 0.000 72.734 635.342 0.000 19.383
S1587 744.031 0.000 68.667 598.307 0.000 19.586
S1534 677.894 0.000 62.564 543.066 0.000 19.889
S1271 659.303 0.000 60.848 527.018 0.000 20.064
S1780 625.285 0.000 57.708 513.559 0.000 17.868
S1258 601.215 0.000 55.487 479.057 0.000 20.318
S1307 593.702 0.000 54.793 459.117 0.000 22.669
S1796 566.805 0.000 52.311 465.630 0.000 17.850
S2775 539.287 0.000 49.771 442.523 0.000 17.943
S1487 461.684 0.000 42.609 378.345 0.000 18.051
S3769 449.270 0.000 41.463 379.743 0.000 15.476
S1542 431.630 0.000 39.835 319.203 0.000 26.047
S1813 431.021 0.000 39.779 355.950 0.000 17.417
S3105 429.838 0.000 39.670 352.718 0.000 17.942
S1412 411.527 0.000 37.980 346.453 0.000 15.813
S2783 390.086 0.000 36.001 324.930 0.000 16.703
S1599 374.451 0.000 34.558 311.634 0.000 16.776
S3165 337.458 0.000 31.144 274.609 0.000 18.624
S3170 328.965 0.000 30.361 266.261 0.000 19.061
S1263 301.824 0.000 27.856 248.944 0.000 17.520
S1625 296.954 0.000 27.406 245.634 0.000 17.282
S3797 287.038 0.000 26.491 243.742 0.000 15.084
S1804 271.956 0.000 25.099 228.611 0.000 15.938
S1544 269.895 0.000 24.909 224.161 0.000 16.945
S1633 269.534 0.000 24.876 225.552 0.000 16.318
S2926 237.084 0.000 21.881 199.511 0.000 15.848
S3790 227.848 0.000 21.028 193.886 0.000 14.906
S1492 225.505 0.000 20.812 188.650 0.000 16.343
S1586 224.044 0.000 20.677 185.051 0.000 17.404
S2914 222.593 0.000 20.543 186.676 0.000 16.136
S1482 219.222 0.000 20.232 185.358 0.000 15.447
S1260 213.016 0.000 19.659 177.914 0.000 16.478
S1499 210.432 0.000 19.421 177.634 0.000 15.586
S2777 208.928 0.000 19.282 177.457 0.000 15.063
S2912 195.767 0.000 18.068 166.294 0.000 15.055
S1802 187.461 0.000 17.301 153.215 0.000 18.268
S2786 172.078 0.000 15.881 145.353 0.000 15.531
S2773 164.116 0.000 15.146 139.487 0.000 15.007
S2917 163.997 0.000 15.135 139.925 0.000 14.678
S3102 161.153 0.000 14.873 136.432 0.000 15.340
S1638 145.524 0.000 13.430 124.273 0.000 14.603
S3150 141.254 0.000 13.036 120.653 0.000 14.584
S3788 130.750 0.000 12.067 111.742 0.000 14.538
S1790 128.820 0.000 11.889 108.875 0.000 15.483
S1576 120.445 0.000 11.116 102.993 0.000 14.490
S1637 119.816 0.000 11.058 102.459 0.000 14.487
S1597 109.512 0.000 10.107 93.703 0.000 14.436
S3782 109.104 0.000 10.069 93.356 0.000 14.434
S2784 98.284 0.000 9.071 84.154 0.000 14.377
S3100 90.906 0.000 8.390 77.873 0.000 14.336
S1401 89.901 0.000 8.297 77.018 0.000 14.330
S3149 87.652 0.000 8.089 75.102 0.000 14.318
S2785 86.923 0.000 8.022 74.482 0.000 14.313
S1485 83.526 0.000 7.709 71.338 0.000 14.591
S1552 80.906 0.000 7.467 68.981 0.000 14.739
S1509 79.678 0.000 7.354 67.822 0.000 14.880
S3789 78.955 0.000 7.287 67.691 0.000 14.266
S1302 77.796 0.000 7.180 66.704 0.000 14.258
S1411 72.821 0.000 6.721 62.460 0.000 14.227
S2925 68.653 0.000 6.336 58.905 0.000 14.200
S1598 66.008 0.000 6.092 56.647 0.000 14.181
S1554 64.999 0.000 5.999 55.786 0.000 14.174
S1486 64.158 0.000 5.921 55.067 0.000 14.169
S3243 62.820 0.000 5.798 53.925 0.000 14.159
S3783 62.066 0.000 5.728 53.281 0.000 14.154
S1808 52.465 0.000 4.842 44.947 0.000 14.329
S1640 50.035 0.000 4.618 42.998 0.000 14.063
S3172 48.087 0.000 4.438 41.332 0.000 14.047
S3784 48.033 0.000 4.433 41.286 0.000 14.046
S3099 37.102 0.000 3.424 31.927 0.000 13.948
S1543 23.742 0.000 2.191 20.466 0.000 13.801
S1502 19.283 0.000 1.780 16.633 0.000 13.741
S1484 19.106 0.000 1.763 16.532 0.000 13.471
S3101 18.363 0.000 1.695 15.842 0.000 13.728
S2787 10.199 0.000 0.941 8.814 0.000 13.582
S3171 8.157 0.000 0.753 7.053 0.000 13.534
overall pollut reduction rate
pollutId initBuild surBuild wetDepos sweepRemo infilLoss bmpRemove finalRema reductionRate%
SS 1055.135 0.000 45.129 0.000 3.662 424.425 6.546 39.140
COD 791.351 0.000 22.565 0.000 1.831 315.730 2.972 39.159
BOD 527.568 0.000 13.539 0.000 1.098 210.065 1.780 39.153
subcatch pollut reduction rate
subcatch pollutId uncontrol totalMass reductionRate%
S3104 SS 0.801 91.230 99.122
S3104 COD 0.197 67.663 98.816
S3104 BOD 0.112 44.986 98.219
S3242 SS 0.345 78.409 99.560
S3242 COD 0.159 58.011 99.406
S3242 BOD 0.095 38.567 99.106
S3114 SS 0.511 71.811 99.288
S3114 COD 0.136 53.215 99.039
S3114 BOD 0.079 35.379 98.555
S1409 SS 0.432 66.740 99.352
S1409 COD 0.134 49.434 99.125
S1409 BOD 0.080 32.865 98.684
S1273 SS 0.321 64.171 99.499
S1273 COD 0.153 47.476 99.323
S1273 BOD 0.092 31.563 98.982
S3228 SS 0.485 57.022 99.149
S3228 COD 0.127 42.284 98.853
S3228 BOD 0.074 28.112 98.274
S1555 SS 44.451 44.644 0.432
S1555 COD 33.435 33.025 0.000
S1555 BOD 22.632 21.956 0.000
S1614 SS 43.073 43.170 0.226
S1614 COD 32.494 31.935 0.000
S1614 BOD 21.768 21.231 0.000
S2790 SS 39.412 39.455 0.109
S2790 COD 29.776 29.186 0.000
S2790 BOD 19.836 19.404 0.000
S1793 SS 31.843 31.730 0.000
S1793 COD 24.124 23.472 0.000
S1793 BOD 15.810 15.605 0.000
S1303 SS 28.085 28.074 0.000
S1303 COD 21.252 20.768 0.000
S1303 BOD 14.065 13.807 0.000
S1826 SS 21.804 21.635 0.000
S1826 COD 16.500 16.004 0.000
S1826 BOD 10.733 10.640 0.000
S2779 SS 21.009 20.773 0.000
S2779 COD 15.849 15.367 0.000
S2779 BOD 10.277 10.216 0.000
S1641 SS 20.494 20.265 0.000
S1641 COD 15.463 14.991 0.000
S1641 BOD 10.026 9.966 0.000
S1402 SS 19.494 19.237 0.000
S1402 COD 14.649 14.230 0.000
S1402 BOD 9.503 9.461 0.000
S1587 SS 18.395 18.161 0.000
S1587 COD 13.836 13.435 0.000
S1587 BOD 8.975 8.932 0.000
S1534 SS 16.747 16.547 0.000
S1534 COD 12.616 12.241 0.000
S1534 BOD 8.182 8.138 0.000
S1271 SS 16.281 16.093 0.000
S1271 COD 12.275 11.905 0.000
S1271 BOD 7.960 7.915 0.000
S1780 SS 15.528 15.263 0.000
S1780 COD 11.578 11.291 0.000
S1780 BOD 7.519 7.506 0.000
S1258 SS 14.837 14.675 0.000
S1258 COD 11.200 10.856 0.000
S1258 BOD 7.262 7.217 0.000
S1307 SS 14.572 14.492 0.000
S1307 COD 11.036 10.720 0.000
S1307 BOD 7.205 7.127 0.000
S1796 SS 14.076 13.835 0.000
S1796 COD 10.495 10.235 0.000
S1796 BOD 6.815 6.804 0.000
S2775 SS 13.389 13.164 0.000
S2775 COD 9.988 9.738 0.000
S2775 BOD 6.486 6.474 0.000
S1487 SS 11.459 11.269 0.000
S1487 COD 8.553 8.337 0.000
S1487 BOD 5.553 5.542 0.000
S3769 SS 11.238 10.966 0.000
S3769 COD 8.265 8.112 0.000
S3769 BOD 5.374 5.393 0.000
S1542 SS 10.536 10.536 0.000
S1542 COD 7.969 7.794 0.000
S1542 BOD 5.283 5.181 0.000
S1813 SS 10.716 10.521 0.000
S1813 COD 7.972 7.783 0.000
S1813 BOD 5.178 5.174 0.000
S3105 SS 10.672 10.492 0.000
S3105 COD 7.961 7.762 0.000
S3105 BOD 5.169 5.160 0.000
S1412 SS 10.285 10.045 0.000
S1412 COD 7.579 7.431 0.000
S1412 BOD 4.927 4.940 0.000
S2783 SS 9.717 9.522 0.000
S2783 COD 7.201 7.044 0.000
S2783 BOD 4.680 4.683 0.000
S1599 SS 9.326 9.140 0.000
S1599 COD 6.913 6.761 0.000
S1599 BOD 4.493 4.495 0.000
S3165 SS 8.363 8.237 0.000
S3165 COD 6.261 6.093 0.000
S3165 BOD 4.063 4.051 0.000
S3170 SS 8.144 8.030 0.000
S3170 COD 6.110 5.940 0.000
S3170 BOD 3.964 3.949 0.000
S1263 SS 7.502 7.367 0.000
S1263 COD 5.584 5.450 0.000
S1263 BOD 3.627 3.623 0.000
S1625 SS 7.386 7.248 0.000
S1625 COD 5.490 5.362 0.000
S1625 BOD 3.567 3.565 0.000
S3797 SS 7.186 7.006 0.000
S3797 COD 5.274 5.183 0.000
S3797 BOD 3.429 3.446 0.000
S1804 SS 6.795 6.638 0.000
S1804 COD 5.010 4.911 0.000
S1804 BOD 3.257 3.265 0.000
S1544 SS 6.719 6.588 0.000
S1544 COD 4.985 4.873 0.000
S1544 BOD 3.240 3.240 0.000
S1633 SS 6.721 6.579 0.000
S1633 COD 4.970 4.867 0.000
S1633 BOD 3.231 3.236 0.000
S2926 SS 5.925 5.787 0.000
S2926 COD 4.367 4.281 0.000
S2926 BOD 2.839 2.846 0.000
S3790 SS 5.705 5.562 0.000
S3790 COD 4.183 4.114 0.000
S3790 BOD 2.720 2.735 0.000
S1492 SS 5.623 5.504 0.000
S1492 COD 4.158 4.072 0.000
S1492 BOD 2.703 2.707 0.000
S1586 SS 5.571 5.469 0.000
S1586 COD 4.143 4.046 0.000
S1586 BOD 2.692 2.690 0.000
S2914 SS 5.553 5.433 0.000
S2914 COD 4.102 4.019 0.000
S2914 BOD 2.667 2.672 0.000
S1482 SS 5.484 5.351 0.000
S1482 COD 4.033 3.958 0.000
S1482 BOD 2.622 2.632 0.000
S1260 SS 5.309 5.200 0.000
S1260 COD 3.930 3.846 0.000
S1260 BOD 2.554 2.557 0.000
S1499 SS 5.262 5.137 0.000
S1499 COD 3.873 3.800 0.000
S1499 BOD 2.518 2.526 0.000
S2777 SS 5.230 5.100 0.000
S2777 COD 3.838 3.773 0.000
S2777 BOD 2.496 2.508 0.000
S2912 SS 4.901 4.779 0.000
S2912 COD 3.596 3.535 0.000
S2912 BOD 2.339 2.350 0.000
S1802 SS 4.650 4.576 0.000
S1802 COD 3.475 3.385 0.000
S1802 BOD 2.256 2.250 0.000
S2786 SS 4.304 4.200 0.000
S2786 COD 3.166 3.107 0.000
S2786 BOD 2.059 2.066 0.000
S2773 SS 4.109 4.006 0.000
S2773 COD 3.014 2.963 0.000
S2773 BOD 1.960 1.970 0.000
S2917 SS 4.102 4.003 0.000
S2917 COD 3.008 2.961 0.000
S2917 BOD 1.956 1.969 0.000
S3102 SS 4.032 3.934 0.000
S3102 COD 2.963 2.910 0.000
S3102 BOD 1.927 1.935 0.000
S1638 SS 3.639 3.552 0.000
S1638 COD 2.668 2.628 0.000
S1638 BOD 1.735 1.747 0.000
S3150 SS 3.532 3.448 0.000
S3150 COD 2.590 2.551 0.000
S3150 BOD 1.684 1.696 0.000
S3788 SS 3.268 3.192 0.000
S3788 COD 2.397 2.361 0.000
S3788 BOD 1.558 1.570 0.000
S1790 SS 3.222 3.144 0.000
S1790 COD 2.370 2.326 0.000
S1790 BOD 1.541 1.546 0.000
S1576 SS 3.010 2.940 0.000
S1576 COD 2.207 2.175 0.000
S1576 BOD 1.435 1.446 0.000
S1637 SS 2.994 2.925 0.000
S1637 COD 2.196 2.163 0.000
S1637 BOD 1.428 1.438 0.000
S1597 SS 2.736 2.673 0.000
S1597 COD 2.006 1.977 0.000
S1597 BOD 1.304 1.315 0.000
S3782 SS 2.726 2.663 0.000
S3782 COD 1.999 1.970 0.000
S3782 BOD 1.299 1.310 0.000
S2784 SS 2.455 2.399 0.000
S2784 COD 1.800 1.775 0.000
S2784 BOD 1.170 1.180 0.000
S3100 SS 2.270 2.219 0.000
S3100 COD 1.665 1.641 0.000
S3100 BOD 1.082 1.091 0.000
S1401 SS 2.245 2.194 0.000
S1401 COD 1.646 1.623 0.000
S1401 BOD 1.070 1.079 0.000
S3149 SS 2.188 2.140 0.000
S3149 COD 1.605 1.583 0.000
S3149 BOD 1.043 1.052 0.000
S2785 SS 2.170 2.122 0.000
S2785 COD 1.591 1.570 0.000
S2785 BOD 1.034 1.043 0.000
S1485 SS 2.089 2.039 0.000
S1485 COD 1.532 1.508 0.000
S1485 BOD 0.996 1.003 0.000
S1552 SS 2.025 1.975 0.000
S1552 COD 1.484 1.461 0.000
S1552 BOD 0.965 0.971 0.000
S1509 SS 1.995 1.945 0.000
S1509 COD 1.463 1.439 0.000
S1509 BOD 0.951 0.957 0.000
S3789 SS 1.971 1.927 0.000
S3789 COD 1.445 1.426 0.000
S3789 BOD 0.939 0.948 0.000
S1302 SS 1.942 1.899 0.000
S1302 COD 1.424 1.405 0.000
S1302 BOD 0.925 0.934 0.000
S1411 SS 1.817 1.778 0.000
S1411 COD 1.333 1.315 0.000
S1411 BOD 0.866 0.874 0.000
S2925 SS 1.713 1.676 0.000
S2925 COD 1.256 1.240 0.000
S2925 BOD 0.816 0.824 0.000
S1598 SS 1.647 1.611 0.000
S1598 COD 1.207 1.192 0.000
S1598 BOD 0.785 0.792 0.000
S1554 SS 1.621 1.587 0.000
S1554 COD 1.189 1.174 0.000
S1554 BOD 0.773 0.780 0.000
S1486 SS 1.600 1.566 0.000
S1486 COD 1.174 1.158 0.000
S1486 BOD 0.763 0.770 0.000
S3243 SS 1.567 1.533 0.000
S3243 COD 1.149 1.134 0.000
S3243 BOD 0.747 0.754 0.000
S3783 SS 1.548 1.515 0.000
S3783 COD 1.135 1.121 0.000
S3783 BOD 0.738 0.745 0.000
S1808 SS 1.310 1.281 0.000
S1808 COD 0.961 0.947 0.000
S1808 BOD 0.624 0.630 0.000
S1640 SS 1.247 1.221 0.000
S1640 COD 0.914 0.903 0.000
S1640 BOD 0.594 0.601 0.000
S3172 SS 1.198 1.174 0.000
S3172 COD 0.879 0.868 0.000
S3172 BOD 0.571 0.577 0.000
S3784 SS 1.197 1.172 0.000
S3784 COD 0.878 0.867 0.000
S3784 BOD 0.570 0.577 0.000
S3099 SS 0.924 0.906 0.000
S3099 COD 0.677 0.670 0.000
S3099 BOD 0.440 0.445 0.000
S1543 SS 0.591 0.580 0.000
S1543 COD 0.433 0.429 0.000
S1543 BOD 0.281 0.285 0.000
S1502 SS 0.479 0.471 0.000
S1502 COD 0.351 0.348 0.000
S1502 BOD 0.228 0.231 0.000
S1484 SS 0.475 0.466 0.000
S1484 COD 0.348 0.345 0.000
S1484 BOD 0.226 0.229 0.000
S3101 SS 0.457 0.448 0.000
S3101 COD 0.335 0.332 0.000
S3101 BOD 0.217 0.220 0.000
S2787 SS 0.253 0.249 0.000
S2787 COD 0.186 0.184 0.000
S2787 BOD 0.120 0.122 0.000
S3171 SS 0.202 0.199 0.000
S3171 COD 0.148 0.147 0.000
S3171 BOD 0.096 0.098 0.000
```