首页/文章/ 详情

【Radioss每周干货】Radioss 材料本构的二次开发

9月前浏览1560

本文摘要(由AI生成):

本文主要介绍了Radioss材料本构的二次开发,包括二次开发的内容、Starter和Engine两部分以及材料本构二次开发的starter和engine。Starter主要用于数据的读取,例如读取材料的参数等,而Engine主要用于计算,例如计算每个单元中的应力。在材料本构的二次开发中,需要编写两个子程序,分别是LECM和SIGEPS,其中LECM用于Starter,SIGEPS用于Engine。在Starter中,需要定义一些参数,例如IIN、IOUT、NUVAR、IFUNC、UPARAM等,而在Engine中,需要定义一些参数,例如NEL、UPARAM、NUVAR、IFUNC、NPF、TF、NPT、IPT、TIME、TIMESTEP、RHO0、RHO、VOLUME、AREA、EINT等。此外,还可以在engine子程序中调用特定函数,例如曲线读取等。


上期介绍了Radioss的二次开发的准备工作,本期我们将继续深入,为大家带来Radioss 材料本构的二次开发。本讲我们将主要围绕二次开发简介、材料二次开发介绍、材料本构二次开发的starter、材料本构二次开发的engine这四点展开~


上一期我们主要讲了:二次开发背景知识,安装Fortran编译器,设置环境变量,编译二次开发的程序,使用二次开发的程序。

 


No.1

 二次开发介绍



 二次开发的内容 


我们先用一张图形象的说明一下Radioss的二次开发能开发哪一些内容:

 

Radioss支持单元属性、实体单元、壳单元、SPH、材料本构、失效模型及状态方程的二次开发,这些都需要和Radioss主程序协同工作。


 Starter 和 Engine


Radioss的二次开发主要分为两块:Starter和Engine。

 

(点击图片可查看大图)

Starter主要用于数据的读取,例如读取材料的参数等。图中Starter Input file其实就是000.rad文件,Starter可以读取其中定义的一些参数之后,形成Restart file,传递给Engine。Starter和Engine是通过一些参数进行信息交换的。

Engine主要用于计算,Engine Input file就是0001.rad文件。Engine读取Engine中的一些设置以及Starter文件当中的Restart file信息进行计算,最后输出结果文件。

 

Starter读取用户输入然后通过UPARAM传递给Engine,Starter还可用于用户输入的打印,以便后期校验。

Engine对于材料本构的二次开发来说,实际上就是计算每个单元中的应力,所以每个单元都需要循环。

和上一期一样,Altair China Radioss 高级应用工程师 Lucy会以视频的形式对这一部分进行详细讲解,更方便大家学习~



No.2

材料二次开发介绍



 二次开发本构卡片 


 

例如,本讲我们要开发一个材料本构的卡片,在什么地方放上什么参数,放几行都可以自己定义。

需要注意的是,二次开发本构卡片必须名为:

USER1 或 LAW29

USER2 或 LAW30

USER3 或 LAW31

不能是其他名字,比如USER01,会出错。

编写两个子程序的名字必须为:

LECMnn 的starter子程序

SIGEPSnn的engine子程序

如下图所示: 

 

如果是实体单元,子程序名字后直接接对应编号,如果是壳体的话,在编号后会有“c”。

LAW29-31做的材料本构开发可以用于2D或3D的单元,但是不可以用于弹簧(spring)或杆(Truss)单元。


 SUBROUTINE 


我们以 LAW29 为例,看一下材料本构的二次开发中的starter和engine分别有那些SUBROUTINE。

Starter(LECM29.f)

 

(点击图片可查看大图)

如上图所示,Starter中有LECMnn的SUBROUTINE,以LAW29为例,就是LECM29。

同样,Engine有SIGEPSnn的SUBROUTINE,以LAW29为例,就是SIGEPS29。Starter和engine中的LECM和SIGEPS名称都不能更改,下图中用于实体单元和壳单元的参数名称也都不可更改。

 

用于实体单元

 

用于壳单元


No.3

材料本构二次开发的starter



接下来我们来详细分析一下Starter的每一个参数分别起到什么作用。

 

首先,子程序中的参数名称不要改变,他们是用于和Radioss其他内部程序进行交流的。

IIN:读取数据的参数

例如:

 

IOUT:输出数据的参数

例如:

 

以1100处定义的格式输出E和NU这两个数据。

NUVAR

NUVAR:用于engine子程序的许多内部变量的存储。

IFUNC

IFUNC:用于存储材料模型中所用到的曲线(function)的数组。

曲线的数目必须储存在这个数组中,同样这个数组的维数是定义在NFUNC中,维数的上限是定义在MAXFUNC。

PARMAT

PARMAT:用于存储用于计算接触刚度的材料模量。比如E-模量,G-模量,这些也用于在Starter中计算时间步长。

UPARAM

UPARAM:用于存储材料参数的双精度数组,用于engine子程序

例如存储读取的材料数据E-模量,泊松比,最大应变值,屈服应力,内部计算得到的G-模量等数据。数组的维数是定义在NUPARAM中,数组的维数的上限是定义在MAXUPARAM中。

 



No.4

材料本构二次开发的engine



在详细介绍engine之前,因为在材料本构中engine就是计算每个单元中的应力,所以我们以实体单元线弹性各向同性材料本构来讲一下算法:


公式


 

实体单元中的应力应变:

 

线弹性各向同性材料本构:

 
 
 

放大看一下:

 
 
 


ENGINE参数

Engine(SIGEPS29.f)

第1-3行参数:

Engine的前三行用于存储基本材料数据

 

用于实体单元

NEL

NEL:需要计算的模型中的单元个数。

UPARAM

UPARAM:在Starter中读取并存储材料参数的双精度数组,数组的维数是定义在NUPARAM中。

NUVAR

NUVAR:用于engine子程序的许多内部变量的存储。

IFUNC

IFUNC:用于存储材料模型中所用到的曲线(function)的数组。曲线的数目必须储存在这个数组中,同样这个数组的维数是定义在NFUNC中。

NPF,TF

NPF,TF:用于FINTER的数组参数。FINTER是Radioss读取曲线以后用内插法再次表述。

NPT,IPT

NPT:积分点的数目,IPT是指当前的积分点。

TIME,TIMESTEP

TIME,TIMESTEP:当前时间和时间步长。

RHO0,RHO

RHO0,RHO:初始和当前的密度。

VOLUME,AREA

VOLUME,AREA:单元体积(用于实体单元solid),单元的面积(用于壳单元shell)。

EINT

EINT:总内能

第4-9行参数:

 
 

最后一行参数:

最后一行参数用于内部参数的计算存储

 

SOUNDSP

SOUNDSP:声速,一般是可以在子程序中如下描述,实体单元solid:

 
 
 

VISCMAX

VISCMAX:最大阻尼,比如对viscous材料,他是用于稳定计算步长的

OFF

OFF:用于指示单元删除的参数,单元不删除为1,删除就位0

如果是壳单元还有如下参数:

THK

THK:单元的厚度

PLA

PLA:用于存储塑性应变的数组


函数


 除了参数以外,还可以在engine子程序中调特定用函数用于比如曲线读取等。

 


来源:Altair澳汰尔
RADIOSS二次开发HyperWorks设计与仿真平台UM材料Altair
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-03-26
最近编辑:9月前
Altair澳汰尔
澳汰尔工程软件(上海)有限公司
获赞 146粉丝 500文章 758课程 4
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈