Commit Graph

394 Commits

Author SHA1 Message Date
36b605142e refactor(probe): changed from header guard to pragma once 2025-06-09 10:20:00 -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
cf153e0644 refactor(smread): broke sparse matrix debug utilities into smaller functions 2025-06-03 08:11:39 -04:00
2e9de49f88 refactor(poly): minor comment cleaning up 2025-06-03 08:11:01 -04:00
56e5144d97 docs(gitignore): added scratch/ to gitignore 2025-05-23 09:01:02 -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
bd4aebedce refactor(polySolver): turned on preconditioner and removed redundant validation check 2025-05-18 15:33:06 -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
ddab27b833 build(build-config): removed unused meson option 2025-05-13 14:23:37 -04:00
5595f7109a build(hypre): added hypre as a subproject 2025-05-13 14:20:45 -04:00
21c6657dc6 build(hypre-&-mpi): brought hypre and mpi in as dependencies and fixed incorrect branch 2025-05-13 14:20:40 -04:00
678f9b6277 docs(.gitignore): added hypre 2025-05-13 14:19:02 -04:00
534a9cdf4b feat(polySolver): added polytropic index as a constructor argument for polytrope operator 2025-05-12 14:27:41 -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
bee8f693c1 feat(saveBlockFormToBinary): added ability to negate operators in function call 2025-05-11 14:42:47 -04:00
03a7083caf refactor(testConfig): updated test config 2025-05-11 14:42:04 -04:00
441123ec81 refactor(4DSTARTypes): header guards -> pragma once 2025-05-11 14:41:26 -04:00
2db56b2f99 feat(glVlisView): changed mesh socket stream to display solution 2025-05-11 14:40:58 -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
454d49c3d3 style(polySolver): removed redundant lines 2025-05-11 14:37:26 -04:00
d78f09623c refactor(network): header guard -> pragma once 2025-05-06 15:27:40 -04:00
45c6c267d2 refactor(resources): changed resources module name to macros (to prevent conflict with resource) 2025-05-05 15:23:36 -04:00
ecbf65c71b refactor(gitignore): pulled gitignore from main 2025-05-05 15:22:39 -04:00
7ae0c63b7f refactor(meshView): removed unused capture in anonymous function 2025-04-30 07:37:09 -04:00
afccf30840 refactor(resource): increased const correctness 2025-04-30 07:36:23 -04:00
90083113b5 refactor(probe): removed old cout debug statements 2025-04-30 07:35:27 -04:00
ff1df81e2b refactor(mfem_smout): broke logic saving sparse matrix into two methods 2025-04-30 07:33:37 -04:00
dee6ca80f4 fix(operator): changed MULT (residuals) to deal with negated M properly 2025-04-30 07:32:56 -04:00
ed4b6404ab refactor(poly): refactored initializer 2025-04-30 07:28:00 -04:00
424f6eee9b refactor(meshGeneration): working on gmsh to generate curvilinear isogeomatric spherical mesh 2025-04-30 07:26:58 -04:00
ec37fda35b feat(meshIO): framework for handling curvilinear meshes
meshIO now has a framework to set the curvature of an input mesh. This is still an early and incomplete implimentation. This has also changed the call signature a bit for GetMesh as that now returns a reference to the mesh (which is fully owned by the meshIO object)

BREAKING CHANGE: all calls to meshIO::GetMesh now must expect a mfem::Mesh&
2025-04-29 15:52:56 -04:00
ae5d61bd75 feat(poly): locking phi surface flux and fixed phi boundary condition application 2025-04-28 13:44:27 -04:00
d678c4bc33 refactor(resource-manager): minor style changes and comments 2025-04-28 13:43:57 -04:00
d3a5e4615b fix(polyCoeff.h): removed const qualifier on stuct 2025-04-25 12:41:14 -04:00
33c15b5713 fix(polyCoeff.h): removed accidently deleted file 2025-04-25 12:26:32 -04:00
cb6d0b8bd4 Merge branch 'main' into feature/mixedPolytrope
# Conflicts:
#	src/poly/coeff/meson.build
#	src/poly/coeff/private/polyCoeff.cpp
#	src/poly/utils/meson.build
#	src/poly/utils/private/operator.cpp
#	src/resources/macros/warning_control.h
#	src/types/public/4DSTARTypes.h
2025-04-25 12:24:44 -04:00
9ed4e6f328 Merge pull request #43 from tboudreaux/feature/polytropeOperator
Feature/polytrope operator
2025-04-25 11:57:34 -04:00
4503ae9906 docs(lane-emden-variation-form-derivation): added derivation write up 2025-04-25 11:41:59 -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
a2a003efcb Merge pull request #41 from tboudreaux/feature/meshGeneration
Feature/mesh generation
2025-04-25 11:22:27 -04:00
e5864ca31e feat(probe): added glvisview helped method to probe namespace 2025-04-25 11:22:13 -04:00
a3c9983d0c feat(meshView): added basic mesh view utility 2025-04-25 11:21:16 -04:00
2b3330b4f6 feat(meshIO): added linear rescale capability to meshIO
loaded meshes can be linearly rescaled (so for example a unit sphere can be rescaled to a sphere of any radius)
2025-04-25 11:13:15 -04:00
9a76c447f1 feat(meshGeneration): added mesh generation scripts and three res of spherical mesh 2025-04-25 11:12:40 -04:00