Changelog¶
This page tracks notable changes across GenSec releases.
v0.2.0 (current)¶
Performance overhaul and architecture refinements.
Performance
Batch integration (
integrate_batch()): evaluate thousands of strain configurations in a single vectorized NumPy call. Eliminates Python-loop overhead in all capacity generators.Mega-batch with chunking: biaxial generators (
generate_biaxial,generate_mx_my) concatenate all curvature directions into a single flat array and integrate in large chunks, reducing per-call overhead by 10–70×.Analytical tangent stiffness (
integrate_with_tangent()): compute internal forces and the 3×3 tangent matrix in one pass, halving the cost of each Newton-Raphson iteration.Optional Numba JIT: when
numbais installed (pip install gensec[fast]), stress and tangent kernels forConcreteandSteelare JIT-compiled to native code (~2–3× speed-up on large fiber arrays).Measured end-to-end improvement: 15–40× faster on typical biaxial analyses.
Materials
tangent(eps)andtangent_array(eps)added to the abstractMaterialinterface. Closed-form implementations forConcrete,Steel, andTabulatedMaterial. Finite-difference fallback in the base class for custom materials.stress_arraynow accepts arrays of any shape (1-D, 2-D, …) across all built-in materials.
Geometry
RectSectionis now a factory function returning aGenericSectiondirectly, eliminating the former wrapper class with its 15 delegated properties.GenericSectionaccepts optionaln_grid_x/n_grid_yparameters for explicit grid control.GenericSectionexposesdxanddyattributes.Isotropic grid by default: when
n_fibers_xis omitted or set to 1, the grid cell size is derived fromn_fibers_y(approximately square cells).
Verification
VerificationEngineauto-disableseta_2D/eta_path_2Dwhen the resistance domain is 2-D (no My data), preventing QHull errors on degenerate contours._get_contourcaches failures (degenerate contours at extreme N levels) asNoneto avoid expensive retries.
Output flags
New YAML flags:
generate_moment_curvature,generate_polar_ductility,generate_3d_moment_curvature(all defaulttruefor backward compatibility).Setting all three to
falseskips the computationally expensive moment-curvature pipeline entirely.
v0.1.0¶
Phase 2 complete: biaxial bending and generic sections.
Generic section with arbitrary Shapely polygons and automatic fiber meshing (grid and triangular).
Parametric primitives: rectangle, circle, annulus, T, inverted T, H, box, single-tee slab, double-tee slab.
Biaxial bending: full \((N, M_x, M_y)\) resistance surface generation via curvature-angle scanning.
\(M_x\text{-}M_y\) contour diagrams at constant \(N\).
3-D resistance surface visualization.
Convex-hull demand verification in both 2-D and 3-D modes.
Combinations: named groups of demand triples with envelope \(\eta_{\max}\).
EN 10025-2 structural steel with thickness-dependent properties.
Multi-material bulk support for composite sections.
Per-fiber post-processing: strain/stress extraction and section state plots.
106 tests covering materials, solvers, infrastructure, and biaxial analysis.
v0.0.1¶
Phase 0 + Phase 1: uniaxial bending for rectangular sections.
Parabola-rectangle concrete (EC2 / NTC 2018).
Elastic-plastic steel with optional hardening.
Fiber integrator with Newton–Raphson inverse solver.
\(N\text{-}M\) interaction diagram via EC2 pivot method.
YAML-driven input.
CLI and Python API.
EC2 Table 3.1 property computation (French National Annex).
Six analytical validation test cases, all passing within 1 %.