自动输入命令执行_使用Python自动化执行Plaxis的命令流

1 引言

《Python 与 PLAXIS 的集成方法》一文简要介绍了在Plaxis中如何使用Python编写命令流,不过那只是一个命令参考,为的是在Notebook中学习和调试命令,不是一个真正的命令流,今天这个笔记将描述一个完整代码的流程以及在编码过程中一些注意事项。

2 连接服务器

Plaxis与Python之间的通讯是通过服务器来实现的,也就是下图菜单中所示的“Configure remote scripting server"。通过配置串口port和口令password连接到localhost服务器。

e070f05a5e00ec3ba550a3f44922ed56.png

e14d825e207f4b84089900ee67cafeef.png

在此我们获得服务器运行的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, 以此类推。 

4245b0f1dd9a335b3cdf9397dd22f618.png

(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)

9a4eef7565e400c6baeb17e7aeb01b8f.png

至此,我们完成了一个完整的命令流。把上面的命令流保存成一个.py文件,运行即可完成一个PLAXIS分析。

3 结束语

这个笔记简要描述了使用Python自动化运行PLAXIS命令流的方法。这种方法的优点是可以重复使用代码,快速解决一个新的问题,也可以快速进行参数的敏感性分析,并且与其他人共享代码。缺点是学习周期比较长,必须深刻理解PLAXIS的各项功能,同时也必须具备熟练的Python编程技巧。

本文相关文档:

Python 与 PLAXIS 的集成方法

PLAXIS 机器地基动力分析---Part I

PLAXIS 机器地基动力分析---Part II

基础在粘土地基上的沉降模拟

PLAXIS的模拟方法初探 (P1)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要直接调用 `plaxis3d` 运行命令,你可以使用 `subprocess` 模块来启动一个新的进程,并在其中运行 `plaxis3d` 命令行程序。 下面是一个简单的示例代码: ``` python import subprocess plaxis_exe_path = r"C:\Program Files\Plaxis\PLAXIS 3D\plaxis3d.exe" command_file_path = r"path/to/your/command/file" # 构造 plaxis3d 命令行参数列表 plaxis_args = [plaxis_exe_path, "/r", command_file_path] # 启动 plaxis3d 进程并等待其完成 process = subprocess.Popen(plaxis_args) process.wait() ``` 在上面的代码中,`plaxis_exe_path` 是 `plaxis3d.exe` 可执行文件的路径,`command_file_path` 是你要运行的命令文件的路径。`plaxis_args` 是一个列表,包含了要传递给 `plaxis3d.exe` 的所有命令行参数。 `subprocess.Popen()` 函数可以启动一个新的进程,并返回一个 `Popen` 对象。你可以通过这个对象来控制新进程的行为,例如等待进程完成、发送信号等。 在这个示例中,我们通过 `process.wait()` 等待 `plaxis3d` 进程完成,然后程序才会继续往下执行。如果你需要在后台运行 `plaxis3d` 进程,可以使用 `process.poll()` 来检查进程是否已经完成,例如: ``` python while process.poll() is None: # 进程还在运行 pass # 进程已经完成 ``` 当然,你还需要根据自己的需要来处理 `plaxis3d` 进程的输出和错误信息。你可以通过 `process.stdout` 和 `process.stderr` 属性来获取进程的输出和错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值