在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的操作可能会导致同一个变量的结果不一致。通过修改这些强制转换的操作可以有效的减少截断误差所造成的影响。

转载于:https://www.cnblogs.com/WaterInfor/p/3590193.html

SWMM代码移植到64位平台相关推荐

  1. 转载】将32位代码向64位平台移植的注意事项

    转载]将32位代码向64位平台移植的注意事项 新近的64位平台在二进制上与32位应用程序兼容,这意味着可以非常简单地移植现有的程序.许多目前在32位平台上运行良好的程序也许不必移植,除非程序有以下要求 ...

  2. 使用VS在64位平台下编译代码,生成64位dll

    最近要把一个之前在32位平台下编译的项目改成64位平台,之前从来没搞过关于64位的东西,所以到处查资料,所幸搞成功了,把过程记录一下,防止以后忘记. 首先声明:64位平台无法直接调用32位dll,32 ...

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

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

  4. 将程序移植到64位Windows

    作者:Goooder 简介:本文对如何将32位Windows程序平滑的支持和过渡到64位Windows操作系统做出了一个简单而系统的介绍.包括对于64位操作系统的版本,编程模型,一些移植原则甚至包括对 ...

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

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

  6. 64位ie加载java失败_java-无法在AMD 64位平台上加载IA 32位.dll

    java-无法在AMD 64位平台上加载IA 32位.dll 我正在尝试通过此页面上的JNI包装器使用Java中的SVMLight: static { System.loadLibrary(" ...

  7. 32/64位平台printf uint64的方法

    在32位平台 typedef unsigned long long int  uint64_t; 在64位平台 typedef unsigned long int   uint64_t; 不同的typ ...

  8. 【Elasticsearch】请在64位平台上使用Lucene的MMapDirectory

    1.概述 翻译:请在64位平台上使用Lucene的MMapDirectory 不要害怕–可以澄清一些常见的误解 从3.1版开始,Apache Lucene和Solr在64位Windows和Solari ...

  9. uint64_t 头文件 linux,32/64位平台printf uint64的方法

    在32位平台 typedef unsigned long long int  uint64_t;在64位平台 typedef unsigned long int  uint64_t; 不同的typed ...

  10. 百度地图android兼容,Android百度地图SDK无法支持64位平台完美解决方案

    首先强调下,百度地图早已经处理了对64位平台的支持,而且现在很多手机都用64位处理器了,而且很多应用使用百度地图sdk都没有问题,那么问题就是我们没有使用好百度地图了. 最近开发项目时候遇到一个问题, ...

最新文章

  1. Python 技巧篇-官方网站打不开的情况下通过官方获取最新python安装包方法
  2. OpenCV的AdaptiveThreshold函数
  3. H5 页面列表缓存方案
  4. Java类集-list
  5. java lock可重入_Java源码解析之可重入锁ReentrantLock
  6. 数据产品-数据可视化工具Excel之数据透视表
  7. HDU 4707 Pet 邻接表实现
  8. uln2003驱动蜂鸣器_电路设计:一种步进电机驱动器ULN2003的应用
  9. TwinCAT3入门教程2-程序工程创建
  10. 南水北调工程简介及线路图
  11. 打开GTA 5竟要跑19.8亿次if语句!黑客嘲讽R星代码烂,修改后直接省70%加载时间...
  12. ADXL345实现功能全面的计步器
  13. 自制一个 LoRa PM2.5 监测器
  14. JAVA实现 PDF转换 常用工具类(html转PDF、PDF添加页码、PDF文件下载、PDF添加印章或者水印)
  15. [Squirrel基础]-- squirrel安装(通过Phoenix连接 HBase)
  16. HTML5 canvas 240行代码实现粒子漩涡特效
  17. PTA 7-2 构建下三角矩阵 (15分) 非得用vector
  18. 【大数据】一堆大数据名词
  19. Python地理数据处理 六:使用OGR过滤数据
  20. 营销新套路:冒充腾讯云 阿里云客服打电话

热门文章

  1. 14-英伟达NVIDIA显卡驱动下载与安装
  2. WPS 2000使用技巧点滴
  3. HTML基础入门 第1天课堂笔记
  4. 兄弟們,彈鋼琴不是只有有錢人可以玩的
  5. 管家婆普及版_昆明逸马软件 — 管家婆普及版新手入门指南
  6. MATLAB GBK编码
  7. python 爬取百度日历
  8. HttpSession介绍
  9. EditPlus文本编辑器,中文与破解实战
  10. fastboot下载慢的一种原因