Skip to content

v26.11

Latest

Choose a tag to compare

@alexdummer alexdummer released this 03 Nov 09:29
· 26 commits to master since this release
2d543ca

What's Changed

  • fix(docs): update path in mesh.rst by @alexdummer in #39
  • chore: update element internal force sign and remove pNewDT and stepTime by @matthiasneuner in #41
  • test(marmot): update reference solution for CDPPlane test by @matthiasneuner in #42
  • fix(docs): fix Sphinx documentation build failure by lazy-loading inputfileparser by @matthiasneuner in #43
  • fix: use eigh instead of eig in tensorLogarithmEig to avoid spurious … by @matthiasneuner in #46
  • refactor: introduce structured 2-D views and wrappers for stiffness m… by @matthiasneuner in #40
  • feat: improvements csr generator v2 by @matthiasneuner in #49
  • fix: update non-auto-tested .inp examples to current >> module-level … by @matthiasneuner in #47
  • fix: avoid circular import when importing edelweissfe modules standalone by @matthiasneuner in #53
  • fix(testfiles): add missing viscoplasticity parameter to GCDP and Ind… by @matthiasneuner in #67
  • feat(phenomena): register scalar fields 'pressure' and 'jacobi' for m… by @maderthomas in #66
  • fix: update non-auto-tested .inp examples to current >> module-level … by @matthiasneuner in #69
  • feat: improved freethreading performance by @matthiasneuner in #56
  • update tool.black by @matthiasneuner in #70
  • fix(ci): stop building against a stale Marmot branch, don't crash the… by @matthiasneuner in #71
  • fix(numerics): guard CSRGenerator's aliased matrix against structural mutation by @matthiasneuner in #73
  • feat: discrete rigid body contact by @matthiasneuner in #54
  • fix(timesteppers): AdaptiveTimeStepper's maxNumInc cap is off by one by @matthiasneuner in #81
  • fix(solvers): reaching max increments no longer fails the step by @matthiasneuner in #80
  • fix(elements): unify Hexa8/Hexa20 node ordering with Marmot's Abaqus-standard convention by @matthiasneuner in #83
  • feat: named element properties by @matthiasneuner in #58
  • Feat: numerics dofvector improvements and doc update by @matthiasneuner in #62
  • feat: improve dirichlet application clarity by @matthiasneuner in #63
  • feat: node-to-surface contact with facets by @matthiasneuner in #57
  • refactor(materials): consolidate neo-Hookean formulations, simplify materials, small perf wins by @alexdummer in #84
  • fix(testfiles): update orthotropic/transverse-isotropic reference solutions by @alexdummer in #86
  • feat: surface tie constraint by @matthiasneuner in #61
  • feat: adaptive mesh refinement with hanging nodes by @matthiasneuner in #64
  • Feat/input system registry by @matthiasneuner in #68
  • fix(ci): resolve Marmot branch from the branch under test, not just the PR base by @matthiasneuner in #88
  • feat(adaptivity): ZZ recovery-based AMR marker, marker registry, minMarkedElements batching by @matthiasneuner in #89
  • feat(linsolve): unify all solvers behind a LinearSolver contract, add field-split block-AMG and offline benchmarking by @matthiasneuner in #91
  • feat(topology): plan/apply model-modifier pipeline with a monotonic element allocator by @matthiasneuner in #95
  • fix(restart): drop version-negotiation from checkpoint read/write by @matthiasneuner in #96
  • feat(numerics): direct-to-CSR assembly, opt-in AMG hierarchy sparsification by @matthiasneuner in #98
  • feat(restart): checkpoint/restart support + resume completeness fixes by @matthiasneuner in #97
  • fix(timesteppers): report whether the next increment really is zero by @matthiasneuner in #90
  • feat(restart): make restart AMR-aware by persisting topologyHistory by @matthiasneuner in #99
  • test(marmot): cover the Hughes-Winget wrapper in a finite-strain element by @matthiasneuner in #103
  • feat(solvers): resolve Dirichlet/multi-point-constraint overlaps instead of rejecting them by @matthiasneuner in #101
  • fix(ci): pin freethreaded python build to work around conda-forge regression by @matthiasneuner in #106
  • docs: add coding agent guide by @alexdummer in #85
  • fix(config): read the *updateConfiguration dataline payload under its actual key by @matthiasneuner in #105
  • fix(restart): restore every node-field entry the checkpoint holds by @matthiasneuner in #107
  • feat(solvers): explicit dynamics with contact, h-adaptivity, energy balance and a ~2x faster increment by @matthiasneuner in #109
  • feat(contact): integrated (Gauss-point-to-segment) surface contact for quadratic elements by @matthiasneuner in #113
  • fix(constraints): arbitrate contested MPC slave DOFs centrally, not inside the tie by @matthiasneuner in #121
  • perf(solvers): report what the explicit timing table does not measure by @matthiasneuner in #127
  • perf: cut the explicit increment cost by 19% -- parallel state acceptance, a tighter contact broadphase, and live cost reporting by @matthiasneuner in #128
  • fix(adaptivity): identify refined nodes topologically, not by rounded coordinates by @matthiasneuner in #131
  • refactor(journal): clean up increment/blockamg/contact console output by @matthiasneuner in #130
  • fix(fieldoutput): refresh a field output at step end, so the final frame matches the mesh by @matthiasneuner in #132
  • fix(restart): stop a resumed run misreporting its own state by @matthiasneuner in #133
  • fix(ci): pin pyvista below 0.49.0 to unbreak free-threaded builds by @matthiasneuner in #136
  • refactor(solvers): merge blockamg's per-solve diagnostics into the Newton table by @matthiasneuner in #135
  • feat(linsolve): hot-reload BlockAMGSolver's JSON config during a run by @matthiasneuner in #137
  • feat(ci): add Codecov coverage pipeline by @alexdummer in #140
  • feat(solvers): damping and inertia for explicit dynamics -- the EdelweissFE side, plus a fracture-energy calibration by @matthiasneuner in #134
  • fix(deps): support free-threaded Python 3.14, drop pyamg-backed gmres solver by @alexdummer in #141
  • perf(elements): leave contact facets out of the explicit element loop by @matthiasneuner in #147
  • fix(numerics): warn when fewer CPUs are available than requested threads by @matthiasneuner in #148
  • perf(solvers): give each explicit element chunk its own force buffer by @matthiasneuner in #149
  • perf(solvers): balance the explicit element chunks dynamically by @matthiasneuner in #150
  • perf(solvers): keep the lumped operators across a contact-connectivity rebuild by @matthiasneuner in #146
  • feat(materials): make Marmot and native EdelweissFE materials interchangeable by @alexdummer in #79
  • fix(linsolve): blockamg gapCompensatedTolerance runaway + Newton-table column alignment by @matthiasneuner in #151
  • fix(generators): make name-union *ELSET a hashable ElementSet by @matthiasneuner in #152
  • feat(solvers): make the AMR lumped-quantity conservation tolerance configurable by @matthiasneuner in #153
  • fix(fieldoutput): stop restart from truncating exported CSV history by @matthiasneuner in #157
  • feat(adaptivity): add a halo option to FieldOutputMarker by @matthiasneuner in #159
  • fix(rigidbody): declare the DOF diagonal in the sparse VIJ pattern by @mitrlk in #75
  • feat(solvers): Newmark-beta implicit dynamic solver (NID) by @matthiasneuner in #154
  • feat(performancetiming): percentage shares and periodic cumulative performance tables by @matthiasneuner in #160
  • feat(examples): Winkler L-panel showcase for blockamg and live h-adaptivity by @matthiasneuner in #161
  • fix: resolve the 5 baseline test failures on next_v26.11 by @matthiasneuner in #162
  • fix(output): computetimemonitor increment time export by @alexdummer in #77
  • perf(models): replay the AMR topology history in O(mesh), not O(records x mesh) by @matthiasneuner in #158
  • fix(adaptivity): search every grid cell for a finer neighbour in classify_hanging by @matthiasneuner in #165
  • feat(contact): integrated surface-to-surface contact against discrete rigid bodies by @matthiasneuner in #163
  • fix: spsolve mutation and export typo by @konstantinbasche in #142
  • fix: improve execute python code generator for indentation handling by @alexdummer in #50
  • fix(tests): remove over-constrained DOF in PythonCodeModelGenerationIndented by @alexdummer in #169
  • feat(adaptivity): exact topological hanging nodes, balancing and node sets, with conformity invariants by @matthiasneuner in #170
  • fix(elements): give PointMass a consistent inertia for the implicit dynamic solver by @matthiasneuner in #174
  • fix: macOS/arm64 support by @mitrlk in #74
  • build: conda-only environment, pinned by conda-lock and published as edelweissfe-dev by @matthiasneuner in #176
  • fix: use fixed-width 64-bit types instead of C long by @matthiasneuner in #178
  • feat: build and test EdelweissFE on Windows (without Marmot) by @matthiasneuner in #179
  • fix(stepactions): accept the surface a full distributedload re-declaration restates by @matthiasneuner in #175
  • fix(restart): hash rigid surface nodes at their reference position in the topology fingerprint by @matthiasneuner in #167
  • perf(solvers): cut NID mass/damping assembly memory and time by @matthiasneuner in #177
  • refactor(solvers): NID mass/damping follow-ups to #177 by @matthiasneuner in #180
  • docs(examples): four-variant bonded anchor pry-out example (implicit/explicit x NTS/GPTS) by @matthiasneuner in #122
  • fix(amr): assign the field-modified material to refined child elements by @matthiasneuner in #182
  • fix(contact): checkpoint the frozen contact projection for explicit restarts by @matthiasneuner in #166
  • fix(explicit): carry the force over when a topology check only changes contact connectivity by @matthiasneuner in #183
  • Fix/tie adjust element geometry by @matthiasneuner in #184
  • perf(solvers): fused velocity update in explicit dynamics by @matthiasneuner in #173
  • refactor(constraints): use the shared normalPenaltyForce in the rigid contacts by @matthiasneuner in #193
  • refactor(elements): share a DisplacementElementBase between small-strain and TL elements by @matthiasneuner in #190
  • perf(contact): batch the closest-point searches over all candidate pairs by @matthiasneuner in #186
  • perf(topology): coalesce the model change history in linear time by @matthiasneuner in #188
  • refactor: remove hasattr/getattr checks and duplicated solver option parsing by @matthiasneuner in #189
  • refactor(solvers): share topology update and load assembly in NonlinearSolverBase by @matthiasneuner in #191
  • perf(adaptivity): keep the marker halo's node adjacency across topology checks by @matthiasneuner in #187
  • refactor(amr): split HAdaptivity._materialize into named steps by @matthiasneuner in #192
  • refactor(models): move the topology pipeline out of FEModel into model.topology by @matthiasneuner in #194
  • ci: build and test EdelweissFE with Marmot on Windows by @matthiasneuner in #181
  • test(contact): check facet closest points against their exact value, independent of the CPU by @matthiasneuner in #200
  • refactor(models): call the topology pipeline as model.topology everywhere by @matthiasneuner in #195
  • refactor(restart): one module owns the checkpoint file layout by @matthiasneuner in #196
  • fix(restart): a resumed run continues exactly where the uninterrupted run would by @matthiasneuner in #198
  • refactor(restart): restart by construction, phase 2 -- state machines, one increment loop, declared state by @matthiasneuner in #199
  • feat(modelmodifiers): snap AMR-refined boundary nodes onto an analytical cylinder by @matthiasneuner in #143
  • ci(lockfile): pin micromamba 2.8.1 for the re-lock by @matthiasneuner in #202
  • chore: update the locked environment (conda-lock.yml, edelweissfe-dev) by @matthiasneuner in #203
  • ci: run each workflow once per change, pin threads, report undiscovered decks by @matthiasneuner in #201
  • perf(numerics): count nodal fluxes per distinct node and concatenate node-set indices by @matthiasneuner in #185
  • build: share the extension compile flags with downstream packages by @matthiasneuner in #204
  • test(marmot): gradient-enhanced finite-strain damage (GCPE8UL) and Drucker-Prager by @maderthomas in #164
  • feat: add cylinderGenerator for extruded O-grid hex meshes by @advktEntnschdl in #78
  • feat(solvers): selectable convergence criterion, incl. the Abaqus/Standard one by @matthiasneuner in #206
  • fix(blockamg): hot reload converts config values like the factory does by @matthiasneuner in #207
  • fix(stepactions): keep the elements' state in changeMaterialProperty by @matthiasneuner in #205
  • feat(generators): add axial sections and symmetric parts to cylinderGenerator by @advktEntnschdl in #208
  • feat: conda package recipe and workflow by @matthiasneuner in #209
  • feat(steps): configurable increment growth of adaptive steps by @matthiasneuner in #212
  • fix(mpc): symmetric identity slave rows with post-solve slave recovery by @matthiasneuner in #215
  • fix(solvers): initial time average flux q~0 in the Abaqus convergence criterion by @matthiasneuner in #213
  • perf(solvers): no multi-point condensation when no constraint has a record by @matthiasneuner in #214
  • perf(linsolve): blockamg's equilibrated field-split system in threaded C++ (blockamg 1/5) by @matthiasneuner in #217
  • perf(linsolve): float-stored 3x3 block AMGCL hierarchy set up in double, 32-bit level indices (blockamg 2/5) by @matthiasneuner in #218
  • feat(linsolve): threaded C++ p-two-grid preconditioner, opt-in (blockamg 3/5) by @matthiasneuner in #219
  • fix(linsolve): blockamg correctness fixes, settings validation, teaching docs; SciPy outer solver removed (blockamg 4/5) by @matthiasneuner in #220
  • feat(linsolve): blockamg outer solve on the unscaled system, unscaled-block hierarchies, new defaults (blockamg 5/5) by @matthiasneuner in #221
  • docs: blockamg examples run with the defaults; no machine-dependent numbers in the docs by @matthiasneuner in #222
  • perf(numerics)!: threaded one-pass MPC condensation; option renamed to useThreadedMPCCondensation by @matthiasneuner in #226
  • feat(linsolve)!: blockamg block backends use the true translations as near-null-space (default); remove hierarchyOnUnscaledBlock by @matthiasneuner in #225
  • fix(journal): readable implicit logs: the iteration table never wraps, messages nest at their level by @matthiasneuner in #227
  • perf(solvers): timers for the untimed parts of the implicit increment loop; restart replay in its own table by @matthiasneuner in #229
  • perf: cheap gains in the implicit solvers and the AMR replay (stacked on #229) by @matthiasneuner in #230
  • feat(linsolve): blockamg option reuseHierarchy by @matthiasneuner in #231
  • feat(linsolve)!: composable linear solvers, *linearSolver keyword; blockamg and the Schur solver as presets/scripts (supersedes #235) by @matthiasneuner in #236
  • perf(linsolve): one linear solver across steps; forget what is rebuilt before building it anew by @matthiasneuner in #238
  • perf(linsolve): build the approximate Schur complement with fewer and shorter-lived temporaries by @matthiasneuner in #239
  • perf(numerics): condense the MPC system matrix in place, in the CSR generator's pattern by @matthiasneuner in #240
  • fix(linsolve): a combination raises for a field no correction acts on by @matthiasneuner in #241
  • feat(linsolve): readable log of the composed linear solver by @matthiasneuner in #242
  • feat(linsolve): scaled P1 interpolation and a composable coarse solve for the corner-node two-level cycle by @matthiasneuner in #244
  • feat(linsolve): one spectral radius estimate (Arnoldi) for every Chebyshev smoother by @matthiasneuner in #245
  • feat(linsolve): blockamg defaults to the corner-node two-level cycle on quadratic displacement and to no reuse by @matthiasneuner in #246
  • refactor(linsolve): name the composed solver's parameters after what they do by @matthiasneuner in #247
  • perf(linsolve): CoarseCorrection multiplies with P on every thread; which written-out form costs what by @matthiasneuner in #248
  • refactor: trim overly verbose comments by @matthiasneuner in #232
  • fix(generators): keep the order of a name-union *elSet's members by @matthiasneuner in #252
  • fix(linsolve): corner/midside nodes from the shape each element declares; an unknown shape is an error by @matthiasneuner in #253
  • perf(linsolve): prune the condensed system matrix only for a solver that needs it by @matthiasneuner in #254
  • perf(solvers): assemble the mass and the damping on the thread pool by @matthiasneuner in #255
  • perf(numerics): rebuild in parallel after a topology change by @matthiasneuner in #256
  • perf(output): write the Ensight connectivity of an element shape in one call by @matthiasneuner in #257
  • perf(linsolve): Galerkin product on AMGCL's Saad SpGEMM at every thread count by @matthiasneuner in #258
  • docs: update publications and zenodo author list by @alexdummer in #251
  • fix: build against Marmot's reworked namespaces by @alexdummer in #274
  • next v26.11 by @alexdummer in #45
  • zenodo: update metadata for v26.11 by @alexdummer in #278

New Contributors

Full Changelog: v26.05...v26.11