武理排水管网模拟分析系统应用专题1:开发环境设置(Windows操作系统)

1 武理排水管网模拟分析系统简介

武理排水管网模拟分析系统是基于SWMM深度二次开发的成果。其一维水力模型以SWMM为基础,利用C++对SWMM源代码进行了面向对象封装. 实现一个对象即是一个排水模型, 并且扩展了水动力计算模块使其支持一维、二维耦合水动力 计算,可以将其与SWEsolver模块配合实现城市排水管网水文水动力耦合模拟。在网络分析及结果分析方面也提供了更加丰富的功能。武理排水管网模拟分析系统本身是一个二次开发平台,可以利用该平台实现桌面程序的开发以及webapi的开发。

2 软件内容简介

软件托管在码云上,软件下载地址,以压缩文件下载后进行解压缩,其中有两个文件夹:software和Benchmarks。software是软件的主要内容,Benchmarks是用于检验模拟结果的案例。

2.1 software文件夹内容

2.1.1 bin文件夹

bin文件夹里面是编译后的成果以及运行辅助文件,

2.1.1.1 Debug及Release文件夹

保存了Debug及Release编译成果。

  • SWMMCPP.dll为一维水力模拟模块;
  • SweSolver.dll为二维水力模拟模块;
  • SweSolver_cuda.dll为使用CUDA架构的二维水力模拟模块,可以在配备‌NVIDIA GPU‌的设备上提高二维计算的效率;
  • Coupler.dll为一二模拟耦合器,负责一二维模型间数据交换;
  • SwmmWrapper.dll及SweWarpper.dll,整个软件采用C++开发,因此采用C++使用该平台没有问题,如果想使用C#进行开发需要提供相应的适配函数,该两个模块提供了C#调用的适配函数;
  • swmmTest.exe,SweCalling.exe,SweCalling_cuda.exe为通过命令调用计算模块的工具。
2.1.1.2 gdal-dev以及share文件夹

这两个文件夹包含了gdal模块运行时所需文件,与开发无关。需要将gdal-dev文件夹路径设置到环境变量path中,将share中的proj文件夹路径设置到环境变量的PROJ_LIB变量中。设置环境变量的工作可以通过双击envset.bat文件实现。也可以将该两个文件夹内容拷贝至开发成果所在运行目录中。

2.1.2 include文件夹

开发过程中需要用到的头文件

2.1.3 lib文件夹

库文件

2.1.4 doc文件夹

开发帮助文档

2.1.5 tutorial文件夹

开发教学实例

2.2 Benchmarks文件夹内容

该文件夹中保存了一些经典的二维浅水方程求解案例,可以通过案例结果展示计算模块的计算精度。

3 项目开发

按照上面内容下载软件,设置环境变量成功后,可以双击运行swmmTest.exe,如果出现如下结果则说明开发平台可用。

输入quit退出程序.接下来以Visual Studio2022为开发环境演示创建C++项目并使用武理排水管网模拟分析系统进行模拟计算.

3.1 新建项目

新建C++空项目

在项目中添加main.cpp文件

项目配置属性->常规->C++语言标准:选择"ISO C++17 标准 (/std:c++17)"或者更高版本

项目配置属性->高级->字符集:选择"使用 Unicode 字符集"

项目配置属性->C/C+±>常规->附加包含目录:添加software/include中的5个文件夹

项目配置属性->链接器->常规->附加库目录:添加software/lib文件夹

项目配置属性->链接器->输入->附加依赖项:

  • 进行一维模拟,添加SWMMCPP.lib
  • 进行耦合模拟,添加SWMMCPP.lib, SWEsolver.lib和gdal_i.lib
  • 进行使用CUDA架构的耦合模拟,添加SWMMCPP.lib, SWEsolver_cuda.lib和gdal_i.lib

3.2 添加代码

在main.cpp中添加如下代码

cpp 复制代码
#include "Iswmm_simu.h"
#include "swmm_cs.h"
int main()
{
	ISwmmSimulation* pswmm = nullptr;
	if (GetSwmmSimulation((void**)&pswmm) == 0)
		printf("create swmm simulation interface successfully\n");
	else
		return 0;
	//inp文件路径,替换为你的inp所在位置
	std::string inpFilePath = "C:/Baiduyun/program/HTwater/software/tutorial/exp_swmmcpp_calling/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");
	int err = pswmm->swmm_run(inpFilePath.data(), rptFilePath.data(), outFilePath.data());
	if (err == 0)
		printf("swmm_run successfully\n");
	else
		printf("swmm_run failed with error code is %d\n", err);
	//释放资源
	ReleaseSwmmSimulation((void*&)pswmm);
	return 1;
}

3.3 编译运行

编译运行后得如下结果

相关推荐
05候补工程师28 分钟前
【ROS 2 具身智能】Gazebo 仿真避坑指南:从“幽灵机器人”到传感器数据流打通
人工智能·经验分享·笔记·ubuntu·机器人
生而为虫2 小时前
Claude Code 最新版安装教程(Windows/Mac/Linux 全平台) 面向普通用户的 Claude Code 安装与模型接入指南
linux·windows·macos
DevilSeagull2 小时前
Windows 批处理 (Batch) 编程: 从入门到入土. (一) 基础概念与环境配置
开发语言·windows·后端·batch·语言
CyL_Cly3 小时前
Parsec(parsec安卓/windows/macos下载)
windows
其实秋天的枫3 小时前
2026年初中英语大纲词汇表1600词
经验分享·pdf
2601_958320574 小时前
【小白零基础上手 】钉钉内部机器人接入 OpenClaw 完整流程讲解(含安装包)
人工智能·windows·机器人·钉钉·open claw·open claw安装
love530love4 小时前
f2 项目(多平台的作品下载与接口数据处理)源码部署记录
人工智能·windows·f2
许长安5 小时前
protobuf 使用详解
c++·经验分享·笔记·中间件
生而为虫5 小时前
在VScode中使用Claude Code agent并配置模型(仅mac电脑实际操作,windows电脑未实际操作如有问题可留言)
windows·vscode·macos
叶小鸡5 小时前
Java 篇-项目实战-天机学堂(从0到1)-day10
windows·microsoft