找回密码
 注册
Simdroid-非首页
查看: 137|回复: 7

[命令/FISH] 关于fish函数地址的问题

[复制链接]
发表于 2011-6-9 21:29:44 | 显示全部楼层 |阅读模式 来自 浙江杭州
哪位可以帮忙把下列fish函数下的命令做个解释啊,我看了好多边就是看不懂。
new
gen zone brick size 10 5 5
model el
prop shear 1e8 bulk 2e8
fix x y z range x -.1 .1 y 0 5 z 0 5
fix x y z range x 0 10 y 0 5 z -.1 .1
fix x y z range x 9.9 10.1 y 0 5 z 0 5
table 1
def find_add
head=null
p_gp=gp_head
loop while p_gp # null
x_pos=gp_xpos(p_gp)
if x_pos=width then
new=get_mem(2)
mem(new)=head
mem(new+1)=p_gp
head=new
endif
p_gp=gp_next(p_gp)
end_loop
end
set width=10.0
find_add
def apply_vel
whilestepping
ad=head
loop while ad#null
p_gp=mem(ad+1)
gp_xvel(p_gp)=vel_max*gp_zpos(p_gp)/height
gp_zvel(p_gp)=-vel_max*(gp_xpos(p_gp)-width)/height
ad=mem(ad)
end_loop
end
set large vel_max=1e-2 height = 5.0
step 100
step 100
 楼主| 发表于 2011-6-9 21:30:44 | 显示全部楼层 来自 浙江杭州
Simdroid开发平台
顶起来啊。呵呵。等待高手解答
回复 不支持

使用道具 举报

 楼主| 发表于 2011-6-10 08:48:37 | 显示全部楼层 来自 浙江杭州
很想知道,期待高手解答
回复 不支持

使用道具 举报

发表于 2012-8-2 11:02:56 | 显示全部楼层 来自 甘肃兰州
楼主,你这个fish函数里面是不是有语法错误啊
回复 不支持

使用道具 举报

发表于 2012-9-3 20:53:40 | 显示全部楼层 来自 重庆
其实就就是一个链接,各种语言里面基本上都有这个
回复 不支持

使用道具 举报

发表于 2012-9-3 20:56:32 | 显示全部楼层 来自 重庆
def find_add  ;定义fish函数find_add
head = null   ;给head赋值
p_gp = gp_head  ;第一个网格结点的指针赋给p_gp
loop_while p_gp # null  ;当p_gp值不为null时作循环
x_pos = gp_xpos(p_gp)  ;将指针为p_gp的结点的x坐标值赋给x_pos
if x_pos = 10.0 then  ;如果x_pos = 10.0 则(执行)
new = get_mem(2)  ;从主内存空间里得到2个fish变量对象并返回第一个对象的开始地址
mem(new) = head  ;将head类型和数值置于地址为new的fish变量
head = new  ;将new值赋给head
endif
p_gp = gp_next(p_gp)  ;将结点指针为p_gp的下一个结点的指针赋给p_gp
endloop;结束循环
end  ;结束fish函数
实际上这个fish函数为满足条件(x坐标为10的)的zone的地址开辟一定的地址空间,各地址之间存在一定的联系
找到第一个符合条件的zone地址后,用new = get_mem(2) 从主内存空间里得到2个fish变量对象并返回第一个对象的开始地址,并用下面的mem(new) = head  ,将第一次开辟的两个变量的第一个变量存储地址head(注意第一次head=null),第二个变量存储第一个符合条件的zone地址,并将第一个变量的地址赋予head(head=new),第一次循环结束;下次循环,同样开辟两个变量对象,第一个变量对象记录上次循环开辟的第一个变量的地址,第二个记录第二个符合条件的zone地址,其余循环依次类推,这样子就建立了一个符合条件的zone地址链条,方便以后使用。
在调用时,用ad=head,就将最后一个循环开辟的两个变量的第一个变量的地址赋予ad,进行调用时,后找到的zone地址将被先调用,最后一直循环到最先开辟的两变量,因最先开辟的两变量的第一个变量的地址为null,因此可以控制循环结束。
回复 不支持

使用道具 举报

发表于 2012-9-24 21:01:09 | 显示全部楼层 来自 四川成都
dink1989 发表于 2012-9-3 20:56
def find_add  ;定义fish函数find_add
head = null   ;给head赋值
p_gp = gp_head  ;第一个网格结点的指针 ...

解释的真清楚啊~~~~
回复 不支持

使用道具 举报

发表于 2012-9-24 21:04:50 | 显示全部楼层 来自 四川成都
dink1989 发表于 2012-9-3 20:53
其实就就是一个链接,各种语言里面基本上都有这个

解释的真清楚
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-24 14:28 , Processed in 0.038154 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表