
1 引言
使用Python进行数值分析最广泛的一个用途是参数化研究,例如【HYRCAN使用Python进行边坡稳定性的参数化分析】。而在Itasca软件中,通过FISH函数的传递可以更灵活地进行参数化研究,这样作的好处是能够最大程度地把Python代码与Itasca命令实现分离,便于修改和扩充代码的功能。下面讨论手册中一个例子《Uniaxial Compressive Strength of a Jointed Material Sample》。这个例子使用ubiquitous-joint模型计算带有节理面试件的单轴抗压强度,试件的单轴抗压强度是岩石材料和节理属性的函数,如下图所示。在此省略了所有的过程模拟过程,仅把注意力集中在参数化研究上。

2 参数化研究
在Python代码中,使用range改变节理的角度beta,把beta传递给UCS计算代码ucs_test,从而得到19组数据。
betas = range(0,91,5)for beta in betas:it.command(f"""model new[global beta = {beta}]program call 'ucs_test'""")
使用的主要Python函数:
(1) gp.force_unbal_y
(2) it.gridpoint.list
(3) gp.in_group
ucs = []for beta in betas:filesav = f"./ucs_{beta}.sav"if os.path.exists(filesav):it.command(f"model restore '{filesav}'")sigmavs = [-gp.force_unbal_y() for gp in it.gridpoint.list() if gp.in_group("bottom")]ucs.append(sum(sigmavs)/3.06*1e-3)
3 绘图
使用matplotlib绘制参数化研究得到的计算结果【FLAC3D与Python的集成 (2)---数据交换至Numpy】。
import matplotlib.pyplot as plt

对曲线形状的控制试验了如下四种可以使用的类型:
plt.plot(betas,ucs,"r*--")plt.plot(betas,ucs,"bD-.")plt.plot(betas,ucs,"go--")plt.plot(betas,ucs,"b*-")
plt.xlabel("Weak-plane angle [°]")plt.ylabel("Axial strength [kPa]")plt.xlim(0,90)plt.ylim(3,10)plt.grid()plt.title("UCS test using ubiquitous-joint model")plt.show()
文章评论