1、中 国 农 业 大 学 学 报2002,7(6):1015=JournalofChinaAgriculturalUniversity颗 粒 离 散 元 法 的 微 机 可 视 化 程 序 设 计杨 全 文左 树 春 徐 泳(中 国 农 业 大 学 工 程 基 础 科 学 部)收 稿 日 期:20020507国 家 自 然 科 学 基 金 资 助 项 目(19972075)杨 全 文,北 京 中 关 村 中 国 科 学 院 力 学 研 究 所,100080摘 要 以VC+6.0为 开 发 工 具,将UNIX环 境 下 的 离 散 元 程 序 进 行 了 移 植 和 改 造,研 制 出 在 微 机
2、WINDOWS环 境 下 的 离 散 元 仿 真 程 序。程 序 的 计 算 和 控 制 部 分 采 用 混 合 编 程、动 态 链 接 及 多 线 程 编 程 技 术,在 可 视 化 图 形 程 序 设 计 中 成 功 地 引 进 了OpenGL图 形 库,实 现 了 图 像 资 料 直 接 打 印 和 保 存。使 用 上 述 程 序 模拟 了 急 刹 车 情 况 下 车 载 散 体 与 车 厢 的 相 互 作 用,表 明 新 程 序 的 操 作 和 图 形 显 示 界 面 友 好,效 率 很 高。关 键 词 离 散 元 法;模 拟;可 视 化;图 形中 图 分 类 号O347.7;TP31
3、1.54VisualizedProgrammingforDiscreteElementSimulationWithPCComputersYangQuanwen,ZuoShuchun,XuYong(ColegeofApplicelEngineeringSciences,ChinaAgriculturalUniversity,Beijing100083,China)Abstract ThecodeofDiscreteElementMethodusedforsimulationofparticulatematerialswithaUNIXplatform wasrecodedandtransplan
4、tedtoPCcomputerswithWINDOWSplatform.Duringprogramming,severaladvancedtechniques,suchasmixed-languageprogramming,multithreading,dynamicallinklibrariesanddatabasewereutilized.OpenGLgraphicslibrarywasintroducedtodraw graphics,whichcanbesavedorprintedoutconveniently.Testwasdonefortheresponseofgranularma
5、terialsfiledwithinatruckcontainnerduringasuddenbreaking.Theresultshowedthatthenewprogramhasafriendlycontrolinterfaceandahighgraphingperformancewithhighcomputationalefficiency.Keywords DiscreteElementMethod;simulation;visualization;graphics离 散 元 法(DEM)是 分 析 散 体 力 学 行 为 的 新 的 数 值 方 法1。与 有 限 元 法 和 计 算
6、流 体 动 力 学类 似,图 形 程 序 设 计 同 样 是DEM编 程 的 重 要 内 容。DEM模 拟 对 散 体 在 运 动 全 过 程 的 力 学 行为 要 随 时 监 控,并 用 图 形 输 出。为 显 示 颗 粒 运 动 形 态 要 画 出 数 以 万 计 的 球 颗 粒 并 作 消 隐 计 算。国 外 多 数 离 散 元 法 模 拟 在UNIX环 境 下 的 工 作 站 进 行,稳 定 性 和 图 形 功 能 虽 好,但 硬 件和 配 套 软 件 价 格 昂 贵,在 我 国 难 以 普 及,计 算 结 果 的 统 计 分 析 还 要 借 助 微 机 完 成。与 其 形 成 鲜明
7、对 照 的 是 微 机 软 硬 件 技 术 的 快 速 发 展,包 括 计 算 速 度 的 迅 速 提 高、内 外 存 容 量 的 扩 大 以 及 图形 加 速 技 术 的 发 展 等,这 一 切 为 在 微 机 上 完 成 较 大 规 模 的 科 学 计 算 和 图 形 处 理 开 辟 了 广 阔 前景。日 新 月 异 的 微 机 系 统 和 应 用 软 件 的 发 展,使 运 算 操 作 的 管 理 和 三 维 图 形 的 绘 制 更 为 便 捷,特 别 是VC+、V-FORTRAN等 集 成 开 发 环 境 的 不 断 改 进 完 善,使 得 在 微 机 上 开 发 高 性 能离 散 元
8、 法 仿 真 软 件 包 成 为 可 能。1软 件 设 计 方 法 与 编 程 技 巧1.1采 用 混 合 编 程目 前DEM程 序 多 数 仍 使 用FORTRAN语 言 执 行 计 算,根 据 硬 件 和 系 统 软 件 调 用 不 同 图形 库,如 在SGI系 列 工 作 站 上 用C语 言 调 用OpenGL图 形 库。我 国 东 北 大 学 王 泳 嘉 等2,3研 制的 离 散 元 软 件 使 用 的 是WINDOWS环 境 下 的VC+语 言。中 国 农 业 大 学 的 离 散 元 程 序 是 从 英 国Aston大 学 引 进 的,计 算 部 分 用FORTRAN语 言编 写。作
9、 者 采 用 混 合 语 言 编 程 技 术4,5,利 用VC+优 良 的 可 视 化 开 发 环 境68和FORTRAN强 大 的 计 算 功 能,即 采 用 在WINDOWS系 统 下 适 用 的FORTRAN编 译 器(PowerStation4.0或VisualFORTRAN)将 离 散 元FORTRAN源 程 序 制 作 成 动 态 链 接 库,在VC+中 调 用 其 子 过 程 完 成 离 散 元 计 算,而 用VC+界 面 进 行 操 作。在 具 体 编 程 中FORTRAN采 用 缺 省 的 调 用 约 定,VC+采 用STDCALL调 用 约 定。使用extern“C“说 明
10、 符 使VC+放 弃 对 标 识 符 的 修 饰,协 调 两 种 编 译 环 境 的 调 用 关 系。实 际 编程 要 求 显 式 给 出 过 程 接 口,用 预 编 译 伪 指 令!MSU ATTRIVWTES声 明 过 程 和 标 识 符 属 性,其 他 过 程 尽 可 能 显 式 写 出 调 用 约 定、参 数 传 递 方 式 和 过 程 标 识 符。为 减 少 内 存 的 消 耗,采 用 动态 链 接 库,使 用 微 软 扩 展 属 性DLLEXPORT和DLLIPORT为 动 态 链 接 库 定 义 接 口,其 形 式为Y!MSU ATTRIVWTESDLLEXPORTZSWVNAM
11、E。1.利 用 多 线 程 技 术 实 现 不 间 断 计 算为 增 强 程 序 的 处 理 功 能,采 用 了 多 线 程 编 程 技 术。)前 台 主 线 程 负 责 数 据 输 入、控 制 计 算 的 过 程、图 形 显 示 和 打 印,以 及 数 据 处 理_后 台 辅 助工 作 线 程 负 责 具 体 计 算。用 以 下 方 法 创 建 一 个 辅 助 线 程YCWintreaa AbxVecinTdrea(AFX TeREADPROC pbnTdreaProfgLPVOIDpParah,intnPrioritij TeREAD PRIORITk NORMAL,WNIT nStafl
12、Simej 0,LPSEOWRITkATTRIVWTESnpSefuritiAttrsjNWLL)_2)两 线 程 通 过 信 号 机 制 互 相 通 讯,主 线 程 控 制 工 作 线 程 计 算 函 数 的 暂 停 与 继 续YWaitForSincleOopeft(pMoelqrhdEsentDrawVal,0)jWAITOVtECT0_该 函 数 可 接 受 并 响 应 主 线 程 所 设 置 的 信 号 并 进 行 相 关 的 处 理YZSenMessace(pMoelqrhdwntest,WMWSER+u5,0,0)_该 函 数 可 向 主 线 程 发 送 消 息,使 之 通 过
13、消 息 映 像 表 调 用 相 应 的 函 数。3)在 完 成 数 据 文 件 的 处 理 后,主 线 程 发 出 计 算 信 号 至 工 作 线 程,使 其 进 行 计 算 任 务 或 使 之停 止 计 算,以 便 修 改 数 据 文 件。4)计 算 结 束 后,计 算 线 程 发 出 绘 图 信 息 至 主 线 程,主 线 程 根 据 数 据 文 件 的 绘 图 命 令 绘 制 图形,然 后 发 送 计 算 结 束 信 息 至 主 线 程,主 线 程 便 可 进 行 绘 图 选 择,存 取 计 算 数 据。5)主 线 程 的 图 形 绘 制、计 算 结 果 的 处 理 和 工 作 线 程
14、的 计 算 可 以 同 时 进 行,互 不 干 涉。本 软 件 提 供 了2种 计 算 方 式Y单 步 计 算 和 多 步 重 复 计 算。第5期 杨 全 文 等Y颗 粒 离 散 元 法 的 微 机 可 视 化 程 序 设 计单 步 计 算 也 用 到 多 线 程 技 术,但 调 用 的 工 作 线 程 函 数 只 执 行1次 计 算 便 终 止 工 作 线 程,该进 程 只 剩 下 主 线 程。数 据 文 件 在 计 算 前 给 出,而 在 下 次 单 次 计 算 时 重 新 编 写 数 据 文 件。多 步 重 复 计 算 通 过 多 线 程 技 术 实 现,实 质 上 是 在 工 作 线
15、程 的 线 程 函 数 里 重 复 调 用 计 算 模块,在2次 计 算 间 隙 接 受 主 线 程 所 发 出 的 信 号,决 定 是 否 退 出 计 算,或 根 据 计 算 结 果 向 主 线 程发 出 信 号,让 主 线 程 调 用 相 应 的 函 数。DEM计 算 是 根 据 宏 指 令 数 据 文 件 执 行 的。宏 指 令 文 件 由 一 个 初 始 文 件(以Start打 头)和若 干 个 后 续 文 件(以Restart打 头)组 成。初 始 文 件 给 定 所 模 拟 的 球 和 壁 的 基 本 数 据 并 生 成 颗粒 和 壁,并 将 结 果 以 文 件 形 式 输 出。下
16、 次 计 算 时,后 续 文 件 读 入 前 次 保 存 的 结 果 文 件 继 续 计 算。作 者 的 设 计 思 路 是 初 始 数 据 文 件 的 处 理 采 用 单 线 程,后 续 文 件 的 计 算 处 理 采 用 多 线 程。1.3数 据 处 理离 散 元 模 拟 中 产 生 大 量 的 结 果 数 据,如 颗 粒 位 置 坐 标、速 度 分 量、接 触 力 分 量 等,这 些 结 果主 要 通 过 图 形 显 示 出 来。程 序 使 用DoModel类 来 接 受 结 果 数 据,并 在 文 档 类 中 建 立 一DoModel类 的 对 象,获 取 的 结 果 数 据 传 递
17、给 视 图 类,由 视 图 类 来 完 成 绘 图 功 能。处 理 流 程 见图1。图1数 据 流 程 图数 据 库视 图 类文 档 类DoModel类Gran.dl数 据 文 件程 序 使 用Access数 据 库 存 取 计 算 过 程 中 的 数 据,这 比 用 数 据 文 件 更 便 于 统 计 分 析。首 先需 建 立Access数 据 库12,其 中 域 名 的 数 据 类 型 要 与 所 保 存 的 数 据 的 数 据 结 构 相 对 应,然 后 利用ODBC驱 动 器 建 立 数 据 源,使 用CRecordset类 来 完 成 对 数 据 库 的 引 入、删 除 等 操 作。
18、2用 户 界 面2.1用 户 主 界 面 视 窗作 者 设 计 的 用 户 界 面 窗 口 参 看 图4(a)和(b),主 要 包 括 主 框 架、菜 单、对 话 框、视 图 区、数据 输 入 输 出、结 果 查 看、工 具、壁 控 制 和 图 形 缩 放 等。程 序 采 用 拆 分 窗 口,将 视 窗 分 为2个 区:框 架 视 区 和 绘 图 区。框 架 视 区 的 用 户 接 口 基 于 一个 对 话 框 模 板,作 为 视 窗 口 的 无 模 式(modeless)子 窗 口 来 创 建。必 须 确 保 对 话 框 无 边 界 无 标题,还 要 保 证 视 图 使 用 的 对 话 框
19、模 板 的 资 源ID能 够 被 传 递 给 视 窗 的 构 造 函 数-它 将 接 受资 源ID或 字 符 串 名。该 对 话 框 含 有 数 据 选 择 按 钮、绘 图 控 制 按 钮、图 形 大 小 控 制 滑 动 条 等。视 图 类 所 处 理 的 数 据 来 自 文 档 类,并 使 用 绘 图 或 文 字 输 出 的 方 式,通 过 视 图 区 显 示 数 据。视 图 类 不 但 可 以 用 来 向 用 户 提 供 数 据,还 可 用 来 处 理 由 用 户 输 入 的 数 据。例 如 接 受 输 入 数 据 来改 变 计 算 循 环 次 数,改 变 图 形 颜 色 或 选 择 绘
20、图 空 间 范 围 等。2.2用 户 交 互 操 作 界 面此 程 序 提 供2种 输 入 方 式:交 互 式(手 工)数 据 输 入(图2)和 文 件 读 取 输 入 方 式。结 果 的 输出 有 多 种 方 式,可 以 生 成 相 关 的 文 本 文 档,也 可 以 将 数 据 写 入 数 据 库。在 应 用 中 作 者 发 现,数 据量 较 大 时 将 数 据 写 入 数 据 库 更 方 便 数 据 的 处 理,在 程 序 的 设 计 中 使 用ODBC数 据 源 将 颗 粒 的各 个 数 据 写 入 数 据 库,大 大 方 便 了 对 数 据 的 提 取 和 处 理。21中 国 农 业
21、 大 学 学 报2002年图2交互式数据输入对话框3图形绘制与图形操作离散元模拟规模大的颗粒群时,其计算结果包括所有颗粒的位置、速度、力等的大量数据结果,如颗粒数为10万时,文件长度将达70Mbit以上。这些结果信息必须通过逼真的三维图形来表现,还需要将图形保存为图形文件或直接打印以备日后分析。3.1 OpenGL图形库OpenGL(OpenGraphicLibrary)是一个开放性的图形库,适于多种硬件和操作平台,可以制作经过消隐的高质量三维图像和动画,已成为新一代三维图形工业标准1315。MicrosoftVisualStudio6.0也支持OpenGL,作者在可视化程序开发时采用了这项先
22、进的图形绘制技术,用VC+调用OpenGL图形库完成绘图。3.2绘制图形的种类及特点作者研制的图形软件模块,在进行离散元模拟时所需要输出的图形的一般种类及特点如下:1)球 壁形态图 绘出某一视角的球 壁位置与形态;2)结块破碎图 颗粒群凝聚成的结块碰撞后会破碎成子结块,为区分不同的子结块,需检查颗粒的接触情况,用不同颜色显示出来;图3 OpenGL绘制的三维图形3)颗粒联系图 用形心连线连接相接触的颗粒来描述团块破碎或系统脱离情形;4)接触力线图 根据颗粒间的接触力大小和方向绘制,力的大小用不同线粗标定,其作用点以接触点为起点表示,拉力和压力用不同颜色表示;5)速度矢量图 速度矢量绘制根据空间
23、坐标变换完成,按照适当规则显示速度方向和大小。绘制上述图形时,作者根据离散元模拟的要求,运用了下述技巧:1)隐藏与透明处理 当前面的壁挡住球颗粒或力线、速度线时,可隐藏前壁或将其绘成透明壁,以便更清晰地观察后面景物与壁的相对位置。图3示出使用OpenGL绘制的透明壁里的球颗粒图形。2)分层/块涂色显示 为显示颗粒流动形态,在颗粒床形成后,按形心位置对颗粒分层涂色。在迭代中令各球31第5期 杨全文等:颗粒离散元法的微机可视化程序设计保持原颜色属性,原来同层次的球流动后的断面即可显示出来。此技巧同样适合颗粒混合过程的显示。3)局部物理因素的绘制 对于球心共面的颗粒群,用力线图可清晰地显示其细观状态
24、,而对于三维颗粒群,力线图前后重叠如乱麻,无法分析。这时也可分层显示,即通过对话框输入要查看的球的位置区间,仅绘制一薄层的物理因素,如球、力线或速度等。4)单球跟踪 根据需要全程跟踪记录典型球的运动位置或速度,只要给定该球编号,即可输出或绘制该球的位置或速度的变化情况。5)图形的缩放、旋转与移动 在程序运行中,可通过拖动鼠标实现图形旋转,操作滑动条左右移动实现图形缩放,选择菜单项实现图形的上下、前后、左右的移动。3.3信息反馈、图形打印与保存信息显示是交互式计算的重要内容。每完成一次循环,均显示出系统时间、循环次数、模拟累计时间。绘制球时,显示总颗粒数;绘制速度矢量时,显示球速的最大、最小值和
25、均值;绘制力线时,显示接触力的最大、最小值和均值以及力线条数。上述信息均可在视图区内显示或用主框架的菜单命令隐藏起来。软件具有选择图形输出功能,用户可通过界面或数据文件同时给出多个绘图命令,程序可将它们自动排序,有选择地逐个绘制。计算的启动和终止、图形移动和数据处理等均可通过菜单命令实现。由 于OpenGL与 操 作 系 统 无 关,且 未 提 供 打 印 函 数,许 多 打 印 机 驱 动 程 序 不 支 持setpixelformat()函数的回调,因此难以用MFC方法处理打印,而用抓图软件抓拍又较麻烦。作者参考有关资料,使用了一个CCaptureimage类,采用对绘图区图形像素拷贝的方
26、法来保存和打印OpenGL场景。CCaptureimage类是通过使用设备场景(DC)来捕捉指定矩形域内的图形来获取图形信息的,因而本程序具有在计算过程中随时打印和保存图形的能力,利用普通打印机便可达到优质的彩色或黑白图形效果。(a)颗粒图(b)力线图图4刹车模拟中的三维图形输出结果3.4应用实例笔者使用上述微机DEM软件模拟了在急刹车情况下,车辆装载的散体的力学响应及其对车 厢 的 作 用。模 拟 的 颗 粒 数 为6000个,粒 径0.115m,密 度1200kgm-3,刹 车 初 速 度72kmh-1,刹车时间0.8s。图4(a)和(b)分别示出模拟过程中的颗粒图和某一层的力线图。限于篇
27、幅其他图形不一一列出。41中 国 农 业 大 学 学 报2002年4结 束 语笔 者 研 制 的DEM可 视 化 程 序 是 基 于 国 情 进 行 颗 粒 离 散 元 研 究 的 技 术 准 备。使 用 实 践 表明,这 种 基 于 微 机WINDOWS平 台 的 界 面 具 有 功 能 较 完 善 和 易 于 操 作 的 优 点。多 线 程 的 应 用成 功 地 防 止 了 计 算 过 程 中 的 阻 塞,先 进 的OpenGL绘 图 技 术 使 得 三 维 图 形 的 显 示 和 操 作 快捷,图 像 逼 真。根 据 在DELL(P4/1.8G)微 机 上 的 计 算 实 践,其 计 算
28、 速 度 高 于 比 它 贵8倍 的SGI-O2工 作 站。同 时,本 软 件 的 研 制 成 功 也 为 其 他 数 值 仿 真 的 图 形 界 面 设 计 提 供 了 可 以 借 鉴的 范 例。本 研 究 得 到 叶 海 建 教 授 的 热 情 指 导 和 帮 助,谨 致 谢 意。参 考 文 献1 CundalPA,StrackODL.Adescretenumericalmodelforgranularassembles.Geotechnique,1979,29(1):47652王 泳 嘉,刘 连 峰.三 维 离 散 单 元 法 软 件 系 统TRUDEC的 研 制.岩 石 力 学 与 工
29、 程 学 报,1996,15(3):2012103王 泳 嘉,宋 文 洲,赵 艳 娟.离 散 单 元 法 软 件 系 统2D-Block的 现 代 化 特 点.岩 石 力 学 与 工 程 学 报,2000,19(增):105710604陈 启 秀,黄 彻.为 计 算 机 常 用 语 言 混 合 编 程.南 京:南 京 大 学 出 版 社,1994.3215马 瑞 民,衣 治 安.FORTRAN90程 序 设 计.哈 尔 滨:哈 尔 滨 工 业 大 学 出 版 社,19986 HolznerS.VisualC+6轻 松 进 阶.王 岚 波 等 译.北 京:电 子 工 业 出 版 社,1999.1
30、542187薛 松,杨 斌,赵 栋 伟.VisualC+6.0编 程 实 例.北 京:人 民 邮 电 出 版 社,19988康 师 友.C+面 向 对 象 程 序 设 计 简 明 教 程.北 京:西 安 电 子 科 技 大 学 出 版 社,19989 BennettD.VisualC+5开 发 人 员 指 南.徐 军 等 译.北 京:机 械 工 业 出 版 社,1997.9315910 KruglinskiDJ,WingoS,SepherdG.VisualC+6.0技 术 内 幕.第5版(修 订 版).希 望 图 书 创 作 室 译.北 京:北 京 希 望 电 子 出 版 社,84292011
31、 LeineckerRC.VisualC+5开 发 人 员 参 考 手 册.金 帆 翻 译 组 译.北 京:机 械 工 业 出 版 社,1998.12119812李 博 轩.VisualC+6.0数 据 库 开 发 指 南.北 京:清 华 大 学 出 版 社,200013贾 志 刚.精 通OpenGL.北 京:电 子 工 业 出 版 社,1998.233814彭 晓 明,王 坚.OpenGL深 入 编 程 与 实 例 揭 秘.北 京:人 民 邮 电 出 版 社,1999.475715李 微,徐 国 标.OpenGL3D入 门 与 提 高.成 都:西 南 交 通 大 学 出 版 社,1998.9812051第5期 杨 全 文 等:颗 粒 离 散 元 法 的 微 机 可 视 化 程 序 设 计