How to cite femorph-solver ========================== If femorph-solver supports your work, cite both the **software itself** and the **published references** the kernel implementations build on. Every kernel, solver backend, and verification benchmark in the corpus traces back to a public reference; the codebase's :doc:`provenance` page is the master list, and the per-module ``References`` blocks are the authoritative source. This page tells you which entry to use for which kind of publication. Citing the software ------------------- The repo carries a ``CITATION.cff`` (`Citation File Format `_) that GitHub picks up automatically — visit https://github.com/femorph/solver and the "Cite this repository" button on the right sidebar emits a BibTeX or APA entry directly. For a stable reference in a peer-reviewed paper, use the following template (replace ```` with the version you ran): .. code-block:: bibtex @software{femorph_solver_, author = {Kaszynski, Alex}, title = {{femorph-solver: structural finite-element solver}}, year = 2026, version = {}, url = {https://github.com/femorph/solver}, organization = {K-Matrix Engineering LLC} } When v1.0 ships, this template will be replaced by a Zenodo DOI; the CITATION.cff file is updated at the same time. The version string and commit SHA every reproducible run needs are emitted by :func:`femorph_solver.Report`:: >>> import femorph_solver >>> print(femorph_solver.Report()) ... femorph-solver: 0.20.2 _core extension: ... Include both the version and the ``_core`` SHA in the methods section if the analysis is intended to be reproducible — this matches the IEEE / ACM / Nature reproducibility-checklist expectation. Citing the algorithms --------------------- The algorithm citations are not optional — femorph-solver is independently developed from public FEM literature, and every non-trivial numerical kernel traces to a paper / textbook / public report. When you cite the *implementation* (the software entry above), also cite the *algorithm* in the methods section. The :doc:`provenance` page is the running inventory; the entries below are the most-frequently-referenced sources, grouped by section. Element kernels ~~~~~~~~~~~~~~~ * **HEX8 / HEX20 / TET10 / WEDGE15 / PYR13** — O. C. Zienkiewicz, R. L. Taylor, J. Z. Zhu, *The Finite Element Method: Its Basis and Fundamentals*, 7th ed., Butterworth-Heinemann, 2013. * **HEX8 enhanced strain (EAS)** — J. C. Simo & M. S. Rifai, "A class of mixed assumed strain methods and the method of incompatible modes," *Int. J. Numer. Methods Eng.* 29 (8), 1990, 1595–1638. * **TET10 quadrature** — P. Keast, "Moderate-degree tetrahedral quadrature formulas," *Comput. Methods Appl. Mech. Eng.* 55 (1986), 339–348. * **HEX20 mass matrix** — B. M. Irons, "Quadrature rules for brick based finite elements," *Int. J. Numer. Methods Eng.* 3 (2), 1971, 293–294. * **BEAM2 (Hermite-cubic Euler-Bernoulli)** — R. D. Cook, M. E. Plesha, M. S. Witt, *Concepts and Applications of Finite Element Analysis*, 4th ed., Wiley 2002, Chapter 2 + Table 16.3-1. * **QUAD4_SHELL (DKT)** — J.-L. Batoz, K.-J. Bathe, L.-W. Ho, "A study of three-node triangular plate bending elements," *Int. J. Numer. Methods Eng.* 15 (12), 1980, 1771–1812. * **PLANE182 / Wilson-Q6** — E. L. Wilson, R. L. Taylor, W. P. Doherty, J. Ghaboussi, "Incompatible displacement models," *Numerical and Computer Methods in Structural Mechanics* (eds. Fenves et al.), Academic Press, 1973, 43–57. Sparse linear solvers ~~~~~~~~~~~~~~~~~~~~~ * **Pardiso** — O. Schenk, K. Gärtner, "Solving unsymmetric sparse systems of linear equations with PARDISO," *Future Generation Computer Systems* 20 (3), 2004, 475–487. * **CHOLMOD** — T. A. Davis, W. W. Hager, "Modifying a sparse Cholesky factorization," *SIAM J. Matrix Anal. Appl.* 20 (3), 1999, 606–627. * **MUMPS** — P. R. Amestoy, I. S. Duff, J.-Y. L'Excellent, J. Koster, "A fully asynchronous multifrontal solver using distributed dynamic scheduling," *SIAM J. Matrix Anal. Appl.* 23 (1), 2001, 15–41. * **UMFPACK** — T. A. Davis, "Algorithm 832: UMFPACK V4.3 — an unsymmetric-pattern multifrontal method," *ACM Trans. Math. Softw.* 30 (2), 2004, 196–199. * **SuperLU** — J. W. Demmel, S. C. Eisenstat, J. R. Gilbert, X. S. Li, J. W. H. Liu, "A supernodal approach to sparse partial pivoting," *SIAM J. Matrix Anal. Appl.* 20 (3), 1999, 720–755. Eigensolvers ~~~~~~~~~~~~ * **ARPACK** — R. B. Lehoucq, D. C. Sorensen, C. Yang, *ARPACK Users' Guide: Solution of Large-Scale Eigenvalue Problems with Implicitly Restarted Arnoldi Methods*, SIAM, 1998. * **LOBPCG** — A. V. Knyazev, "Toward the optimal preconditioned eigensolver: Locally Optimal Block Preconditioned Conjugate Gradient method," *SIAM J. Sci. Comput.* 23 (2), 2001, 517–541. * **PRIMME** — A. Stathopoulos, J. R. McCombs, "PRIMME: PReconditioned Iterative MultiMethod Eigensolver — methods and software description," *ACM Trans. Math. Softw.* 37 (2), 2010, article 21. * **Shift-invert Lanczos** — T. Ericsson, A. Ruhe, "The spectral transformation Lanczos method for the numerical solution of large sparse generalized symmetric eigenvalue problems," *Math. Comp.* 35 (152), 1980, 1251–1268. Cyclic-symmetry reduction ~~~~~~~~~~~~~~~~~~~~~~~~~ * **D. L. Thomas**, "Dynamics of rotationally periodic structures," *Int. J. Numer. Methods Eng.* 14 (1), 1979, 81–102. * **A. Wildheim**, "Excitation of rotationally periodic structures," *J. Appl. Mech.* 46 (1979), 878–882. * **R. Grimes, J. Lewis, H. Simon**, "A shifted block Lanczos algorithm for solving sparse symmetric generalized eigenproblems," *SIAM J. Matrix Anal. Appl.* 15 (1), 1994, 228–272. Time integration ~~~~~~~~~~~~~~~~ * **N. M. Newmark**, "A method of computation for structural dynamics," *ASCE J. Eng. Mech. Div.* 85 (1959), 67–94. * **T. J. R. Hughes**, *The Finite Element Method: Linear Static and Dynamic Finite Element Analysis*, Dover, 2000. Verification benchmarks ~~~~~~~~~~~~~~~~~~~~~~~ * **NAFEMS** — National Agency for Finite Element Methods and Standards. Linear-Elastic LE-1…LE-10 + Free-Vibration FV-1…FV-32 + plate / shell standards. Each ``test_nafems_le*`` and ``test_nafems_fv*`` cites the specific benchmark section. * **MAPDL Verification Manual** — Ansys, Inc., *Mechanical APDL Verification Manual*, Release 2025R1. Femorph-solver re-authors each cited problem from the published statement under fair use; deck text is never lifted. * **NASTRAN Verification Guide** — MSC Software, *MSC Nastran Verification Guide*, Release 2024.1. Same fair-use re-authoring pattern. The :doc:`provenance` page tracks the full set; the entries above are the citations every methods section will need. Citing the verification result ------------------------------ When the analysis includes a femorph-solver verification check ("our model converges to within 0.5 % of the published NAFEMS LE5 reference"), cite **both** the femorph-solver run and the published benchmark, and include the femorph-solver commit SHA + verification gallery example URL so the reviewer can rerun exactly the same problem. Pattern: > "The plate-with-hole stress concentration was verified > against the analytical Kirsch reference [Kirsch 1898] using > femorph-solver v0.20.2 (commit 7a4b9c1) running the > ``example_verify_plate_with_hole`` gallery example > [URL]; agreement at the peak K_t value was within 0.3 %." Same convention every commercial-solver paper uses; no special tooling required. Reporting issues ---------------- If a citation in the docstring or in the :doc:`provenance` inventory is wrong, incomplete, or missing, please file an issue at https://github.com/femorph/solver/issues. The sourcing policy in ``SOURCES.md`` is a hard rule — every non-trivial numerical kernel must trace to a public reference, and missing citations are a project-blocking bug, not a nice-to-have. See also -------- * :doc:`provenance` — running per-file citation inventory. * :doc:`/changelog` — version-by-version release notes (cite the version you ran, not the latest). * :doc:`/getting-started/known-limitations` — what the software does *not* do, so the methods section doesn't overclaim capability.