本帖最后由 冰映光 于 2012-9-8 15:34 编辑
纠结好多天了啊,郁闷死了,想给齿轮前后两个端面加随半径变化的对流换热系数
后端面节点是连续的,所以加上了,前端面因为节点不连续,1000到3000多,实际只有1150个节点,就成这样了!~~
求助高手啊,怎么解决,我想着是把前端面重新编号使其连续按顺序.
问题已经解决,感谢版主midasgalaxy的悉心帮助
原来我用加载载荷的方式是定义一个大小为节点数目的数组,定义整个数组的对流换热系数,
然后加载在所有节点上。
但是由于节点不连续,因为节点从最小到最大的范围溢出了数组范围,因此无法成功加载。
原代码:
NSLA,S,1
csys,1
*get,minnum,node,,num,min
*get,minmax,node,,num,max
*get,count,node,q,count
*dim,ap,array,count
csys,1
*do,i,minnum,minmax
d1=NX(minnum)
ap(i)=a+b*d1
minnum=ndnext(minnum)
*enddo
sffun,conv,ap(1),
sf,all,conv,0,tt
经版主midasgalaxy的帮助,先将不连续的节点号提取到一个数组中,然后再根据数组中的编号
循环依次加载每个节点的对流换热系数。遇到一个问题是:对流换热系数不能加载在单个
节点上,然后我们提取面上的所有单元的编号,放到数组中,根据数组循环依次同时加载
每个单元的四个节点,大功告成,呵呵~~所有代码都是版主编的,在此非常感谢midasgalaxy!
改进后的代码:
NSLA,S,1
cm,xuanze,node
esln,s,0
eplot
*get,mini,elem,all,num,min
*get,con,elem,all,count
shuzu_elem=
*dim,shuzu_elem,array,con,1
*do,i,1,con,1
shuzu_elem(i)=mini
mini=elnext(shuzu_elem(i))
*enddo
allsel,all
*do,i,1,con,1
esel,s,,,shuzu_elem(i)
*get,nod_1,elem,shuzu_elem(i),NODE,5 !face 6
*get,nod_2,elem,shuzu_elem(i),NODE,6
*get,nod_3,elem,shuzu_elem(i),NODE,7
*get,nod_4,elem,shuzu_elem(i),NODE,8
d1=NX(nod_1)
xishu_CONV_1=ap(i)=a+b*d1
d1=NX(nod_2)
xishu_CONV_2=ap(i)=a+b*d1
d1=NX(nod_3)
xishu_CONV_3=ap(i)=a+b*d1
d1=NX(nod_4)
xishu_CONV_4=ap(i)=a+b*d1
sfe,shuzu_elem(i),6,CONV,1,xishu_CONV_1,xishu_CONV_2,xishu_CONV_3,xishu_CONV_4
sfe,shuzu_elem(i),6,CONV,2,tt,tt,tt,tt
*enddo
|