General Mechanical

General Mechanical

Topics related to Mechanical Enterprise, Motion, Additive Print and more.

Need micromovement in X, Y and Z directions

    • Tirtharaj Banerjee
      Subscriber

      Hello Sir,

      I need to find three dimensional micromovements of a hip stem with respect to bone. Ansys provides in-built option (SLID COMMAND) for evaluating sliding distance. But the software treats it as a scalar quantity, and I need all the X, Y, Z micromovement values.

      What I have done so far...

      I have identified the target node IDs that are matched with the contact node IDs by using a custom-written python script. Now, I subtracted the target directional deformation from contact directional deformation per each matched node and got deltaX, deltaY, deltaZ values. I thought this would give the three-dimensional micromovement values per each node. But, when I took resultant (sqrt(deltaX^2 + deltaY^2 + deltaZ^2)) of these directional deformation values, it did not match with the sliding distances readily available as an in-built option. I have also combined sliding distance and gap in various ways, but none of them worked.

      Please let me know where I am going wrong.

      Any suggestions regarding any methods are truly helpful. Thanks in advance.

    • Rahul Kumbhar
      Ansys Employee

      Hi Tirtharaj,

       

      It appears the contact can only output the vector sum. You may have to use displacement of individual points to get the X, Y, Z directional sliding.

    • mjmiddle
      Ansys Employee

      CONTA174 has TASS and TASR for sliding in contact R and S directions. See the following command snippet. It's probably not the best way since I did an arithmetic average to get an element value. R and S directions can be different for every contact element:

      ! Turn on "Analysis Settings > Output Controls > Contact miscellaneous"
      ! "contact_results" should be a named selection containing "contact" faces not target faces.
      ! nonlinear contacts will only have contacting area where status is sliding or sticking
      ! sliding and sticking regions will also have nonzero contact pressure.
      ! This snippet gets values at nodes (might be averaged from element centroid). It then averages by just adding the 4 nodes and dividing by 4.
      ! The pletab then averages element values to nodes for contour display.  There is probably a better way than all this averaging.
      ! Maybe just put nodal values to a nodal result quantity: *VPUT, then use a User Defined Result to plot that result quantity
      ! You could alternatively just plot a user defined result in Mechanical, such as CONTNMISC17 to get R direction sliding on only I nodes (no averaging for connected elements).

      /post1
      cmsel,s,contact_results               ! contact_results should be a named selection containing contact faces (1 side)
      esln,s,1,active                       ! contact elements will not be in a component so select attached elements
      set,last
      etable,sta,cont,stat                  ! It also gets inactive contact side from the symmetric contacts, so get status
      esel,u,etab,sta,0,0                   ! remove elements with contact status = 0, which is for inactive and far open
      etable,eras                           ! erase entire etable to clear data from possible previous calls to etable command
      esel,r,enam,,174                      ! may need to elliminate any other connected types, such as beams, mpc184
                                            ! If selecting all contacts, use esel,s,enam,,174 and delete previous commands through cmsel
                                            ! can also just get contact using a command snippet under the contact, mcid = cid, then use esel,s,type,,mcid under Solution

      ! sliding distance in S direction
      *do,i,1,4
        etable,sslide%i%,nmisc,i+20         ! etable sequence numbers for tass at each node 21,22,23,24 (I,J,K,L)
      *enddo
      sadd,temp1,sslide1,sslide2
      sadd,temp2,sslide3,sslide4
      sadd,sslidet,temp1,temp2
      smult,sslide,sslidet,,0.25

      ! sliding distance in R direction
      *do,i,1,4
        etable,rslide%i%,nmisc,i+16         ! etable sequence numbers for tasr at each node 17,18,19,20 (I,J,K,L)
      *enddo
      sadd,temp1,rslide1,rslide2
      sadd,temp2,rslide3,rslide4
      sadd,rslidet,temp1,temp2
      smult,rslide,rslidet,,0.25

      /view,1,1,1,1                         ! Set isometric view
      /ang,1
      /auto,1                               ! fit to screen
      /show,png
      pldisp,1                              ! display both displaced and undisplaced model. use /PLOPTS for other contour display options
      pletab,sslide,avg
      pletab,rslide,avg
      ! need to show coordinate system and undeformed model

    • mjmiddle
      Ansys Employee

      You can use the nmisc values in APDL and write to a file (*cfopen, *vwrite), and use *get command to get node IDs of the elements I,J,K,L nodes.

      *get,node_I,ELEM,element_ID,node,1
      *get,node_J,ELEM,element_ID,node,2
      *get,node_K,ELEM,element_ID,node,3
      *get,node_L,ELEM,element_ID,node,4

      But I'm not sure how to get the R and S directions for each element in global CS vectors. Elements can have curvature so these may even be different at each node when converted to a global CS vector.

       

    • Tirtharaj Banerjee
      Subscriber

      Thanks for the reply.

      Please let me know whether I can do it in a relatively easy manner. My idea is to export the STL file of total deformation result of the contacting bone as well as the stem. Then I need to find the nodal coordinates for both the STLs. Then I'll check which nodal coordinates matched (not exactly, but let's say, upto 2 or 3 decimal places). I'll know that those nodes actually match, i.e., makes the nonlinear contact. Now, I'll select those nodes using mesh ID in workbench, and find directional deformations in all three directions. Now I'll subtract the respective coordinates to get delta X, delta Y and delta Z. These are the components of micromotion. If I take vector sum, it should be the same as the readily available sliding distances.

      Please inform if I am incorporating any mistake? Or, if I can find it using the directional deformations in some other way, please let me know.

      Thanks and Regards

    • mjmiddle
      Ansys Employee

      Instead of using your comarison methods to get nodes that have moved over a certain difference, you could use NSEL command:

      NSEL,S,CONT,SLIDE,min_distance

Viewing 5 reply threads
  • The topic ‘Need micromovement in X, Y and Z directions’ is closed to new replies.