Extract real and imaginary displacement in cyclic symmetry analysis

Nikos Kallitsis
Nikos Kallitsis Member, Employee Posts: 38
10 Comments 5 Likes First Anniversary Ansys Employee
✭✭✭✭
edited June 2023 in Structures

I have a cyclic symmetry analysis model and would like to extract the real and imaginary nodal displacements. Is this possible?

Tagged:

Best Answer

  • Nikos Kallitsis
    Nikos Kallitsis Member, Employee Posts: 38
    10 Comments 5 Likes First Anniversary Ansys Employee
    ✭✭✭✭
    Answer ✓

    There is no way to do this using the GUI in MAPDL.

    The only way to retrieve the desired results is by identifying the base and duplicate sectors' nodes and extracting the respective displacements.

    You must first make sure that the duplicate sector exists, and then input the following script:

    ALLSEL, ALL !Reset selection
    
    !----------SET NODE RANGE FOR BASE AND DUPLICATE SECTOR----------
    nBaseStart = NDNEXT(0) !Select the first node after index 0 (base)
    nDuplStart = NNEAR(nBaseStart) !Select node nearest to nBaseStart (duplicate)
    nBaseEnd = nDuplStart-nBaseStart !End node for base sector
    *GET, nDuplEnd, NODE, 0, COUNT !End node for duplicate sector
    
    !----------VERIFY THAT THE BASE AND DUPLICATE SECTORS' NODES HAVE A 1-1 RELATIONSHIP----------
    nTotalperSector = nBaseEnd
    *DIM, coordBase, ARRAY, nTotalperSector, 6
    *VGET, coordBase(1,1), NODE, nBaseStart, LOC, X
    *VGET, coordBase(1,2), NODE, nDuplStart, LOC, X
    *VGET, coordBase(1,3), NODE, nBaseStart, LOC, Y
    *VGET, coordBase(1,4), NODE, nDuplStart, LOC, Y
    *VGET, coordBase(1,5), NODE, nBaseStart, LOC, Z
    *VGET, coordBase(1,6), NODE, nDuplStart, LOC, Z
    
    *DO, i, 1, 3, 1
    *DO, j, 1, nTotalperSector, 1
    *IF, coordBase(j, 2*i-1), NE, coordBase(j, 2*i), THEN
    *MSG, ERROR
    Node relationship between base and duplicate sector is not 1-1. %/&
    Possible solutions: %/&
    1. Make sure a duplicate sector exists. %/&
    2. Delete duplicate sector and re-solve.
    *ENDIF
    *ENDDO
    *ENDDO
    
    !----------SPECIFY BASE SECTOR'S NODES AND ELEMENTS----------
    NSEL, S, NODE, , 1, nBaseEnd !Select nodes of base sector
    CM, nBase, NODE !Create component from selected nodes
    ESLN !Select elements associated with base sector nodes
    CM, eBase, ELEM !Create component from selected elements
    
    ALLSEL, ALL !Reset selection
    
    !----------SPECIFY DUPLICATE SECTOR'S NODES AND ELEMENTS----------
    CMSEL, U, nBase !Select nodes of duplicate sector
    CM, nDupl, NODE !Create component from selected nodes
    ESLN !Select elements associated with duplicate sector nodes
    CM, eDupl, ELEM !Create component from selected elements
    
    ALLSEL, ALL !Reset selection
    
    !----------GET DISPLACEMENT RESULTS FOR BASE SECTOR----------
    *DIM, dispBase, ARRAY, nBaseEnd, 3
    *VGET, dispBase(1,1), NODE, nBaseStart, U, X
    *VGET, dispBase(1,2), NODE, nBaseStart, U, Y
    *VGET, dispBase(1,3), NODE, nBaseStart, U, Z
    
    !----------GET DISPLACEMENT RESULTS FOR DUPLICATE SECTOR----------
    *DIM, dispDupl, ARRAY, nDuplEnd-nBaseEnd, 3
    *VGET, dispDupl(1,1), NODE, nDuplStart, U, X
    *VGET, dispDupl(1,2), NODE, nDuplStart, U, Y
    *VGET, dispDupl(1,3), NODE, nDuplStart, U, Z
    

    This will result in the creation of two arrays - dispBase and dispDupl - containing the displacements for each sector.

    The base and duplicate sectors correspond to the real and imaginary parts respectively.

Answers

  • ChrisC
    ChrisC Member Posts: 11
    First Anniversary First Comment
    **

    I am trying to do something similar. I'm a bit confused on which result sets should be loaded. Should the base and duplicate results be retrieved from the same result set? Or should the base be loaded for the first set of the couplet, and the imaginary from the second? (Cyclic symmetry solutions typically generate a couplet of result sets per frequency)

    Thanks!

  • Nikos Kallitsis
    Nikos Kallitsis Member, Employee Posts: 38
    10 Comments 5 Likes First Anniversary Ansys Employee
    ✭✭✭✭

    @ChrisC, the results for the real and imaginary sector are stored in the same result set. The distinction between real and imaginary is done at the nodal level. Once the two nodal sets have been defined, you can retrieve results for each of them separately (real and imaginary).

  • fsalmon
    fsalmon Member Posts: 2
    Name Dropper First Comment
    **

    @Nikos Kallitsis, how can I do the same for equivalent stress? Using *VGET or *GET to extract principal or directional stress real and imaginary parts seem to work but not for SEQV. I'm trying to reproduce what /CYCPHASE does with *VGET to try and find the phase angle at which SEQV is max. The equation that /CYCEXPAND uses to calculate the full response (see Section 3.4.2 in MAPDL help) works for principal and directional stress components, but not for SEQV. Any help is greatly appreciated!