代码之家  ›  专栏  ›  技术社区  ›  user160917

在ansys中,获取所使用的所有不动产编号的数组

  •  1
  • user160917  · 技术社区  · 15 年前

    使用ANSYS APDL,我正在寻找一种快速且计算成本低廉的方法来获取模型中使用的所有当前实数。有点像

    *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
    

    它是有效的,但是如果你的实数相距很远,它就会在真正的掩码中循环通过一堆零。。。

    -本

    2 回复  |  直到 15 年前
        1
  •  1
  •   Pavel Urubcik    11 年前

    我想答案有点晚了,但我会尝试按照Nastza的建议遍历所有实数常量,选择所有具有该实数的元素,如果数字是>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
    

    在2000个恒定集的(相当小)模型上花费了大约2秒。如果需要将结果写入文本文件,我建议先写入数组,然后一次全部写入文件,否则速度会迅速降低:)

        2
  •  0
  •   Naszta    15 年前
    *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