Hi everyone,
I am currently working on model order reduction for a geometrically non-linear structure (large displacements but with linear material properties). My approach involves exporting the global tangent stiffness matrix from Abaqus at specified displacements to later compute numerical derivatives in Python.
Problem Description:
For each displacement state in my study, I set up two steps in Abaqus:
1. A static step where the displacement is imposed on all nodes as boundary conditions.
2. A "matrix generate" step (where the boundary conditions are modified to the correct ones) with a request for the tangent stiffness matrix output.
Observed Issue:
Here's where I encounter an issue: the matrices returned seem slightly dependent on the sequence of applied displacements. This is unexpected since the only non-linearities present are geometric. To ensure accuracy, I verified the displacement values in the odb file, which match my inputs precisely.
Simplified Example for Illustration:
To better illustrate, I set up a simplified example using a coarsely discretized cantilever beam with the following steps:
1. First, I apply a static deflection and request the stiffness matrix.
2. Then, I apply a different deflection and request the stiffness matrix again.
3. Finally, I reapply the initial deflection and request the stiffness matrix once more.
Logically, the stiffness matrices from the first and third steps should be identical, but there are slight discrepancies. These minor differences become problematic when calculating the first and second derivatives of the stiffness matrix numerically.
I've attached the .inp file for this example. Any insights into why this inconsistency occurs and how to resolve it would be greatly appreciated.
Thank you for your help!
P.S.: Please help make a poor phd student happy this Christmas :)