本期内容将基于FastCAE源码的个性化开发,着重介绍个性化功能要求与技术实现方法。抛砖引玉,供各位参考。
基于FastCAE源码的个性化定制开发是一种灵活度较高的定制开发方式,能够实现复杂的个性化功能,也能够对FastCAE的基础功能进行修改。本文以中算电磁仿真软件作为项目介绍案例,主要涉及到前后处理显示以及GMSH网格划分的相关个性化优化操作。
![](https://i-blog.csdnimg.cn/blog_migrate/454fb31259978946819edfcfded89f24.png)
简易F22模型的电磁反射效果图
中算电磁仿真软件基于FastCAE开发,并对部分功能进行修改与完善,集成其提供的电磁求解计算程序,形成一款完整的软件,并支持后续迭代。该软件能够实现对飞行器电磁反射特性的分析。
![](https://i-blog.csdnimg.cn/blog_migrate/b62f0ecdf3c13381d8404f3f51e44a5c.png)
在本案例中,针对求解器的特点和算例的数据规模,需要在网格划分、前处理渲染功能与渲染效率,以及后处理数据可视化效果上做出个性化定制。
1. 网格区分颜色渲染
个性化需求
网格要求能够设置不同的颜色进行区分渲染,同时在树形菜单点击相应的节点时能够高亮组件对象。
解决方法
通过对网格渲染模块的重构,为每一个单元添加颜色的属性标记。
问题难点
交互渲染时每一个网格单元的颜色判断逻辑。
效果展示
![](https://i-blog.csdnimg.cn/blog_migrate/e35bf004f442f00a73314dd6045e8dff.png)
2.网格渲染效率提升
问题描述
前处理网格在指定颜色时,渲染效率变慢,主要原因是遍历网格单元,修改属性标记,遍历的操作耗时很长。
解决方案
采用OpenMP单机多线程并行的方式进行加速。
优化结果
七核并行状态下,运行时间缩短80%。
部分代码展示
![](https://i-blog.csdnimg.cn/blog_migrate/7e30c5616a76b5c754aef9e49c48da9e.png)
3.网格划分跨越边界
问题描述
导入的几何模型,存在很多细长的面片,在网格划分时候会导致网格质量很差,需要在这些面的边界位置跨越边界。
解决方案
采用Gmsh的Compond功能,该功能通过可以将曲线或曲面指定为一个整体,在网格划分时不将交界点或者交界线作为采点硬约束,能够避免狭长面片带来的网格质量问题。软件中可根据用户交互自动识别Compond对象,生成Geo脚本。
难点
需要根据模型的拓扑关系,借鉴波前法思路,自动遍历检索生成可以合并的线的编号。
效果展示
![](https://i-blog.csdnimg.cn/blog_migrate/196f6136a66dd0ccb37bc7179cc96e4c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/13f2588fdf0fde0ab83fe520ff4cd3a5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9227d32ac150e6d7cf090e1fc26c9c66.png)
4.几何模型层次化显示
个性化需求
要求几何模型有solid-shell-face-edge的层次化结构,同时点击对应的节点能够对渲染模型进行高亮显示。
解决方案
对几何读取与树形结构以及渲染、选取等部分进行重构,满足其要求。
效果展示
![](https://i-blog.csdnimg.cn/blog_migrate/a78e2d2f88b99276281cd4587cbf9744.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c65af0175e7d36ef7cac251f18dbeb0a.png)
5. 后处理个性化定制
问题描述
后处理对二维与三维的要求较高,要求XY图,极坐标图,二维云图,三维云图等,且个性化要求较强。
解决方法
采用QWT开源库对后处理代码进行重构,针对其个性化功能进行专门的定制开发。除了QWT之外,还可以使用QCustomplot与QChart库实现相似的功能,但二者均为GPL协议,对软件发布并不友好。
效果展示
![](https://i-blog.csdnimg.cn/blog_migrate/94dc32023671d18fd01068414162edab.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fba0d100278df847ea0dce026a142918.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7635ec9d93172ac84c663ccefd685599.png)
总结
针对求解器的特点和算例的数据规模,本文案例在网格划分模块个性化定制,给网格划分颜色区域的过程中发现了新的问题,针对渲染效率低的问题进行改进以满足需求。除此之外还对于网格的边界和层次结构进行优化。
基于已有的后处理结果提取程序,对后处理模块进行代码重构,完成定制开发,积累了关于后处理个性化定制的经验。