Repository navigation
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
- @maderthomas made their first contribution in #66
- @mitrlk made their first contribution in #75
Full Changelog: v26.05...v26.11