Commit Graph

26 Commits

Author SHA1 Message Date
65297852e5 feat(GF-Version): added auto version header
when building the version number is automatically injected into a header now. This allows for more certainty as to what GF version is being used. Note that this is disabled when building the python wheel as there is no clear way to map this dynamically generated header into the wheel structure. This is however not an issue as the python module has a seperate __version__ variable.
2026-04-09 07:45:00 -04:00
4423d7594c fix(build-check): only add global arguments when not a subproject
This is needd to let gridfire work as a subproject
2026-02-03 07:52:24 -05:00
cd5e42b69a feat(omp): useful omp macros
A few macros which make turning on and off omp features cleaner without
#defines everywherer
2025-12-18 12:48:10 -05:00
dcfd7b60aa perf(multi): Simple parallel multi zone solver
Added a simple parallel multi-zone solver
2025-12-18 12:47:39 -05:00
0b09ed1cb3 feat(SpectralSolver): Spectral Solver now works in a limited fashion
Major work on spectral solver, can now evolve up to about a year. At
that point we likely need to impliment repartitioning logic to stabalize
the network or some other scheme based on the jacobian structure
2025-12-12 17:24:53 -05:00
e114c0e240 perf(thread saftey): All Engines are now thread safe
Previously engines were not thread safe, a seperate engine would be
needed for every thread. This is no longer the case. This allows for
much more efficient parallel execution
2025-12-12 12:08:47 -05:00
8cfa067ad0 perf(GridFire)
More preformance improvmnets

1. Switch to mimalloc which gave a roughly 10% improvment accross the
board
2. Use much faster compososition caching
3. Reusing work vector
2025-12-07 12:34:12 -05:00
e48b62f231 perf(GraphEngine): more caching
Added more agressive caching, regained about another 50% performance gain. Solar model over 10Gyr now takes roughly 400ms (as opposed to 1 second before)
2025-12-06 16:35:35 -05:00
b335bf7100 fix(LogicalReaclibReaction): Properly class reverse reactions
Previously there was a bug where some reverse reactions were being
classed as forward reactions. This results in a failure of many
timesteps due to the reverse reactions very high molar flows
2025-11-24 14:57:14 -05:00
9fab4fbfae docs(ridfire)
Added more documentation, also moved all engine code into
gridfire::engine namespace to be more in line with other parts of teh
code base
2025-11-24 09:07:49 -05:00
acc71ba12e refactor(exceptions): All exceptions are derived from GridFireError
Now all GridFire exceptions are derived from the base GridFireError,
this allows for more clean handling of various exception cases
2025-11-21 14:26:24 -05:00
442d4ed86c feat(KINSOL): Switch from Eigen to KINSOL
Previously QSE solving was done using Eigen. While this worked we were
limited in the ability to use previous iterations to speed up later
steps. We have switched to KINSOL, from SUNDIALS, for linear solving.
This has drastically speed up the process of solving for QSE abundances,
primarily because the jacobian matrix does not need to be generated
every single time time a QSE abundance is requested.
2025-11-19 12:06:21 -05:00
2ed629e0bf feat(Table): Added table class for simpler logging
We have built a small table class in addition to the Column class which
allows for logging in a bit more straightforward manner
2025-11-14 10:55:38 -05:00
a7a4a30028 feat(Comoposition-Tracking): updated GridFire to use new, molar-abundance based, version of libcomposition (v2.0.6)
This entailed a major rewrite of the composition handling from each engine and engine view along with the solver and primer. The intent here is to let Compositions be constructed from the same extensive property which the solver tracks internally. This addressed C0 discontinuity issues in the tracked molar abundances of species which were introduced by repeadidly swaping from molar abundance space to mass fraction space and back. This also allowed for a simplification of the primeNetwork method. Specifically the mass borrowing system was dramatically simplified as molar abundances are extensive.
2025-11-10 10:40:03 -05:00
534a44448b feat(policy): updateed policy system and added new reaction chains
Reacions chains now contain more information and are broken out in a more detailed fashion.
2025-11-06 09:18:23 -05:00
7fded59814 fix(python-bindings): Updated python bindings to new interface
The python bindings now work with the polymorphic reaction class and the CVODE solver
2025-10-30 15:05:08 -04:00
23df87f915 fix(graph_engine): fixed major bug with jacobian sparsity
previousl the sparsity calculations for the jacobian matrix were completly broken. The method subgraph_sparsity was returning that all derivities were only depenednt on temperature and density. It should have been reporting that they also depended on some of the abundances. This was resolved by switching to a different structural sparsity engine (for_jac_sparsity). This bug had turned the solver into a fixed point iteration solver which failed for the stiff system we have. Now that it is resolved the solver can once again evolved over Gyr timescales.
2025-10-29 14:47:11 -04:00
c94740f08f fix(CVODE_solver_strategy): solved a bug wherein mass fractions were not being properly computed from molar abundances. 2025-10-26 15:15:03 -04:00
98db2b1d43 perf(graph_engine): finished sparsity system for jacobian, major preformance win, roughly 20x faster
essentially all callers can now inform the graph engine about which species they hold active and graph engine then uses those to define a sparsity pattern and only calculate the jacobian along that sparsity pattern
2025-10-24 11:17:22 -04:00
0581f69c48 perf(engine_multiscale): performance enhancments due to improved hashing, locality, and data structure optimization
This particular commit speeds up QSE solving for systems where reverse reactions and engine caching is disabled by about 24%
2025-10-22 15:08:49 -04:00
b20d3467fa build(libcomposition): version bump for fourdst to bring in libcomposition v1.9.1 whith major preformance enhancments
fourdst version v0.8.4
2025-10-22 15:06:11 -04:00
ced29d2f63 fix(engine_multiscale): resolved bug which prevented proper equilibrium abundances from being found
this was done by adjusting the scaling of the QSE operator() residuals from r = dy/dt to r=(dy/dt)/y
2025-10-22 09:54:10 -04:00
2f1077c02d fix(weakRates): major progress in resolving bugs
bigs were introduced by the interface change from accepting raw molar abundance vectors to using the composition vector. This commit resolves many of these, including preformant ways to report that a species is not present in the composition and unified index lookups using composition object tooling.

BREAKING CHANGE:
2025-10-10 09:12:40 -04:00
8a0b5b2c36 feat(weak): major weak rate progress
Major weak rate progress which includes: A refactor of many of the public interfaces for GridFire Engines to use composition objects as opposed to raw abundance vectors. This helps prevent index mismatch errors. Further, the weak reaction class has been expanded with the majority of an implimentation, including an atomic_base derived class to allow for proper auto diff tracking of the interpolated table results. Some additional changes are that the version of fourdst and libcomposition have been bumped to versions with smarter caching of intermediate vectors and a few bug fixes.
2025-10-07 15:16:03 -04:00
813e62bdd6 feat(dynamic-engine): added derivitves for energy generation rate. dε/dT and dε/dρ have been added to NetOut and computed with auto diff 2025-09-19 15:14:46 -04:00
f20bffc411 feat(python): added robust python bindings covering the entire codebase 2025-07-23 16:26:30 -04:00