24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1986  |  回复: 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的回帖

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的回帖

金华岁月

金虫 (著名写手)

引用回帖:
4楼: Originally posted by htbbzzg at 2014-07-04 10:20:40
不明白你的意思。你是说在定义数组时还是在使用数组时的情况?
定义数组时,对 1~3 维数组,格式是:
    *DIM, Par, Type, IMAX, JMAX, KMAX, Var1, Var2, Var3, CSYSID
如果是定义 4~5 维数组,相应的 *DIM  ...

哦 我说的索引值  就相当于作坐标轴上的刻度
行和列,定义的时候都是有索引值的,分别在0行和0列里定义;
每个面的索引值,是在每个面的0行0列的位置上定义。

那么,对于第四个维度,我如果用它代表时间,那么这个维度的索引值又如何确定?
金华岁月谁与共?樱花树下,飘雪如梦......
5楼2014-07-04 14:26:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

htbbzzg

铁杆木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★
金华岁月: 金币+5, 有帮助, 谢谢费心 2014-07-06 19:16:06
还是不明白你的意思。你的 "索引值" 和下标是什么关系?
    我的理解:如果用坐标轴作为参考,数组中的下标应该相当于在坐标轴上的若干点,各个点的具体坐标值就是数组中相应位置的数值。
    在定义数组时,必须指定数组各维的长度,也即该数组中各个下标的最大索引值。(最小下标值与数组类型有关,可能是 0 或 1)。
    如果你以下标作为索引值的话,那么它们之间是有区别的:索引值应该可以是任意实数,但是下标却未必。对于 ARRAY 型数组,下标只能是正整数;对于表数组,下标只能是从 0 或 1 (与位数有关) 开始的实数。总之都和一般的索引值不一样。
6楼2014-07-05 08:43:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

金华岁月

金虫 (著名写手)

引用回帖:
6楼: Originally posted by htbbzzg at 2014-07-05 08:43:43
还是不明白你的意思。你的 "索引值" 和下标是什么关系?
    我的理解:如果用坐标轴作为参考,数组中的下标应该相当于在坐标轴上的若干点,各个点的具体坐标值就是数组中相应位置的数值。
    在定义数 ...

我说的索引值就是下标了。

对于TABLE,三维的时候,行、列、面分别都有自己的下标值,分别在0行、0列以及每个面的0行0列存放各自的下标。

但是,当Table升级为4维的时候,举例说四维:X Y Z Time分别代表行、列、面和BOOK,那么,从现有的各种资料里,都没看到,第四维有没有自己对应的下标。
这样,当我用四维数组,定义一个关于XYZ以及Time变化的热源的时候,就不知道如何让这个热源随时间移动位置了。就是这个问题
金华岁月谁与共?樱花树下,飘雪如梦......
7楼2014-07-05 18:50:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhuce9

铜虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
金华岁月: 金币+10, 有帮助, 谢谢讨论 2014-07-06 19:15:46
引用回帖:
7楼: Originally posted by 金华岁月 at 2014-07-05 18:50:28
我说的索引值就是下标了。

对于TABLE,三维的时候,行、列、面分别都有自己的下标值,分别在0行、0列以及每个面的0行0列存放各自的下标。

但是,当Table升级为4维的时候,举例说四维:X Y Z Time分别代表行、 ...

用table定义热源我之前试过,好像也没成功,忘了问题出在哪儿了,但是用table好像是挺容易出现问题的。
你可以试试这么做:
初始:定义一个table,三维热源,三维table,以动坐标系csys11定义source_table(x,y,z)
加载:在每个加载步,更新csys11,重新定义source_table(x,y,z)
solve
再加载:更新csys11,重新定义source_table(x,y,z)

我现在是这么用的,因为用的是apdl,所以没什么问题,但如果是gui就行不通了,因为要用*do循环
8楼2014-07-06 13:55:06
已阅   回复此楼   关注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的回帖

金华岁月

金虫 (著名写手)

引用回帖:
8楼: Originally posted by zhuce9 at 2014-07-06 13:55:06
用table定义热源我之前试过,好像也没成功,忘了问题出在哪儿了,但是用table好像是挺容易出现问题的。
你可以试试这么做:
初始:定义一个table,三维热源,三维table,以动坐标系csys11定义source_table(x,y,z ...

敢问你定义的table和source_table(x,y,z)是同一个吗?
因为是要用Do循环定义多个载荷步,然后对应多次Solution.
这样的话,等于是更新CSYS11就是在这个DO循环内部实现?这样子可行吗?

不知道你定义的包含CSYY11的source_table(x,y,z),是在最后循环载荷步之前呢,还是之后呢?
金华岁月谁与共?樱花树下,飘雪如梦......
10楼2014-07-06 15:10:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 金华岁月 的主题更新
信息提示
请填处理意见