Skip to content

Conversation

@th-skam
Copy link
Contributor

@th-skam th-skam commented Oct 24, 2025

The material model in Ogden.h was failing the Material_test.cpp unit tests. This PR adds a working version that passes the tests.

TL;DR

  • Add unit tests for Ogden's model
  • Include the model in the examples scene with beams
  • Disable the SelfAdjointEigenSolver and use EigenSolver for computing eigenvectors (see Incorrect eigen decomposition in the Ogden material model #5733 ); this might get fixed with eigen 5 and then we should get back to the SelfAdjointEigenSolver (more appropriate).
  • applyElasticityTensor computes the elasticity tensor and multiplies a vector; a 'smarter' computation is needed.
  • Add some documentation for the model (starting from this PR)

The new model runs slower than before. I kept the old functions for now since they are faster (although incorrect).
To get the model working, I had to reimplement the functions related to the elasticity tensor, as I couldn’t derive the mathematical expressions backwards from the old implementation. However, I might be able to do this with a working version in hand.

Documentation

What the model functions provide:

The strain energy:

$$W = F(J) \frac{\mu}{\alpha^2} \sum_i^3 \left[\lambda^{ \frac{\alpha}{2} } \right] - 3 \frac{\mu}{\alpha^2} + k_0 \ln^2 (J)$$

where $F(J) = J^{ - \frac{\alpha}{3} }$ with $J = \sqrt{det(C)}$ and $C$ is the Cauchy deformation tensor. Also, $\alpha$ and $\mu$ are variables of the model for fitting. $\lambda$ are the eigenvalues of $C$. This expression is different than many of the formulas I found in literature for Ogden's model. Here, $\alpha$ is squared. It can be found in ABAQUS' domumentation: https://classes.engineering.wustl.edu/2009/spring/mase5513/abaqus/docs/v6.6/books/usb/default.htm?startat=pt05ch17s05abm07.html

second Piola–Kirchhoff stress tensor:

$$S = 2 \frac{\partial W}{\partial C} = F(J) \frac{\mu}{\alpha} \left[ C^{ \frac{\alpha}{2} - 1} - \frac{1}{3} tr\left( C^{\frac{\alpha}{2}} \right) C^{-1} \right] + k_0 \ln (J) C^{-1}$$

Elasticity tensor:

$$C = 4 \frac{\partial^2 W}{\partial C \partial C} = 2 F(J) \frac{\mu}{\alpha} \left[ \left( \frac{\alpha}{2} - 1 \right) \sum_i^3 \left( \lambda_i^{\frac{\alpha}{2} -2} P_i \otimes P_i \right) + \sum_{i\neq j}^3 \left(\frac{ \lambda_i^{\frac{\alpha}{2} -1} - \lambda_j^{\frac{\alpha}{2} -1} } {\lambda_i - \lambda_j} \left( P_i \otimes P_j \right)^{sym}\right) -\frac{\alpha}{6} C^{\frac{\alpha}{2} - 1} \otimes C^{-1} + \frac{\alpha}{3} tr\left( C^{\frac{\alpha}{2}} \right) \left( C^{-1} \otimes C^{-1} \right)^{sym} -\frac{\alpha}{6} C^{-1} \otimes C^{\frac{\alpha}{2} - 1} + \frac{\alpha}{6} \frac{1}{3} tr\left(C^{\frac{\alpha}{2}} \right) \left( C^{-1} \otimes C^{-1} \right) \right] + k_0 \left( C^{-1} \otimes C^{-1} \right) - 2 k_0 ln(J) \left( C^{-1} \otimes C^{-1} \right)^{sym}$$

where $P_i = \vec{N_i} \otimes \vec{N_i}$ and $\vec{N}_i$ are eigenvectors of $C$.

@th-skam th-skam added pr: fix Fix a bug pr: status wip Development in the pull-request is still in progress labels Oct 24, 2025
@th-skam th-skam added pr: status to review To notify reviewers to review this pull-request and removed pr: status wip Development in the pull-request is still in progress labels Nov 4, 2025
@th-skam
Copy link
Contributor Author

th-skam commented Nov 7, 2025

[ci-build][with-all-tests]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr: fix Fix a bug pr: status to review To notify reviewers to review this pull-request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant