Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Geometric stiffness matrix formulation for truss topopt #58

Merged
merged 57 commits into from
Nov 16, 2021

Conversation

yijiangh
Copy link
Collaborator

@yijiangh yijiangh commented Aug 5, 2021

Summary

This PR includes supports for buckling modeling of truss structures. It contains geometric stiffness matrix formulations, related tests, and detailed documentation with clear literature pointers. It closes #25.

Highlights:

  1. Geometric stiffness matrix formulation for truss elements with verifiable reference sources.
  2. test/truss_topopt_problems/test_geometric_stiffness_matrix.jl includes an example of using the geometric stiffness matrix and a hand-made forward Euler integration to simulate large displacement.
  3. test/truss_topopt_problems/test_buckling.jl includes examples to check that the ground mesh is stable and the compliance-optimized truss is not stable by using the geometric stiffness matrix.

Minor changes:

  1. Removed examples/benchmark in favor of our latest WCSMO21 benchmarks

What type of change is this?

  • Bug fix in a backwards-compatible manner.
  • New feature in a backwards-compatible manner.
  • Breaking change: bug fix or new feature that involve incompatible API changes.
  • Other (e.g. doc update, configuration, etc)

Checklist

  • I ran all tests on my computer and it's all green (i.e. ] test).
  • I have added tests that prove my fix is effective or that my feature works.
  • I have added necessary documentation (if appropriate)

So should be used as R*K*R' instead of R'*K*R as indicated in
https://people.duke.edu/~hpgavin/cee421/truss-finite-def.pdf
"""
function compute_local_axes(end_vert_u, end_vert_v)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This might need some explanation. Let's talk about it today.

# else
# px = penalty(density(vars[varind[i]], xmin))
# end
Kσ_e = px * Kσ_e
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure if we should do this for trusses unless we are going for 0-1 designs. If the thickness is optimized then the Ksigma comes from the stress and we shouldn't multiply by the density in assembly here.

@yijiangh yijiangh marked this pull request as draft September 15, 2021 03:16
test/runtests.jl Outdated
include("examples/test_examples.jl")
end
end
# @safetestset "Examples" begin
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we uncomment these now?

@mohamed82008 mohamed82008 marked this pull request as ready for review November 16, 2021 04:20
@mohamed82008 mohamed82008 merged commit d044fa9 into master Nov 16, 2021
@mohamed82008 mohamed82008 deleted the yh/truss_buckling branch February 3, 2024 14:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Truss geometric stiffness matrix unit tests
2 participants