首页/文章/ 详情

FLAC3D安装第三方python库

2月前浏览4756
摘要:一种在flac3d中安装第三方Python库的简便方法。

1.前期准备

本教程仅针对flac3d6.0以上版本(Python3),用户需要准备好flac3d软件与pycharm,我用的版本是pycharm community edition 2023.3.4。

2.第三方库安装

打开pycharm后,新建一个py文件,有以下界面。

点击右下角所示位置,选择解释器,然后点击“解释器设置”,点击后会弹出一个窗口。

从弹出的窗口中我们可以看到当前的解释器、其拥有的第三方库及版本、最新版本号等信息。再点击添加解释器,然后选择flac自带的Python.exe。

点击“+”号
在搜索框内键入需要安装的第三方库,在右下角指定版本后点击安装即可。

安装完成后重启软件即可使用啦。

来源:FLAC3D小技巧
pythonFLAC3DUnity
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-04-21
最近编辑:2月前
FLAC3D小技巧
硕士 专注FLAC3D中的小技巧分享...
获赞 27粉丝 138文章 40课程 0
点赞
收藏
作者推荐
免费部分够用-边坡开挖卸荷后与材料劣化

本文摘要(由AI生成):这篇文章主要介绍了二手交易平台上一个关于边坡稳定性计算的题目解析,文章针对题目中存在的疑问提出了六个假定,并提供了详细的计算思路和代码。解析过程中先定义了岩石的力学参数和初始条件,然后进行了五个部分的开挖。在每个开挖部分,将开挖区域分配为空模型,计算应力卸载和参数降低。获得每个区域在开挖前后的最小应力值,计算 lambda 值。最后,求解开挖后的模型,根据 lambda 值调整每个区域的杨氏模量、内聚力和摩擦角。1.问题来源问题来源自某二手交易平台,价格500元,令人不禁感叹新手的钱真好赚。图1-1 问题来源代码思路如下所示:图1-2 计算思路2.疑问&假定这个题目实现起来很简单,但单就这一张图我还是有以下六个疑问:(1)应力卸荷量lambda是否应该取绝对值?(2)应力卸荷量lambda应该取哪个应力分量来进行计算?(3)多次开挖计算时,初始应力值是自重下的应力分类还是上一开挖步的应力分量?(4)开挖卸荷影响区划分标准是否有统一准则?(5)材料参数降低百分比在什么时候取界限值?(6)应对哪些材料参数进行折减?由于我对边坡知之甚少,故上述六个问题留待相关研究方向的读者解决。针对以上六个疑问,本文采取以下六个假定以演示思路:(1)对应力卸荷量lambda取绝对值;(2)选取最大压应力进行计算;(3)初始应力值取自重条件下的最大压应力值;(4)开挖卸荷影响区依照图中标准进行划分;(5)材料参数折减值取中位数;(6)对弹性模量、粘聚力、内摩擦角进行折减。3.代码建立长×宽×高=30m×1m×15m的模型,分组为rock和cut,模型如下所示。图3-1 计算模型计算思路为:对cut分组进行5次开挖,每次开挖后计算其相对于未开挖前的应力卸荷量,判定卸荷程度并进行相应参数折减,而后开挖下一步。逐步开挖代码如下:model newmodel largestrain off;mechnical parameters of rock[dens = 1800.0] ;density[E = 4e6] ;young[v = 0.33] ; poisson[f = 30.0] ;friction[c = 20e3] ;cohesion;Classification criteria[C1 = 0.8];strong unloading area[C3 = 0.3];slight unloading area;reduction coefficient[coe_1 = 0.7][coe_2 = 0.3][coe_3 = 0.05];modellingzone create brick size 30 1 15 group 'rock'zone group 'cut' range position-x 10 20 position-z 10 15;cmodel & parameterszone cmodel assign mohr-coulombzone property young [E] poisson [v] cohesion [c] friction [f] density [dens];boundary conditionszone face skinzone face apply velocity-normal 0 range group 'west' or 'east'zone face apply velocity-normal 0 range group 'south' or 'north'zone face apply velocity-normal 0 range group 'bottom';settingsmodel gravity 9.81zone initialize-stresses;solvemodel solve;clear all displacement & velocityzone gridpoint initialize displacement-x 0zone gridpoint initialize displacement-y 0zone gridpoint initialize displacement-z 0zone gridpoint initialize velocity-x 0zone gridpoint initialize velocity-y 0zone gridpoint initialize velocity-z 0model save '1-ini';get initial maximum compressive stressmodel restore '1-ini.sav'fish def _getPrin0 count = 0 loop foreach z zone.list count += 1 table.x(1,count) = zone.id(z) table.y(1,count) = zone.stress.min(z) endloopend@_getPrin0;excavation 1st sectionzone cmodel assign null range group 'cut' position-z 14 15model solvemodel save 'cut-1';get lambda & reduction mechanical parametersfish def _getLambda count = 0 loop foreach z zone.list count += 1 if table.x(1,count) = zone.id(z) ;lambda = (table.y(1,count) - zone.stress.min(z))/table.y(1,count) lambda = math.abs((table.y(1,count) - zone.stress.min(z))/table.y(1,count)) if zone.model(z) # 'null' if lambda > C1 zone.prop(z,'young') = E*(1-coe_1) zone.prop(z,'cohesion') = c*(1-coe_1) zone.prop(z,'friction') = f*(1-coe_1) else if lambda < C3 zone.prop(z,'young') = E*(1-coe_3) zone.prop(z,'cohesion') = c*(1-coe_3) zone.prop(z,'friction') = f*(1-coe_3) else zone.prop(z,'young') = E*(1-coe_2) zone.prop(z,'cohesion') = c*(1-coe_2) zone.prop(z,'friction') = f*(1-coe_2) endif zone.extra(z,1) = lambda endif endif endloopend@_getLambda;excavation 2nd sectionzone cmodel assign null range group 'cut' position-z 13 14model solvemodel save 'cut-2';get lambda & reduction mechanical parametersfish def _getLambda count = 0 loop foreach z zone.list count += 1 if table.x(1,count) = zone.id(z) ;lambda = (table.y(1,count) - zone.stress.min(z))/table.y(1,count) lambda = math.abs((table.y(1,count) - zone.stress.min(z))/table.y(1,count)) if zone.model(z) # 'null' if lambda > C1 zone.prop(z,'young') = E*(1-coe_1) zone.prop(z,'cohesion') = c*(1-coe_1) zone.prop(z,'friction') = f*(1-coe_1) else if lambda < C3 zone.prop(z,'young') = E*(1-coe_3) zone.prop(z,'cohesion') = c*(1-coe_3) zone.prop(z,'friction') = f*(1-coe_3) else zone.prop(z,'young') = E*(1-coe_2) zone.prop(z,'cohesion') = c*(1-coe_2) zone.prop(z,'friction') = f*(1-coe_2) endif zone.extra(z,1) = lambda endif endif endloopend@_getLambda;excavation 3rd sectionzone cmodel assign null range group 'cut' position-z 12 13model solvemodel save 'cut-3';get lambda & reduction mechanical parametersfish def _getLambda count = 0 loop foreach z zone.list count += 1 if table.x(1,count) = zone.id(z) ;lambda = (table.y(1,count) - zone.stress.min(z))/table.y(1,count) lambda = math.abs((table.y(1,count) - zone.stress.min(z))/table.y(1,count)) if zone.model(z) # 'null' if lambda > C1 zone.prop(z,'young') = E*(1-coe_1) zone.prop(z,'cohesion') = c*(1-coe_1) zone.prop(z,'friction') = f*(1-coe_1) else if lambda < C3 zone.prop(z,'young') = E*(1-coe_3) zone.prop(z,'cohesion') = c*(1-coe_3) zone.prop(z,'friction') = f*(1-coe_3) else zone.prop(z,'young') = E*(1-coe_2) zone.prop(z,'cohesion') = c*(1-coe_2) zone.prop(z,'friction') = f*(1-coe_2) endif zone.extra(z,1) = lambda endif endif endloopend@_getLambda;excavation 4th sectionzone cmodel assign null range group 'cut' position-z 11 12model solvemodel save 'cut-4';get lambda & reduction mechanical parametersfish def _getLambda count = 0 loop foreach z zone.list count += 1 if table.x(1,count) = zone.id(z) ;lambda = (table.y(1,count) - zone.stress.min(z))/table.y(1,count) lambda = math.abs((table.y(1,count) - zone.stress.min(z))/table.y(1,count)) if zone.model(z) # 'null' if lambda > C1 zone.prop(z,'young') = E*(1-coe_1) zone.prop(z,'cohesion') = c*(1-coe_1) zone.prop(z,'friction') = f*(1-coe_1) else if lambda < C3 zone.prop(z,'young') = E*(1-coe_3) zone.prop(z,'cohesion') = c*(1-coe_3) zone.prop(z,'friction') = f*(1-coe_3) else zone.prop(z,'young') = E*(1-coe_2) zone.prop(z,'cohesion') = c*(1-coe_2) zone.prop(z,'friction') = f*(1-coe_2) endif zone.extra(z,1) = lambda endif endif endloopend@_getLambda;excavation 5th sectionzone cmodel assign null range group 'cut' position-z 10 11model solvemodel save 'cut-5'计算结果如下:图3-2 应力卸荷量(绝对值)图3-3 内摩擦角云图(折减一次)上述过程也可在fish函数中用loop循环实现自动卸荷计算并折减参数后开挖,从而节省代码量。运行结果如下:图3-4 应力卸荷量(绝对值,自动折减开挖)图3-5 内摩擦角云图(折减一次,自动折减开挖)图3-4~图3-5与图3-2~图3-3完全一致。验证了以下自动折减开挖代码的正确性:来源:FLAC3D小技巧

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈