Damask 2.0.3聯(lián)合abaqus進(jìn)行晶體塑性有限元模擬的簡(jiǎn)單介紹
Damask2.0.3版本是最后一個(gè)和Abaqus有接口的版本,在Damask2.0.3的官網(wǎng)中已經(jīng)進(jìn)行了聲明,目前最新的版本已經(jīng)不支持和Abaqus聯(lián)合使用。但是Damask和abaqus聯(lián)合使用仍然是學(xué)習(xí)晶體塑性有限元方法不錯(cuò)的工具。我曾使用過(guò)Abaqus聯(lián)合damask平臺(tái),這里我對(duì)使用過(guò)程中個(gè)人的一點(diǎn)經(jīng)驗(yàn)進(jìn)行簡(jiǎn)單的介紹,希望各位讀者在研究過(guò)程中少一些技術(shù)上的障礙。
1.軟件安裝
Damask軟件的安裝較為復(fù)雜,我那時(shí)候是在某魚(yú)上找人安裝的,使用的是Ubuntu18.04,Abaqus版本是2018。目前VMware Workstation可以方便的將系統(tǒng)導(dǎo)出為ovf格式,便于安裝,有需要的可以聯(lián)系我。
2.使用介紹
關(guān)于damask2.0.3聯(lián)合abaqus的入門(mén)使用,我這里直接用一個(gè)簡(jiǎn)單的例子來(lái)介紹。首先在Neper中生成一個(gè)1×1×1的三維立方體晶體模型,共200個(gè)晶粒:
neper -T -n 200 -dim 3 -domain "cube(1,1,1)" -oriformat plain -oridescriptor euler-bunge -o Jiahe1
如果想輸出晶粒的等效直徑,可以加上-statcell diameq命令,會(huì)自動(dòng)生成一個(gè)文件存儲(chǔ)所有晶粒的等效直徑。
然后劃分網(wǎng)格并生成inp文件,共有9261個(gè)單元:
neper -M Jiahe1.tess -rcl 1.3 -elttype hex -interface continuous -format inp -o abq_input
關(guān)于網(wǎng)格劃分需要注意,damask2.0.3聯(lián)合abaqus只支持部分單元類(lèi)型(CPE4,CPE8,C3D4,C3D6,C3D8,C3D8R,C3D20,C3D20R),即不支持四邊形單元和四面體單元。Segurado教授曾在自己的著作(Computational Homogenization of Polycrystals)中表示,這樣將導(dǎo)致晶界呈階梯狀表面,不適合于模擬局限于晶界的現(xiàn)象,如晶界滑動(dòng)。
Damask2.0.3聯(lián)合abaqus運(yùn)行需要3個(gè)必要文件,abaqus_v6.env,*.inp和material.config。abaqus_v6.env用于配置DAMASK與Abaqus聯(lián)合使用時(shí)的環(huán)境設(shè)置文件,一般不需要修改。
從neper導(dǎo)出inp文件后,需要對(duì)該inp文件進(jìn)行前處理,為每一個(gè)晶粒建立單獨(dú)的材料并輸入材料參數(shù)。這里基于Neper2Abaqus進(jìn)行修改,采用Matlab進(jìn)行前處理。
本例采用一種Al合金材料,F(xiàn)CC結(jié)構(gòu),在Matlab命令行中運(yùn)行:
neper2abq('Al__')
其中Al是輸入文件的名稱(chēng)。在名稱(chēng)末尾需要包含雙下劃線。運(yùn)行此函數(shù)將生成4個(gè)文件:Al_materials.inp,Al_sections.inp,Al_Microstructure_ElementHomogeneous.config,Al_Texture_Gauss.config。
將Neper生成的inp文件與本函數(shù)生成的兩個(gè)inp文件放在同一文件夾中。然后打開(kāi)Neper生成的inp文件,在文件末尾進(jìn)行如下修改:
在*End Part之前添加:
*Include, Input = Al_sections.inp
在*End Part之后添加:
*Include, Input = Al_materials.inp
此輸入文件即可以導(dǎo)入Abaqus,包含所有材料和截面信息。每一個(gè)晶粒采用一個(gè)材料屬性,每一種材料有兩個(gè)力學(xué)常數(shù),第一個(gè)力學(xué)常數(shù)代表需要使用的均勻化法則,第二個(gè)力學(xué)常數(shù)代表需要使用的微觀組織。Al_Microstructure_ElementHomogeneous.config和Al_Texture_Gauss.config屬于material.config,material.config主要包含Homogenization,Microstructure,Crystallite,Phase和Texture。Homogenization部分用于選擇所采用的均勻化法則;Crystallite部分用于輸出與所選本構(gòu)關(guān)系無(wú)關(guān)的晶體學(xué)量;Phase部分用于選擇材料的本構(gòu)關(guān)系,包括材料參數(shù)的輸入和與所選本構(gòu)關(guān)系相關(guān)的晶體學(xué)量的輸出;Texture部分用于指定晶粒的取向;Microstructure部分表示材料所采用的微觀組織,主要包括每個(gè)晶粒的crystallite,phase和texture。一般情況下由于晶粒數(shù)目較多,Microstructure部分和Texture部分較長(zhǎng),為了增強(qiáng)代碼的可讀性,通常將Microstructure部分和Texture部分單獨(dú)生成為兩個(gè)配置文件。這部分內(nèi)容在官網(wǎng)中有詳細(xì)介紹(https://damask2.mpie.de/bin/view/Documentation/MaterialConfig.html),這里不再過(guò)多說(shuō)明。
至此,我們就準(zhǔn)備好了所需要的abaqus_v6.env,inp文件和material.config,在inp文件中添加邊界條件,這里采用EasyPBC施加了一個(gè)單軸拉伸的位移邊界條件,如下圖所示:

運(yùn)行作業(yè)時(shí)在終端輸入:
abaqus job=JiaHe1 user=/home/cpfem/damask-2.0.3/src/DAMASK_abaqus.f interactive
即可運(yùn)行作業(yè),可以通過(guò).sta文件查看作業(yè)進(jìn)程。以下是計(jì)算結(jié)果:應(yīng)力云圖(Pa)和力位移曲線,本例的所有計(jì)算文件附在文末。


對(duì)于本例中所采用的現(xiàn)象學(xué)晶體塑性本構(gòu)關(guān)系,共有114個(gè)狀態(tài)變量,分別如下:
SDV1:HomogenizationCount
SDV2:GrainCount
SDV3:CrystalliteCount
SDV4~7:quaternion(取向四元數(shù))
SDV8~11:deviation from initial orientation as axis (1-3) and angle in degree (4) in crystal reference coordinates(晶體參考坐標(biāo)系中與初始取向的偏差(以軸(1-3)和角度(4)為單位))
SDV12~20:f,deformation gradient tensor(變形梯度張量)
SDV21~29:fe,elastic deformation gradient tensor(彈性變形梯度張量)
SDV30~38:fp,plastic deformation gradient tensor(塑性變形梯度張量)
SDV39~47:p,first Piola-Kichhoff stress tensor(第一Piola-Kichhoff應(yīng)力張量)
SDV48~56:s,second Piola-Kichhoff stress tensor(第二Piola-Kichhoff應(yīng)力張量)
SDV57-65:lp,plastic velocity gradient tensor(塑性速度梯度張量)
SDV66:ConstitutiveCount
SDV67~78:resistance_slip(滑移系阻力)
SDV79~90:shearrate_slip(滑移系剪切應(yīng)變率)
SDV91~102:resolvedstress_slip(滑移系臨界分切應(yīng)力)
SDV103~114:accumulatedshear_slip(滑移系累積剪應(yīng)變)
3.其他說(shuō)明
(1)在終端輸入
abq_addUserOutput -m 114 JiaHe1.inp
可以直接修改inp文件的狀態(tài)變量個(gè)數(shù)。
(2)在終端輸入
abq_addUserOutput --homogenization 1 --crystallite 1 --phase 1 JiaHe1.inp
可將material.config中請(qǐng)求的輸出變量傳輸?shù)紸baqus輸入文件(*.inp),但是需要預(yù)先運(yùn)行作業(yè),將會(huì)在inp文件中生成正確的狀態(tài)變量數(shù)量并命名。如下圖所示:

(3)可以將Damask編譯成一個(gè)庫(kù),這樣就不必為每個(gè)作業(yè)編譯子程序。我曾經(jīng)做過(guò)嘗試,但是沒(méi)有成功,詳見(jiàn)官網(wǎng)https://damask2.mpie.de/bin/view/Installation/Abaqus.html
(4)Damask2.0.3聯(lián)合Abaqus最大的問(wèn)題是不支持使用 Abaqus 并行化。DAMASK2.0.3官網(wǎng)聲明可以使用OpenMP進(jìn)行內(nèi)部并行化,通過(guò)環(huán)境變量 $DAMASK_NUM_THREADS 設(shè)置 DAMASK 要使用的線程數(shù),大家可以試一下。
export DAMASK_NUM_THREADS=8 echo $DAMASK_NUM_THREADS
我曾經(jīng)做過(guò)嘗試,OpenMP內(nèi)部并行對(duì)計(jì)算速度的增加聊勝于無(wú)。
這里附上計(jì)算文件:
工程師必備
- 項(xiàng)目客服
- 培訓(xùn)客服
- 平臺(tái)客服
TOP




















