-
Notifications
You must be signed in to change notification settings - Fork 40
Adding adjoint ideal-ballooning stability solver to DESC #631
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
rahulgaur104
wants to merge
135
commits into
PlasmaControl:master
from
rahulgaur104:rg/adjoint_ballooning
Closed
Changes from 103 commits
Commits
Show all changes
135 commits
Select commit
Hold shift + click to select a range
d556b64
adding more geometric terms 2
rahulgaur104 d0b26ef
Merge branch 'PlasmaControl:master' into rg/adjoint_ballooning
rahulgaur104 72773e8
adding zeta derivatives of the geometry terms + creating grid in the …
rahulgaur104 e1d8023
trying to pass tests
rahulgaur104 f95bd7f
trying to pass tests 2
rahulgaur104 2921c2e
fixing tests 3
rahulgaur104 5519ee2
fixing tests 3
rahulgaur104 3415574
Merge branch 'PlasmaControl:master' into rg/adjoint_ballooning
rahulgaur104 817ca66
current tests passing, coverage reduced, additional tests needed
rahulgaur104 02a5eb5
current tests passing, coverage reduced, additional tests needed 2
rahulgaur104 2880239
Merge branch 'PlasmaControl:master' into rg/adjoint_ballooning
rahulgaur104 1a7d30a
Merge branch 'master' into rg/adjoint_ballooning
rahulgaur104 0dec9c3
resolving conflicts --- removed on-axis terms for some basis vector d…
rahulgaur104 d328396
adding FD ideal balloonign solver + tests for geometry
rahulgaur104 b79a238
adding FD ideal balloonign solver + tests for geometry
rahulgaur104 b30bb32
adding FD ideal balloonign solver + tests for geometry
rahulgaur104 0667209
adding FD ideal balloonign solver + tests for geometry
rahulgaur104 1065e4f
adding FD ideal balloonign solver + tests for ballooning coefficients
rahulgaur104 c3c835a
adding FD ideal balloonign solver + tests for ballooning coefficients
rahulgaur104 582ccac
Merge branch 'PlasmaControl:master' into rg/adjoint_ballooning
rahulgaur104 e04ade6
added derivatives of the PEST jacobian
rahulgaur104 dbd7057
Merge branch 'rg/adjoint_ballooning' of https://github.com/rahulgaur1…
rahulgaur104 c72b51d
temporary fix for axis limits of derivatives of contravariant basis v…
rahulgaur104 d996cf3
removing unused/redundant basis vector
rahulgaur104 641f989
created a new master_compute_data.pkl
rahulgaur104 69e166e
Merge branch 'PlasmaControl:master' into rg/adjoint_ballooning
rahulgaur104 eea93fb
small fix in _metric.py
rahulgaur104 0adc1fd
Merge branch 'rg/adjoint_ballooning' of https://github.com/rahulgaur1…
rahulgaur104 2930598
adding master_compute_data.pkl; had to remove pre-commit temporarily
rahulgaur104 b3e8177
adding a test for the ballooning solver + some changes to the solver
rahulgaur104 91a111d
Merge branch 'rg/adjoint_ballooning' of https://github.com/rahulgaur1…
rahulgaur104 bee8b20
Merge branch 'PlasmaControl:master' into rg/adjoint_ballooning
rahulgaur104 5782aa1
Merge branch 'PlasmaControl:master' into rg/adjoint_ballooning
rahulgaur104 9b9e538
Merge branch 'PlasmaControl:master' into rg/adjoint_ballooning
rahulgaur104 5d15cc0
Merge branch 'PlasmaControl:master' into rg/adjoint_ballooning
rahulgaur104 5d85cbb
Solver now giving relatively sensible values, derivatives of gradpar_…
rahulgaur104 5af0c55
Merge branch 'PlasmaControl:master' into rg/adjoint_ballooning
rahulgaur104 9cadb18
fixing bugs in geometry-related calculation
rahulgaur104 fb6e90b
trying to pass tests
rahulgaur104 21ba604
allow deprecation warning in desc.compute._stability
rahulgaur104 2a4f68b
removing a non-DESC log file
rahulgaur104 e845b01
wrapping the ballooning solver in the Objective class
rahulgaur104 2c173cc
Merge branch 'rg/adjoint_ballooning' of https://github.com/rahulgaur1…
rahulgaur104 ad5e7b6
adding field-aligned grid for ballooning + modified __init__.py
rahulgaur104 257e0cc
Merge branch 'rg/adjoint_ballooning' of https://github.com/rahulgaur1…
rahulgaur104 bdd0c33
final fixes + jax AD only works with CPU foe eigvals doesn't work on …
rahulgaur104 6fb7e9e
resolving merge conflicts + linting
rahulgaur104 eec1f88
Merge branch 'master' into rg/adjoint_ballooning
rahulgaur104 59b6528
adding eigvals custom jvp + fixing tests
rahulgaur104 55961ba
Merge branch 'master' into rg/adjoint_ballooning
rahulgaur104 5e05533
fixing tests 2
rahulgaur104 e620e91
Merge branch 'rg/adjoint_ballooning' of https://github.com/rahulgaur1…
rahulgaur104 c80e2e2
Merge branch 'master' into rg/adjoint_ballooning
rahulgaur104 9d79a5d
updating objectives/_stability and desc/backend
rahulgaur104 b1a5e56
Merge branch 'rg/adjoint_ballooning' of https://github.com/rahulgaur1…
rahulgaur104 5dd3700
Merge branch 'master' into rg/adjoint_ballooning
rahulgaur104 9b2cd5c
remove jitting from desc/compute/_stability.py
rahulgaur104 08bd696
Merge branch 'rg/adjoint_ballooning' of https://github.com/rahulgaur1…
rahulgaur104 9344f9b
Merge branch 'PlasmaControl:master' into rg/adjoint_ballooning
rahulgaur104 4effacf
Merge branch 'master' into rg/adjoint_ballooning
rahulgaur104 1c9e66f
making compatible with recent commits + added two new ways of solving…
rahulgaur104 a07597e
Merge branch 'rg/adjoint_ballooning' of https://github.com/rahulgaur1…
rahulgaur104 ae60141
simplified the solver to reduce memory requirements
rahulgaur104 7d4e0f1
Merge branch 'rg/adjoint_ballooning' of https://github.com/rahulgaur1…
rahulgaur104 ae4eeb1
fixing merge conflicts with master2
rahulgaur104 2fbc375
merging rc/root, i.e., backward differentaibility through the DESC ro…
rahulgaur104 82d59a4
optimizing the code to increase GPU usage and number of fieldlines we…
rahulgaur104 baf5090
adding the Newcomb metric
rahulgaur104 7914aec
Newcomb metric working, tests failing
rahulgaur104 3ba1a95
Newcomb metric working, tests failing, merge errors fixed
rahulgaur104 8b3c728
merging master and resolving conflicts
rahulgaur104 a361212
Fixing the Newcomb metric, still getting nan optimality after 1 itera…
rahulgaur104 4d874a1
Merge branch 'rg/adjoint_ballooning' of https://github.com/rahulgaur1…
rahulgaur104 b1a0dc4
merging dd/omnigenity into this PR. Is this enough to give us KBM sta…
rahulgaur104 212273c
several small changes: normalization, simpson's rule, Newcomb's metric
rahulgaur104 cc57585
merging master
rahulgaur104 47b3d5f
Merge branch 'PlasmaControl:master' into rg/adjoint_ballooning
rahulgaur104 695e9af
merging with master
rahulgaur104 c09e27d
merging with master 2
rahulgaur104 9c3227d
merging dd/omnigenity again 2
rahulgaur104 0e51f19
fixing black formatting
rahulgaur104 90610ff
Merge branch 'rg/adjoint_ballooning' of https://github.com/rahulgaur1…
rahulgaur104 85ead1b
Adding FixCurveRotation
rahulgaur104 53c3f2c
Merge branch 'rg/adjoint_ballooning' of https://github.com/rahulgaur1…
rahulgaur104 5cf43eb
small changes
rahulgaur104 e4ead7a
Merge branch 'rg/adjoint_ballooning' of https://github.com/rahulgaur1…
rahulgaur104 4b2bcfd
fixing tests
rahulgaur104 223d4c0
fixing tests
rahulgaur104 f0f741e
Merge branch 'PlasmaControl:master' into rg/adjoint_ballooning
rahulgaur104 087562c
merging with dd/omnigenity 3
rahulgaur104 be9c4eb
merging with dd/omnigenity 5
rahulgaur104 6eba64d
merging master + dd/omnigenity should do that same 2
rahulgaur104 e031fa3
merging with master, omnigenity stale 2
rahulgaur104 b2189c3
merging dd/omnigenity
rahulgaur104 20a9d70
Merge branch 'dd/omnigenity' into rg/adjoint_ballooning
rahulgaur104 aadf5e0
merging master and resolving conflicts
rahulgaur104 c8cf520
fixing jax.backend line
rahulgaur104 ad05f95
Merge branch 'master' into rg/adjoint_ballooning
rahulgaur104 7a4f95b
resolving conflicts and merging with master
rahulgaur104 dd6b6e5
fixing normalization issue after comparing with VMEC+SIMSOPT ballooni…
rahulgaur104 743a22d
trying to fix test_data_index_deps
rahulgaur104 afb600d
trying to fix test_data_index_deps 2
rahulgaur104 b314872
trying to fix test_data_index_deps 3
rahulgaur104 1ffd93a
Merge branch 'master' into rg/adjoint_ballooning
rahulgaur104 b36cd90
merging master and resolving merge conflicsts
rahulgaur104 3a83ae6
Merge branch 'rg/adjoint_ballooning' of https://github.com/rahulgaur1…
rahulgaur104 30769fe
replacing ideal_ball_gamma4 with ballooning potential and removing id…
rahulgaur104 76338da
making changes suggested by Rory
rahulgaur104 88f56fe
adding ideal_ballooning_stability tutorial notebook
rahulgaur104 76319ef
replacing the ideal_ballooning tutorial with the version 1....
rahulgaur104 11e7311
merging master
rahulgaur104 3db0974
Merge branch 'PlasmaControl:master' into rg/adjoint_ballooning
rahulgaur104 5e4bb77
rg/adjoint_ballooning_solver + fieldline_compute
rahulgaur104 370168e
modifying the jupyter notebook... + linear constraints failing during…
rahulgaur104 ed7a6a9
Merge branch 'rg/adjoint_ballooning2' into rg/adjoint_ballooning
rahulgaur104 577fb30
updating the tutorial
rahulgaur104 25a9a11
making small changes to the tutorial
rahulgaur104 b4d0f36
merging fieldline_compute
rahulgaur104 23f6a7e
minor changes
rahulgaur104 d330d7c
Merge branch 'master' into rg/adjoint_ballooning
rahulgaur104 a2e6d0d
merging master and resolving cconflict in backend.py
rahulgaur104 09eb0e7
adding comparison test of marginal stability point with COBRAVMEC
rahulgaur104 59da394
adding a test for the BallooningStability objective
rahulgaur104 10444ac
fixing stability test
rahulgaur104 4ff760c
removing useless tests and compute functions
rahulgaur104 039e344
trying to fix tests 1
rahulgaur104 c40ad9b
trying to fix tests 2
rahulgaur104 d137dde
changing notebook environment to Python3
rahulgaur104 1907d12
fixing tests; correcting bad merge; adjusted to the new api
rahulgaur104 b5e2868
changing test_compute_everything agains so that tests pass
rahulgaur104 35acbcd
trying to pass more tests
rahulgaur104 28d0125
trying to pass more tests 2
rahulgaur104 e34e7cc
modifying setup.cfg; I don't know why codecov is failing
rahulgaur104 2fe95c0
Merge branch 'master' into rg/adjoint_ballooning
rahulgaur104 3c4db48
modifying setup.cfg; I don't know why codecov is failing 2
rahulgaur104 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4370,6 +4370,233 @@ def _grad_alpha(params, transforms, profiles, data, **kwargs): | |
| return data | ||
|
|
||
|
|
||
| @register_compute_fun( | ||
| name="grad(alpha)_t", | ||
| label="\\partial_{\\theta} \\nabla \\alpha", | ||
| units="m^{-1}", | ||
| units_long="Inverse meters", | ||
| description="Poloidal derivative of the gradient of the field line label", | ||
| dim=3, | ||
| params=[], | ||
| transforms={}, | ||
| profiles=[], | ||
| coordinates="rtz", | ||
| data=[ | ||
| "e^rho", | ||
| "e^theta", | ||
| "e^zeta", | ||
| "e^rho_t", | ||
| "e^theta_t", | ||
| "e^zeta_t", | ||
| "alpha_r", | ||
| "alpha_t", | ||
| "alpha_z", | ||
| "alpha_rt", | ||
| "alpha_tt", | ||
| "alpha_tz", | ||
| ], | ||
| ) | ||
| def _grad_alpha_t(params, transforms, profiles, data, **kwargs): | ||
| data["grad(alpha)_t"] = ( | ||
| data["alpha_r"] * data["e^rho_t"].T | ||
| + data["alpha_rt"] * data["e^rho"].T | ||
| + data["alpha_t"] * data["e^theta_t"].T | ||
| + data["alpha_tt"] * data["e^theta"].T | ||
| + data["alpha_z"] * data["e^zeta_t"].T | ||
| + data["alpha_tz"] * data["e^zeta"].T | ||
| ).T | ||
| return data | ||
|
|
||
|
|
||
| @register_compute_fun( | ||
| name="grad(alpha)_z", | ||
| label="\\partial_{\\zeta} (\\nabla \\alpha)", | ||
| units="m^{-1}", | ||
| units_long="Inverse meters", | ||
| description="Toroidal derivative of the gradient of the field line label", | ||
| dim=3, | ||
| params=[], | ||
| transforms={}, | ||
| profiles=[], | ||
| coordinates="rtz", | ||
| data=[ | ||
| "e^rho", | ||
| "e^theta", | ||
| "e^zeta", | ||
| "e^rho_z", | ||
| "e^theta_z", | ||
| "e^zeta_z", | ||
| "alpha_r", | ||
| "alpha_t", | ||
| "alpha_z", | ||
| "alpha_rz", | ||
| "alpha_tz", | ||
| "alpha_zz", | ||
| ], | ||
| ) | ||
| def _grad_alpha_z(params, transforms, profiles, data, **kwargs): | ||
| data["grad(alpha)_z"] = ( | ||
| data["alpha_r"] * data["e^rho_z"].T | ||
| + data["alpha_rz"] * data["e^rho"].T | ||
| + data["alpha_t"] * data["e^theta_z"].T | ||
| + data["alpha_tz"] * data["e^theta"].T | ||
| + data["alpha_z"] * data["e^zeta_z"].T | ||
| + data["alpha_zz"] * data["e^zeta"].T | ||
| ).T | ||
| return data | ||
|
|
||
|
|
||
| @register_compute_fun( | ||
| name="grad(alpha)_tt", | ||
| label="\\partial_{\\theta \\theta} \\nabla \\alpha", | ||
| units="m^{-1}", | ||
| units_long="Inverse meters", | ||
| description="Poloidal derivative of the gradient of the field line label", | ||
| dim=3, | ||
| params=[], | ||
| transforms={}, | ||
| profiles=[], | ||
| coordinates="rtz", | ||
| data=[ | ||
| "e^rho", | ||
| "e^theta", | ||
| "e^zeta", | ||
| "e^rho_t", | ||
| "e^theta_t", | ||
| "e^zeta_t", | ||
| "e^rho_tt", | ||
| "e^theta_tt", | ||
| "e^zeta_tt", | ||
| "alpha_r", | ||
| "alpha_t", | ||
| "alpha_z", | ||
| "alpha_rt", | ||
| "alpha_tt", | ||
| "alpha_tz", | ||
| "alpha_rtt", | ||
| "alpha_ttt", | ||
| "alpha_ttz", | ||
| ], | ||
| ) | ||
| def _grad_alpha_tt(params, transforms, profiles, data, **kwargs): | ||
| data["grad(alpha)_tt"] = ( | ||
| data["alpha_r"] * data["e^rho_tt"].T | ||
| + data["alpha_rtt"] * data["e^rho"].T | ||
| + 2 * data["alpha_rt"] * data["e^rho_t"].T | ||
| + data["alpha_t"] * data["e^theta_tt"].T | ||
| + data["alpha_ttt"] * data["e^theta"].T | ||
| + 2 * data["alpha_tt"] * data["e^theta_t"].T | ||
| + data["alpha_z"] * data["e^zeta_tt"].T | ||
| + data["alpha_ttz"] * data["e^zeta"].T | ||
| + 2 * data["alpha_tz"] * data["e^zeta_t"].T | ||
| ).T | ||
| return data | ||
|
|
||
|
|
||
| @register_compute_fun( | ||
| name="grad(alpha)_zz", | ||
| label="\\partial_{\\zeta \\zeta} (\\nabla \\alpha)", | ||
| units="m^{-1}", | ||
| units_long="Inverse meters", | ||
| description="Toroidal derivative of the gradient of the field line label", | ||
| dim=3, | ||
| params=[], | ||
| transforms={}, | ||
| profiles=[], | ||
| coordinates="rtz", | ||
| data=[ | ||
| "e^rho", | ||
| "e^theta", | ||
| "e^zeta", | ||
| "e^rho_z", | ||
| "e^theta_z", | ||
| "e^zeta_z", | ||
| "e^rho_zz", | ||
| "e^theta_zz", | ||
| "e^zeta_zz", | ||
| "alpha_r", | ||
| "alpha_t", | ||
| "alpha_z", | ||
| "alpha_rz", | ||
| "alpha_tz", | ||
| "alpha_zz", | ||
| "alpha_rzz", | ||
| "alpha_tzz", | ||
| "alpha_zzz", | ||
| ], | ||
| ) | ||
| def _grad_alpha_zz(params, transforms, profiles, data, **kwargs): | ||
| data["grad(alpha)_zz"] = ( | ||
| data["alpha_r"] * data["e^rho_zz"].T | ||
| + data["alpha_rzz"] * data["e^rho"].T | ||
| + 2 * data["alpha_rz"] * data["e^rho_z"].T | ||
| + data["alpha_t"] * data["e^theta_zz"].T | ||
| + data["alpha_tzz"] * data["e^theta"].T | ||
| + 2 * data["alpha_tz"] * data["e^theta_z"].T | ||
| + data["alpha_z"] * data["e^zeta_zz"].T | ||
| + data["alpha_zzz"] * data["e^zeta"].T | ||
| + 2 * data["alpha_zz"] * data["e^zeta_z"].T | ||
| ).T | ||
| return data | ||
|
|
||
|
|
||
| @register_compute_fun( | ||
| name="grad(alpha)_tz", | ||
| label="\\partial_{\\theta \\zeta} (\\nabla \\alpha)", | ||
| units="m^{-1}", | ||
| units_long="Inverse meters", | ||
| description=( | ||
| "Mixed toroidal and poloidal derivative of the gradient" | ||
| " of the field line label" | ||
| ), | ||
| dim=3, | ||
| params=[], | ||
| transforms={}, | ||
| profiles=[], | ||
| coordinates="rtz", | ||
| data=[ | ||
| "e^rho", | ||
| "e^theta", | ||
| "e^zeta", | ||
| "e^rho_z", | ||
| "e^theta_z", | ||
| "e^zeta_z", | ||
| "e^rho_t", | ||
| "e^theta_t", | ||
| "e^zeta_t", | ||
| "e^rho_tz", | ||
| "e^theta_tz", | ||
| "e^zeta_tz", | ||
| "alpha_r", | ||
| "alpha_t", | ||
| "alpha_z", | ||
| "alpha_rz", | ||
| "alpha_tz", | ||
| "alpha_tt", | ||
| "alpha_rt", | ||
| "alpha_rtz", | ||
| "alpha_ttz", | ||
| "alpha_tzz", | ||
| ], | ||
| ) | ||
| def _grad_alpha_tz(params, transforms, profiles, data, **kwargs): | ||
| data["grad(alpha)_tz"] = ( | ||
| data["alpha_r"] * data["e^rho_tz"].T | ||
| + data["alpha_rtz"] * data["e^rho"].T | ||
| + data["alpha_rz"] * data["e^rho_t"].T | ||
| + data["alpha_rt"] * data["e^rho_z"].T | ||
| + data["alpha_t"] * data["e^theta_tz"].T | ||
| + data["alpha_ttz"] * data["e^theta"].T | ||
| + data["alpha_tz"] * data["e^theta_t"].T | ||
| + data["alpha_tt"] * data["e^theta_z"].T | ||
| + data["alpha_z"] * data["e^zeta_tz"].T | ||
| + data["alpha_tzz"] * data["e^zeta"].T | ||
| + data["alpha_tz"] * data["e^zeta_t"].T | ||
| + data["alpha_tt"] * data["e^zeta_z"].T | ||
|
||
| ).T | ||
| return data | ||
|
|
||
|
|
||
| @register_compute_fun( | ||
| name="grad(psi)", | ||
| label="\\nabla\\psi", | ||
|
|
||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this should be
data["alpha_tz"] * data["e^zeta_z"].T