- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FOCUSED ON EXCELLENCE
支持的二次开发工作
材料本构开发(2D:ovl30u*.f; 3D: ovl40u*.f,分别10个源文件) 摩擦算法开发(ovlusr.f) 单元算法开发 (ovl160u.f) 单元失效准则开发(ovlusr.f) 结构断裂力学和裂纹扩展规律开发(2D:ovl30u.f;3D: ovl40u.f) 压电材料/固结材料开发(2D:ovl30u.f;3D: ovl40u.f) 热本构开发(at00u.f) 流体本构开发(ovlf0u.f) 边界、载荷条件开发(ovl170u.f)
FOCUSED ON EXCELLENCE
开发详细过程
• 材料二次开发,与模型中采用的单元类型相关, 因此2D和3D的应用是分开的; • 前面提到,二次开发需先选择一个已经存在的源 文件,可以是任何一个,因为对于开发来说其提供 的入口条件是相同的; • 现在要自己开发一个最简单的线弹性材料,用于 3D模型,下面是详细的开发过程; • 由于ovl40u_vp1.f中详细介绍了所以参数的含义, 因此选择这个源文件进行修改。
εx应变 εy应变 εz应变 εxy应变 εyz应变 εzx应变
c c C CTI(1)=young's modulus CTI(2)=poisson's ratio CTI(n) =…
C
CTDD(98)=…
C c c c c
常用的其它参量
TIME = 当前时间 DT = 当前时间步长 TEMP1 = 当前温度
子程序说明: 传递的变量很多,完全满足绝大多数开发所需 常用变量:STRAIN(应变) STRESS(应力) TIME(当前时间) DT(当前时间步长) TMP1(当前温度)…
FOCUSED ON EXCELLENCE
开发详细过程
C ...................................................................... C. C . ELEMENTS: C. . Linear Elastic Model for 3-D SOLID ELEMENTS . .
这意味着我们的代码都是嵌入到已经指定的那些源文件中,而不是任意生成 一个新的源文件。
• 开发材料本构时,需要编辑Makefile.adusr文件,修改其 中的参数:
MAT2D_OBJ = ovl30u_pl1.obj (2D模型) MAT3D_OBJ = ovl40u_pl1.obj (3D模型) 这里,ovl30u_pl1.obj和ovl40u_pl1.obj分别指向ovl30u_pl1.f和ovl40u_pl1.f源 文件,原因是可以进行编译的源文件很多,而ADINA每个只能指定一个进入 DLL。
FOCUSED ON EXCELLENCE
材料本构开发入口条件
未知变量
STRESS(1)= σ xx STRESS(2)= σ yy STRESS(3)= σ zz STRESS(4)= σ xy STRESS(5)= σ yz STRESS(6)= σ zx
历史变量
ARRAY(LGTH1) 提供多于60个可以输出的实数型历史变量,常用 于做如屈服应力、塑性应变、应力水平等数据的存储; IARRAY( LGTH2 ) 提供多个全局整型历史变量,往往用于程序控制 或其它用途;
FOCUSED ON EXCELLENCE
开发详细过程
C*I K E Y = 2 C*I INTEGRATION OF ELEMENT STRESSES ( CALCULATE STRESS(6) ) 2 CONTINUE C*I * * * C C YM=CTI(1) PR=CTI(2) g2=YM/(1.0+PR) g=0.5*g2 C davg=(-STRAIN(1)-STRAIN(2)-STRAIN(3))*C1D3 p=-davg*YM/(1.0-2.0*PR) C STRESS(1)=p+g2*(STRAIN(1)+davg) STRESS(2)=p+g2*(STRAIN(2)+davg) STRESS(3)=p+g2*(STRAIN(3)+davg) STRESS(4)=g*STRAIN(4) STRESS(5)=g*STRAIN(5) STRESS(6)=g*STRAIN(6) C RETURN INSERT
FOCUSED ON EXCELLENCE
开发代码是如何进入到求解器的? • 任何程序段是通过以上列出的动态链接库 将用户开发的内容传送给求解器的:
ADINA-Structure模块:adusr.dll->adina.exe ADINA-THermal模块:atusr.dll ->adinat.exe ADINA-CFD模块:afusr.dll ->adinaf.exe ADINA-FSI模块:adfusr.dll ->adfsi.exe ADINA-TMC模块:adtusr.dll ->adtmc.exe
变量声明: 采用ADINA开发实例中的变量声明即可。
FOCUSED ON EXCELLENCE
开发详细过程
C GO TO (1,2,3,4), KEY C*I C*I C*I C*I C*I C*I C*I 1 CONTINUE C*I DO 11 I = 1,LGTH1 11 ARRAY(I) = 0.0 DO 12 I = 1,LGTH2 12 IARRAY(I) = 0 C RETURN 初始化两个数组,用于存放 历史变量(ADINA在后处理时 像位移、应力等变量显示这 些数值),LGTH1和LGTH2是 在AUI中输入的整数,有缺省 值。 执行第一段程序 INITIALIZE COMPONENTS OF REAL AND INTEGER WORKING ARRAYS ( INITIALIZE ARRAY(60) AND IARRAY(2) ) K E Y = 1 将整个程序分为四段
FOCUSED ON EXCELLENCE
材料本构二次开发
FOCUSED ON EXCELLENCE
材料本构开发入口条件
已知参数
c c c c c c strain(1)= strain(2)= strain(3)= strain(4)= strain(5)= strain(6)=
AUI输入参数
FOCUSED ON EXCELLENCE
材料本构开发入口条件
SUBROUTINE CUSER3 [DLLEXPORT] (NG,NEL,IPT,IDEATH,ITE,IUPDTL, 1 STRESS,EPS,STRAIN,DEPS,DEPST,THSTR1,THSTR2, 2 KTR,INTER,SCP,ARRAY,LGTH1,IARRAY,LGTH2, 3 D,ALFA,CTD,ALFAA,CTDD,CTI,TMP1,TMP2, 4 TIME,ETIMV,ETIMV2,DT,PHIST,PRST,RN,PHIST1, 5 DPSP,TGRAD,INTEG,ISUBM,INDNL, 6 DP,NELP,DPJE1D,DPJE2D,AKAPPA,PBAR, 7 NNODE,NODNUM,XYZ,DCA,IOUT,KEY) C C ......................................................................
C ......................................................................
程序中的注释部分: 一般程序中主要使用的中间变量给予说明; 如上面说明YM在程序中代表弹性模型;PR代表波松比;
FOCUSED ON EXCELLENCE
开发详细过程
• 当启动任何求解器时,DLL中的程序自动成 为求解器的一部分
FOCUSED ON EXCELLENCE
开发代码和输入数据是如何匹配的? •开发代码中指定了各种变量,包括所谓已知变量和未知变 量,已知变量的一部分是用户通过界面的相应菜单输入 的,如本构二次开发过程中的材料参数,控制参数等等
例如在材料开发时: 已知变量:应变--程序计算确定数值,出现在等式的右侧 弹性模量、波松比--用户输入参数,程序从dat模型文件识别读入 未知变量:应力--程序计算确定,出现在等式的左侧
FOCUSED ON EXCELLENCE
DLL是如何编译的? • Fortran源代码修改后,需要重新编译,生成一个新的DLL 文件。用这个文件替代求解器当前目录(\x32或者\x64子 目录下)的相应文件就实现了替换。DLL文件是如何编译的 呢?
每个文件都是用一个ADINA指定的文件进行编译: ADINA-Structure模块:Makefile.adusr->adusr.dll->adina.exe ADINA-THermal模块: Makefile.atusr-> atusr.dll ->adinat.exe ADINA-CFD模块: Makefile.afusr-> afusr.dll ->adinaf.exe ADINA-FSI模块: Makefile.adfusr-> adfusr.dll ->adfsi.exe ADINA-TMC模块: Makefile.adtusr-> adtusr.dll ->adtmc.exe
• 编译过程:
..\DF98\bin\dfvars(启动编译环境) nmake /f Makefile.<usr> (编译生成DLL文件) FOCUSED ON EXCELLENCE
DLL是如何编译的? • Makefile文件已经编写了有关路径、指定源代码文件和 OBJ文件等指令,因此除了材料本构可能需要修改外,其它 的开发不需修改,自Байду номын сангаас都是包括在内的。