本文翻译自官方文档,原文链接:
https://www.dynasupport.com/howtos/general
一、精度控制(accuracy)
除了沙漏控制之外,若程序没有进行中点应变的计算(mid-point strain calculation),那么同样有可能会在旋转系统中产生应力(create stresses in a rotating system),从而得出一个较差的计算结果。要实现中点应变的计算,需要使用*CONTROL_ACCURACY这一关键字,并将第一个参数设为1。此时程序将会分别在n+1/2和n+1进行两次应变-位移矩阵,同时计算成本将会增加25%。对于显式计算,由于其n+1/2(对应的矩阵)和n+1(对应的矩阵)几乎相同,所以不需要进行精度的额外控制。对于时间步长超过了1000倍的隐式分析,*CONTROL_ACCURACY就很重要了;如果计算模型中有旋转的物体,那就必须使用这一设置。
二、统一单位制(Consistent units)
在LS-DYNA中需要设置统一的单位制:
1 force unit = 1 mass unit * 1 acceleration unit
1 acceleration unit = 1 length unit / (1 time unit)^2
1 density unit = 1 mass unit / (1 length unit)^3
下表给出了一些常用单位制以及钢的密度和弹性模量作为参考,其中GRAVITY是重力加速度。
三、截面(Cross section)
一个模型的截面由一个节点集合以及一个或多个单元集合组成,单独的节点集或单元集都无法构成截面。一个准确的截面包括定义切割面的节点以及位于切割面上和切割面一侧的可变形单元。刚体单元对截面没有贡献,所以截面只包括变形体单元。
当用户使用*DATABASE_CROSS_SECTION_PLANE中的PLANE选项进行截面的定义时,LS-DYNA 程序会选择构成截面的节点和单元,并输出到D3HSP文件中以interface definition开头的字段中。
*DADABASE_SECFORC给定了截面力和力矩的输出时间间隔,并可以在全局坐标系或者以某一刚体或加速度传感器为基准的局部坐标系中输出。
除此之外,还可以在LS-PREPOST中利用SPLANE选项来定义截面并获得截面上的力和力矩,此时截面是固定在空间中的。操作步骤为:SPLANE > 给定截面的位置(define location of cross-section) > CUT > FORCE > 选择输出的力或力矩的类型(select force or moment component) > PLOT。使用 LS-PREPOST中的SPLANE时,截面在空间是固定的,不随变形材料的移动而移动,也就是说被切割的单元集合随着模型的变形是可变的(FixM不会起到作用)。同时,程序只会输出未被隐藏部件的力的信息。
四、双精度(Double precision)
单精度、双精度程序的文件名分别包含_s和_d字样。双精度程序的运行时间大概比单精度程序多30%(不同平台会有不同)。
我们并不会总是预先知道某一计算模型是否需要进行双精度运算,唯一的办法就是同时用单双精度进行计算,看看是否会对计算结果产生影响。通常情况下隐式分析会比显式分析更为敏感。
在某些情况下需要进行双精度运算:
1.时间步数很大的显式分析,例如200000次时间步(2000000仅仅是可度量的范围,任何一个给定分析模型的时间步数都可能超过这一数值)。数值截断导致后期模型计算不准确的原因有很多(此句存疑),其中一个可能的原因是:随着计算进程的发展,节点增量位移和总位移之比会越来越小。也就是说,此时更新后的总位移没有足够用来精确计算后期增量位移的位数。
2.使用线性单元算法的隐式分析。
3.特征值分析。
4.使用单精度程序计算出来的结果不令人满意的任意模型。
对时间步的考虑:
我们需要关注的最重要的一点是时间步长要足够小,以实现足够的计算稳定性。若无法保证稳定性,那么考虑计算精度就没有任何意义。
假如用户非常保守,大大降低了时间步长(一个或两个数量级),那么除非使用双精度计算,否则会影响到计算精度。
输出plot文件时注意
使用双精度运行计算任务时,程序输出的文件也将是双精度的。由于输出文件的大小是原来的两倍,所以在使用FEMZIP 或 plotcprs等进行后处理时会出现一些问题。因此使用双精度程序计算时,应该以32位格式输出相关文件。
设置方法:
1.修改K文件: *DATABASE_FORMAT, IBINARY=1
2.修改环境变量: export LSTC_BINARY=32ieee
3.使用命令行: e. g. ls971 i=input 32ieee=yes