FasDyna 主要用来解决碰撞问题,本文介绍开发 FasDyna 一些相关内容:
1. 碰撞运动方程
2. 显式积分算法
3. Nastran/LsDyna
4. 性能问题
5. 矩阵运算
6. 面向对象方法
1. 动力学方程为:M*U'' C*U' K*U=P, (其中M为质量矩阵, C为阻尼矩阵,U''为位移二阶导数,为加速度;U'为位移一阶导数,U为位移向量,P为包括碰撞力在内的外力向量)令
{F(in)} = C*U' K*U ,{F(re)} = {F(ex)} -{F(in)}即外力减内力,则方程可以写为 MU'' = {F(re)} ,若使用集中质量,则各个自由度的方程是相互独立的。
2. 显示积分算法是相对隐式积分而言,显式算法,采用中心差分显式时间积分,由于方程是非耦合形式,可以直接求解,不像隐式方程那样求解刚度矩阵,之所以采用这样的算法思路主要是为解决瞬态动力学服务的,它最本质的算法是中心差分,因此它的求解效率高,但精度不高,而且必须设定非常小的时间步求解以保证稳定状态。而隐式算法,采用的是newmark等隐式时间积分,引入了微量代替,需要转换刚度矩阵,对于非线性,需要采用多种数值计算方法,比如用于线性逼近的牛顿-拉夫逊迭代公式等,这种算法多用于静力问题,结构分析,低频率动力学问题等等。因为这类问题时间历程较长,可以采用较大的时间步,也能保证一定的精度要求。隐式算法是指对于每一增量步,时间积分必须满足平衡方程,反复迭代求解,结果准确,但是求解时间长,而且有时会发散。显式算法求解时不需要迭代,避免了不收敛问题,但是时间步长的选择必须非常小心。
3. Nastran/LS-Dyna
Nastran SOL 700 集成了 LS-DYNA的结构分析功能,可进行各种高度瞬态非线性时间的仿真分析。SOL 700 模块支持160多种材料模型,具有50多种接触类型,接触类型齐全。并具有并行计算能力。
LS-Dyna 是世界上最著名的通用显式动力分析程序,能够模拟真实世界的 各种复杂问题,特别适合求解各种二维、三维非线性结构的高速碰撞、爆炸和金属成型等非线性动力冲击问题,同时可以求解传热、流体及流固耦合问题。在工程应用领域被广泛认可为最佳的分析软件包。与实验的无数次对比证实了其计算的可靠性。LS-Dyna有自己的前后处理程序,Ansys 和 Nastran中都集成了LS-Dyna
FasDyna所有的benchmark 都以Nastran和LS-Dyna 为标准。
4. 对于高速瞬态碰撞,时间步长需要选取很小,这会导致巨大的计算量,但由于自由度方程独立的特点,可以容易的采用并行计算:多核,分布式,利用GPU。FasDyna 引入了GPU计算,在笔者普通的PC机上 可以平均加速5倍以上,效率提高相当可观。
5. 矩阵运算
求解需要用到矩阵运算,笔者封装了目前比较简洁的矩阵操作类 Eigen,Eigne提供了很多矩阵运算方法,包括常用运算,求逆,转置,特征值,特征向量,LU分解等。Eigen 包含了头文件,不需要lib文件。
6. 面向对象方法
FasDyna 支持单元类型有 杆,shell,四面体和六面体(以后还会根据需要扩展)。面向对象方法在代码实现中体现出了很大的优势。定义所有单元的基类和虚方法,然后每种单元类型继承于基类,每种单元类型有不同的实现(比如积分点,应力计算,位移计算等),在进行整体计算的时候,只需要调用接口,不必再为面向过程方法中判断单元类型头疼。