本帖最后由 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
|