功能概览
- 支持荷载类型:
- 位移荷载
- 表面压强荷载
- 重力荷载
- 单元类型(共计支持33种单元类型):
- 杆系单元:
- T2D2、T3D2
- B21、B23、B31、B33
- 平面单元:
- CPS4、CPS8、CPS3、CPS6、CPS4R、CPS8R、CPS4I、CPS4Bar、CPS4SR
- CPE4、CPE8、CPE3、CPE6、CPE4R、CPE8R、CPE4I、CPSEBar、CPE4SR
- 空间实体单元:
- C3D4、C3D10、C3D8、C3D20、C3D8R、C3D20R、C3D8I、C3D8Bar、C3D8SR
- 整体刚度矩阵组装:稀疏矩阵存储格式,使用三元组(Triplet)形式,即行索引数组、列索引数组和非零值数组
- 线性方程组求解技术:提供直接求解法和pcg迭代求解器选项,面对较大模型时可以大大提升刚度方程的求解效率
- 边界条件:使用罚函数技术
- 节点应力磨平处理:
- 对于单元形状不均匀的结构模型,对于共节点处的应力采用体积/面积加权磨平处理
- 对于单元形状均匀的结构模型,对于共节点处的应力采用直接绕节点平均磨平处理
- 支持多种材料属性的赋予
- 场输出:U、RF、UR、RFM、S
- 前处理:解析 Abaqus-inp 文件:
- Node节点坐标
- Element单元局部节点编号
- Nset节点集
- Elset单元集
- Surface单元面信息
- 配置文件:使用 json 文件作为程序的配置文件
- 材料信息
- 截面属性
- 边界条件
- 求解器
- 绘图控制
- 文件输出:
- 结果文件(.dat),记录各节点位移、支反力等
- vtk 文件,可导入 Paraview 中进行可视化显示,或者使用 Python 的 Pyvista 库进行可视化也都是可以的
- log 文件,记录计算各个过程的具体时间明细以及一些模型信息。
JSON配置文件
普通单一材料
平面单元需要指定厚度参数t,空间实体单元无所谓,杆单元需要指定截面面积A,梁单元需要指定截面类型,将会在下个小节详细介绍。
梁单元截面
梁单元支持矩形截面、环形截面、圆形截面,需要指定几何参数。
赋予多种材料属性
对于多种材料属性的施加,需要指定材料属性对应的单元集。
以一个二维复合材料案例为例,前处理借助公众号:星辰北极星出品的POLARIS_MesoConcrete
插件建立二维细观骨料模型,边界条件及网格划分如下图所示,采用CPS3单元:
Mises应力对比:
应力精度与Abaqus保持一致!
固支边界
type
为constraint,需要指定不同的方向,nset
为节点集(与inp文件一致)。比如想要在x方向和y方向均施加固定约束,可指定"direction": “xy”。
位移边界
type
为displacement,需要指定不同的方向,nset
为节点集(与inp文件一致),value
为位移值。比如想要在x方向和y方向均施加位移,可指定"direction": “xy”。
表面压强边界
type
为pressure,需要指定表面名字(与inp文件一致),以及压强值。(不支持杆单元、三维梁单元)
重力荷载
type
为gravity,需要指定重力加速度,以及重力方向。(不支持杆单元)
求解器
后处理
fields
:场信息,需要指定要显示的场信息- 二维杆单元:U1, U2, Umag, RF1, RF2, RFmag, S11
- 三维杆单元:U1, U2, U3, Umag, RF1, RF2, RF3, RFmag, S11
- 二维梁单元:U1, U2, Umag, UR3, RF1, RF2, RFmag, RFM3
- 三维梁单元:U1, U2, U3, Umag, UR1, UR2, UR3, URmag, RF1, RF2, RF3, RFmag, RFM1, RFM2, RFM3, RFMmag
- 平面单元:U1, U2, Umag, RF1, RF2, RFmag, S11, S22, S12, Mises, model, deform
- 空间实体单元:U1, U2, U3, Umag, RF1, RF2, RF3, RFmag, S11, S22, S33, S12, S13, S23, Mises, model, deform
average
:平均化方式,可选:simple, volume,分别对应绕节点直接平均和体积/面积加权edgeColor
:单元边界颜色faceColor
:单元面颜色,当输出model, deform时,显示的单元面颜色alpha
:单元面透明度colorMap
:可选abaqus或者matlab支持的colormap,如jet、summer等discretize
:若为true,则colormap分段显示;若为false,则colormap连续平滑显示discretizeNum
:colormap分段数
单元类型
共计支持33种单元类型,罗列如下:
杆系单元
- T2D2:二维杆单元
- T3D2:三维杆单元
梁单元
- B21:二维Timoshenko梁单元(按照Abaqus帮助文档进行剪切刚度修正)
- B31:三维Timoshenko梁单元(按照Abaqus帮助文档进行剪切刚度修正)
- B23:二维Euler-Bernoulli 梁单元(cubic beam)
- B33:三维Euler-Bernoulli 梁单元(cubic beam)
平面单元
平面应力:
- CPS3:线性三角形单元
- CPS6:二次三角形单元
- CPS4:线性四边形单元
- CPS8:二次四边形单元
- CPS8R:减缩积分单元
- CPS4R:减缩积分单元,已添加沙漏刚度
- CPS4I:非协调线性四边形单元,避免剪切自锁
- CPS4SR:选择性减缩积分,避免体积自锁
- CPS4Bar:对B矩阵加以Bar修正,避免体积自锁(与Abaqus帮助文档处理方法一致)
平面应变:
- CPE3:线性三角形单元
- CPE6:二次三角形单元
- CPE4:线性四边形单元
- CPE8:二次四边形单元
- CPE8R:减缩积分单元
- CPE4R:减缩积分单元,已添加沙漏刚度
- CPE4I:非协调线性四边形单元,避免剪切自锁
- CPE4SR:选择性减缩积分,避免体积自锁
- CPE4Bar:对B矩阵加以Bar修正,避免体积自锁(与Abaqus帮助文档处理方法一致)
空间实体单元
- C3D4:线性四面体单元
- C3D8:线性六面体单元
- C3D10:二次四面体单元
- C3D20:二次六面体单元
- C3D20:减缩积分单元
- C3D8R:减缩积分单元,已添加沙漏刚度
- C3D8I:非协调线性八面体单元,避免剪切自锁
- C3D8SR:选择性减缩积分,避免体积自锁
- C3D8Bar:对B矩阵加以Bar修正,避免体积自锁(与Abaqus帮助文档处理方法一致)
大模型测试
105万个C3D4单元,网格信息及边界条件设置:
计算结果对比:
计算过程信息:
项目文件结构图