1 引言
在正确配置Python的服务器【使用Python自动化Plaxis的命令流】和远程代码编辑器【Plaxis使用Spyder替换默认编辑器SciTE的方法】后,便可以在Spyder中直接写代码来运行Plaxis程序。本文讨论了如何使用Python定义和操作材料参数,这是对Plaxis笔记的改进[1591]。
2 定义材料
定义材料有两种方法,第一种方法使用直接带参数的g_i.soilmat():
g_i.soilmat(
"Identification", "Sand",
"SoilModel", "Hardening Soil",
"gammaUnsat", 17,
"gammaSat", 20,
"E50Ref", 40000,
"cRef", 0.1,
"phi", 32
)
第二种方法首先使用g_i.soilmat()实例化一个材料,然后使用setproperties方法定义参数:
material = g_i.soilmat()
material.setproperties(
"Identification", "Sand",
"SoilModel", "Hardening Soil",
"gammaUnsat", 17,
"gammaSat", 20,
"E50Ref", 40000,
"cRef", 0.1,
"phi", 32
)
材料模型、模型编号以及最小的输入参数如下:
(1) Linear elastic---1, ERef
(2) Mohr-Coulomb---2,ERef, cRef or phi or cInc
(3) Hardening Soil---3, E50Ref, EURRef, cRef or phi or cInc
(4) HS small---4, E50Ref, EURRef, cRef or phi or cInc, gamma07, G0Ref
(5) Soft Soil---5, lambdaModified, kappaModified, cRef or phi
(6) Soft Soil Creep---6, lambdaModified, kappaModified, cRef or phi
(7) Jointed Rock---7, ET, EN, GNT, c1 or phi1
(8) Modified Cam-Clay---8, lambda ( = lambdaModified * (1 + e) ), kappa ( = kappaModified * (1 + e) ), M for interface: CInter or PhiInter
(9) NGI-ADP---9, GURsUARation, sUARef, sUDSSsUARation
(10) Hoek-Brown---10, Erm, AbsSigmaCI, mi
(11) Sekiguchi-Ohta (Inviscid) (2D only)---11, lambdaModified, kappaModified for interface: CInter or PhiInter
(12) Sekiguchi-Ohta (Viscid) (2D only)---12, lambdaModified, kappaModified for interface: CInter or PhiInter
(13) Concrete---13, E28, phiMax
(14) UBC3D-PLM---14, kBeModified, kGeModified, kGpModified, phicv, sigT, N160
(15) UDCAM-S---15, GMaxtauCRatio, tauCRef, tauDSStauCRatio
(16) User defined soil model---100, UserDLLName, UserModel for interface: EoedInter, CInter or PhiInter
3 操作参数
无论使用哪一种定义方法,最终材料参数保存在Materials类中。使用类的属性即可提取出材料参数,例如:
get_parameters = g_i.Materials[-1]
print(get_parameters.Identification)
材料模型返回的参数是模型编号,例如上面例子中的返回值是3。
如果有多个土层,使用下面的代码获取其名称:
Soil_list = [mat.Name for mat in g_i.Soils]
Soil_list = [mat.Name.value for mat in g_i.Materials[:] if mat.TypeName.value == 'SoilMat']
4 materialcommand方法
materialcommand()方法是V22中引入的一个功能,使用这个方法可以生成Plaxis命令,定义材料及其属性。
material_command = g_i.Materials[-1].materialcommand()
5 info方法
info方法可以列出对象的所有命令和属性:
print(g_i.info(g_i.Materials))
Materials
Commands: echo, commands, rename, multiply, info
print(g_i.info(g_i.Materials[-1]))
Sand
Commands: echo, commands, rename, multiply, info, setproperties, getmetadata, setmetadata, materialcommand, setcolour, save
Attributes: Name, TypeName, Comments, UserFeatures, Metadata, Colour, Identification
一个更详细的对象列表是使用g_i.tabulate方法:
g_i.tabulate(g_i.Materials[-1])
不过这个方法只能显示出材料属性,但不能对其进行操作,因为这个值的返回类型是"str", 如果设计成dict对象就好了[ex3.py]。