SWMM模型代码LID(Low Impact Development)模块分析
LID 英文的全称是Low Impact Development,是20世纪90年代末发展起的暴雨管理和面源污染处理技术,旨在通过分散的,小规模的源头控制来达到对暴雨所产生的径流和污染的控制,使开发地区尽量接近于自然的水文循环。
LID 低影响开发是一种可轻松实现城市雨水收集利用的生态技术体系,其关键在于原位收集、自然净化、就近利用或回补地下水。
主要包含:生态植草沟、下凹式绿地、雨水花园、绿色屋顶、地下蓄渗、透水路面。
SWMM模型LID部分的代码在lid.c 和lid.h文件中,
SWMM模型中支持的LID措施类型包含了五种:BIO_CELL ( bio-retention cell 生物截留单元) , INFIL_TRENCH ( infiltration trench 渗透沟), POROUS_PAVEMENT( porous pavement 透水铺装), RAIN_BARREL( rain barrel 雨水桶) ,VEG_SWALE( vegetative swale 植被浅沟). 类型定义位于lid.c文件中。 如果需要增加自定义的类型可以在lidTypes 枚举类型中增加。
enum LidTypes {BIO_CELL, // bio-retention cellINFIL_TRENCH, // infiltration trenchPOROUS_PAVEMENT, // porous pavementRAIN_BARREL, // rain barrelVEG_SWALE // vegetative swale }
每种LID措施在模型计算过程最多含有5层。分别是SURF,SOIL,STOR,PAVE,DRAIN。 定义在lid.c中
enum LidLayerTypes {SURF, // surface layerSOIL, // soil layerSTOR, // storage layerPAVE, // pavement layerDRAIN}; // underdrain system
模型开始计算前,在Project.c文件中根据INP文件的输入创建lid objects。代码位于 Project.c文件createObjects函数中。
// --- create LID objects //(5.0.019 - LR)lid_create(Nobjects[LID], Nobjects[SUBCATCH]); //(5.0.019 - LR)
validateLidProc函数对每个lid措施的参数进行校验,如果参数出错会打印异常,这些异常就是在SWMM模型运行时候经常出现的,比如和LID措施相关的错误:
1 //// Error messages added for SWMM5 LID edition. //// //(5.0.019 - LR) 2 #define ERR183 "\n ERROR 183: no type specified for LID %s." 3 #define ERR184 "\n ERROR 184: missing layer for LID %s." 4 #define ERR185 "\n ERROR 185: invalid parameter value for LID %s." 5 #define ERR186 "\n ERROR 186: invalid parameter value for LID placed in Subcatchment %s." 6 #define ERR187 "\n ERROR 187: LID area exceeds total area for Subcatchment %s."
参数校验主要时候检查每个LID措施是否有相应的层。另外还会对一些参数的大小进行比较,比如萎蔫点的值应当小于田间持水量的值等。
//... check pavement layer parametersif ( LidProcs[j].lidType == POROUS_PAVEMENT ){if ( LidProcs[j].pavement.thickness <= 0.0 || LidProcs[j].pavement.kSat <= 0.0 || LidProcs[j].pavement.voidFrac <= 0.0|| LidProcs[j].pavement.voidFrac > 1.0|| LidProcs[j].pavement.impervFrac > 1.0 )report_writeErrorMsg(ERR_LID_PARAMS, LidProcs[j].ID);}//... check soil layer parametersif ( LidProcs[j].soil.thickness > 0.0 ){if ( LidProcs[j].soil.porosity <= 0.0 || LidProcs[j].soil.fieldCap >= LidProcs[j].soil.porosity|| LidProcs[j].soil.wiltPoint >= LidProcs[j].soil.fieldCap|| LidProcs[j].soil.kSat <= 0.0|| LidProcs[j].soil.kSlope < 0.0 )report_writeErrorMsg(ERR_LID_PARAMS, LidProcs[j].ID);}//... check storage layer parametersif ( LidProcs[j].storage.thickness > 0.0 ){
完成了LID措施的参数校验后,开始进行循环计算。
getLidOutflow函数中计算每个LID措施在单位面积上的出流。在getLidOutflow函数中有fluxRates这个变量,这是一个函数指针,通过这个函数指针,根据每个LID措施的类型,指向某个类型的计算函数。这样保证每个LID措施调用的计算方式都是一致的。
//... determine which flux rate function to useswitch (theLidProc->lidType){case BIO_CELL: fluxRates = &biocellFluxRates; break;case INFIL_TRENCH: fluxRates = &trenchFluxRates; break;case POROUS_PAVEMENT: fluxRates = &pavementFluxRates; break;case RAIN_BARREL: fluxRates = &barrelFluxRates; break;case VEG_SWALE: fluxRates = &swaleFluxRates; break;
完成计算后,返回单位面积上的出流。
参考链接:http://www2.epa.gov/science-and-technology/water
http://gp.zhulong.com/topic_LID.html
转载于:https://www.cnblogs.com/WaterInfor/archive/2013/02/02/2890010.html
SWMM模型代码LID(Low Impact Development)模块分析相关推荐
- SAP低代码开发(Low Code Development)解决方案的一些使用截图
- SAP云平台上的Low Code Development(低代码开发)解决方案
Jerry之前曾经陆续写过一些文章,介绍SAP各种开发工具和开发平台: 那些年我用过的SAP IDE SAP智能机器人流程自动化解决方案 如何使用SAP Intelligent Robotic Pro ...
- 水文模型有哪些?SWAT模型、VIC模型、HEC模型、HSPF模型、HYPE模型、SWMM模型、FVCOM模型、Delft3D模型等应用
目录 ㈠ 从小白到精通SWAT模型学习建模方法.实例应用.高级进阶 ㈡ R+VIC模型融合实践技术应用及未来气候变化模型预测 ㈢ HEC-RAS一维.二维建模方法及实践技术应用 ㈣ HEC-HMS水文 ...
- python灰色模型代码_几行代码搞定ML模型,低代码机器学习Python库正式开源
机器之心报道 机器之心编辑部 PyCaret 库支持在「低代码」环境中训练和部署有监督以及无监督的机器学习模型,提升机器学习实验的效率. 想提高机器学习实验的效率,把更多精力放在解决业务问题而不是写代 ...
- 苏建林DGCNN模型代码详解
1.说明 以下代码为苏神参加百度信息抽取比赛提出的DGCNN模型代码,其源码基本是没有注释的,所以本文对大部分代码做了注释,可能有不对的地方,可以指出.另一个就是对keras3.x版本下Attenti ...
- 【CSS】课程网站 Banner 制作 ① ( Banner 栏测量 | Banner 盒子模型代码 | 代码示例 )
文章目录 一.Banner 栏测量 1.盒子模型尺寸测量 2.背景测量切图 二.Banner 盒子模型代码 1.HTML 标签结构 2.CSS 样式 3.显示效果 绘制下图矩形框内容 : 一.Bann ...
- php kingcms 模型调用,KingCMS 中模板、模块、模型区别
模板 就是前台网页的基础样子,生成前台网页时,会根据模板向其中填充数据库中的数据,以显示一个具有特定样子.具有特定数据的网页.在 KingCMS 2009 版本中,模板位于 template 文件夹. ...
- Bringing Old Photos Back to Life模型代码分析1(数据载入部分)
(1)Bringing Old Photos Back to Life原理和测试 (2) Bringing Old Photos Back to Life模型代码分析1(数据载入部分) Bringin ...
- Python 调用 SCIP 求解器的选址模型代码示例
本文介绍 Python 语言调用 SCIP 求解器,求解选址模型的代码示例. 安装 SCIP 和 PySCIPOpt 安装 SCIP 求解器的教程: SCIP | 数学规划求解器SCIP超详细的使用教 ...
- 2016年大数据Spark“蘑菇云”行动代码学习之AdClickedStreamingStats模块分析
2016年大数据Spark"蘑菇云"行动代码学习之AdClickedStreamingStats模块分析 系统背景:用户使用终端设备(IPAD.手机.浏览器)等登录系统,系 ...
最新文章
- AB1601读触摸芯片ASC0106的IIC波形图
- CVE-2021-29454——Smarty模板注入
- [css] 说说你对table-layout的理解,它有什么运用场景?
- Shell shift的使用方法
- Intellij idea 自动生成serialVersionUID
- hdu_3555 bomb
- Unity IOC简单认知
- PHP数据处理:合并数据、详情数据
- STM32——电容触摸按键
- web前端仿网易云官网
- 你们要的日文AI实时字幕来了,谷歌浏览器VS小白浏览器AI大比拼
- 分布式存储Ceph之PG状态详解
- dos命令、find、findstr、ping、nbtstat、netstat、net、at、ftp、telnet、tasklist、taskkill、netsh...
- 理解浏览器的历史记录
- linux修改时区时间est->cst
- Quartus II实验二 运算部件实验:并行乘法器
- android 跳转oppo应用中心_Android 遍历手机应用,跳转应用市场详情页面
- 【PHP项目部署一】PHP环境配置
- 腾讯QQ团队开源分布式后台服务引擎msec
- 不知道你有没有听说过所谓编程知识也是有半衰期的?