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

[命令/FISH] 怎样实现force加载同时控制某点的位移?内有fish请修改

[复制链接]
发表于 2012-11-22 00:05:47 | 显示全部楼层 |阅读模式 来自 英国
本帖最后由 simweflac 于 2012-12-3 23:17 编辑

旧帖重复利用
如图,在箭头处apply force,force随step增大慢慢增长到某一个值;
同时控制a点的位移,a点位移达到某一值后撤销force
fish程序如下,请帮忙修改下或者看一下哪里不妥?多谢

def force_vals

while_stepping
MM_disp_goal =-1.5e-3    ;a点的目标位移, 1.5mm
MM_gp =gp_near(1,2,0)  ;a点坐标 1,2,0

force_goal =-0.01e3
zf_vel =-1e-1                ;N/Step
step_no =force_goal/zf_vel

if gp_zdisp(MM_gp)>MM_disp_goal then        
if relax_step<step_no then
relax_step=step-4861
else
relax_step=step_no
endif
zf_vals=zf_vel*relax_step
command
app zf @zf_vel hist @relax_step range x ...
app zf @zf_vel hist @relax_step range x ...
endcommand

else
command
app rem zf range x ...
app rem zf range x ...
fix x y z range x ...
fix x y z range x ...
ini zvel 0 range x ...
ini zvel 0 range x ...
endcommand
endif
end
@force_vals

hist fish @zf_vals

solve




****************

之前无论在3d还是2d中,app stress or force 都是直接加一个数值 (比如 app sxx -6e6),所以荷载都是从零到某一值的“突变”过程,而不是荷载随timestep慢慢增大(这么做是否合理暂且不提),现在想让荷载随timestep慢慢增大,fish该怎么写呢?请大家给点建议或者修改下,多谢

def force_vals
  force_goal = -0.5e3

  zf_vel = -1                           ;N/step
  loop while set_zf # 0
    if set_zf > force_goal then
       set_zf = zf_vel*step        ;我知道这里step是不对的,应该是step number,但不知道该怎么改?
    else
       set_zf = force_goal
    endif
  endloop
end
@force_vals


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2012-11-22 12:07:50 | 显示全部楼层 来自 上海
Simdroid开发平台
这个功能flac本身就提供了实现的功能,FLAC博大精深啊
apply xforce xf hist relax_step
hist是关键词, relax_step是自定义的fish函数,让他随step变化,施加的力的值就是xf*relax_step
回复 不支持

使用道具 举报

 楼主| 发表于 2012-11-22 22:53:32 | 显示全部楼层 来自 英国
本帖最后由 simweflac 于 2012-12-3 22:44 编辑
wqq8889 发表于 2012-11-22 12:07
这个功能flac本身就提供了实现的功能,FLAC博大精深啊
apply xforce xf hist relax_step
hist是关键词, re ...


多谢指教,问题解决了
附上新的command

def force_vals  
while_stepping
force_goal = -0.5e3
zf_vel=-1e-3                       ;N/Step
step_no=force_goal/zf_vel
  if relax_step<step_no then
   relax_step=step
  else
   relax_step=step_no
  endif
zf_vals=zf_vel*relax_step
end
@force_vals  
app zf @zf_vel hist @relax_step range 。。。。。。
app zf @zf_vel hist @relax_step range 。。。。。。
hist fish @zf_vals

回复 不支持

使用道具 举报

 楼主| 发表于 2012-12-3 22:57:51 | 显示全部楼层 来自 英国
新问题
回复 不支持

使用道具 举报

 楼主| 发表于 2012-12-5 21:06:25 | 显示全部楼层 来自 英国
:hug::time:
回复 不支持

使用道具 举报

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

本版积分规则

Simapps系列直播

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

GMT+8, 2024-9-24 12:19 , Processed in 0.028527 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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