2010-11-25 54 views
1

使用ANSYS APDL,我正在寻找一种快速且计算成本低廉的方式来获取模型中使用的所有当前实数。像在ansys中,获取所有使用的房地产编号的数组

*vget,real_numbers... 

东西的最好我能想出是

! Get a list of all element types 
*get,elemCount,elem,,count  
elemReals= $ *vget,elemReals,elem,,attr,real !Get list of elements real numbers 

*get,maxReal,rcon,,num,max 
realMask= $ *dim,realMask,array,maxReal 
*vfill,realMask,data,0.0 

!Create Mask Of Real Numbers and number of real of real numbers 
realCount = 0 
*do,i,1,elemCount, 
    *if,realMask(elemReals(i)),eq,0,then 
    realMask(elemReals(i)) = 1 
    realCount = realCount + 1 
*endif 
*enddo 

!Fill out real number array 
realNumbers = $ *dim,realNumbers,array,realCount 
realIndex = 1 
*do,i,1,maxReal, 
*if,realMask(i),eq,1,then 
    realNumbers(realIndex) = i 
    realIndex = realIndex + 1 
*endif 
*enddo 

它的工作原理,但如果你的真实号码的间隔相距甚远的它最终通过在现实一串零的循环面膜...

-Ben

回答

1

我想这是一个有点晚了答案,但我会尝试循环通过Nastza建议的所有REAL常量,选择具有该实数的所有元素,并在数组大于0的情况下将其列在数组中。可能或者可能不会更快。将不得不被测试。

*GET,mymaxvariable,RCON,0,NUM,MAX ! The maximum real constant set number defined 
    *DO,i,1,mymaxvariable,1 
     ESEL,NONE 
     ESEL,S,REAL,,i  ! Select elements with current real number 
     ecount = 0 
     *GET,ecount,ELEM, 0, COUNT 
     *IF,ecount,GT,0,then 
     ! Process here, at this point, variable i is one of the real constant present (and activively used) in model 
     /COM,real: %i%, elm. count: %ecount% 
     *ENDIF 
    *ENDDO 

花了约2秒(相当小)与2000个常量集模型。如果需要将结果写入文本文件,我建议先写一个数组,然后一次写入一个文件,否则速度会迅速下降:)

+0

也许某些代码会帮助OP – Anton 2015-07-13 13:37:45

0
*GET,mymaxvariable,RCON,0,NUM,MAX ! The maximum real constant set number defined 
*DO,i,1,mymaxvariable,1 
    j=1 
    *GET,myvariable,RCON,i,CONST,j ! Value of real constant number "j" in set "i" 
*ENDDO 
相关问题