24小时热门版块排行榜    

查看: 2038  |  回复: 16
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

金华岁月

金虫 (著名写手)

[求助] ANSYS四维TABLE建立移动三维热源,程序总是出错,求原因解释! 已有2人参与

本人之前见过使用三维TABLE来描述移动面热源的例子,现在想使用APDL建立起移动三维热源,初步打算是:四个维度分别代表X/Y/Z/TIME,热源分别是X/Y/Z以及TIME的函数,现在尝试程序编辑如下,但总是出现错误提示:
Subscript 3 is out of range for parameter LASER. Specified value is 0 Maximum is 21.
不知道那位前辈能帮着解释下错误?或者那位虫友有相似的问题,也可以沟通交流一下。


*SET,lzsize,0.0001      
*SET,lsize,5e-4  
*SET,MAX_TIME,41   
*SET,MAX_X,61
*SET,MAX_Y,41
*SET,MAX_Z,21            !此处加上Z轴   

*DIM,laser,TAB4,MAX_X,MAX_Y,MAX_Z,MAX_TIME,X,Y,Z,TIME  
*DO,L,1,MAX_TIME,1
*DO,K,1,MAX_Z,1
*DO,I,1,MAX_X,1
*SET,laser(I,0,K,L),(I-1)*LSIZE   
*ENDDO  
*DO,J,1,MAX_Y,1
*SET,laser(0,J,K,L),(J-1)*LSIZE   
*ENDDO
*SET,laser(0,0,K,L),(K-1)*LZSIZE          !此处相应的加上Z轴数据
*ENDDO
*SET,laser(0,0,0,L),(L-1)*0.083333333
*ENDDO
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

金华岁月谁与共?樱花树下,飘雪如梦......
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhuce9

铜虫 (小有名气)

【答案】应助回帖

lz,抱歉之前没有认真看你的代码,看了代码觉得你是忘了给x,y,z,time分别定义一个数组。也就是说,你定义laser(x,y,z,time)之前应该给每个row,column,book,shelf先定义。一句话说不清,给你看一个五维的数组。例子是ansys help里的,关于array parameter的定义,你可能还需要再仔细看一下。

/title, Illustrate use of 5D table for SF command (pressure) loading
!!!!
!!!!
                                 !!!! create 5D table for applied pressure
X1=2                             !!!! X dimensionality
Y1=2                             !!!! Y dimensionality
Z1=10                            !!!! Z dimensionality
D4=5                             !!!! time dimensionality
D5=5                             !!!! temperature dimensionality
len=10                           !!!! cantilever beam length
wid=1                            !!!! cantilever beam width
hth=2                            !!!! cantilever beam height


*dim,xval,array,X1               !!!! create 1D arrays to load 5D table
xval(1)=0,20                     !!!! variations per dimension same
*dim,yval,array,Y1               !!!! but will give different values on each
yval(1)=0,20                     !!!! book and shelf
*dim,zval,array,10
zval(1)=10,20,30,40,50,60,70,80,90,100
*dim,tval,array,5
tval(1)=1,.90,.80,.70,.60
*dim,tevl,array,5
tevl(1)=1,1.20,1.30,1.60,1.80

*dim,ccc,tab5,X1,Y1,Z1,D4,D5,X,Y,Z,TIME,TEMP
*taxis,ccc(1,1,1,1,1),1,0,wid                        !!! X-Dim
*taxis,ccc(1,1,1,1,1),2,0,hth                        !!! Y-Dim
*taxis,ccc(1,1,1,1,1),3,1,2,3,4,5,6,7,8,9,10        !!! Z-Dim
*taxis,ccc(1,1,1,1,1),4,0,10,20,30,40                !!! Time
*taxis,ccc(1,1,1,1,1),5,0,50,100,150,200        !!! Temp
*do,ii,1,2
   *do,jj,1,2
      *do,kk,1,10
         *do,ll,1,5
            *do,mm,1,5
               ccc(ii,jj,kk,ll,mm)=(xval(ii)+yval(jj)+zval(kk))*tval(ll)*tevl(mm)
            *enddo
         *enddo
      *enddo
   *enddo
*enddo
9楼2014-07-06 15:03:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 17 个回答

htbbzzg

铁杆木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
金华岁月: 金币+10, 有帮助, 前进了一点儿 2014-07-03 19:53:23
ANSYS 的表数组中,前两个下标 (ROW 和 Column) 是从 0 开始计数的,而第 3,4,5 个下标是从 1 开始计数的,不能为零。否则将被认为是超过了表数组下标的范围而报错。
2楼2014-07-03 17:11:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

金华岁月

金虫 (著名写手)

引用回帖:
2楼: Originally posted by htbbzzg at 2014-07-03 17:11:48
ANSYS 的表数组中,前两个下标 (ROW 和 Column) 是从 0 开始计数的,而第 3,4,5 个下标是从 1 开始计数的,不能为零。否则将被认为是超过了表数组下标的范围而报错。

嗯 这一点我看了下 倒是对的  不过  对于每一个维度而言  都有应该有自己的索引值   
行和列的索引值直接就是
*DO,I,1,MAX_X,1
*SET,laser(I,0,K,L),(I-1)*LSIZE   
*ENDDO  
*DO,J,1,MAX_Y,1
*SET,laser(0,J,K,L),(J-1)*LSIZE   
*ENDDO
定义,但是后面两个维度,索引值怎么定义呢?
金华岁月谁与共?樱花树下,飘雪如梦......
3楼2014-07-03 19:53:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

htbbzzg

铁杆木虫 (著名写手)

【答案】应助回帖

不明白你的意思。你是说在定义数组时还是在使用数组时的情况?
定义数组时,对 1~3 维数组,格式是:
    *DIM, Par, Type, IMAX, JMAX, KMAX, Var1, Var2, Var3, CSYSID
如果是定义 4~5 维数组,相应的 *DIM 命令的格式分别是:
     *DIM, Par, Type, IMAX, JMAX, KMAX,LMAX, Var1, Var2, Var3, Var4,CSYSID
     *DIM, Par, Type, IMAX, JMAX, KMAX,LMAX,MMAX, Var1, Var2, Var3, Var4, Var5, CSYSID
使用时,下标个数应该与定义的数组维数一致。
需要注意的是:4 维和 5 维数组只能使用输入命令的方式来定义,不能在 GUI 中定义。
4楼2014-07-04 10:20:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见