SWMM代码移植到64位平台
在32位平台上运行SWMM模型,当节点数量到达60万以上的时候,模型运行占用内存接近1.85G的时候就会因为内存不够而无法计算。这种情况还是单独运行SWMM.exe的时候出现,如果采用SWMM.DLL的方式来计算的话,加载DLL的主程序还需要占用一定的内存,那么留给模型的内存就更少了。出现这个问题的根本原因还是由于32位系统单个进程4G内存的限制导致的。想解决大量节点的计算问题就需要考虑将模型移植到64位平台。 目前EPA发布的最新的SWMM代码是5.0.022版本。移植就采用该版本。 在VS2010编译器中按照win32的设置来配置X64的编译选项。配置编译选项问题不大,主要注意几个选项,优化开关,浮点运算等。 完成配置后,就可以编译成为64位版本的计算引擎。
对比64位和32位模型的计算结果,发现在Steady Flow 的计算条件下,2中模型的计算结果一致,但是在Kinematic Wave 和 Dynamic Wave的计算条件下,模型的计算结果偏差较大,特别是对于Dynamic Wave,某些节点的计算结果,比如水深,水头等的偏差达到20%,甚至是50%,并且该结果不是在零值附近。通过调试和跟踪代码,发现对浮点数的处理是导致该问题出现的原因之一,在模型中有不少从double 转换为 float的操作,该操作导致变量的截断误差。因为在32位平台和64位平台下,从double 转换为 float的操作可能会导致同一个变量的结果不一致。通过修改这些强制转换的操作可以有效的减少截断误差所造成的影响。
SWMM代码移植到64位平台的更多相关文章
- <转>32位移植到64位 注意事项
32bit-64bit porting work注意事项 64位服务器逐步普及,各条产品线对64位升级的需求也不断加大.在本文中,主要讨论向64位平台移植现有32位代码时,应注意的一些细小问题. 什么 ...
- [百度空间] [转]将程序移植到64位Windows
from : http://goooder.bokee.com/2000373.html (雷立辉 整理) 简介:本文对如何将32位Windows程序平滑的支持和过渡到64位Windows操作系统做出 ...
- 【转】将 Linux 应用程序移植到 64 位系统上
原文网址:http://www.ibm.com/developerworks/cn/linux/l-port64.html 随着 64 位体系结构的普及,针对 64 位系统准备好您的 Linux® 软 ...
- 64位平台C/C++容易犯的错误
64位平台的介绍 IA-64 is a 64-bit microprocessor architecture developed by Intel and Hewlett Packard compa ...
- 手把手教你写Windows 64位平台调试器
本文网页排版有些差,已上传了doc,可以下载阅读.本文中的所有代码已打包,下载地址在此. ------------------------------------------------------- ...
- 64位平台C/C++开发注意事项(转载)
转自http://coolshell.cn/articles/3512.html 在http://www.viva64.com/en/l/上例出了28个在64位平台上使用C/C++开发的注意事项,对于 ...
- 64位平台支持大于2 GB大小的数组
64位平台支持大于2 GB大小的数组 64位平台.NET Framework数组限制不能超过2GB大小.这种限制对于需要使用到大型矩阵和向量计算的工作人员来说,是一个非常大问题. 无论RAM容量有多大 ...
- 64位平台C/C++开发注意事项
在http://www.viva64.com/en/l/上例出了28个在64位平台上使用C/C++开发的注意事项,对于进入64位时代的程序员应该去看看这28个事项,这些英文读物对于有C/C++功底的朋 ...
- NET Framework 4.5新特性 (三)64位平台支持大于2 GB大小的数组
64位平台.NET Framework数组限制不能超过2GB大小.这种限制对于需要使用到大型矩阵和向量计算的工作人员来说,是一个非常大问题. 无论RAM容量有多大有多少,一旦你使用大型矩阵和向量计算工 ...
随机推荐
- SQL小细节
平时有些小细节,不留意的话很容易得到错误的答案,我们来看下下面的代码,看看你是否能答对呢? ) ,) SELECT @str = '中国CH',@info='MyTest' SELECT [字符串]= ...
- PL/SQL 访问网页(get or post方式)
在我们开发plsql程序的过程中,有时候难免要访问一些外部网站的数据.这个时候我们就要用到utl_http包. 使用utl_http包前需要注意的是,当前的用户下是否有访问外部网络的权限. 如下是自己 ...
- 利用反射把查询到的Table、Reader转换成List、Model
菜鸟一枚,入园已有两年三个月,这还是第一次写博客,请各位大神斧正. 这是我写的一个工具类,通常我们从数据库查询到一个 DataReader 或者是 一个 Table , 想要转换成 一个 lis ...
- HDU3591找零,背包
题目大概的意思就是:小强用硬币买东西,硬币有N种,面值为Vi,店家有各种硬币都有无限个,而小强只有Ci个(分别对应Vi) 问最小交易硬币数,就是一个有找零的背包问题啦. 我的上一篇博客跟这hdu359 ...
- Introduction to object
1 Declarations VS definitions (Page 81) declarations: This function or variable exists somew ...
- DB2 WIN7 WIN8在指示的文件系统中找不到数据库目录
前言:win7下一些软件的不正常,跟win7的权限有很大关系. 在win7下安装db2 9.7客户端后,在cmd中运行db2cmd启动clp,输入db2的任何命令都显示:SQL ...
- yii下多条件多表组合查询以及自写ajax分页
多条件组合查询主要用到yii的CDbCriteria,这个类很多oem框架都有,非常好用. 前台表单 前台查询表单效果是这样的,多个条件组,每个组里放多个input,name为数组.当任何一个复选框被 ...
- LightOj_1274 Beating the Dataset
题目链接 题意: 给一个文档, 这个文档由yes .no 组成, 共有s个byte, 共有n个yes.no. 假设yes的个数为yes_num, no的个数为no_num. 将这n个数进行排列, 对于 ...
- 打log
如果项目上过线的话,那你一定知道Log是多么重要. 为什么说Log重要呢?因为上线项目不允许你调试,你只能通过Log来分析问题.这时打一手好Log的重要性绝不亚于写一手好代码.项目出问题时,你要能拿出 ...
- struts2 拦截器1
action invoke前会调用,invoke后会调用 public class FirstInterceptor extends AbstractInterceptor{ @Override pu ...