Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations GregLocock on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

How to double check direct stiffness method in Abaqus? 2

Status
Not open for further replies.

feanalyst2

Computer
Dec 20, 2022
4
Hi everyone,
I am trying to double check the direct stiffness method in Abaqus, for the contact between a rigid body and a linear elastic body.
What I have done is the following:
1) Create the linear elastic body, and extract its global stiffness matrix K in Abaqus as:
** Output Global Stiffness Matrix
*Step, name=Global_Stiffness_Matrix
*MATRIX GENERATE, STIFFNESS
*MATRIX OUTPUT, STIFFNESS, FORMAT=MATRIX INPUT
*End Step
2) Add the rigid body, define the (frictionless) contact interaction and the boundary conditions (that is, prescribe the displacement of the rigid object to indent the soft body, and fix the soft body to the "ground"). See the figure.
3) Simulate the contact according to 2), by using NLGEOM=off.
4) Extract the contact forces F_c (using CNORMF, see figure), the reaction forces F_r, and the displacements U.
5) Compute F_fem = K*U in Python.
I would have expected that, computing F_fem this way, I would end up with the forces corresponding to the contact surface equal to F_c, the forces corresponding to the ground BC equal to F_r, and zero forces everywhere else. But this is not the case. What am I missing?
image002_oi342b.png
image001-1_hynj3a.png
 
Replies continue below

Recommended for you

I would start with a simpler example, with no contact involved. Just some linear elastic body with prescribed displacement. If your procedure works correctly for such a simple case, move on to this one.
 
@FEA way, thank you, that's a great point.

I am trying replicating another example, with no contact, and prescribred displacement. In doing that, I have a side question: when exporting the stiffness matrix through the input lines in the original post, I always get some nodes with negative indices. These should refer to "internally defined nodes", but how should I treat those? So far I have just ignored them and only built the stiffness matrix around the positive nodes. Could that be the cause of the problem?
 
Coordinate format (*MATRIX OUTPUT, FORMAT=COORDINATE) might be more usable for further calculations.
 
@FEA way: thanks for getting back to me. You can find attached the input file, and the stiffness matrix files generated through both "MATRIX INPUT" and "COORDINATE". Note that the number of nodes I defined through the mesh is 42.

Note the presence of the negative nodes in the "MATRIX INPUT" file. Also, these nodes seem to be converted to extra nodes in the "COORDINATE" file. These extra nodes are mixed with the nodes I defined through the mesh, which makes the file unusable. What could be the cause of such extra nodes?

Thanks!
 
 https://files.engineering.com/getfile.aspx?folder=ef639b62-08f0-468a-902f-4246f59584d1&file=test_pulling.zip
You are using hybrid elements here, try with regular ones (and lower Poisson’s ratio). Then the number of DOFs should be as expected.
 
That is exactly it, I have just run everything with regular elements, and 0.495 Poisson ratio, and I get a perfect match now. Thank you!

What is the issue with hybrid elements? Isn't direct stiffness what is used by Abaqus in that case?
 
These elements use pressure stress as an additional basic solution variable. Details about their formulation can be found in the following documentation chapter: Theory --> Elements --> Continuum elements --> Hybrid incompressible solid element formulation.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor