首页/文章/ 详情

Python in Itasca software---错误处理方法

1年前浏览802

1 引言

用Python编写Itasca软件的命令时,大多数情况下不能一蹴而就,需要经过不断调试来纠正其中的错误,因此在代码中插入处理错误的方法不仅有助于快速排查错误,而且也能使得程序顺利运行下去。使用[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-9except AssertionError as msg:    print("An error occured")

      上述代码显示了一个block体积计算方法的比较。当把一个block在各个方向上等分后,每个单元的体积是相等的:

        block create brick 0 10block densify segment 5

        因此理论上使用代码

          volume_sum = 0.0for 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
                来源:计算岩土力学
                理论PFCFLAC3D3DEC
                著作权归作者所有,欢迎分享,未经许可,不得转载
                首次发布时间:2022-11-27
                最近编辑:1年前
                计算岩土力学
                传播岩土工程教育理念、工程分析...
                获赞 119粉丝 871文章 1721课程 0
                点赞
                收藏
                未登录
                还没有评论

                课程
                培训
                服务
                行家

                VIP会员 学习 福利任务 兑换礼品
                下载APP
                联系我们
                帮助与反馈