首页/文章/ 详情

位移差?应力差?利用python实现结果文件间运算。

10月前浏览1265
摘要:利用python实现结果文件间运算。

1.前情提要

2020年采用fish语言实现了结果文件间的运算,但过程涉及到文件写入写出,较为复杂。详见下文:

——

呱太Gekota,公 众号:FLAC3D小技巧位移差?应力差?利用fish语言实现结果文件间运算。

因此,本文通过python简化流程。

2.代码

2.1 老代码

























































model newzone create brick size 20 20 20 group 'a'zone group 'b' range position-x 5 15 position-z 5 15zone gridpoint initialize pore-pressure 1e3 model save 'a'zone gridpoint initialize pore-pressure 0 range group 'a'model save 'b'model restore 'a.f3sav'fish def setup    io_read = 0     io_write = 1    io_ascii = 1    arr_size = gp.numend@setupfish def pp_out    array id1(arr_size)    array pp1(arr_size)    n = 0    loop foreach gp1 gp.list        n = n+1        id1(n) = gp.id(gp1)        pp1(n) = gp.pp(gp1)    endloop    status = file.open('id_list',io_write,io_acsii)    status = file.write(id1,string(arr_size))    status = file.close    status = file.open('pp_list',io_write,io_acsii)    status = file.write(pp1,string(arr_size))    status = file.closeend@pp_outmodel restore 'b.f3sav'fish def setup    io_read = 0    io_write = 1    io_ascii = 1    arr_size = gp.numend@setupfish def pp_minus    array id(arr_size)    array pp(arr_size)    status = file.open('id_list',io_read,io_acsii)    status = file.read(id,arr_size)    status = file.close    status = file.open('pp_list',io_read,io_acsii)    status = file.read(pp,arr_size)    status = file.close    loop i(1,arr_size)        gp = gp.find(id(i))        gp.pp(gp) = pp(i) - gp.pp(gp)    endloopend@pp_minusmodel save 'c';以上代码共计56行。

2.2 新代码

























import itasca as itit.command('python-reset-state false')app = {}bpp = {}it.command("""model newmodel largestrain offzone create brick size 20 20 20  group 'a'zone group 'b' range position-x 5 15 position-z 5 15zone gridpoint initialize pore-pressure 1e3 model save 'a'zone gridpoint initialize pore-pressure 0 range group 'a'model save 'b' """)it.command(""" model restore 'a.sav """)for gp in it.gridpoint.list():    app[gp.id()] = gp.pp()
it.command(""" model restore 'b.sav' """)for gp in it.gridpoint.list():    bpp[gp.id()] = gp.pp()for key in app.keys():     gp = it.gridpoint.find(key)     gp.set_pp(app[key]-bpp[key])      #以上代码共计23行。

3.结果对比

图3-1 计算结果一(2020)

图3-2 计算结果二(2023)


4.总结

Python真香,大家学起来。

来源:FLAC3D小技巧
pythonUMFLAC3D
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-12-26
最近编辑:10月前
FLAC3D小技巧
硕士 专注FLAC3D中的小技巧分享...
获赞 34粉丝 199文章 40课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈