首页/文章/ 详情

手搓TexGen—机织复合材料参数化建模技术

8月前浏览646


一个执念


我研究生的小方向就是立体织物复合材料。尽管刚毕业改换到CFD领域的工作,但是我仍然对一个东西充满执念。

那就是通过代码参数化生成织物复合材料的细观模型,就像英国诺丁汉大学的TexGen那样。

尽管那时候代码水平还比较基础,但就是这个执念让我不断研究在数值仿真中网格到底应该如何表达,几何如何转换为网格,有了网格应该如何渲染,如何把复杂的织造参数和网格构建联系起来。

限于自身当时的技术能力,利用业余时间,我在一年后才勉强实现了一个简单 平面机织的的胞元网格,并且可以导入到ABAQUS中使用。但是代码运行效率很低,更复杂截面和更大尺度无法实现。

 

因为各种原因,这个工作就此搁置了。

直到前几年,我导师请我帮忙编一个机织材料的性能预测软件。我自觉编程和计算机图形水平提升不少,决定把前面的工作捡起来。

需求牵引,先把最难的参数化建模搞定。

轨迹参数化建模与力学性能预测

用代码做参数化建模最难的在哪呢?

首先是要建立好纱线之间的接触关系,因为这是几何的约束条件。这个约束条件,涉及到经纬纱的截面形状、尺寸、纱线间距。最终得到的基础轨迹线见下图的红线,这个基础轨迹线十分重要,通过旋转、平移就可以获得更大的尺寸和数量。

如果一切都是参数,那么经纱跨过纬纱的个数、穿越的层数都是参数化的,这就要求基础轨迹线的数学表达非常合理且高效。

第二难点,接截面随轨迹的变化。我们假定截面时时刻刻垂直于当地的轨迹,那就像水管那样,随形而动。

实际上,到了这一步,基础的建模问题就接近解决了。

最后一个难点是三维渲染。最不可小视的就是它,而且这一个应该最先做。如果没有三维渲染,我们在调试代码的时候,就很难发现我们做的模型到底对不对。

注意,我这里是完成了三维渲染,并没有实现三维网格。我当时是想用梁单元预测力学性能,因为我自己编写了梁单元求解器,这样建模、仿真、后处理在我这一个软件就搞定了。尽管再往前走一步就可以得到三维网格了,但是我没继续做。

实际上纤维束的力学模型天生适合用梁来表达,它的结构形态就是为梁单元而生的,求解效率也会很快。

然而一个大问题来了,纤维束做梁,那基体怎么处理呢?

身怀利器,杀心自起。我有了梁技术,哪怕削足适履也要把基体搞成梁。于是又一通折腾,搞了个全梁模型:

单从建模效果看,我这个代码效果是不输TexGen的。

    

开发软件的乐趣就在这,一旦开发出来,就想怎么怎么玩。想算单胞,就算:

    

想算全尺寸模型就算,多大个事,反正是改个参数的事情。

    

复杂立体织物三维网格自动划分

完成上面的工作后,我的心结基本消除了。因为我知道,当年那个问题对我来说,不再是技术障碍。

本来短期内,也没有继续做下去的打算。毕竟咱自己也没项目,纯发光发热也吃不了饭。每年海量的科研经费,也落不到我等小喽啰身上一分钱。那么多大科学大教授在呢,轮不到咱去力拼一个TexGen出来。

直到前几天有人找过来,问能不能做一个特殊的织物结构,自动生成三维网格。

我本来不想弄的,但是看完结构以后,心里又痒痒,对这个领域确实很有兴趣。简单纠结一下后,还是决定搞。这把要把三维网格一并搞出来。

模型如下,它是用经纬纱织出来一套蜂窝:

复合材料学报:层间交织联锁蜂窝芯子工艺设计与力学性能分析

如此复杂的模型即便用TexGen也是很难创建成功。立体织物说回单胞,都知道周期性的,似乎只要周期性排列就能创建全尺寸模型。

但是,一旦模型里面存在不同的胞元,胞元和胞元之间的对接就成了大问题。

所以必须要解决旋转、不同胞元之间的对接问题。至于三维网格,倒不是大事,我们上面基于截面扫掠思路得到的三维渲染,稍微改进一下就能得到三维网格了。

    

基体的网格,我们采用了体素的思路,简单讲就是从一堆网格里面抠出来。

至此,我们基本走完了参数设计、建模、网格化的完整技术路线,也可以说掌握了TexGen的基本技术方法。

未来

未来,如果没有项目牵引的话,应该也不会主动往下做。毕竟没那么多时间发光发热。


来源:静界有限元
Abaqus复合材料材料渲染
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-12-13
最近编辑:8月前
静界有限元
博士 签名征集中
获赞 27粉丝 4文章 58课程 0
点赞
收藏
作者推荐

(二)自己也能开发ABAQUS复合材料层合板自动建模工具?

前文我们介绍了基于“厚度”推进策略生成网格,并自动定义铺层、材料的层合板建模算法。为了提高展示度,同时也是方便给别人使用。我们可以开发一个界面,并封装成一个软件。作为一个小的案例,同样采用MATLAB实现。很多人都用过MATLAB的GUI模块,然而这个东西适合做一些小的工具,稍微复杂一点的功能,就完全无法开展。GUI模块一个最简单的例子,就是选项卡,通过选项切换不同的页面。在以前的GUI中,你只能再画一个界面,然后在两个界面之间传递变量。使用的时候,当切换页面时候会弹出预设的界面,体验很差。如果有了选项卡,就不存在界面跳转的问题了,都在一个页面就完成了。为了解决这个痛点,MATLAB推出了APPdesigner,它和QT十分相似,尤其是新的容器和网格布局的引入,大大提升了实用性。而经典的GUI模块在以后的版本中,将被删除。APPdesigner我现在遇到的一些不大不小的开发需求,就会采用APPdesigner。当然,更复杂的需求的话,还是用QT更加方便。本期我们就大致介绍一下基于APPdesigner实现工具开发的基本路线。网格布局QT中提供了多种多样的自动对齐、填充方式。而在MATLAB中,这个是通过“网格布局”实现。众所周知,MATLAB是基于矩阵思想开发的平台,这个“网格布局”就是这个路子。通过定义纵横分块和尺寸,实现界面分区,组件放进去以后它们就会自动对齐、适应分区大小,保证了界面的美观性。本次界面整体设计为左右布局,左侧放置参数定义和二维绘图区,右侧为三维绘图区。组件填充几何参数和材料参数,用表格组件。铺层数据,考虑到铺层可能很多,我们直接通过导入指定路径的txt文件实现。两个绘图窗口还是基础的AXIS。组件填充后效果如下:代码嵌入将之前开发好的算法嵌入到界面中。APPdesigner通过点击右上角的视图,可以方便的切换界面视图和代码视图,这个切实提升了开发效率,也是我个人认为远胜于QT的地方。嵌入代码后,运行效果如下:至此我们完成了一个小工具的开发。这个案例虽然简单,如果我们更换为更复杂的结构,再加入调用ABAQUS自动计算、后处理的部分,它就进化成了一个软件平台。很多项目包装得很花哨,从逻辑上来讲,借助商用求解器,自己开发前后处理模块,本质上就是上面的路子。麻雀虽小五脏俱全,如果能嵌入自己的求解器,那么它就是一个专用的有限元软件了。来源:静界有限元

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈