1 引言
数值模拟软件越来越多地使用Python脚本自动化任务处理【个人观点---为什么数值模拟优先使用Python而不是MATLAB】, 主要用于处理重复性的动作、结构化的标准报告以及需要超越程序对数据访问的限制,其工作机理是每一条Python脚本被"翻译"成等效的操作命令执行程序任务。典型的软件有Plaxis2D, Plaxis3D, FLAC3D, 3DEC, PFC2D, PFC3D, DIANA【DIANA---梁受力分析流程[Beam Element] (Part 1)】和Abaqus。
本文是对以前三篇文章的更新:《Python 与 PLAXIS 的集成方法》;《使用Python自动化执行Plaxis的命令流》;《测试PLAXIS与Python通讯方式的新变化》。由于这三篇文章是两年前写的,两年过去了,一些命令发生了改变,致使原来的代码不能运行,而运行环境也发生了变化,因此重新写了这个题目,更新到目前的最新状态。
2 连接方法
与Itasca软件的连接方法稍有不同,Plaxis和Python之间的通讯是通过配置服务器来实现的,也就是下图菜单中所示的"Configure remote scripting server"对话框,通过端口port和密码password连接到localhost服务器。Python用的是3.7.4, Notebook用的是5.7.4, IPython用的是7.2.0, 这些程序的默认版本都不是最新的,不过可以定制使用其它版本。
当连接到服务器后,会产生两个对象:s_i---应用服务器对象(application server); g_i---全局环境对象(the global environment),所有的输入(Input)操作都是基于这两个对象展开的,例如:
s_i.new()
g_i.borehole(0) # for 3D: g_i.borehole(0, 0)
g_i.soillayer(2)
下面以Plaxis 2D为例简要描述其使用方法,Plaxis 3D的操作命令与2D基本相同。
3 计算流程
如果令borehole_g = g_i.borehole(0),可以检查borehole的属性。使用print(type(borehole_g))发现这是一个类。可以使用print(dir(borehole_g))和print(borehole_g.info())检查borehole的所有属性。下面所示的是一个简单的计算流程。
from plxscripting.easy import *
s_i, g_i = new_server('localhost', 21403, password = 'password')
s_i.new()
g_i.SoilContour.initializerectangular (0,0,10,10)
g_i.borehole(0)
g_i.soillayer(10)
material = g_i.soilmat()
material.setproperties("SoilModel", 1, "gammaUnsat",16,
"gammaSat",20,"Gref", 10000)
g_i .Soils[0].Material = material
g_i.gotostructures()
g_i.lineload((3,0),(7,0))
g_i.gotomesh()
g_i.mesh(0.2)
g_i.gotostages()
phase0_s = g_i.InitialPhase
phase1_s = g_i.phase(phase0_s)
g_i.LineLoads[-1].Active[phase1_s] = True
g_i.calculate()
4 Python命令流
Plaxis 2D共包含252个Python命令,现在已经把这些命令合并到一个数据库中,从而能够快速查询和产生出新的命令流。此外,Plaxis 2D的知识库逐渐集成在这个数据库中。下一步,将增加Plaxis 3D的Python命令流,最终成为一个学习宝典。