JuliaTopOpt / TopOpt.jl

A package for binary and continuous, single and multi-material, truss and continuum, 2D and 3D topology optimization on unstructured meshes using automatic differentiation in Julia.
https://juliatopopt.github.io/TopOpt.jl/
Other
185 stars 30 forks source link

Nonlinear FEA - material and geometric nonlinearity #127

Open mohamed82008 opened 2 years ago

mohamed82008 commented 2 years ago

We should be able to support material and geometric nonlinearity using a combination of NLSolve.jl and ImplicitDifferentiation.jl. We just need to define the equilibrium equations as a differentiable function of the decision variables.

pitipatw commented 1 year ago

Is there anything I can do about this?

I'm working on concrete topology optimization, so I have to deal with nonlinearity properties of concrete. I might use this function in the near future.

Also buckling :)

mohamed82008 commented 1 year ago

Sounds great! My current plan is to use something like https://github.com/gdalle/ImplicitDifferentiation.jl for defining an implicit function for the NLSolve. So we just need to define our equilibrium conditions using TopOpt.jl function. The main missing piece is defining a differentiable function for the element stiffness matrices given a ground mesh, design x and displacement field u. Once you have K(x, u), we can write the equilibrium as K(x, u) u = f and use NLsolve.jl with ImplicitDifferentiation.jl to compute and differentiate the nonlinear displacement u.

mohamed82008 commented 1 year ago

For buckling we already have it for trusses https://github.com/JuliaTopOpt/TopOpt.jl/blob/master/test/truss_topopt_problems/test_buckling_optimize.jl. For continuum it needs some work.

mohamed82008 commented 1 year ago

nonlinear buckling is a separate beast though if that's what you mean

pitipatw commented 1 year ago

I've a very minor experience with non linear buckling shape optimization, but I could start looking into this.

mohamed82008 commented 1 year ago

if you find any readings useful in your learning, feel free to open a PR here https://github.com/JuliaTopOpt/EducationalResources and add them