3D Topology Optimization Framework
The Generalized Geometry Projection (GGP) framework provides comprehensive support for 3D Topology Optimization. Expanding beyond planar models, the 3D pipeline enables the synthesis of highly complex structural geometries under various loading conditions, fully integrated with high-performance physical solvers and state-of-the-art visualization pipelines.
3D Formulations
The 3D framework introduces volumetric formulations designed to map continuous geometric entities into a 3D finite element mesh:
3D_Free: This mode projects independent volumetric components (e.g., 3D round-ended capsules/cylinders) seamlessly into a 3D hexahedral grid. Each component is defined by 8 design variables:Xc: Center X-coordinateYc: Center Y-coordinateZc: Center Z-coordinateL: Capsule LengthW: Capsule Width/ThicknessTheta: Rotation Angle 1Phi: Rotation Angle 2M: Component Density/Presence
These continuous parameters are mapped analytically onto the 3D domain using a regularized Saturated KS function, ensuring fully differentiable constraints and volume evaluations.
High-Performance Solving (FEniCS + PETSc)
Scaling topology optimization from 2D to 3D exponentially increases the degrees of freedom (e.g., a standard 60x30x30 mesh contains 54,000 hexahedral elements and over 150,000 DOFs). To handle this, the 3D physics pipeline is deeply integrated with FEniCS and PETSc4py.
Instead of utilizing direct LU solvers which suffer from massive memory overhead in 3D, the physics discipline automatically switches to scalable iterative solvers:
GAMG Preconditioner: The solver uses PETSc’s Algebraic Multigrid (GAMG) preconditioner to dramatically accelerate convergence.
CG Krylov Solver: The system evaluates linear elasticity deformations via the Conjugate Gradient (CG) method.
Multithreading: The JIT-compiled C++ expressions assemble the massive 3D stiffness kernels rapidly using multi-threading.
XDMF Visualization & ParaView
In 3D, relying on generic Python plotting libraries (such as matplotlib) for rendering intersecting polygons becomes computationally intractable and visually cluttered.
To solve this, the framework implements a native XDMF Exporter. During the optimization cycles, the GGP iterative loop seamlessly writes the instantaneous volumetric density field (rho_V) to standard .xdmf and .h5 files.
Viewing in ParaView:
1. Open the generated density.xdmf file within ParaView.
2. ParaView automatically loads the data as a time-series dataset, allowing you to “Play” the optimization animation from iteration 0 to the end.
3. Apply a Threshold filter to the topology scalar field (e.g., extracting regions where density > 0.5) to view the solid material distribution.
4. This method accurately reveals the precise 3D capsules mapped by the Saturated KS function natively within the finite element space.
CLI Usage
3D problems are defined via a custom YAML file with type: fenics_box geometry and formulation.mode: 3D_Free (or 3D_ALM). Pass --iterative to activate the CG + GAMG solver, which is effectively required at 3D scales.
ggp optimize --config my_3d_problem.yaml --iterative --max-iter 30
A minimal YAML for a 3D short cantilever:
geometries:
- type: fenics_box
role: design
params:
Lx: 60.0
Ly: 30.0
Lz: 30.0
nx: 20
ny: 10
nz: 10
boundary_conditions:
- region: left
type: fixed
loads:
- region: mid_right
type: point
value: [0.0, -1.0, 0.0]
formulation:
mode: 3D_Free
num_components: 18
solver:
algorithm: MMA
max_iter: 30
iterative: true
volfrac: 0.4