Commit Graph

20 Commits

Author SHA1 Message Date
26febe7fbb fix(poly): added stabilization term
least squares stabalization term seems to have stabilized polytrope and mostly resolve the overshoot mode (in more non linear cases (n > 2) the mode does reapear; however, it is much less pronounced
2025-06-11 10:43:09 -04:00
76d6d3d1cf fix(poly): working to resolve overshoot mode 2025-06-10 12:49:31 -04:00
2a91d57ad7 fix(poly): fixed numerous bugs related to inconsistent system sizing with the reduced operator
this has restored the symmetry which we relied on before.
2025-06-09 10:19:18 -04:00
6e1453cf6e docs(poly): began cleaning up and adding docs 2025-06-05 15:13:50 -04:00
a31c966146 feat(poly): refactoring PolytropeOperator to work on the reduced system so as to avoid rank deficiencies 2025-06-05 12:37:00 -04:00
4eb8b71271 docs(laneEmdenVariationalForm): updated to match MFEM sign convention more closley 2025-06-05 12:36:26 -04:00
2e9de49f88 refactor(poly): minor comment cleaning up 2025-06-03 08:11:01 -04:00
f5dea85db1 fix(PolytropeOperator): seperated boundary aware and unaware operators for M, Q, and D
residual calculation needs to be done when boundary degrees of freedom have not been removed (since their removal takes place in the Mult step in order to introduce the proper restoring force). Whereas jacobian calculation needs to always work from the boundary aware operators (these are sparse matrices)

The other thing to note here is that this seems contrary to a matrix free design. While true it is common practive to assemble linear terms since they are cheap. We still never assemble the non linear matrix form.
2025-05-22 11:30:24 -04:00
b16ba8a7b6 feat(operator): added matrix free inverter and SchurComplement operator
In order to maintain memory efficienty I have implimented a matrix free SchurComplement operator as well as an operator which uses a few iterations of GMRES to approxinate the inverse of any general operator.
2025-05-18 15:32:08 -04:00
1ee919a4a9 feat(PolytropeOperator): added polytropic index as a member variable 2025-05-12 14:27:01 -04:00
14eb21bd31 fix(PolytropeOperator): uncommented code that should never have been commented in GetGradient 2025-05-11 15:09:22 -04:00
412a3be2ec refactor(PolytropeOperator): commented out debug code 2025-05-11 14:40:19 -04:00
8b9d46e996 style(NonlinearPowerIntegrator): removed old comments 2025-05-11 14:38:50 -04:00
3d33839028 feat(NonlinearPowerIntergrator): increased robustness to theta ~ 0 and theta < 0 2025-05-11 14:38:22 -04:00
dee6ca80f4 fix(operator): changed MULT (residuals) to deal with negated M properly 2025-04-30 07:32:56 -04:00
ae5d61bd75 feat(poly): locking phi surface flux and fixed phi boundary condition application 2025-04-28 13:44:27 -04:00
56f596500c feat(poly): added NonlinearPowerIntegrator and PolytropeOperator
A custom integrator is required to handle the theta^n term in the lane emden equation, that is written as NonlinearPowerIntegrator which is a mfem::NonlinearFormIntegrator and defines methods to assemble its element vector (function value) and element gradient matrix (jacobian). This is then, along with built in mfem vectors for M Q and D, incorporated into the PolytropeOperator which defines methods for Mult (calculate the residuals of the variational form) and GetGradient (find the jacobian of the system)
2025-04-25 11:41:08 -04:00
3f86d0ceb1 docs(src): added file headers to all files 2025-03-17 12:42:33 -04:00
7330fb9906 feat(poly): initial build system for polytrope 2025-02-14 10:50:07 -05:00
f4be5b3733 feat(poly): added skeleton of polytrope model
the polytrope module will be used as an initial guess to the solver. A skeleton of this has been imported from https://github.com/tboudreaux/FEMPolytrope

This module will need major updates still to handle 3D, proper boundary conditions, and to incorporate it with the rest of our meshing scheme
2025-02-12 16:44:10 -05:00