1 引言
《Python 与 PLAXIS 的集成方法》一文简要介绍了在Plaxis中如何使用Python编写命令流,不过那只是一个命令参考,为的是在Notebook中学习和调试命令,不是一个真正的命令流,今天这个笔记将描述一个完整代码的流程以及在编码过程中一些注意事项。
2 连接服务器
Plaxis与Python之间的通讯是通过服务器来实现的,也就是下图菜单中所示的“Configure remote scripting server"。通过配置串口port和口令password连接到localhost服务器。
在此我们获得服务器运行的port和password, 如果该port被占用,随便改一个别的数字即可。
Plaxis默认的Python编辑器是SciTE, 这个编辑器在我目前使用的计算机上不能运行,可能是路径配置不对,因此使用我安装的Spyder编辑器编写代码。
3 编写代码流程
(1) Plaxis与Python之间的通讯是通过服务器来实现的,为了建立Python与Plaxis之间的连接,必须首先输入Plaxis模块。
from plxscripting.easy import *
(2) 接着需要建立与服务器之间的连接。这些参数是上述服务器配置时自动给出的。有两个对象s_i 和g_i,s_i代表应用服务器,g_i代表全局环境。
s_i, g_i = new_server('localhost', 10000, password = 'gwmg
(3) 使用new命令产生一个新的项目。
s_i.new()
(4) 设置模型范围
g_i.SoilContour.initializerectangular (0,0,10,10)
(5) 在x=0处创建一个钻孔(Added Borehole_1)
g_i.borehole(0)
(6) 设置土层厚度(Added Soillayer_1)
g_i.soillayer(10)
(7) 设置材料属性。首先定义一个实例。(Added SoilMat_1)
material = g_i.soilmat()
然后为材料设置属性值
material.setproperties("SoilModel", 1, "gammaUnsat",16, "gammaSat",20,"Gref", 10000)g_i .Soils[0].Material = material
注意:SoilModel是按照模型的Index来选择的,比如我们想使用“Soft soil”模型,就输入6, 以此类推。
(8) 对土层施加一个线性载荷
g_i.gotostructures()g_i.lineload((3,0), (7,0))
(9) 划分网格
g_i.gotomesh()g_i.mesh(0.2)
这将产生54个单元和477个节点
(10) 输出节点并显示。selectmeshpoints方法用来选择网格中感兴趣的节点。 getcurveresults 方法用来显示已经选择的曲线点的结果。
output_port = g_i.selectmeshpoints()s_o, g_o = new_server('localhost', 10001, password = 'gwmgg_o.CurvePoints.Nodes[0]utot = g_o.getcurveresults(g_o.CurvePoints.Nodes.value[0], g_o.Phase[1], g_o.ResultTypes.Soil.Utot)print(utot)
至此,我们完成了一个完整的命令流。把上面的命令流保存成一个.py文件,运行即可完成一个PLAXIS分析。
3 结束语
这个笔记简要描述了使用Python自动化运行PLAXIS命令流的方法。这种方法的优点是可以重复使用代码,快速解决一个新的问题,也可以快速进行参数的敏感性分析,并且与其他人共享代码。缺点是学习周期比较长,必须深刻理解PLAXIS的各项功能,同时也必须具备熟练的Python编程技巧。
本文相关文档:
Python 与 PLAXIS 的集成方法
PLAXIS 机器地基动力分析---Part I
PLAXIS 机器地基动力分析---Part II
基础在粘土地基上的沉降模拟
PLAXIS的模拟方法初探 (P1)