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
183 stars 30 forks source link

Barrier function formulation to include buckling constraints in truss topopt #59

Closed yijiangh closed 2 years ago

yijiangh commented 3 years ago

PR #58 paves our way towards including buckling constraints in truss topopt via a barrier function formulation. The next steps in this direction would include:

(1) Formulate the gradient of the barrier function -c*logdet(Ke + s * Kg), where c>0 is the multiplier, Ke is the first-order stiffness matrix and Kg the geometric stiffness matrix. Note that this function approach inf as Ke+s*Kg is not positive-definite. (2) Then we write an outer loop with a decreasing sequence of c and use MMA to optimize the composite function obj - c*logdet(Ke + s*Kg).

To achieve these, I think a truss_buckling_logdet.jl module will be added to the Functions folder which contains function evaluation and ChainRulesCore.rrule, in a way similar to the MacroVonMisesStress function,

mohamed82008 commented 2 years ago

Fixed by #58.