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.
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,
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)
, wherec
>0 is the multiplier,Ke
is the first-order stiffness matrix andKg
the geometric stiffness matrix. Note that this function approachinf
asKe+s*Kg
is not positive-definite. (2) Then we write an outer loop with a decreasing sequence ofc
and use MMA to optimize the composite functionobj - c*logdet(Ke + s*Kg)
.To achieve these, I think a
truss_buckling_logdet.jl
module will be added to theFunctions
folder which contains function evaluation andChainRulesCore.rrule
, in a way similar to theMacroVonMisesStress
function,