应力释放命令的问题
本帖最后由 dongxx0221 于 2017-5-4 12:24 编辑采用 if inrange('SRock', pnt)=1 时,出现 *** Fish: Arguments provided but not used.
采用 if gp_group(pnt) = 'SRock' 时,代码窗并不出现apply force过程,szz结果(step1+relax+step1)与直接step2完全一样;
直接去掉if..endif对全部节点进行apply,有赋值过程,但szz结果(step1+relax+step1)与直接step2仍然完全一样;
以上2、3条,stress_relax后若不继续step 1,szz结果与ini完全相同。
不是应该有区别吗?所以这个应力释放到底起了什么作用?
另,代码貌似是apply 0.8倍反向unbal,也就是剩余0.2倍不平衡力,岂不是释放了0.8倍而不是释放0.2倍?
;;;;;;;;;;;;;Excav stress release;;;;;;;;;;;;;;;
step 1
def stress_relax
relax_coef=0.2
relax_m=1.0-relax_coef
pnt=gp_head
loop while pnt # null
if gp_group(pnt) = 'SRock' then
;if inrange('SRock', pnt) = 1 then
xref=-1*gp_xfunbal(pnt)*relax_m
yref=-1*gp_yfunbal(pnt)*relax_m
zref=-1*gp_zfunbal(pnt)*relax_m
gid=gp_id(pnt)
command
apply xforce xref rang id gid
apply yforce yref rang id gid
apply zforce zref rang id gid
end_command
end_if
pnt=gp_next(pnt)
end_loop
end
stress_relax
step 1
pl zcon szz
你这后面应该在加一个removeing函数
def removeing1
p_gp=gp_head
loop while p_gp # null
nn=0
;-------------------判断分组------------------------
if in_range('1',p_gp) = 1 then ;分组选择 找同时在两个组上的节点
if in_range('3',p_gp) = 1 then
nn=nn+1
endif
endif
if nn>=1 then
pid=gp_id(p_gp) ;找节点的ID号
command
apply remove xforcerang id @pid
apply remove yforcerang id @pid
apply remove zforcerang id @pid
endcommand
endif
p_gp=gp_next(p_gp)
endloop
end
@removeing1 rainbow860 发表于 2017-11-8 22:14
你这后面应该在加一个removeing函数
def removeing1
p_gp=gp_head
这样就是释放完全了,就是你是怎么释放,部分释放还是一次性释放,加我qq392533506可以交流下吗 rainbow860 发表于 2017-11-8 22:14
你这后面应该在加一个removeing函数
def removeing1
p_gp=gp_head
我发的代码意思是施加反向力,可以设置释放比例,用的apply xref
你这用apply remove,是直接全部移除?还没见过这样,试试 请问应力释放和地层损失率有什么关系? 学习了,建议参照王涛主编的falc3D5.0,一书中阐述了不等比例释放。
页:
[1]