Commit Graph

204 Commits

Author SHA1 Message Date
2eca802d01 refactor(serif): fixed typos and updated names to reflect 4DSSE->SERiF 2025-06-12 09:04:03 -04:00
db2dcdb106 fix(python-bindings): brought bindings in line with new namespace 2025-06-11 15:18:33 -04:00
72f08238b6 Merge remote-tracking branch 'upstream/main' into feature/mixedPolytrope
# Conflicts:
#	.gitignore
#	build-config/meson.build
#	meson.build
#	meson_options.txt
#	src/composition/public/composition.h
#	src/config/public/config.h
#	src/constants/public/const.h
#	src/meson.build
#	tests/composition_sandbox/comp.cpp
2025-06-11 15:05:11 -04:00
6e4ff1ece9 refactor(serif): refactored entire codebase into serif and sub namespaces 2025-06-11 14:49:11 -04:00
94c25f247c docs(polySolver): added loads of documentation 2025-06-11 11:16:54 -04:00
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
bb79b918ce feat(probe): added minor new logging 2025-06-10 12:50:15 -04:00
76d6d3d1cf fix(poly): working to resolve overshoot mode 2025-06-10 12:49:31 -04:00
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
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
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
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
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
946209e010 feat(python): register config bindings 2025-05-05 14:36:32 -04:00
b014300d99 refactor(config): header guard -> pragma once 2025-05-05 14:36:16 -04:00
af6abd3ce2 feat(python/config): added config module bindings 2025-05-05 14:35:50 -04:00
4757a6f63a fix(python/constants): adjusted python constants to be a true singleton / static class 2025-05-05 13:25:27 -04:00
2bd000039b build(python): updated build system to point to all python interface modules 2025-05-05 12:01:55 -04:00
a3adbacc3b refactor(const): header guard -> pragma once
also removed unused includes
2025-05-05 12:01:20 -04:00
7df3481ff4 refactor(python/composition): updated python comp bindings to use register model 2025-05-05 12:00:40 -04:00
1ed0e9cde1 feat(python/const): added constants bindings
constants module can now be fully accessed from python
2025-05-05 11:59:24 -04:00
2bf58671a0 refactor(python): added global binding module 2025-05-05 11:58:57 -04:00
9307c398b6 build(config): added compile time option to disable config file load error
In general we may want to enforce that a config file is explicitly loaded before any access is requested. However, there are times when this is non ideal behavior. We introduce a compile time flag (CONFIG_HARSH, and CONFIG_WARN). If config hars is defined then a runtime error will be thrown if a config value is requested before the config file has been loaded. If Config warn is defined (and config harsh is not) then a warning will be printed, otherwise nothing will happen. If either warn or nothing is defined this means that the default values defined in the get methods will be used.

Note that the meson build system has had an option added -Dconfig_error_handling=["none", "warn", "harsh"] (default="none") which can be used to manage these compile time options. In general release builds should have this disabled while debug builts should have it set to harsh.
2025-04-30 11:48:38 -04:00
91d66ea62e build(meson): switched almost all intermediate targets to shared libraries 2025-04-30 11:44:53 -04:00
591f62c88d fix(composition): removed old py structure 2025-04-30 11:41:52 -04:00
4e83b05112 feat(python-composition): added composition module interface 2025-04-30 11:41:10 -04:00
57d60d7bb7 feat(pybind11): added infra to compile with pybind11 2025-04-30 11:39:36 -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
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
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