首页/文章/ 详情

我为什么研发一个工程壳有限元软件

8月前浏览898

进展

自研的工程壳有限元软件在有一搭没一搭的开发中,第一次跑通了前后处理。

首先说说我搞这个软件的目的。实际上,杆、梁、板、膜、壳、实体单元求解器我都写过。已经在实际工程应用的是梁单元,我用它解决了一些叶轮机械设计的问题,集成为了一些专用软件。

对于我心心念念的复合材料力学问题,用实体单元开发会快一些,但是考虑到目前存在的UMAT/VUMAT这些子程序与ABAQUS 铺层模块互斥的问题,我想搞一个自己的复合材料壳,支持批量定义铺层,还能够把我之前写的一些损伤、失效、疲劳的本构放进去,计算效率还远远高于实体单元,这样就具有了实际工程价值。

所以我称它是工程壳有限元。

为什么说用实体单元开发会快一些呢?在仿真中,壳的计算效率高,网格划分起来也简单,给人的感受是好像壳比实体要简单。

然而在开发上,恰恰相反。实体单元的刚矩阵简单,而壳是由膜单元和板单元两部分合并构成的,尤其是三角形单元,其形函数非常复杂。看了不少论文专门做这个推导,有些甚至推导到最后还是错的。

所以为了搞壳单元,被迫先去搞了膜和板单元。

开发思路

在搞求解器的同时,我的主要精力放在了视口 交互上。几年前我就会基于现有的库做三维显示了,如果只是显示一下模型和结果,这个对我不难。

视口 交互

但是既然要做工程软件,要有些实用性。我们在用其他商用软件的时候有个明显的体会,如果不能总视口中框选、点选、按角度选进行节点或者单元的拾取,我定义边界条件,或者修改其他设置的时候会有多么麻烦。

由于节点的拾取频率最高,所以框选、点选、按角度选,都要做,除了能选,还要选中后高亮,还要可以选中后撤销指定的点。

用惯了别的商用软件,感觉这些功能很基础,真到自己开发的时候,这些反而是最难的。

为什么难呢?或者说开发中大型工业软件的难点在哪呢?有人说求解器,有人会说算法。

在我看来,最难的是数据结构。比如一个单元在视口中是怎么表达的,在求解器输入中如何表达,在结果中如何表达,他们之间又是如何映射的。当你选中一个节点的时候,它怎么知道自己被选中了,它的编号是多少,你拿到这个数据存在内存,当用户二次查看的时候,你又如何让它二次高亮上去?

所以,要弄清楚,这些模型的数据在不同的模块应该如何存储、如何转换、如何调用。

定义set

框选

选中后高亮

特征标记

用户在定义边界条件以后。需要针对固支、位移、载荷、弯矩等边界条件,在指定节点位置进行标记显示。

有一个非常有意思的现象,当我们在ABAQUS定义Fx、Fy等点载荷的时候,他会同时显示两个方向的载荷箭头,而不是显示合力方向。

以前我不理解,现在我来理解了,我们看到的箭头应该不是通过向量绘制的。应该是把其内置的图形在节点位置进行显示,同时显示多个方向的载荷箭头,在代码中实现最简单,如果搞成合力方向,还要去计算偏转角度,显示的效果也不好。

当然这是我猜的,反正我也采用这个思路。

包含了载荷、位移、固支约束的标记

同样的问题,当更改边界条件的时候,这些标记还要自动更新,二次打开工程的时候,还要能重建这些特征。

还是数据结构的难题。这也是我花了很多时间的在视口上的原因。

既然迟早要做,不如趁现在,再难也要做出来。

特点

我借鉴了ABAQUS set的思路,凡是要事先定义边界条件的地方,必须要要先定义成set。后面定义边界条件的时候,这些set会自动出现在下拉列表供选取,并且也通过“显示”按钮进行查看。

求解器难点

前面讲了交互的难,实际上求解器也是个难点,难在应力求解上。前面我们提到了,壳是膜单元和板单元合并成的。在求应力应变的时候,还需要根据位移,分布在膜和板里面求应力,最后再拼起来。

和实体单元比,壳和梁单元都有一个问题,就是局部坐标系和整体坐标系的转换。在做刚度矩阵的时候,需要从局部到整体。在计算应变的时候,又要先把整体坐标系的位移转换到局部,然后在局部求应变。

总之弯弯绕绕很多。

仿真效果

平面模型

我们软件的位移结果

某商用软件位移结果

我们软件的应力结果

某商用软件应力结果

曲面叶片模型

    

我们软件的位移结果

某商用软件位移结果

我们软件的应力结果

某商用软件应力结果



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

复合材料冲击后剩余强度分析方法

低速冲击损伤仿真层合板易分层,尤其在已经有明显损伤的情况下,分层更容易扩展。在设计的时候,就需要考虑材料在一定损伤范围内的承载能力,也就是所谓损伤容限的概念。对于低速冲击,一般试验室中可以用落锤试验进行复合材料板的冲击损伤试验。这个图里面的试验机还是高端了一些。其实,落锤试验只要焊接一个龙门架,一个金属冲头,一根绳子,一个滑轮,就可以得到一个简易的设备。我们一般用冲击能量来作为低速冲击试验的工况,应为E=mv2/2,在保证冲击能量一定的情况下,通过调节冲头的高度和重量组合即可。仿真中也是如此,由于冲头接触面一般为球形,直接将冲头简化为球体、半球体就行。不过尤其需要注意的是单位制。一般我们用的最多的还是毫米制,ABAQUS中需要将国际单位制的密度×10的负12次方。因为我们只能通过调节密度调整冲头重量,这个细节需要注意。然后就是毫米制对应的速度单位要×1000。建模:对于基础的层合板冲击案例,我们首先使用工作室自研的建模软件,建立指定0/90对称铺层的模型。为了方便调节冲头尺寸和网格密度,我们用代码创建了球形冲头网格。当然,也可以建成子弹形的:VUAMT损伤模型:采用Hashin准则进行单元失效判断,设置单元删除。结果后处理静界有限元针对层合板多层损伤投影叠加问题,开发了专门的后处理工具(见下图),将ABAQUS仿真得到的多层损伤在面内进行投影叠加,并且自动统计不同失效模式的覆盖面积。剩余强度模型转换一般来说,做低速冲击的试验件是偏“方”的矩形板。而做拉伸试验的时候,又是偏“长条”的试验件。这时候可能需要对试验件进行剪裁后再开展剩余强度试验。同时在仿真中,我们还希望能够将冲击仿真失效的单元在剩余强度仿真中删除。这就需要我们通过前后处理技术实现:(1) 自动对冲击模型进行裁剪;(2)自动删除冲击仿真后失效的单元。静界有限元针对冲击向剩余强度模型转换的问题,开发了专门的处理工具(见下图):剩余强度仿真UAMT损伤模型:采用Hashin准则进行单元失效判断,并对失效后的单元进行刚度折减。模拟拉伸工况。失效:失效单元会率先从孔周围产生,然后向外扩展,当整个截面接近失效时候,结构彻底失效。和正常试验件静强度对比:将上述结果和正常试验静强度仿真结果进行对比,通过载荷位移曲线可以明显看出,冲击后的试验件的弹性模量和强度均明显下降。 来源:静界有限元

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