镁铁质岩浆体系的矿物-熔体平衡

镁铁质岩浆体系的矿物-熔体平衡,第1张

1.程序功能

程序TEQUIL可根据用户提供的镁铁质岩浆体系的矿物组合及熔体成分,自动检索出可供使用的温度计方法,计算出橄榄石、高钙辉石、低钙辉石、斜长石、钛铁矿、尖晶石5种固溶体矿物-熔体平衡的28个结晶反应的平衡温度(Nielsen&Dungan,1983)。程序适用于拉斑玄武岩、碱性玄武岩、安山岩等w(SiO2)<60%的镁铁质火山岩类。

2.方法原理

本程序采用Nielsen和Dungan(1983)关于低压下干镁铁质岩浆体系的矿物-熔体平衡的热力学模型。程序设计的方法是,首先,根据用户提供的镁铁质火山岩的斑晶矿物组合及化学成分,计算出各矿物相的晶体化学式(阳离子系数)。然后,根据用户提供的初始参数,即估计的压力、温度和相对氧逸度,对熔体相的Fe2O3和FeO含量进行修正。在此基础上,按照双晶格熔体结构模型,计算熔体相各组分的活度。按照所选择的结晶反应,计算出矿物-熔体的平衡温度。

3.程序结构

结晶岩热力学软件

4.使用说明

(1)输入格式

程序运行过程中,按照屏幕提示,依次提供下列参数:

IFN/OFN 输入/输出文件名

JFe3(j) 铁镁矿物Fe3+/Fe2+计算选择

TC 估计的平衡温度(℃)

PGPa 估计的平衡压力(GPa)

dlgfo2 相对于FMQ缓冲剂的氧逸度

文件输入格式为:I2(相数),A6(样品号);

A3,13F6.2。

各变量的排列顺序依次为:Sams(相名称)、SiO2、TiO2、Al2O3、Cr2O3、Fe2O3、FeO、MnO、NiO、MgO、CaO、Na2O、K2O、P2O5。

用户根据实际需要,可增加SrO、BaO、Li2O等3个变量。此时,只需改变子程序MINORM中的文件读入语句及相应的格式语句即可。

每次计算的样品个数不限。

(2)输出格式

全部计算结果输出到文件OFN中。内容包括:各矿物相的化学成分,晶体化学式(阳离子系数),摩尔质量,按照自动检索出的矿物相(结晶反应)(马鸿文,1993a)计算的平衡温度。对于其中那些计算不出合理的lnK值的结晶反应(如某一组分含量或活度为零时),其输出结果表示为Teq(C)=0。

5.程序文本

结晶岩热力学软件

data Meth/'Mg','Fe','Ni','Mn',3*'',

$  'En','Fs','Di','Hd','Al','Ti','Cr',

$  'Ab','An',5*'',

$  'Il','Mg','Cr',4*'',

$  'Sp ','F3','Cr','Al','MF',2*''/

write(*,*)'Input/Output filename=?’

read(*,10)IFN,OFN

10 format(A)

open(unit=3,file=IFN,status='old')

open(unit=4,file=OFN,status='unknown') **** Set necessary parameters and calculate mineral formula *************

do j=1,6

if(j.eq.4)goto 18

write(*,15)Mtit(j)

15 format('Fe3+cal ibration for',A3,'(Y/N)?')

read(*,10)JFe3(j)

18 end do

20 read(3,25,ERR=110,END=120)nn,Sample

25 format(12,A6)

write(4,30)Sample

30 format(/5X,'Sample:',A)

call MINORM(nn,m,CMP,Mtit,Sams,Cpfu,WAlopx,JFe3)

**** Calibrate Fe2O3/FeO ratio of the liquid ****************************

TK=1473.15

write(*,35)Sample

35 format(/'Sample:',A,'P(GPa)=?')

read(*,*)PGPa

write(*,*)'dlogfo2(FMQ)=?’

read(*,*) dlgfo2

sum=0

do j=1,m

OXD(j)=Cpfu(14,j)/Ncat(j)

sum=sum+OXD(j)

end do

do j=1,m

OXD(j)=OXD(j)/sum

end do

logfo2=buffo2(3,TK,PGPa)+dlgfo2

call Fe3clb(TK,PGPa,logfo2,m,OXD)

sum=0

do j=1,m

OXD(j)=Ncat(j)*OXD(j)

sum=sum+OXD(j)

end do

do j=1,m

OXD(j)=OXD(j)/sum

end do

**** Calculate lnKd & T(C)of mineral-liq equilibria ********************

call ACTLIQ(m,4,10,OXD,XNF,XNM)

do i=1,nn

if(Sams(i).eq.'olv')then

if(Cpfu(4,1).ge.1)then

XSi=l

elSe

XSi=Cpfu(4,1)

end if

Xoc t=Cpfu(4,6)+Cpfu(4,7)+Cpfu(4,8)+Cpfu(4,9)

XMg=Cpfu(4,9)/Xoct

XFe=Cpfu(4,6)/Xoct

XNi=Cpfu(4,8)/Xoct

XMn=Cpfu(4,7)/Xoct

lnKd(1)=alog(XMg*XSi**0.5)/(XNM(9)*XNF(1)**0.5)

lnKd(2)=alog(XFe*XSi**0.5)/(XNM(6)*XNF(1)**0.5)

if(XNi.le.0.or.XNM(8).le.0)then

lnKd(3)=0

else

lnKd(3)=alog(XNi*XSi**0.5)/(XNM(8)*XNF(1)**0.5)

end if

lnKd(4)=alog(XMn*XSi**0.5)/(XNM(7)*XNF(1)**0.5)

do j=1,4

Teq(j)=Ai(j)/(lnKd(j)-Bi(j)-273.15

if(lnKd(j).eq.0)Teq(j)=0

end do

write(4,50)(Meth(j,1),Teq(j),j=1,4)

50 format('olv(',A2,')-liq Teq(C)=',F6.1)

else if(Sams(i).eq.'cpx')then

do j=1,m

OXD(j)=Cpfu(6,j)

end do

call PYXoct(m,OXD,XMgMl,XMgM2,XFeMl,XFeM2,XAlMl,AlMlts)

XCaM2=OXD(10)/(XMgM2+XFeM2+OXD(7)+OXD(10)+OXD(13)

XTi=OXD(2)/4

XAl=OXD(3)/4

XCr=OXD(4)/4

XSi=OXD(1)/2

if(XSi.ge.1)XSi=1

if(XMgM2.le.0)then

lnKd(5)=0

else

lnKd(5)=alog(XMgMl*XMgM2*XSi**2)/(XNM(9)**2*XNF(1)**2)

end if

if(XFeM2.le.0)then

lnKd(6)=0

else

lnKd(6)=alog(XFeMl*XFeM2*XSi**2)/(XNM(6)**2*XNF(1)**2)

end if

lnKd(7)=alog(XMgMl*XCaM2*XSi**2)$  /(XNM(9)*XNM(10)*XNF(1)**2)

lnKd(8)=alog(XFeMl*XCaM2*XSi**2)

$ /(XNM(6)*XNM(10)*XNF(1)**2)

if(XAl.le.0.or.XNM(3).le.0)then

lnKd(9)=0

else

lnKd(9)=alog(XAl/XNM(3)

end if

if(XTi.le.0.or.XNM(2).le.0)then

lnKd(10)=0

else

lnKd(10)=alog(XTi/XNM(2)

end if

if(XCr.le.0.or.XNM(4).le.0)then

lnKd(11)=0

else

lnKd(11)=alog(XCr/XNM(4)

end if

do j=5,11

Teq(j)=Ai(j)/(lnKd(j)-Bi(j)-273.15

if(lnKd(j).eq.0)Teq(j)=0

end do

write(4,60)(Meth(j-4,2),Teq(j),j=5,11)

60 format('cpx(',A2,')-liq Teq(C)=',F6.1)

else if(Sams(i).eq.'opx')then

do j=l,m

OXD(j)=Cpfu(5,j)

end do

call PYXoct(m,OXD,XMgMl,XMgM2,XFeMl,XFeM2,XAlMl,AlMlts)

XCaM2=OXD(10)/(XMgM2+XFeM2+OXD(7)+OXD(10)+OXD(13)

XTi=OXD(2)/4

XAl=OXD(3)/4

XCr=OXD(4)/4

XSi=OXD(1)/2

if(XSi.ge.l)XSi=l

lnKd(12)=alog(XMgMl*XMgM2*XS i**2)/(XNM(9)**2*XNF(1)**2)

lnKd(13)=alog(XFeMl*XFeM2*XSi**2)/(XNM(6)**2*XNF(1)**2)

lnKd(14)=alog(XMgMl*XCaM2*XSi**2)

$  /(XNM(9)*XNM(10)*XNF(1)**2)

lnKd(15)=alog(XFeMl*XCaM2*XS i**2)

$  /(XNM(6)*XNM(10)*XNF(1)**2)

lnKd(16)=alog(XAl/XNM(3)

lnKd(17)=alog(XTi/XNM(2)

if(XCr.le.0.or.XNM(4).le.0)then

lnKd(18)=0

else

lnKd(18)=alog(XCr/XNM(4)

end if

do j=12,18

Teq(j)=Ai(j)/(lnKd(j)-Bi(j)-273.15

if(lnKd(j).eq.0)Teq(j)=0

end do

write(4,70)(Meth(j-11,2),Teq(j),j=12,18)

70 format('opx(',A2,')-liq Teq(C)=',F6.1)

else if(Sams(i).eq.'plg')then

Xoct=Cpfu(11,10)+Cpfu(11,13)

lnKd(19)=alog(Cpfu(11,13)/Xoct)/(XNF(2)*XNF(1)**3)

if(XNM(3).le.0)then

lnKd(20)=0

else

lnKd(20)=alog(Cpfu(11,10)/Xoct)/(XNM(10)*(XNM(3)**2)

$  *XNF(1)**2))

end if

do j=19,20

Teq(j)=Ai(j)/(lnKd(j)-Bi(j)-273.15

if(lnKd(j).eq.0)Teq(j)=0

end do

write(4,80) (Meth(j-18,3),Teq(j),j=19,20)

80 format('plg(',A2,')-liq Teq(C)=',F6.1)

else if(Sams(i).eq.'ilm')then

Xoct=Cpfu(3,4)+Cpfu(3,6)+Cpfu(3,9)

lnKd(21)=alog(Cpfu(3,6)/Xoct)/(XNM(2)*XNM(6))

lnKd(22)=alog(Cpfu(3,9)/Xoc t)/XNM(9)

lnKd(23)=alog(Cpfu(3,4)/Xoct)/XNM(4)

do j=21,23

Teq(j)=Ai(j)/(lnKd(j)-Bi(j)-273.15

end do

write(4,90) (Meth(j-20,4),Teq(j),j=21,23)

90 format('ilm(',A2,')-liq Teq(C)=',F6.1)

else if(Sams(i).eq.'spn')then

Xoct=0

do j=2,5

Xoct=Xoct+Cpfu(2,j)

end do

lnKd(24)=alog(Cpfu(2,2)/Xoct)/(XNM(2)*XNM(9)**2)

if(Cpfu(2,5).le.0.or.XNM(5).le.0)then

lnKd(25)=0

else

lnKd(25)=alog(Cpfu(2,5)/Xoct)/XNM(5)

end if

lnKd(26)=alog(Cpfu(2,4)/Xoct)/XNM(4)

lnKd(27)=alog(Cpfu(2,3)/Xoct)/(OXD(3)**2)

lnKd(28)=alog(Cpfu(2,9)/Xoct)/(XNM(9)/(XNM(6)+XNM(9))

do j=24,28

Teq(j)=Ai(j)/(lnKd(j)-Bi(j)-273.15

if(lnKd(j).eq.0)Teq(j)=0

end do

write(4,100)(Meth(j-23,5),Teq(j),j=24,28)

结晶岩热力学软件

6.计算实例

甘肃北祈连九个泉地区蛇绿岩套,拉斑玄武岩的单斜辉石-熔体平衡温度计算(马鸿文等,1994,未发表资料)。

某地玄武安山岩的橄榄石、斜长石-熔体平衡温度计算。

输入文件:exam47.dat

结晶岩热力学软件

输出文件:exam48.dat

结晶岩热力学软件

结晶岩热力学软件

结晶岩热力学软件

有限元商业软件ABAQUS提供了多种模拟裂纹开裂的方法,其中以cohesive element和XFEM最为有效。XFEM只需要添加预制裂纹,即能模拟裂纹的扩展,裂纹路径不受限制,可穿过单元传播。XFEM模拟开裂时,认为材料各处的断裂强度是一致,这很难模拟本身具有离散性的脆性材料裂纹扩展受强度影响。将cohesive单元批量嵌入单元网格之间,并赋予cohesive element服从weibull分布的断裂强度,即可实现裂纹沿任意路径扩展,此时裂纹的扩展受强度的影响。虽然用cohesive element模拟裂纹开裂,裂纹只能演单元边开裂,但其对脆性材料开裂的模拟更接近真实情况。ABAQUS CAE中只提供了简单添加cohesive element的方法,要实现cohesive element的批量添加,需要通过对inp文件的处理来实现。

Python是ABAQUS的脚本语言,可很方便的实现文本 *** 作。cohesive element的添加流程如下:

(1)在ABAQUS CAE中生成inp文件,并将需要添加cohesive element的单元建立集合,为描述方便,下文把此集合称作CO_IN_SET;

(2)用python程序读取inp文件,分别获得节点信息及单元信息,以及CO_IN_SET;

(3)获得CO_IN_SET中单元对应的节点,并找出其中节点的重复次数,重复节点大于2的即需生成新的节点,每一重复节点生成的新节点比其重复次数少1,记录新节点对应的单元;

(4)获得CO_IN_SET中单元对应的边的重复次数,其单元的边由单元的节点按逆时针连接形成,单元的重复边即为需要嵌入cohesive单元的地方;

(5)替换CO_IN_SET单元的节点为新的节点,并按照重复边形成cohesive单元;

(6)输出新的包含cohesive element的inp文件。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11339921.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存