ls-dyna二次开发自定义状态方程
(2014-04-10 21:53:28)
标签:
ls-dyna二次开发自定义状态方程教育 |
附录B:用户自定义状态方程
用户能够在LS-DYNA中自定义状态方程子程序。为了调用用户子程序,必须做到:
1、通过LS-DYNA用户自定义EOS界面编写子程序。
2、创建包含EOS子程序的可执行算例。
3、在关键字K文件中定义PART来调用子程序,用*EOS_USER_DEFINED,并输入合适的参数。
所有的子程序,包括界面,用户自定义材料都包含在文件dyn21.F(Unix/Linux)或者lsdyna.f(Windows)。多达是个自定义程序能够同时添加到更新固体或壳体压力的压力中去。本文档对添加这样的子模型提供指导。变量名称和子程序会根据运算平台和当前的LS-DYNA版本不同而发生变化。
ls-dyna二次开发交流群
各位做二次开发的同志可以加入该群相互探讨~
普通综述
当关键字文档中一个part的*EOS_USER_DEFINED定义后,LS-DYNA以合适的输入数据调用子程序ueoslib。在每个单元中对于每一次积分点调用两次子程序。第一次调用需要用EOS计算体积模量,第二次更新压力和内部能量。在这些子程序中,如果用户需要可以自行修改,下面的数据结构是为了运用特殊的标量材料子程序而初始化的。
iflag- =0计算体积模量,=1时是压力和能量的更新
cb- 体积模量
pnew- 新的压力
rho0- 相关密度
hist- 在长度上用户自定义历史变量NHV的数组
specen- 每个相关单元的内部能量
df- 体积比率
v0- 初始体积
pc- 压力界限
如果在EOS卡片中vectorization 标记活跃(IVECT=1),变量通常是存储在长度nlq的向量块中,向量从1ft排列到11t,允许更有效地EOS子程序的执行。例如,下面提到矢量化例子的数据结构
cb(nlq)- 体积模量
pnew(nlq)-新的压力
hist(nlq,*)-用NHV列自定义的历史变量数组
specen(nlq)- 体积比率,V/V0
v0(nlq)- 初始体积
dvol(nlq)-体积增量
pc- 压力界限
nlq的值在包含的nlqparm中设定为一个变量,包含在程序的顶部,随着机器和操作系统变化。矢量块中的条目和有限元积分点相关联。在历史变量数组中条目的数量应与材料卡NHV中要求的相匹配。第一个时间步,EOS中所有历史变量初始设置为0,当逻辑变量first穿过参数列表,是.TRUE.下一步,所有用户自定义的EOS模型需要体积模量cb,为了转移边界,接触边界,刚体限制,时间步计算。另外上面提到的变量,紧接着的数据能够运用到用户材料子程序中,忽略是否向量化运用。
eosp(*)- 输入文件中材料常数的数组
tt- 当前时间
crv(101,2,*)-在关键字中定义曲线代表数组
特殊的材料子程序中,在条目中标量例子ueosXXs或者矢量例子ueosXXv,需要上面必要的参数。附录中有谈论曲线的运用。单词xx代表21到30,与EOS卡中的EOST数相符。用户自己编写子程序,当iflag=0时计算体积模量,当iflag=1时更新压力,内部能量,历史变量。在输入过程中,EOS调用iflag=-1在eosp中运行初始化。在输入中,尽管语序少于48个常数写入eosp中,在EOS子程序中用户能用所有的48个。
下面提供一个标量自定义子程序例子,紧接着的是对应变量。

加载中…