e-works数字化企业网  »  文章频道  »  产品创新数字化(PLM)  »  CAE

LS-DYNA用户关键字的二次开发

2019/3/25    来源:上海仿坤    作者:韩志东      
关键字:LS-DYNA  用户关键字  
本文将继续介绍其另外一个新功能:*USER_KEYWORD(用户关键字),用户可以定义自己的关键字,并在用户子程序中实现,让自己开发的用户模块的输入更有效,功能更丰富。

引言

    LS-DYNA在实际工程中得到了非常广泛的应用,成功地解决了很多大规模非线性问题。用户在几十年的应用过程中积累了非常多的模型数据,比如各个部件的有效模型,各个机构的建模方法,各种材料的参数库,以及各种求解控制参数等等。这些数据都是经过长期应用反复验证的,在实际应用中也非常有效。如何把这些数据准确可靠地应用到新的数值分析中,很多用户都根据自己的模型特点建立一套管理方法来尽量避免模型差错。目前LS-DYNA的模型输入文件是主要是静态模型文件(关键字文件),对于脚本的语言缺乏良好的支持。在新的二次开发环境下,用户可以通过用户子程序来实现动态的模型生成功能,实现建模自动化,比如:

    ●对同一个标准部件,在不同的网格尺寸下,实现不同的划分方式;

    ●对同一个材料模型,在不同的单位制下,实现参数自动转换,避免手工差错;

    ●对同一个连接机构,在不同的分析中,实现不同的建模方式。

    我们在前两期已经介绍了LS-DYNA新的二次开发环境支持用户子程序与LS-DYNA的主程序完全分开,在运行时无需连接。在以前的模式下,用户子程序必须与LS-DYNA的具体执行程序相关联,不同的执行程序往往需要重新编译连接才能执行。当模型还需要别的用户子程序时,往往会产生冲突。因此,当这种限制被突破以后,用户开发的动态建模的用户子程序就成为了模型的一部分,与LS-DYNA的执行程序是完全分开,只有在该模型被读入的时候该子程序才被动态调用。这种新的开发模式导致了用户子程序在概念上有一个比较大的改变,即把用户子程序和用户数据绑定在一起,而与LS-DYNA的执行程序无关,提高了用户子程序的一致性和可维护性。

    我们以两个简单的例子来介绍在新的开发环境下,如何利用用户子程序来动态产生用户关键字,实现模型输入上的自动化。

模型自动建模

    1)长方块生成程序

    这是一个简单的例子,用来演示如何在现有的模型中生成一个长方块(假定为某个部件)。这个长方块的网格生成程序非常简单,但演示了开发的全过程。其源程序已经包含在LS-DYNA用户子程序开发包里面,用户可以根据需要开发出一个实用的部件生成子程序。

    如图一所示,先建立一个简单的常规静态模型,由三块板组成的。现在通过以下几个步骤利用新的用户关键字功能来实现长方块的动态生成:

    1)编辑源程序dyn21.f,将其中子程序rdusrkwd的第一行

    isexample=0

    改为

    isexample=1

    这个自带的动态网格生成功能就能使用了。参阅前面两篇文章,将用户子程序编译连接为动态连接库就可以。假定该动态连接库的名字为libdemo.so。

    2)调用动态连接库,在模型文件中加入

    *MODULE_LOAD

    mydemo

    libdemo.so

    3)加入新的用户关键字,及其参数

    *USER_KEYWORD

    100.,20.,30.,10,2,3

    这个简单演示程序是生成一个长方块,先读入6个参数,分别是X,Y,Z方向的长度,及其相应的单元划分单元个数。此例中输入为X方向长为100,划分10个单元。运行LS-DYNA则在初始的静态模型中动态添加了一个新的长方块,如图2所示。

三块板组成的一个简单模型

图1 三块板组成的一个简单模型

含有动态生成长方块的模型

图2 含有动态生成长方块的模型

责任编辑:程玥
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐