为了对计算后模型施加内部荷载,作者先前提出了“导来到去”的旧方法:
旧方法:
呱太Gekota,公 众号:FLAC3D小技巧FLAC3D 6.0内部施加荷载(二)
(1)在初始计算前,利用fish函数变量在内部面施加一个大小为0的面力,进行初始计算,方法如下:
<help文件建议方法>
呱太Gekota,公 众号:FLAC3D小技巧FLAC3D 6.0内部施加荷载与面荷载换算规则
2. 代码
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 _loadload = 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.81model solvemodel save 'ini-1'fish def _loadChangeload = 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'model restore '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 _getGpForcecount = 0loop foreach gpnt gp.listif gp.isgroup(gpnt,'load') = 1 thencount += 1force = gp.force.app.z(gpnt) - global.gravity.z()*gp.mass.gravity(gpnt)table.x(1,count) = gp.id(gpnt)table.y(1,count) = forceendifendlooparr_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)endloopoo = 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 _applyInarray 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))commandzone gridpoint fix force-applied-z @force range id @gpidendcommandendloopend@_applyInmodel solvemodel save 'final-2'

图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) 荷载矢量(新方法)