在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位平台的更多相关文章

  1. <转>32位移植到64位 注意事项

    32bit-64bit porting work注意事项 64位服务器逐步普及,各条产品线对64位升级的需求也不断加大.在本文中,主要讨论向64位平台移植现有32位代码时,应注意的一些细小问题. 什么 ...

  2. [百度空间] [转]将程序移植到64位Windows

    from : http://goooder.bokee.com/2000373.html (雷立辉 整理) 简介:本文对如何将32位Windows程序平滑的支持和过渡到64位Windows操作系统做出 ...

  3. 【转】将 Linux 应用程序移植到 64 位系统上

    原文网址:http://www.ibm.com/developerworks/cn/linux/l-port64.html 随着 64 位体系结构的普及,针对 64 位系统准备好您的 Linux® 软 ...

  4. 64位平台C/C++容易犯的错误

     64位平台的介绍 IA-64 is a 64-bit microprocessor architecture developed by Intel and Hewlett Packard compa ...

  5. 手把手教你写Windows 64位平台调试器

    本文网页排版有些差,已上传了doc,可以下载阅读.本文中的所有代码已打包,下载地址在此. ------------------------------------------------------- ...

  6. 64位平台C/C++开发注意事项(转载)

    转自http://coolshell.cn/articles/3512.html 在http://www.viva64.com/en/l/上例出了28个在64位平台上使用C/C++开发的注意事项,对于 ...

  7. 64位平台支持大于2 GB大小的数组

    64位平台支持大于2 GB大小的数组 64位平台.NET Framework数组限制不能超过2GB大小.这种限制对于需要使用到大型矩阵和向量计算的工作人员来说,是一个非常大问题. 无论RAM容量有多大 ...

  8. 64位平台C/C++开发注意事项

    在http://www.viva64.com/en/l/上例出了28个在64位平台上使用C/C++开发的注意事项,对于进入64位时代的程序员应该去看看这28个事项,这些英文读物对于有C/C++功底的朋 ...

  9. NET Framework 4.5新特性 (三)64位平台支持大于2 GB大小的数组

    64位平台.NET Framework数组限制不能超过2GB大小.这种限制对于需要使用到大型矩阵和向量计算的工作人员来说,是一个非常大问题. 无论RAM容量有多大有多少,一旦你使用大型矩阵和向量计算工 ...

随机推荐

  1. Java环境变量批处理文件

    缘由 公司需要配置大量的虚机,每个上面都要求安装 JAVA,配置环境变量,所以要求写一个批处理,一键配置环境变量 方式 网上找到了3中方式, 第一种是使用 set设置环境 变量,但是这样设置的只是临时 ...

  2. jquery中mouseout和mouseleave 事件的区别

    今天用jQuery写了一个选项卡的效果,用mouseout事件控制了鼠标的移出,结果发现在移出时div会发生闪动,于是网上各种查资料觉得用mouseleave更合适一些,

  3. JavaScript 高阶函数 + generator生成器

    map/reduce map()方法定义在JavaScript的Array中,我们调用Array的map()方法,传入我们自己的函数,就得到了一个新的Array作为结果: function pow(x ...

  4. js学习--DOM操作详解大全 前奏(认识DOM)

    一 . 节点属性 DOM 是树型结构,相应的,可以通过一些节点属性来遍历节点树: 方法 说明 nodeName 节点名称,相当于tagName.属性节点返回属性名,文本节点返回#text.nodeNa ...

  5. table 添加右键,并获取选中行信息

    import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java. ...

  6. apache日志文件 accesslog

    因为想要看到apache的日志记录用户请求某个页面所花的时间,需要添加额外参数才会记录,所以临时查了下哦..记下来了 在httpd.conf里可以看到一行这样的配置 LogFormat "% ...

  7. CSS and JavaScript Bundling and Minification in ASP.NET 4.5

    ASP.NET 4.5 includes a new feature to minify and bundle CSS and JavaScript within your web applicati ...

  8. 【C语言】重定向和文件

    重定向和文件 一.相关基础知识 重定向:在计算机领域,重定向是大多数命令行解释器所具有的功能,包括各种可以将标准流重定向用户规定地点的Unix shells. 输入重定向:可以使程序能够使用文件代替键 ...

  9. MongoDB在windows服务器安装部署及远程连接MongoDB

    (.\是表示在服务器的windows powershell下需要 表示信任此命令才会执行不然会报错,自己电脑上使用时可去掉.\) 在本地使用都不需要开启权限而在服务器上需要开启安全模式所以需要在原本的 ...

  10. CSS样式的优先级

    1.相同权值情况下,CSS样式的优先级总结来说,就是--就近原则(离被设置元素越近优先级别越高): 内联样式表(标签内部)> 嵌入样式表(当前文件中)> 外部样式表(外部文件中). 2.权 ...