A gust load should touch the wing, not just its tip.
We generated a swept UAV half-wing as STEP, let Gmsh tetrahedralize the solid, mapped an elliptical lift law onto the actual upper-surface triangles, and solved the resulting 4 kN gust case. The useful part is the chain from aerodynamic intent to auditable nodal forces.
An inspectable CAD reference
The geometry is an original physicsbase reference model built by a checked-in generator. Six NACA 0012 sections form a 1.8 m half-span solid with a 0.60 m root chord, 0.24 m tip chord, 0.30 m leading-edge sweep and 6° dihedral. The resulting 132 kB STEP has SHA-256 510c6633...df4b5d6.
The public route verifies that hash before meshing. The shape is intentionally simple enough for a keyless solve but remains real boundary-representation CAD: OpenCASCADE imports a closed volume and Gmsh creates tetrahedra from it on the server.
From a lift law to surface forces
A wing load should not be disguised as a single force at the tip. The demo uses an elliptical spanwise law L′(η) ∝ √(1−η²). It extracts every exterior tetrahedral face, retains upper-skin triangles, divides the target span load by local chord to obtain pressure weighting, and apportions each triangle's area contribution to its nodes. The weights are normalized so their sum is exactly the requested total lift.
There is a compact check on that mapping. The analytical spanwise center of an elliptical half-wing load is 4b/(3π), or 0.7639 m for this span. The discrete CAD-surface forces place it at 0.7696 m: a 0.75% difference on the live mesh.
The 4 kN reference gust case
The root plane is fixed in translation and 4 kN of total upward half-wing lift is distributed over 138 surface nodes. The concept assigns a homogeneous quasi-isotropic carbon/epoxy equivalent with E = 38 GPa, ν = 0.30, ρ = 1550 kg/m³, and a 300 MPa comparison value. Those inputs describe this surrogate only; they are not a material-card or laminate allowables set.
| Quantity | Result | Evidence |
|---|---|---|
| Solver mesh | 298 nodes / 887 tet4 | 0 inverted |
| Loaded surface nodes | 138 | sum = 4,000 N |
| Elliptical load center | 0.7696 m | 0.75% from analytic |
| Peak von Mises | 5.413 MPa | coarse-mesh value |
| Maximum displacement | 1.647 mm | near the tip |
| Nominal material screen | 55.422 | 300 MPa / peak |
| Relative equilibrium residual | 3.62 × 10−12 | PASS |
| Maximum aspect ratio | 11.33 | PASS |
| Stress-recovery error estimate | 64.51% | REVIEW |
The high nominal material screen does not turn this into a design pass. Global equilibrium, element validity and the load mapping check pass, but the stress-recovery estimator requests refinement. A real airframe decision would require the actual wing-box and laminate, fasteners and interfaces, inertial relief, torsion, maneuver and gust envelopes, aeroelastic coupling, multiple mesh levels, material allowables and test correlation.
Run it live
GET /demo/cad
POST /demo/cad/uav-wing-gust
{ "load_n": 4000, "direction": [0, 0, 1] }
← hash-checked STEP + gmsh/OpenCASCADE tetrahedra
← elliptical upper-surface load mapping
← displacement + stress + reactions + complete model
← equilibrium PASS + mesh quality PASS + refinement REVIEWThe live control is bounded to 1–8 kN and now accepts XY, XZ, YZ or full XYZ direction. The endpoint normalizes a nonzero three-component vector, accepts no file path or upload, and returns the solved reusable model bundle together with geometry, material, resultant vector, load-discretization and provenance metadata. Animated arrows show the applied direction; the contour remains a static solve.