首页/文章/ 详情

FLAC3D 7.0中的FISH新功能

6天前浏览72
新版本的出现肯定会带来新功能。
尽管FLAC3d7.0带来的新功能不多,
但有些还是要注意,
否则可能看不懂7.0的说明书。
比如FISH。

1 要注意手册大量运用中括号[]


从下面的命令可以看出,即使在fish def...end之外,
也是可以用变量的,
因为他是用中括号括着的,这也完成了一次变量的定义。
当然,他括住的是函数,就会调用这个函数,使它运行 











  
model new[hh = 22]fish define abc    abc = hh * 3 + 5end[abc][abc = 0] [hh = 0][hh][abc][hh]  

还有个有意思的现象,就是@变少了,
比如下面的命令:











  
model newzone create brick size 10 3 5fish define place_cables(num,segs)    loop local n (1,num)        local z_d = n - 0.5        command            structure cable create by-line 0.0 1.5 [z_d] 7.0 1.5 [z_d] segments [segs]        endcommand    endloopend[place_cables(5,7)]  
这个命令中没有一个@,因为在5.0里面,
变量放在FLAC3D命令里面的话,是要加@的。


2 看懂gp.force.unbal(ad1)->y


 
请看下面的函数:

[ad1 = gp.near(0,2,0)][ad2 = gp.near(1,2,0)][ad3 = gp.near(0,2,1)][ad4 = gp.near(1,2,1)]fish define load    load = gp.force.unbal(ad1)->y + gp.force.unbal(ad2)->y  + gp.force.unbal(ad3)->y + gp.force.unbal(ad4)->yendfish history load
这里要指出的就是gp.force.unbal是一个内置变量,
而且是一个矢量,那么我们需要用到它的分量的时候,
就要指定方向。
这里加了个->y,也就是y方向的。
gp.force.unbal(ad1)->y指的是ad1处,y方向不平衡力。

3 连乘,连加


请看下面命令:











  
model newfish define xxx    sum  = 0    prod = 1    loop n (1,10)        sum  += n        prod *= n    endloop    io.out('The sum is ' + string(sum) + ' and the product is ' + string(prod))end[xxx]  

里面:+=和*= ,他们分别是连加,连乘。

其实python里面也是类似的,这个比以前的要方便很多

以前是这样写的:













  
model newfish define xxx  sum = 0  prod = 1  loop n (1,10)    sum = sum + n    prod = prod * n  end_loop  io.out('The sum is ' + string(sum) + ...        ' and the product is ' + string(prod))end@xxx  
可以看出简洁不少!

4 双冒号::的含义





  
fish define load    load = list.sum(gp.force.unbal(::ad)->y)end  
这里双冒号的含义是输出一个列表,里面包含了多个内置变量的值
这个命令就是y方向不平衡力的合计值

再如:

  
[ zone.stress(::zone.list)->xx += 500 ]  
这是放xx方向应力都相加500.


来源:瀚宇科技服务
pythonUMFLAC3D
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-11-16
最近编辑:6天前
瀚宇科技服务
不断提高实践能力和讲课水平
获赞 4粉丝 56文章 78课程 2
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈