Commit Graph

21 Commits

Author SHA1 Message Date
7ab8641f51 feat(utils/serialize): System for serializing anything that can be serialized in SERiF (note LLM's made signifigant contributions to this module)
There are loads of things (solutions, models, solver descriptions, mesh's, etc..) which need to be exported from SERiF and then either reimported into SERiF or into some other program. This module is responsible for all of that. Generally with the goal of feeling like the fmt / new format module in C++23 and on (e.g. by specializing formatting structs)

Note that LLM's made signifigant contributions to this module (ChatGPT 6 astra max and Claude Opus 5.5 Medium). All code has been reviewd manually
2026-11-09 13:43:31 -05:00
7134f99d7c feat(utils/laneemden): 1D lane-emden solver
simple rk4 lane emden solver. reimplemented from work in Dartmouth A115
2026-11-09 13:39:32 -05:00
ac2cccda29 feat(solver/seed): Initial guess system
the seed system has two jobs, get the lane-emden solution for a reasonable n and project that onto the mesh. Note that the seed system does not solve lane-emden, that is in utils/laneemden (so that it can be reused by other systems). Currently SERiF only solves polytrope so the lane-emden initial guess is generally very good; however, as we move to non polytropic EOS we will still use a projected lane-emden as our initial guess for the starting model
2026-11-09 13:35:24 -05:00
24d4c20f82 feat(solver/normalization): Added normalization system
The dynamical range of different fields SERiF must solve for is massive. This just breaks any reasonable preconditioner / spreads the eigen modes of the system matrix out. This is a normalization system which uses charectaristic scale factors (e.g. the approximate radius estimated using the lane-emden equation) to rescale different fields to a more similar numeric scale. This turns out to be essential for stable convergence. Broadly this implements Riesz normalization along with exact diagnoal normalization.
2026-11-09 13:30:20 -05:00
9da779417b feat(solver/nonlinear): Implements a damped newton line-search with backtracking
This uses a linear solver from solver/linear which then calls some linear solver from the backend. Note that MFEM's build in newton solver is very simplistic and not sufficient for our needs; therefore we implement a more robust one here (and this is why newton is in the frontend and not the backend)
2026-11-09 13:27:14 -05:00
f520fe5f03 feat(solver/linear): Implemented a few linear solver frontends
As with much of the code, the actual solvers are implemented (through MFEM) in the backend. This provides an interface so we can more easily swap out the linear solvers on the backend in the future
2026-11-09 13:25:52 -05:00
48c6bac1cc feat(model): added model sub system
SERiF defines a so-called "model" subsystem. A model is a fully compile-time description of a problem. Note that this is a description not an evaluation tool. The basic idea is that since we have this robust description we can more easily serialize and be confident that others who load a model are getting the exact same thing. Further, this provides a convient place to do things like validate that all options are compatible, do some limited initial construction of the needed computational graph, allocate needed memory, etc... Some of the stuff that might initially seem to belong to a model will be in the discritization system though (e.g. FEM object lifetimes)
2026-11-09 13:20:46 -05:00
30af52ccea feat(geometry/surface): System for prescripting surface condition and building computational node for surface condition
The surface needs some defined condition (e.g. Isobaric) This module defines how the surface is defined. Again, much like the deformation system this does not actually implement much of the code to deform the surface to that condition; rather, it implements code to allow the prescription to be described robustly at compile time
2026-11-09 13:13:53 -05:00
4bbbf1c418 feat(geometry/deformation): Added deformation subsystem
The model must be able to deform to capture the shape induced by rotation or an external potential. Here we add the precription to descibe how we allow deformation. Note that the code to define how deformation is actually implemented is in the backend.
2026-11-09 13:11:29 -05:00
7f3ebbae45 feat(discretization/domain): updated domain system to use unified mfem backend
This means that the domain system never directly uses mfem code any more
2026-10-14 11:01:33 -04:00
d2e43c82f1 feat(discretization): added implementation of checked_block_size
tho see the note in the header, this could be made more general likeley
2026-10-14 10:58:52 -04:00
0a1fb8d8db feat(geometry/deformation/backend/mfem): added radial_location implementation 2026-10-12 14:10:52 -04:00
c1ddf6d534 feat(mfem-backend): ported DofMap system from MeanField
Broadly MeanField had a system that would map the full index of degrees of freedom to some reduced index space based on domain support. This system has been cleaned up and ported. Further, we have consolidated this system into the discretization system from where it lived in MeanField (in the operators subsystem)
2026-10-01 15:11:22 -04:00
47e8cd0652 docs(dimensions): added dimension doxygen comments 2026-10-01 15:09:11 -04:00
52c42ec7cd feat(mapper): finished porting over mapper 2026-09-23 09:29:05 -04:00
9e0e1f5c18 Working on more domain mapper translation 2026-09-22 05:30:55 -04:00
806268ccb8 Progress on bringing the DomainMapper over 2026-09-20 16:33:06 -04:00
08a8f231d2 Began porting the mapping system 2026-09-20 14:37:11 -04:00
c44584c1e7 feat(quadrature): quadrature system brought over
Ported and dramatically cleaned up the quadrature system. This includes centralizing all field definitions
2026-09-19 07:35:57 -04:00
7b4f30d945 feat(eos): work translating runtime eos code
most (though not all) of the runtime eos code is now present in the new version. What remains is the templated try_evaluate method along with both the templated and non tempalted try_partial_derivative methods.
2026-09-15 15:45:17 -04:00
d1f59d6d70 feat(mean_field): added dimensions, discritization, and start of eos
The full rewrite of mean_field into something maintainable is progressing. dimensions is mostly done, discritization (domain, blocks, and fields) is done, and eos is progressing quickly
2026-09-15 10:42:00 -04:00