schema_version: 1 context: name: calculix version: "2.23" sha256: 9c88385c10fb04f5dc6c4e98027a51bebdd8aee3920e05190d6c1dd08357d6e7 package: name: ${{ name }} version: ${{ version }} source: url: http://www.dhondt.de/ccx_${{ version }}.src.tar.bz2 sha256: ${{ sha256 }} patches: - patches/avoid-ifport.patch - patches/fix-readnewmesh-return.patch # submitted upstream; drop these when they land in a release - patches/upstream-f2f-contact-array-bounds.patch - patches/upstream-frictionless-contact-slip.patch - patches/upstream-nonlinmpc-straight-mpc.patch - patches/upstream-mohrcoulomb-degenerate-return.patch - patches/upstream-readfrd-return-value.patch - patches/upstream-locale-numeric.patch - patches/upstream-makefile-inc-mafillmm.patch # threaded *CFD applied MPC's before the SPC's they read; fixed upstream # by the OpenMP rewrite of compfluidfem (9e8ce89); drop once released - patches/fix-cfd-threaded-boundary-conditions.patch # 2.23 creates and joins threads for every loop of every *CFD iteration, # so small meshes run several times slower threaded than on one core - patches/fix-cfd-small-mesh-threads.patch # defects Dhondt fixed upstream after 2.23 was posted (2 Nov 2025), up to # e9e57ed of 17 Sep 2026; drop these when 2.24 is released - patches/upstream-initial-conditions-solution.patch - patches/upstream-boundary-fixed-cylindrical.patch - patches/upstream-gen3dnor-expansion-normals.patch - patches/upstream-materialdata-th-density.patch - patches/upstream-nonlingeo-intscheme.patch - patches/upstream-c3d8r-stable-time-increment.patch - patches/upstream-allocation-debug-print.patch - patches/upstream-friction-stick-slope.patch # 88e8f90 (20 Jan 2026), missed above because its message is empty - patches/upstream-e-c3d-rhs-th-dflux-arguments.patch # b164a60 (5 Dec 2025, a squashed commit) and 428d10e (19 Dec 2025) # nest guards that read null arrays; also missed above - patches/upstream-null-array-guards.patch # a rotational SPC or moment on a plane stress, plane strain or # axisymmetric node reaches the mean rotation code, which sets its loop # bounds only for shells and beams; FreeCAD/FreeCAD#10865 - patches/fix-2d-rotational-dofs.patch # calls that pass fewer arguments than the callee declares, found by # compiling every Fortran unit as one file: the callee dereferences # whatever follows the last argument actually passed - patches/fix-missing-ier-arguments.patch - patches/fix-extrapolate-se-beam-sections.patch # found by AddressSanitizer and by poisoning uninitialised memory over # CalculiX's suite and FreeCAD's FEM test models - patches/fix-electromagnetics-ithermal-array.patch - patches/fix-cd-lab-correction-edges.patch - patches/fix-calinput-cs-guard.patch # calls whose arguments do not line up with the routine called, found by # checking every call against its callee - patches/fix-flux-rcavi-physcon.patch - patches/fix-orifice-curve-integer.patch # face-to-face contact with PRESSURE-OVERCLOSURE=TABULAR used the old # 82-entry layout of plconloc that materialdata_sp.f no longer fills - patches/fix-f2f-tabular-overclosure.patch # found by AddressSanitizer on FreeCAD's ccx_1D_fluid_network example - patches/fix-preinitialnet-inlet-neighbor.patch # crashes, hangs and silent out-of-bounds accesses on malformed input, # found by fuzzing 518 decks under AddressSanitizer; each such input now # ends in an *ERROR and exit code 201 - patches/fix-malformed-input-nodes-elements.patch - patches/fix-malformed-input-sets-sections.patch - patches/fix-malformed-input-fluid.patch - patches/fix-malformed-input-materials.patch - patches/fix-malformed-input-parsing.patch # two fluid network loops that test the wrong element; these change # results for valid models - patches/fix-fluid-network-labels.patch - patches/fix-malformed-input-misc.patch - patches/fix-malformed-input-followups.patch - if: win or osx then: patches/mingw_time.patch - if: win then: patches/fix-win-locale.patch build: number: 8 requirements: build: - make - perl - if: unix then: - ${{ compiler("c") }} - ${{ stdlib("c") }} - ${{ compiler("fortran") }} - if: win then: - ${{ compiler('m2w64_c') }} - ${{ stdlib('m2w64_c') }} - ${{ compiler('m2w64_fortran') }} - if: osx then: - llvm-openmp host: - libblas - liblapack - arpack # spoolesMT.a is linked statically and its data races were only fixed in # build 1006, so an older build bakes silently wrong threaded results into # ccx with nothing at run time to express the constraint; see Makefile_MT - spooles[version ='>=2.2',build_number='>=1006'] - if: osx then: - llvm-openmp run: - arpack - if: osx then: - llvm-openmp tests: - script: - if: unix then: test -f $PREFIX/bin/ccx - if: win then: if not exist %LIBRARY_PREFIX%\bin\ccx.exe exit 1 # a build that links but miscomputes has shipped from here before, so # actually solve something and check the numbers - script: python run_test.py files: recipe: - run_test.py - smoketest.inp - contact.inp - contact.dat.ref - mohr.inp - restart.inp - cfd.inp - cfd.dat.ref - axirot.inp - axirotload.inp - hcfnoinput.inp - bleedtap.inp requirements: run: - python about: license: GPL-2.0-or-later license_file: LICENSE summary: 3D Structural Finite Element Program description: A Free Software Three-Dimensional Structural Finite Element Program homepage: https://www.dhondt.de/ repository: https://github.com/Dhondtguido/CalculiX documentation: https://www.dhondt.de/ccx_${{ version }}.pdf extra: recipe-maintainers: - oursland - looooo - Krande