Capabilities
What the software does.
The pipeline, stated plainly: the optimization modes, the analysis behind them, the formats it reads and writes, and figures taken from real solver output.
01
Optimization modes
Optimize one parametric structural model four ways: sizing (gauges and cross-sections), shape (sketch-level geometry moves under geometric constraints), combined size + shape, andtopology (generative internal member layout). A nonlinearly-constrained SQP driver handles the smooth problems, and all gradients are analytic.
Chain the modes with optimization strategies, a compact sequencing language: rough-size, regenerate the layout, size again, then polish with combined size + shape. Exploration and refinement happen in one run instead of a chain of manual hand-offs.
02
Generative internal layout
Let the topology engine propose the layout instead of perturbing a template. Topological derivatives score where a new member would earn its mass. Voronoi seeding lays out candidates, with anisotropic cells that stretch along principal stress directions and pack more densely where buckling is critical. Edge-rewriting operators then merge, split, and erase members as the design converges. What comes out is an internal structure grown from the load paths, sized afterward like any conventional design.

03
Analysis & constraints
Constrain the responses that drive airframe design, and get an analytic sensitivity for every one of them. Analysis runs on an in-house finite-element solver built for optimization: MITC shell elements, T-beam sections including laminates, bars and springs, isotropic and orthotropic materials. Buckling and modal problems solve as generalized eigenvalue problems, and finite-difference checks are confined to the test suite.
- Mass
- objective or constraint, per zone or total
- Compliance
- global stiffness objective
- Von Mises stress
- strength constraints across skins, webs, and caps
- Buckling
- global eigenvalue buckling
- Panel buckling
- local panel-level buckling, solved per panel
- Displacement
- deflection limits at selected locations
- Natural frequency
- modal constraints for dynamics and frequency-placement requirements
- Thermal compliance
- conduction dissipation, the thermal analogue of compliance, for heat-path efficiency
UPPER SKIN
LOWER SKIN
UPPER SKIN
LOWER SKIN04
Thermo-elastic optimization
Carry heat into the structural solve when temperature drives the design. Steady-state conduction couples one-way into the structural analysis, producing free thermal strains, thermal loads, and thermal stresses, and a thermal-compliance response joins the constraint set. In our documented wing example, adding the thermal load raised compliance by roughly 29% and drove the optimizer to a different sized design than the mechanical-only case.
UPPER SKIN
LOWER SKIN05
Scriptable, verifiable workflow
Author models and studies from Python, or write them as plain JSON, and validate everything before it solves. The rule the API is built around: if it passes validation, it runs in the solver and means what you said. A typo'd key or a dangling reference surfaces as an error while you're still authoring, when it costs seconds to fix.
import pgd
project = pgd.Project("lar-wing")
wing = project.model("wing")
al = wing.materials.isotropic("aluminum", E=1.0e7, nu=0.3, rho=2.59e-4)
vs = wing.sketch.points([(120.0, 0.0), (-120.0, 0.0), (70.0, -110.0), (100.0, -110.0)])
es = wing.sketch.connect([(vs[1], vs[0]), (vs[1], vs[2]), (vs[2], vs[3]), (vs[3], vs[0])],
labels=["root", "le", "tip", "te"])
wing.sketch.faces([tuple(es)], thickness=(0.5, 0.5))
wing.mesh(size=4)
opt = project.optimization("develop", model=wing)
mass = opt.responses.mass(scale=1.5)
comp = opt.responses.compliance(scale=4e5)
sz = (opt.problem("sz_Co", mode="size", responses=(mass, comp))
.minimize(comp).constrain(mass))
opt.strategy.sequence(sz.repeat(10))
opt.write("inputs/develop") # validates first; raises on errorsTake results to the viewers you already trust: Kadabra, the interactive 3D viewer, for inspecting designs and optimization history; ParaView for full field output; Jupyter for previews while authoring. Apgd validate CLI drops into CI with machine-readable reports and stable finding codes.
06
Formats & interoperability
- Model input
- Plain JSON documents, schema-validated: materials, zones, loads, constraints, sketch. Authored by hand or from the Python API.
- Nastran bulk data
- Import existing BDF decks; export optimized models back to BDF for your downstream analysis chain.
- Field output
- HDF5 and XDMF/ParaView export. Stress, displacement, temperature, and buckling fields open directly in ParaView.
- Meshing
- Built-in gmsh-based meshing with structured, quad-dominant control, so you don’t need a separate preprocessor.
07
Verification
Check our claims the way you would check a stress report. Every analytic sensitivity is verified against finite differences in the test suite. The finite-element library carries shell and stiffened-panel validation cases, and element results are regression-tested against Nastran-format reference solutions. We are preparing a public benchmark set with reference solutions and error figures.
08
Deployment & data
Run PGD wherever your data is allowed to live. It ships as desktop and command-line software that runs entirely on your hardware, whether that is a workstation or an air-gapped cluster node. There is no cloud dependency and no telemetry, so your geometry never leaves your network. If your work is export-controlled, nothing about the setup has to change.
Want the deeper technical story?
Request a demo and we'll walk through methods, validation, and your use case with the engineers who built the solver.