Python in Itasca software---错误处理方法
Python in Itasca software---错误处理方法
GeotechWu
计算岩土力学(Geomechanics)是一个综合的岩土工程(Geotechnical)信息源,旨在与岩土工程领域的学生,研究人员和岩土工程师分享先进的岩土工程教育理念,岩土工程分析和设计方法。
1 引言
用Python编写Itasca软件【 Python in Itasca software(PFC, 3DEC, FLAC3D)---Part 1 】的命令时,大多数情况下不能一蹴而就,需要经过不断调试来纠正其中的错误,因此在代码中插入处理错误的方法不仅有助于快速排查错误,而且也能使得程序顺利运行下去。使用[try:except]结构---一种在Python语言中经常用于调试代码的方法,用来排查运行过程中的错误。下面讨论 在Itasca软件中 这种方法使用的两个场景。
2 Exception方法
try:except结构内可以包含任何Pyhton语句,包括it.command命令。一种场景是使用Exception方法:
try
:
it.command(
"""
block create brick 0 10
block densify segment 5
block zone prop young 10
model solve
"""
)
except
Exception
as
data:
print(
"an error occurred"
, data)
其中data传递了Itasca软件内置的错误信息,例如改动上面代码的数值可能出现的错误信息如下:
(1) negative or zero block volume;
(2) zero distance between block centers
(3) contact stiffnesses undefined-cannot cycle
如果同时发生了多个错误,则会显示所有的错误信息而不会中断程序运行。如果在Itasca软件中使用命令,一旦遇到第一个错误,程序就会立即中断。因此就程序调试来说,使用Python环境比直接使用命令具有优点。
3 AssertionError方法
在数值模拟的过程中,经常需要比较两个变量的值是否相等,例如比较数值解和解析解,或者比较使用不同途径得出的值。在Python中使用assert命令,相应的错误信息处理方法是AssertionError。
try
:
#assert volume_sum == round(b.vol() * block_count)
assert
abs(volume_sum -
1000.0
)<
1e-9
except
AssertionError
as
msg:
print(
"An error occured"
)
上述代码显示了一个block体积计算方法的比较。当把一个block在各个方向上等分后,每个单元的体积是相等的:
block create brick 0 10
block densify segment 5
因此理论上使用代码
volume_sum = 0.0
for b in it.block.list():
volume_sum += b.vol()
得出的volume_sum应该与单个块体体积乘以块体数目得出的volume_sum相同。
block_count = it.block.count()
b = it.block.find(1)
volume_sum = b.vol() * block_count
值得注意的是,FLAC3D可以实现完全相等,但3DEC由于块体有round,因此单个块体的体积得出的不是整数,导致上面的两种方法计算出来的值不能完全相同。有两种方法可以解决这个问题:
(1) 使用round函数
assert volume_sum == round(b.vol() * block_count)
(2) 使用误差值
assert abs(volume_sum - 1000.0)<1e-
9
微信扫一扫赞赏作者
赞赏
发送给作者
人赞赏
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
