jax_fem.mma
module#
- jax_fem.mma.optimize(fe, rho_ini, optimizationParams, objectiveHandle, consHandle, numConstraints)[source]#
Performs topology optimization using the Method of Moving Asymptotes (MMA).
- Parameters:
fe (FiniteElement) – Finite element object.
rho_ini (NumpyArray) – Initial density distribution. Shape is (num_rho_vars, 1).
optimizationParams (dict) –
Dictionary containing optimization parameters:
’movelimit’: Move limit for design variables (float)
’maxIters’: Maximum number of iterations (int)
objectiveHandle (callable) –
Function that computes the objective value and its gradient. Signature:
J, dJ = objectiveHandle(rho_physical)
rho_physical
: Physical density field (filtered if enabled). Same shape asrho_ini
.J
: Objective value (scalar).dJ
: Objective gradient (NumpyArray, same shape asrho_ini
).
consHandle (callable) –
Function that computes constraint values and their gradients. Signature:
vc, dvc = consHandle(rho_physical, iter)
rho_physical
: Physical density field (filtered if enabled). Same shape asrho_ini
.iter
: Current optimization iteration (int).vc
: Constraint values. Shape is (num_constraints,).dvc
: Constraint gradients. Shape is (num_constraints, …), where … shares the same shape withrho_ini
.
numConstraints (int) – Number of constraints in the optimization problem.
- Returns:
rho – Optimized density distribution after completing all iterations. Same shape as
rho_ini
.- Return type:
NumpyArray
Notes
TODO: Scale objective function value to be always within 1-100 (ref).