当前位置:服务支持 >  软件文章 >  鲜为人知的CAE小常识(二十六):深度剖析与实战应用

鲜为人知的CAE小常识(二十六):深度剖析与实战应用

阅读数 8
点赞 0
article_banner


你不知道的CAE小常识(二十六)



LS-DYNA自定义材料本构子程序的简便编译方法

按这个流程做下来确实可以生成自定义求解器。但客观地说,这个流程略显繁琐。下面介绍一种简化编译方法,以供大家参考。
基本编译思想:写好fortran子程序之后,通过IVF编译器以及nmake命令编译for子程序,生成obj目标文件和求解器。
简化方法:
1、利用文本编辑器写fortran子程序,起个方便查看的名字, 存为.f格式文件,比如umat41-for-shell.f
2、打开dyn21.f文件,注释掉subroutine umat41 (cm,eps,sig,epsp,hsv,dt1,capa,etype,tt,temper,failel,crv,cma)下这一整个子程序的语句(包括这个语句),或者直接删掉这部分子程序的内容。保存dyn21.f。
3、用文本编辑器打开makefile,做如下修改
1) OBJS= dyn21.obj dyn21b.obj一行中,增加umat41-for-shell.obj。变为OBJS= dyn21.obj dyn21b.obj umat41-for-shell.obj
2)参照dyn21.obj: dyn21.F
$(FC) $(FFLAGS) dyn21.F 

格式,书写两行语句

umat41-for-shell.obj:umat41-for-shell.f
$(FC) $(FFLAGS) umat41-for-shell.f
比如:
dyn21.obj: dyn21.F
$(FC) $(FFLAGS) dyn21.F 
dyn21b.obj: dyn21b.F
$(FC) $(FFLAGS) dyn21b.F
umat41-for-shell.obj: umat41-for-shell.f
$(FC) $(FFLAGS) umat41-for-shell.f
然后保存makefile。
3)用IVF编译器和nmake命令编译子程序。这步以及后续的步骤与df_af_aq写的基本流程一样。

简化编译方法的优点:不需要每次都进入dyn21.f中修改子程序,也可以按fortran语法命名所需编译子程序的名称;编译简单快捷。

至于版上有些朋友反映,说赵海欧先生一书那个子程序无法输出应力,这大多情况是因子程序的变量名与971所要求的不一致引起的。
赵先生一书所用的版本是970,而根据关键字用户手册附录A的说明,不同的求解器版本,其子程序的变量名很可能不同。
如果你用971求解器所需的lib文件包,那么在写子程序的时候,尤其需要注意其变量名。
比如,在971中,前一时间步的历史变量数组名为hsv,而不是hisv;971中增加了内置历史变量epsp(前一时间步的等效塑性应变);
当前时间步长名为dt1,当前时间为tt。所有这些变量以及这些变量在子程序中的定义、引用都需要与971的要求保持一致。
建议想二次开发LS-DYNA材料模型子程序的朋友,多看看LS-DYNA keyword user manual中APPENDIX A: User Defined Materials部分的介绍。



欢引关注微信公众号:DR有限元仿真


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空