二次開發(fā)
LS-DYNA的二次開發(fā)環(huán)境及應(yīng)用
Livermore Software Technology Corp.
摘要
本文介紹了LS-DYNA新一代二次開發(fā)環(huán)境,編譯連接過程和新增功能。新的開發(fā)環(huán)境完全兼容原有的開發(fā)環(huán)境,包括所有的材料模型,狀態(tài)方程,單元類型,和求解器控制等各種用戶子程序。新開發(fā)環(huán)境簡化用戶子程序的編譯連接過程,直接生成動態(tài)連接庫,與LS-DYNA主執(zhí)行程序完全脫離。LS-DYNA主程序支持多個用戶子程序的動態(tài)連接庫同時加載,按用戶規(guī)則同時調(diào)用。新增功能包括支持用戶自定義關(guān)鍵字,模型參數(shù)化及自動生成等。本文介紹了新開發(fā)環(huán)境的編譯環(huán)境設(shè)置和編譯連接過程,以及多個動態(tài)連接庫的同時加載和調(diào)用方法。
引言
LS-DYNA是一個大型的通用有限元程序,秉承一個執(zhí)行程序,一個模型文件,執(zhí)行多類型多物理分析的開發(fā)宗旨,致力簡化用戶建模過程并提高模型的重復(fù)利用率。LS-DYNA內(nèi)置的顯式和隱式高效求解器及兩者之間的動態(tài)互換,對解決多重非線性的大規(guī)模問題具有獨特的優(yōu)勢,在實際工程中也得到非常廣泛的應(yīng)用??紤]到實際物理問題的復(fù)雜性和多樣性,LS-DYNA在開發(fā)初期就開放程序內(nèi)核,讓用戶根據(jù)實際問題開發(fā)相應(yīng)的用戶模塊來增強主程序的功能。現(xiàn)有的用戶子程序大體上包括以下幾類:
1)材料模型UMAT
2)熱材料模型TUMAT
3)狀態(tài)方程UEOS
4)單元UELEM
5)求解控制模塊
6)輸入輸出模塊
LS-DYNA為每個模塊都提供現(xiàn)成的模板程序,用戶根據(jù)需要修改相應(yīng)模塊的模就可以實現(xiàn)二次開發(fā)。因此,對于有一定編程經(jīng)驗的有限元開發(fā)人員來說,LS-DYNA的用戶模塊開發(fā)是相對比較簡單的,尤其是全套的模板程序提供了很好的示例和開發(fā)基礎(chǔ),演示了在大變形大轉(zhuǎn)動及各種非線性下的高效編程。這么多年來,有大批用戶成功地根據(jù)自己的需要開發(fā)出高質(zhì)量的用戶子程序,實現(xiàn)各種復(fù)雜問題的計算。
從目前的一些用戶的使用情況來看,二次開發(fā)比較容易出錯的一個環(huán)節(jié)是編譯和連接過程。目前LS-DYNA提供的一種開發(fā)方法是把所有主程序的OBJ文件打包成庫文件提供給用戶,而這些OBJ文件是在LS-DYNA標(biāo)準編譯環(huán)境下編譯出來的半成品二進制文件。然后用戶在自己的開發(fā)環(huán)境下編譯其用戶子程序,與主程序的OBJ庫文件連接生成含有用戶子程序的LS-DYNA執(zhí)行程序。該方法的好處是生成的LS-DYNA執(zhí)行程序內(nèi)含用戶子程序,方便執(zhí)行。容易出錯的地方是用戶的編譯環(huán)境往往LS-DYNA的標(biāo)準編譯環(huán)境不一樣,可能會導(dǎo)致連接后的LS-DYNA執(zhí)行程序不能正常工作。兩個編譯環(huán)境之間的差異可能會存在于各個方面,比如操作系統(tǒng)類別和版本,F(xiàn)ORTRAN編譯器的主版本及修正版本,C/C++編譯器的版本及其所帶的標(biāo)準庫文件等等。這些差異導(dǎo)致的錯誤有時還很難發(fā)現(xiàn),對二次開發(fā)造成一定的困擾。
另外,LS-DYNA得到越來越廣泛的應(yīng)用,在有些工業(yè)領(lǐng)域逐漸被認為是行業(yè)的標(biāo)準分析軟件。該行業(yè)的原材料供應(yīng)商針對自己的材料等開發(fā)專門的材料模型及配套參數(shù),提供給客戶對用其材料的產(chǎn)品利用LS-DYNA進行分析。近幾年來這種開發(fā)模式逐漸形成了一個發(fā)展趨勢。從另一面看,制造商在一次分析中可能要用到多個供應(yīng)商的不同材料模型,而如何保證所有供應(yīng)商的子程序OBJ版本都與LS-DYNA一致并正確地連接在一起,難度往往較大。LS-DYNA預(yù)分配的用戶材料號從41號到50號,總共只有10個,如何協(xié)調(diào)眾多供應(yīng)商的材料號避免沖突,又增加協(xié)調(diào)的難度。因此,這些需求都對LS-DYNA的開發(fā)環(huán)境提出了更高的要求。
為此,在完全兼容現(xiàn)有用戶子程序的基礎(chǔ)上,LS-DYNA推出另一種新的開發(fā)環(huán)境,在方便性,兼容性和靈活性等方面有很大的提高。首先,LS-DYNA的主程序是一個可以進行獨立分析的標(biāo)準版執(zhí)行程序,與用戶子程序完全分離,也不依賴于任何用戶子程序;LS-DYNA的主程序可以單獨升級,同時保持對用戶子程序的兼容性,用戶子程序無需重新編譯和連接。其次,用戶子程序是在用戶的開發(fā)環(huán)境下的獨立編譯連接并生成的動態(tài)連接庫,其所用的系統(tǒng)庫函數(shù)不影響LS-DYNA主程序;動態(tài)連接庫也保證了用戶子程序的版本獨立性和兼容性,無需和LS-DYNA主程序同時升級;有些情況下,動態(tài)連接庫可以允許不同的FORTRAN編譯器來編譯和連接。最后,用戶可以根據(jù)模型需要,在模型文件里面指定加載一個或多個多動態(tài)連接庫,并與模型中的相應(yīng)部件關(guān)聯(lián),實現(xiàn)動態(tài)調(diào)用。此外,若將來用戶子程序的接口有一定的變化時,LS-DYNA的高版本將考慮對以前版本的用戶子程序的兼容性,可以直接加載以前版本的用戶子程序的動態(tài)連接庫,而用戶無需重新編譯和連接。
本文先對LS-DYNA的用戶子程序做一個概述,介紹新開發(fā)環(huán)境下的開發(fā)過程及對源程序進行跟蹤和調(diào)試過程,最后演示多個動態(tài)連接庫的加載和調(diào)用過程。
LS-DYNA用戶子程序
1)材料模型UMAT
用戶材料模型是用戶子程序中應(yīng)用廣泛的,也是實用的模塊。LS-DYNA中的用戶材料號是從41號到50號,受關(guān)鍵字*MAT_USER_DEFINED_MATERIAL_MODELS控制。所有用戶材料子程序的統(tǒng)一入口子程序是dyn21.f中的
subroutine usrmat (lft,llt,cm,bqs,capa,eltype,mt,ipt,
. npc,plc,crv,nnpcrv,rcoor,scoor,tcoor,nnm1,nip,ipt_thk)
進入這個子程序后,再根據(jù)不同的單元類型選擇不同的材料子程序
·urmathn: 體單元的三維材料模型
·urmats: 殼單元的二維平面應(yīng)力材料模型
·urmatb, urmatd, urmatt: 三種不同的梁單元模型
這三個不同子程序根據(jù)各自的單元特點對應(yīng)力應(yīng)變進行相應(yīng)的處理,再進入具體的用戶子程序umat41, umat42, … , umat50。這10個子程序是標(biāo)準的串行版本模板,演示不同類型的材料模型,用戶可以從這10個子程序模板中選一個較為貼近的開始。如果對計算效率要求較高,用戶可以選與其對應(yīng)的矢量版的模板,umat41v, umat42v, … , umat50v。矢量版子程序的特點是利用現(xiàn)代128位或更多位CPU的寬度,一次對多個操作數(shù)同時進行運算,比如一個128位CPU一次對4個32位的單精度實數(shù)進行運算,而一個512位CPU則一次對16個單精度實數(shù)進行運算。用戶開發(fā)出這個umat子程序就可以進行顯式分析。如果要進行隱式分析,LS-DYNA還需要該材料的切線剛度陣子程序。不同單元的切線剛度陣入口子程序分別是:
·urtanh: 體單元的三維材料模型
·urtans: 殼單元的二維平面應(yīng)力材料模型
·urtanb: 三種不同的梁單元模型
這三個入口子程序也是根據(jù)各自的單元特點處理后,進入具體的切線剛度陣子程序 utan41, utan42, … , utan50, 或者其相應(yīng)的矢量版子程序utan41v, utan42v, … , utan50v。用戶需要開發(fā)對應(yīng)的utan子程序,就可以進行隱式分析了。
如果該材料需要支持LS-DYNA的界面單元,則用戶還要開發(fā)對應(yīng)的用戶界面材料子程序(Cohesive Materials)。界面材料子程序的統(tǒng)一入口子程序是dyn21b.f中的
subroutine umat41c(idpart,cm,lft,llt,fc,dx,dxdt,aux,ek,
& ifail,dt1siz,crv,nnpcrv,nhxbwp,cma,maketan,dsave,ctmp,elsiz,
& reject,ip,nip)
進入后轉(zhuǎn)入相應(yīng)的具體界面材料子程序umat41c, umat42c, … , umat50c。
2)熱材料模型TUMAT
熱材料模型的材料號是從11號到15號,由關(guān)鍵字*MAT_THERMAL_USER_DEFINED控制。其統(tǒng)一入口子程序是dyn21b.f中的
subroutine thusrmat(mt,c1,c2,c3,cvl,dcvdtl,hsrcl,dhsrcdtl,
1 hsv,iphsv,r_matp,crv,nnpcrv,npc,plc,nel,nep,iep,eltype,dt,atime,
2 ihsrcl,hsvm,nmecon,temp,hsv2,hstored)
相應(yīng)的用戶熱材料模型子程序是thumat11, thumat12, … , thumat15,而沒有單獨的矢量版子程序。
3)狀態(tài)方程UEOS
狀態(tài)方程在LS-DYNA的顯式分析中非常重要,是沖擊力學(xué)的基礎(chǔ)。用戶狀態(tài)方程的號碼是從21號到30號,由關(guān)鍵字*EOS_USER_DEFINED控制。其入口子程序是dyn21b.f中的
subroutine ueoslib(lft,llt,nes,mte,eosp,pnew,v0,dvol,
& crv,nnpcrv,ivect,ihistp,iflag,nh)
相應(yīng)的用戶狀態(tài)方程的子程序是ueos21s, ueos22s, … , ueos30s, 及其對應(yīng)的矢量版分別是ueos21v, ueos22v, … , ueos30v。
4)單元UELEM
用戶單元開發(fā)分兩類,殼單元和體單元。用戶殼單元的號碼是從101號到105號,由關(guān)鍵字*SECTION_SHELL控制,統(tǒng)一入口子程序是dyn21b.f中的
subroutine usrshl(rule,ixp,x,rhs,rhr,vt,vr,strain,yhatn,fibl,
1 auxvec,mtype,ro,cm,csprop,nsubgv,mtnum,nfegp,ihgq,hgq,ies,ener,
2 mpusr,lav,nmel,nnm1,mxe,ibqshl,iqtype,bkqs,gmi,ihgenf,hgener,
3 lft,llt,rhssav,eig,eign,qextra,nmtcon,ithxpid,ietyp,cmusr,
4 lenvec8,xipn,drlstr,rhsl,loceps,epsint,eosp,isdrill,rots)
進入到殼單元程序后,所有的變量都是在殼單元的單元坐標(biāo)系中完成。殼單元的額外控制參數(shù)見*CONTROL_ACCURACY,*CONTROL_SHELL等。用戶單元開發(fā)的工作量及復(fù)雜度要遠超用戶材料模型的開發(fā),涉及到單元的形函數(shù),B矩陣,沙漏控制,單元內(nèi)力集成等等。另外還需提供用戶殼單元的質(zhì)量陣,見dyn21b.f中的
subroutine ushlmass(iop,w,nxdof,x,rho,cm,lmc)
而用戶體單元的號碼也是從101號到105號,由關(guān)鍵字*SECTION_SOLID控制,統(tǒng)一入口子程序是dyn21b.f中的
subroutine usrsld(mtype,cm,u,v,fv,x,auxvec,eosp,tnew,fval,ener,
. npc,pld,hgforc,ies,bqs,nhxbwp,hgener,mte,nmtcon,lav,ihg,
. nnm2,lft,llt,ibq,nes,idmp,kp,nnm1,mxe,iehgfg,strains,rhssav,
. volfrc,cmaux,eig,eign,idam,damag,lpwphv,rots,hges,lochvh,ithxpid,
. ietyp,cmusr,xipn)
質(zhì)量陣的入口子程序是在dyn21b.f中
subroutine usldmass(iop,w,nxdof,x,rho,cm,lmc)
用戶體單元的變量都是在整體坐標(biāo)系中進行,對各向異性材料需要轉(zhuǎn)動。開發(fā)的復(fù)雜度比較高,其模板中需要提供很多子程序。詳細情況參閱dyn21b.f的用戶單元模板。
5)求解控制模塊及輸入輸出模塊
這個部分的子程序很多,多數(shù)都在dyn21.f中,還有幾個在couple2other_user.f 和dynrfn_user.f中。這些子程序是分散在手冊的不同章節(jié),沒有一個統(tǒng)一的說明。在關(guān)鍵字*MODULE_USE一節(jié)中,這些子程序都被簡單地分類處理。另外,在LS-DYNA手冊第一卷關(guān)鍵字手冊的附錄A-H中對二次開發(fā)有非常詳細的介紹。
LS-DYNA用戶子程序的編譯和連接
在新的用戶子程序開發(fā)環(huán)境中,LS-DYNA的主程序與用戶子程序完全分開,二次開發(fā)包中也不包含LS-DYNA主程序的OBJ文件。因此,新的二次開發(fā)包的文件很小,全部打包壓縮后只有165KB,大地提高了用戶子程序的編譯和連接速度,使得二次開發(fā)更加方便。
二次開發(fā)包中包括以下三部分內(nèi)容:
1)各個用戶子程序的模板,是FORTRAN的源程序,包括dyn21.f和 dyn21b.f等;
2)頭文件,也是源程序,包含LS-DYNA中各個COMMON BLOCK參數(shù),供二次開發(fā)使用;
3)編譯腳本文件,Makefile,用于編譯和連接。
前兩部分的源程序與用戶子程序的具體功能相關(guān)。腳本文件Makefile是一個純文本文件,可以用普通的文本編輯器修改,主要內(nèi)容包括以下幾個變量的設(shè)置:
MY_FLAG = -fPIC -O2 -safe_cray_ptr -xSSE2 -align array16byte ......
FC = /opt/platform_mpi/bin/mpif90
LD = /opt/platform_mpi/bin/mpif90 -shared -nofor_main
export MPI_F77 := /opt/intel/composer_xe_2013.5.192/bin/intel64/ifort
MY_TARGET = libusermat_105657.so
MY_OBJS = dyn21.o dyn21b.o init_dyn21.o ......
MY_INC = nlqparm define.inc define2.inc ......
其中:
·MY_FLAG是FORTRAN編譯器的標(biāo)準選項。如果用戶的FORTRAN編譯器和LS-DYNA主程序的編譯器的版本一樣,不建議更改這些標(biāo)準選項。
·FC指定MPP的FORTRAN編譯器,此例中給出的是platform_mpi的編譯器。
·LC指定MPP的連接器,此例中給出的是platform_mpi的連接器。
·Export MPI_F77是用來指定真正的FORTRAN編譯器,MPP編譯器會調(diào)用這個編譯器來編譯FORTRAN源程序。此例中指定了Intel FORTRAN編譯器的的版本及其安裝路徑。FC,LC,MPI_F77中指定的程序都包含有安裝路徑。如果用戶機器上安裝路徑或版本與此不同,則需要修改相應(yīng)的變量,否則不能正確編譯連接。
·MY_TARGET 是指定動態(tài)連接庫的名稱,在LINUX系統(tǒng)下一般以.so作為后綴,而Windows系統(tǒng)以.dll作為后綴
·MY_OBJS包含LS-DYNA的所有模板子程序的FORTRAN源碼。有些模版源碼可能沒有用上,手工去掉或保留都可以,不影響真正開發(fā)部分的源碼的執(zhí)行。用戶可以在這個變量里加入自己的源程序文件。
·MY_INC包含LS-DYNA用戶開發(fā)包的所有的頭文件,用戶可以添加自己的頭文件,但不建議刪除已有的頭文件。
當(dāng)這些變量都設(shè)置好后,在當(dāng)前目錄下運行LINUX系統(tǒng)的命令“make”來執(zhí)行這個編譯腳本文件,自動完成編譯和連接過程,并產(chǎn)生MY_TARGET所指定的動態(tài)連接庫。如果源程序有錯誤,則打印相應(yīng)的錯誤信息,并終止編譯連接過程。用戶在修改相應(yīng)的源程序后,可以再次執(zhí)行“make”命令來重試編譯和連接。另外,新的開發(fā)環(huán)境僅支持LINUX的單機或集群系統(tǒng),對Windows系統(tǒng)暫時還不能支持。
在用戶子程序開發(fā)過程中,經(jīng)常需要對源程序進行跟蹤和調(diào)試。用戶只需將Makefile中的MY_FLAG變量里的優(yōu)化選項“-O2”改為“-g”,就可以關(guān)掉編譯器的優(yōu)化功能并在動態(tài)連接庫中加入源程序信息,方便對源碼調(diào)試。調(diào)試MPP版本的LS-DYNA,用戶避免MPIRUN啟動多進程,而是直接啟用gdb(或者其它的跟蹤程序,如idb,ddd等)加載主程序,并在用戶子程序中設(shè)置斷點:
set breakpoint pending on
break <source file name>:<line number>
再用r命令啟動LS-DYNA進入單進程模式運行。LS-DYNA主程序加載帶有源程序信息的動態(tài)連接庫后就設(shè)置相應(yīng)的斷點,并在進入該用戶子程序后就在該斷點處停下來等待調(diào)試。
LS-DYNA用戶子程序的動態(tài)連接庫的調(diào)用
在一般情況下,LS-DYNA主程序進行普通分析是不加載任何用戶動態(tài)連接庫,也沒有必要。只有當(dāng)模型需要用到某個用戶動態(tài)連接庫時,則在原來的關(guān)鍵字文件中加入一個新的關(guān)鍵字 *MODULE_LOAD來實現(xiàn)加載。該關(guān)鍵字的格式如圖一所示:
圖一 關(guān)鍵字*MODULE_LOAD卡片
情形一:只有一個動態(tài)連接庫
當(dāng)一個模型只用到一個動態(tài)連接庫的時候,只需要*MODULE_LOAD就可以:
*MODULE_LOAD
my_mod
libusermat_105657.so
第一張卡片是給這個動態(tài)連接庫在這個模型中定義一個標(biāo)識名,不能重名。第二張卡片是動態(tài)連接庫的具體文件名,可以包含絕對路徑或者相對路徑。文件名及其路徑的長度限制為80個字符。如果不夠的話,則需要用到另外一個關(guān)鍵字*MODULE_PATH來指定動態(tài)連接庫的路徑。LS-DYNA則會搜索這個路徑并加載動態(tài)連接庫。
只有一個動態(tài)連接庫的情形是簡單的,也和以前的開發(fā)模式完全兼容。此情形下,LS-DYNA主程序會自動把所有對用戶子程序的需求都轉(zhuǎn)到這個動態(tài)連接庫。
情形二:調(diào)用多個動態(tài)連接庫
若模型需要用到多個動態(tài)連接庫,則可使用關(guān)鍵字*MODULE_LOAD來單獨加載每個動態(tài)連接庫:
*MODULE_LOAD
my_mod
libusermat_105657.so
mod_a
/ext/libusermat_moda.so
mod_b
/ext/libusermat_modb.so
此例演示了同時加載三個動態(tài)連接庫,并定義了相應(yīng)的三個獨立標(biāo)識名:“my_mode”,“mod_a” 和“mod_b”。LS-DYNA把這些動態(tài)連接庫加載后,還需要另外一個關(guān)鍵字*MODULE_USE定義各種調(diào)用規(guī)則,把對用戶子程序的調(diào)用轉(zhuǎn)到相應(yīng)的動態(tài)連接庫。關(guān)鍵字*MODULE_USE需要兩張或更多的卡片來定義一個動態(tài)連接庫的一個或多個調(diào)用規(guī)則。每個動態(tài)連接庫都需要至少一個單獨的*MODULE_USE關(guān)鍵字來定義其調(diào)用規(guī)則。
圖二 關(guān)鍵字*MODULE_USE卡片
*MODULE_USE的第一張卡片輸入動態(tài)連接庫的標(biāo)識名,后續(xù)的調(diào)用規(guī)則只適用于該動態(tài)連接庫。第二張卡片定義規(guī)則,一張卡片定義一個規(guī)則。若需要定義多個規(guī)則,則可以重復(fù)這張卡片。當(dāng)多個規(guī)則有沖突時,后輸入的規(guī)則為準,因此定義規(guī)則的時候要注意順序。另外也可利用順序,把普通的規(guī)則定義在先,再定義一些特殊的規(guī)則。
在多數(shù)情況下,調(diào)用規(guī)則都很簡單。借用上面的例子,假設(shè)模型中用到my_mod中UMAT41,mod_a中的UMAT42,以及mod_b中的UMAT45和UMAT46,則定義以下四個規(guī)則就可以了:
*MODULE_USE
my_mod
UMAT, 41, 41
*MODULE_USE
mod_a
UMAT, 42, 42
*MODULE_USE
mod_b
UMAT, 45, 45
UMAT, 46, 46
這樣LS-DYNA就會把所有用到UMAT41的材料轉(zhuǎn)到my_mod,而其它的UMAT轉(zhuǎn)到相應(yīng)的動態(tài)連接庫mod_a或mod_b。假若模型里還用到了UMAT48,但沒有相應(yīng)的規(guī)則指定如何調(diào)用,LS-DYNA主程序就會報告錯誤并終止執(zhí)行,指明UMAT48沒有找到。
情形三:調(diào)用材料號有沖突的多個動態(tài)連接庫
假若情形二中用戶子程序有沖突,比如上例模型需要同時用到三個動態(tài)連接庫my_mod,mod_a,mod_b中的UMAT41子程序,則需要更詳細的規(guī)則來定義調(diào)用關(guān)系。上例的規(guī)則是針對真實的用戶子程序名字來定義的,而此例中真實子程序名字有了沖突,就需要定義一個虛擬的子程序名稱來。在LS-DYNA中的材料號從1001到2000被指定為用戶材料模型,也就是說關(guān)鍵字*MAT_USER_DEFINED_MATERIAL_MODELS的材料號MT既可以是41到50,也可以是1001到2000。這些虛擬的材料號并沒有真實的用戶子程序來對應(yīng)的,必須通過規(guī)則來定義調(diào)用關(guān)系。有了這些虛擬材料號后,有沖突的材料號就可以重新定義:
·所有用到my_mod中UMAT41的材料都定義為1001
·所有用到mod_a中UMAT41的材料都定義為1002
·所有用到mod_b中UMAT41的材料都定義為1003
然后定義下面三個規(guī)則:
*MODULE_USE
my_mod
UMAT, 1001, 41
*MODULE_USE
mod_a
UMAT, 1002, 41
*MODULE_USE
mod_b
UMAT, 1003, 41
用虛擬的材料號來定義規(guī)則比較簡單,只是需要對原來的模型文件中材料號做一點修改。除此之外,LS-DYNA還允許對材料的標(biāo)識號(MATID)定義調(diào)用規(guī)則,不過LS-DYNA中的用戶材料模型限制同一個材料號(MT)的用戶子程序必須要有相同的控制參數(shù),參閱關(guān)鍵字*MAT_USER_DEFINED_MATERIAL_MODELS中對MT的說明。因此,在實際使用上,虛擬材料號的方法比較適用,也不容易出錯。
另外,針對材料號的規(guī)則不是僅僅對UMAT子程序定義的,LS-DYNA會自動把這些規(guī)則應(yīng)用到與UMAT的配套子程序上,如切線剛度陣子程序URTANH,URTANS,URTANB,及界面材料子程序UMATC等。切線剛度子程序的調(diào)用還會自動根據(jù)單元類型來進入正確的入口,無需用戶做更多的輸入。
本文針對材料號舉例演示了不同動態(tài)連接庫的調(diào)用規(guī)則,而關(guān)鍵字*MODULE_USE還可以對用戶開發(fā)包中的所有子程序都可以定義調(diào)用規(guī)則,包括用戶熱材料,用戶單元,用戶控制模塊。詳細的規(guī)則定義參閱關(guān)鍵字手冊中*MODULE一節(jié)。
結(jié)束語
LS-DYNA新的二次開發(fā)環(huán)境在完全兼容原來的用戶子程序的基礎(chǔ)上,簡化了用戶開發(fā)過程,提供了支持多用戶模塊的無沖突加載解決方案,并實現(xiàn)用戶子程序的獨立模塊化。
作者簡介
*韓志東/Zhidong Han博士1998年畢業(yè)于清華大學(xué)計算固體力學(xué)專業(yè),于2011年加入LSTC。他目前從事材料損傷斷裂分析及厚殼單元等方面研發(fā)。