General Mechanical

General Mechanical

Topics relate to Mechanical Enterprise, Motion, Additive Print and more

Apply additional rotational stiffness&damping to entire base of solid – SAP2000

    • Moustafa El-Sawy
      Subscriber

      Hi. Im using ansys apdl. I have a block of concrete that I am already applying horiz,vert and lateral springs to the base nodes. I am aware that solid elements dont have a ROT DOF at their nodes but I need to add additional rotational stiffness and damping to my base for a modal analysis to match my hand calculations. My base is most likely going to act like a rigid plate so I added some rigid shells there that share the same nodes as the bases. I then created a masternode that I apply my rotational stiffness/damping to and created a CERIG between that master node to the slave node. Is this approach correct?

      I am also trying to compare my results to a SAP2000 model (modal analysis). I have simplified both models to only regular springs (x,y,z) but I am getting different mass participation factors in the rotx, roty, rotz. Is there something special about how ansys calculates these compares to SAP2000? origin vs center of mass etc.

      Here is my code for my first issue:

      /CLEAR               ! Clear all previous data and start fresh
      /PREP7               ! Enter preprocessor phase
       
      ! Element Definitions
      ET, 1, SOLID185      ! Define SOLID186 element type for solid modeling
      ET, 2, COMBIN14      ! Define COMBIN14 element type for springs
      KEYOPT, 2, 2, 0
      KEYOPT, 2, 3, 0
       
      ET, 3, COMBIN14      ! Define COMBIN14 element type for springs
      KEYOPT, 3, 2, 0
      KEYOPT, 3, 3, 1
       
      ET, 999, SHELL181    ! Define SHELL181 element type with a placeholder ID of 999
      SECTYPE, 999, SHELL  ! Specify section type for SHELL181 element
      SECDATA, 10        ! Define the thickness of the shell as 100 units
       
      ! Material Properties for the Solid
      MP, EX, 1, (32836.56803/1000)/0.83   ! Define Young's Modulus for solid after adjusting value
      MP, PRXY, 1, 0.2     ! Define Poisson's Ratio for the solid
      MP, DENS, 1, (23.544/9810.0)/10**9   ! Define Density for the solid after adjusting value
      MP, ALPX, 1, 10E-006 ! Define Coefficient of Thermal Expansion for the solid
       
      ! Material Properties for Fake/Rigid Areas
      MAT, 999              ! Activate material with ID 999 for fake areas
      MP, EX, 999, 1E+13    ! Define a very high Young's Modulus to simulate rigidity
      MP, PRXY, 999, 0.2    ! Define Poisson's Ratio for the fake areas
      MP, DENS, 999, 0.0    ! Define Density as 0, implying it's a "rigid" area
      MP, ALPX, 999, 10E-006! Define Coefficient of Thermal Expansion for the fake areas
       
      ! Geometry Creation
      BLC5, 0, 0, 40000, 40000, 50000  ! Create a block starting from origin with the given dimensions
       
      ! Meshing Settings for the Solid Block
      TYPE, 1               ! Set the element type to SOLID186
      MAT, 1                ! Set the material type to the first defined material (for solid)
      ESIZE, (5000)         ! Set the mesh size
      VMESH, ALL            ! Mesh the created volume
       
      ! Meshing Settings for the Base Area (Shell)
      MAT, 999              ! Switch to the material ID 999 (for fake areas)
      TYPE, 999             ! Switch to the SHELL181 element type
      SECNUM, 999           ! Use the section definition with ID 999
      ND_TOL = 10           ! Define a tolerance for node selection (helpful in selecting nodes near z=0)
      ALLSEL, ALL           ! Select everything in the workspace
      ASEL, S, LOC, Z, 0-ND_TOL, 0+ND_TOL  ! Select areas near the base within the defined tolerance
      AMESH, ALL            ! Mesh the selected areas (i.e., the base) using SHELL181 element type
       
      ! Select nodes at the base
      ND_TOL = 10
      NSEL, S, LOC, Z, 0-ND_TOL, 0+ND_TOL
       
      ! Create a component for the selected nodes
      CM, BASE_NDS, NODE
       
      ! Get essential parameters for node looping
      *GET, NMAX, NODE, 0, NUM, MAX
      *GET, NODE_NMIN, NODE, 0, NUM, MIN
      *GET, NODE_NCOUNT, NODE, 0, COUNT
       
      KX = 1000  ! Spring constant in X direction
      KY = 500  ! Spring constant in Y direction
      KZ = 2000  ! Spring constant in Z direction
       
      R, 1001, KX
      R, 2001, KY
      R, 3001, KZ
       
      CMSEL,S, BASE_NDS ! Select component of nodes
      L_SPRING = 100
       
      ! Loop over each node in the created component
      NODE_NNUM = NODE_NMIN
      *DO, i, 1, NODE_NCOUNT
      ! Get coordinates of the current node
          *GET, X_COORD, NODE, NODE_NNUM, LOC, X
          *GET, Y_COORD, NODE, NODE_NNUM, LOC, Y
          *GET, Z_COORD, NODE, NODE_NNUM, LOC, Z
       
      ! Create spring in X direction
          N, , X_COORD-L_SPRING, Y_COORD, Z_COORD   ! Generate a new node
          *GET, newNode, NODE, 0, NUM, MAX ! Get the ID of the newly created node
          D, newNode, ALL             ! Fix the ground node for X direction
      TYPE, 2
          REAL, 1001                     ! Define spring constant for X
          E, NODE_NNUM, newNode
       
          ! Create spring in Y direction
          N, , X_COORD, Y_COORD-L_SPRING, Z_COORD   ! Generate a new node
          *GET, newNode, NODE, 0, NUM, MAX ! Get the ID of the newly created node
          D, newNode, ALL             ! Fix the ground node for Y direction
      TYPE, 2
          REAL, 2001                     ! Define spring constant for Y
          E, NODE_NNUM, newNode
       
          ! Create spring in Z direction
          N, , X_COORD, Y_COORD, Z_COORD-L_SPRING   ! Generate a new node
          *GET, newNode, NODE, 0, NUM, MAX ! Get the ID of the newly created node
          D, newNode, ALL             ! Fix the ground node for Z direction
      TYPE, 2
          REAL, 3001                     ! Define spring constant for Z
          E, NODE_NNUM, newNode
       
      ! Move to the next node in the component
          NODE_NNUM = NDNEXT(NODE_NNUM)
      *ENDDO
       
      ! add node at center of block and assign rotational torsion springs to this node (master node)
      ! Create a master node at the center of the block
      N, , 0, 0, -500
      *GET, masterNode, NODE, 0, NUM, MAX ! Get the ID of the master node
      *GET, X_COORD, NODE, masterNode, LOC, X
      *GET, Y_COORD, NODE, masterNode, LOC, Y
      *GET, Z_COORD, NODE, masterNode, LOC, Z
       
      ! Assign rotational torsion springs to this node (master node)
      KRX = 500  ! Spring constant for rotation about X axis (Torsional Spring)
      KRY = 500  ! Spring constant for rotation about Y axis (Torsional Spring)
      KRZ = 500  ! Spring constant for rotation about Z axis (Torsional Spring)
       
      R, 4001, KRX
      R, 5001, KRY
      R, 6001, KRZ
       
      ! Create Torsion springs at the master node
      N, , X_COORD-L_SPRING, Y_COORD, Z_COORD   ! Generate a new node offset in X for ROTX spring
      *GET, newXNode, NODE, 0, NUM, MAX
      D, newXNode, ALL 
      TYPE, 3
      REAL, 4001
      E, masterNode, newXNode
       
      N, , X_COORD, Y_COORD-L_SPRING, Z_COORD   ! Generate a new node offset in Y for ROTY spring
      *GET, newYNode, NODE, 0, NUM, MAX
      D, newYNode, ALL
      TYPE, 3
      REAL, 5001
      E, masterNode, newYNode
       
      N, , X_COORD, Y_COORD, Z_COORD-L_SPRING   ! Generate a new node offset in Z for ROTZ spring
      *GET, newZNode, NODE, 0, NUM, MAX
      D, newZNode, ALL
      TYPE, 3
      REAL, 6001
      E, masterNode, newZNode
       
      ! Transfer rotational stiffness from the master node to the slave nodes (base nodes)
      CMSEL, S, BASE_NDS   ! Select nodes in BASE_NDS component
      NSEL,A,NODE,,masterNode
      CERIG,masterNode,ALL,RXYZ
       
      ! Re-select everything for subsequent commands
      ALLSEL, ALL
       
      /SOLU                           ! Enters the solution processor
       
      DAMPING_RATIO = 0.00            ! Modal Damping Ratio
      N_MODES = 25                    ! Number of Modes, When Method = LANPCG, NMODE should be less than 100 to be computationally efficient.
       
      ANTYPE, MODAL                   ! Perform a modal analysis
      MXPAND, N_MODES                 ! Number of modes
      DMPRAT, DAMPING_RATIO           ! Modal damping ratio
      MODOPT, LANB, N_MODES
       
      ALLSEL, ALL
      /MKDIR, 'OUTPUT'
      /OUTPUT, 'OUTPUT/Modal_Analysis', 'OUT'
      SOLVE
       
      FINISH                          ! Exits solution processor /SOLU
    • Rahul Kumbhar
      Ansys Employee
      Hi @Moustafa,
       
      The script appears to do overconstraints. First you have created three translational springs for each base node. (total springs = 3xno of base nodes). The other ends of these translational springs are fixed.
       
      Then you have created three rotational springs connecting a master node created in space. The other ends of the springs are fixed. (Total springs =3 only). Then there are CEs connecting the masternode to all base nodes. 
       
      During the rotation, the equivalent stiffness should be because of both translational springs and rotational srpings.
Viewing 1 reply thread
  • You must be logged in to reply to this topic.