首页/文章/ 详情
banner

FLAC3D6.0施加内部荷载(三)

6月前浏览445
摘要:本文提出了一种更为简便的计算后模型内部荷载施加方法。
1. 方法思路

为了对计算后模型施加内部荷载,作者先前提出了“导来到去”的旧方法:

旧方法:

呱太Gekota,公 众号:FLAC3D小技巧FLAC3D 6.0内部施加荷载(二)
该方法虽然能够对计算后模型施加内部荷载,但操作繁琐,易用性较差。因此,本文提出了另一种更为简洁好用的新方法,思路如下:

(1)在初始计算前,利用fish函数变量在内部面施加一个大小为0的面力,进行初始计算,方法如下:

<help文件建议方法>

呱太Gekota,公 众号:FLAC3D小技巧FLAC3D 6.0内部施加荷载与面荷载换算规则
(2)改变fish变量的值并计算

2. 代码

2.1 新方法
    model newzone create brick size 6 6 6 group '2'zone group '1' range position-z 0 3zone splitzone face group 'load' internal range group '1' group '2'zone cmodel assign null range group '2'fish def _load    load = 0end@_loadzone face apply stress-normal -1.0 fish @load range group 'load'zone cmodel assign elasticzone property bulk 1e9 shear 5e8 density 1800zone 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'model gravity 9.81 model solvemodel save 'ini-1'fish def _loadChange    load = 1e6end@_loadChangemodel solvemodel save 'final-1'

    2.2 旧方法

      model newzone create brick size 6 6 6 group '1'zone group '2' range position-z 3 6zone splitzone cmodel assign elasticzone property bulk 1e9 shear 5e8 dens 1800zone face skinzone face apply velocity-normal 0 range group 'South' or 'North'zone face apply velocity-normal 0 range group 'West' or 'East'zone face apply velocity-normal 0 range group 'Bottom'model gravity 9.81model solvemodel save 'ini.f3sav'modelrestore'ini-2.f3savzone face group 'load' internal range group '1' group '2'zone cmodel assign null range group '2'zone face apply stress-normal -1e6 range group 'load'model cycle 0fish def _getGpForce    count = 0    loop foreach gpnt gp.list        if gp.isgroup(gpnt,'load') = 1 then            count += 1            force = gp.force.app.z(gpnt) - global.gravity.z()*gp.mass.gravity(gpnt)            table.x(1,count) = gp.id(gpnt)            table.y(1,count) = force        endif    endloop    arr_size = table.size(1)    idlist = array.create(arr_size)    flist = array.create(arr_size)    loop i(1,arr_size)        idlist(i) = table.x(1,i)        flist(i) = table.y(1,i)    endloop    oo = file.open('idlist',1,1)    oo = file.write(idlist,arr_size)    oo = file.close()    oo = file.open('flist',1,1)    oo = file.write(flist,arr_size)    oo = file.close()end@_getGpForcemodel restore 'ini.f3savfish def _applyIn    array idlist(169)    array forcelist(169)    oo = file.open('idlist',0,1)    oo = file.read(idlist,169)    oo = file.close()    oo = file.open('flist',0,1)    oo = file.read(forcelist,169)    oo = file.close()    loop i(1,169)        gpnt = gp.find(idlist(i))        gpid = gp.id(gpnt)        force = int(forcelist(i))        command            zone gridpoint fix force-applied-z @force range id @gpid        endcommand    endloopend@_applyInmodel solvemodel save 'final-2'
      3. 结果对比
      3.1 初始阶段结果对比

      图1(a)  初始位移场(旧方法)

      图1(b)  初始位移场(新方法)

      图2(a)  初始zz应力(旧方法)

      图2(b)  初始zz应力(新方法)

      3.2 荷载施加阶段结果对比

      图3(a)  位移场(旧方法)

      图3(b)  位移场(新方法)

      图4(a)  zz应力(旧方法)

      图4(b)  zz应力(新方法)

      图5(a)  荷载矢量(旧方法)

      图5(b)  荷载矢量(新方法)

      通过以上对比可见,新旧两种方法的效果一致。

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