Skip to content

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

Conversation

rahulgaur104
Copy link
Collaborator

@rahulgaur104 rahulgaur104 commented Aug 22, 2023

Infinite-n ideal MHD ballooning modes are of significant interest to both the tokamak and the stellarator community.
These instabilities are also related to smaller-scale kinetic instabilities, which cause significant heat loss from fusion reactors.
This commit adds the ability to both analyze and optimize MHD equilibria against the ideal ballooning mode.

An adjoint implementation of an ideal ballooning solver has only been successfully demonstrated previously on a much smaller scale. If this commit works, it would be at least an order of magnitude faster than the linked code.

Here are the tasks:

  • Add geometry coefficients
  • Test geometric coefficients. Maybe compare it with Patrick's fork in DESC. Add a test
  • Add the differential pseudospectral matrix operators
  • Compare the spectral solution with the finite-difference solution (both eigenvalues and eigenfunction). Add a new test
  • Compare results with my older solver
  • Eigendecomposition and adjoint of the matrices. Wrap the routine in DESC magic.
  • Compare results for the HELIOTRON case with COBRAVMEC
  • Write a test for HELIOTRON comparison with COBRAVMEC
  • Write a test for the Newcomb metric

@rahulgaur104 rahulgaur104 marked this pull request as draft August 22, 2023 14:52
@rahulgaur104 rahulgaur104 changed the title rg/adjoint ballooning Adding adjoint ideal-ballooning stability solver to DESC Adding adjoint ideal-ballooning stability solver to DESC Aug 24, 2023
@rahulgaur104 rahulgaur104 force-pushed the rg/adjoint_ballooning branch from 887213f to 4dd0d76 Compare August 24, 2023 09:16
@rahulgaur104 rahulgaur104 force-pushed the rg/adjoint_ballooning branch from 4dd0d76 to 61797b6 Compare August 24, 2023 09:20
@rahulgaur104 rahulgaur104 reopened this Aug 24, 2023
@rahulgaur104 rahulgaur104 force-pushed the rg/adjoint_ballooning branch from bdc30c9 to d556b64 Compare August 29, 2023 19:50
@codecov
Copy link

codecov bot commented Sep 1, 2023

Codecov Report

Merging #631 (5d15cc0) into master (065bef8) will decrease coverage by 0.28%.
The diff coverage is 79.55%.

❗ Current head 5d15cc0 differs from pull request most recent head 452e7f4. Consider uploading reports for the commit 452e7f4 to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #631      +/-   ##
==========================================
- Coverage   94.96%   94.68%   -0.28%     
==========================================
  Files          79       79              
  Lines       19296    19355      +59     
==========================================
+ Hits        18325    18327       +2     
- Misses        971     1028      +57     
Files Coverage Δ
desc/compute/_basis_vectors.py 100.00% <100.00%> (ø)
desc/compute/_core.py 100.00% <100.00%> (ø)
desc/compute/_metric.py 100.00% <100.00%> (ø)
desc/compute/_stability.py 73.30% <68.02%> (-26.70%) ⬇️

... and 14 files with indirect coverage changes

@unalmis unalmis changed the base branch from master to fieldline_compute July 2, 2024 19:59
@rahulgaur104 rahulgaur104 requested a review from unalmis July 2, 2024 20:22
@unalmis unalmis deleted the branch PlasmaControl:master July 20, 2024 01:08
@unalmis unalmis closed this Jul 20, 2024
@unalmis unalmis reopened this Jul 20, 2024
@unalmis unalmis changed the base branch from fieldline_compute to master July 20, 2024 02:53
# )

# sfl_grid = Grid(desc_coords, sort=False)
sfl_grid = Grid(theta_coords, sort=False)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LinearGrid(M=50,N=50, rho=1.0)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nevermind, make theta=8 or something

@rahulgaur104 rahulgaur104 marked this pull request as ready for review August 8, 2024 03:16
@rahulgaur104
Copy link
Collaborator Author

Closing and opening a new PR that imports changes from a repo in the main branch because forked branch is causing issues!

dpanici added a commit that referenced this pull request Apr 8, 2025
…#1673)

Updates the requirements on
[pytest-cov](https://github.com/pytest-dev/pytest-cov) to permit the
latest version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst">pytest-cov's
changelog</a>.</em></p>
<blockquote>
<h2>6.1.1 (2025-04-05)</h2>
<ul>
<li>Fixed breakage that occurs when <code>--cov-context</code> and the
<code>no_cover</code> marker are used together.</li>
</ul>
<h2>6.1.0 (2025-04-01)</h2>
<ul>
<li>Change terminal output to use full width lines for the coverage
header.
Contributed by Tsvika Shapira in
<code>[#678](pytest-dev/pytest-cov#678)
&lt;https://github.com/pytest-dev/pytest-cov/pull/678&gt;</code>_.</li>
<li>Removed unnecessary CovFailUnderWarning. Fixes
<code>[#675](pytest-dev/pytest-cov#675)
&lt;https://github.com/pytest-dev/pytest-cov/issues/675&gt;</code>_.</li>
<li>Fixed the term report not using the precision specified via
<code>--cov-precision</code>.</li>
</ul>
<h2>6.0.0 (2024-10-29)</h2>
<ul>
<li>Updated various documentation inaccuracies, especially on subprocess
handling.</li>
<li>Changed fail under checks to use the precision set in the coverage
configuration.
Now it will perform the check just like <code>coverage report</code>
would.</li>
<li>Added a <code>--cov-precision</code> cli option that can override
the value set in your coverage configuration.</li>
<li>Dropped support for now EOL Python 3.8.</li>
</ul>
<h2>5.0.0 (2024-03-24)</h2>
<ul>
<li>Removed support for xdist rsync (now deprecated).
Contributed by Matthias Reichenbach in
<code>[#623](pytest-dev/pytest-cov#623)
&lt;https://github.com/pytest-dev/pytest-cov/pull/623&gt;</code>_.</li>
<li>Switched docs theme to Furo.</li>
<li>Various legacy Python cleanup and CI improvements.
Contributed by Christian Clauss and Hugo van Kemenade in
<code>[#630](pytest-dev/pytest-cov#630)
&lt;https://github.com/pytest-dev/pytest-cov/pull/630&gt;</code><em>,
<code>[#631](pytest-dev/pytest-cov#631)
&lt;https://github.com/pytest-dev/pytest-cov/pull/631&gt;</code></em>,
<code>[#632](pytest-dev/pytest-cov#632)
&lt;https://github.com/pytest-dev/pytest-cov/pull/632&gt;</code>_ and
<code>[#633](pytest-dev/pytest-cov#633)
&lt;https://github.com/pytest-dev/pytest-cov/pull/633&gt;</code>_.</li>
<li>Added a <code>pyproject.toml</code> example in the docs.
Contributed by Dawn James in
<code>[#626](pytest-dev/pytest-cov#626)
&lt;https://github.com/pytest-dev/pytest-cov/pull/626&gt;</code>_.</li>
<li>Modernized project's pre-commit hooks to use ruff. Initial POC
contributed by
Christian Clauss in
<code>[#584](pytest-dev/pytest-cov#584)
&lt;https://github.com/pytest-dev/pytest-cov/pull/584&gt;</code>_.</li>
<li>Dropped support for Python 3.7.</li>
</ul>
<h2>4.1.0 (2023-05-24)</h2>
<ul>
<li>Updated CI with new Pythons and dependencies.</li>
<li>Removed rsyncdir support. This makes pytest-cov compatible with
xdist 3.0.
Contributed by Sorin Sbarnea in
<code>[#558](pytest-dev/pytest-cov#558)
&lt;https://github.com/pytest-dev/pytest-cov/pull/558&gt;</code>_.</li>
<li>Optimized summary generation to not be performed if no reporting is
active (for example,
when <code>--cov-report=''</code> is used without
<code>--cov-fail-under</code>).
Contributed by Jonathan Stewmon in
<code>[#589](pytest-dev/pytest-cov#589)
&lt;https://github.com/pytest-dev/pytest-cov/pull/589&gt;</code>_.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/9463242e3a7bc18a56b8f18c01b4dfb50087e5ed"><code>9463242</code></a>
Bump version: 6.1.0 → 6.1.1</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/7f2781b47fc9bd4a8e94ff86b4f69f5959c3d907"><code>7f2781b</code></a>
Update changelog.</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/a59548f3adcb757ea8afcb40d8d849af49f6e925"><code>a59548f</code></a>
Allow the context plugin to check if the controller is running or not.
Fixes ...</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/10f8cde38c3b0aaf2c75d9ed62d4f333d8809d96"><code>10f8cde</code></a>
Bump version: 6.0.0 → 6.1.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/10b14afffcd53b19967785c0b3e8b35ebac70b6f"><code>10b14af</code></a>
Update changelog.</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/aa57aed273475b4f9975cc9a8a1662b336718662"><code>aa57aed</code></a>
Refactor a bit the internals to be a bit less boilerplatey and have more
clar...</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/e760099a7fd5f49c235dc798bf7f222c0372b7e3"><code>e760099</code></a>
Make sure the CLI precision is used when creating report. Fixes <a
href="https://redirect.github.com/pytest-dev/pytest-cov/issues/674">#674</a>.</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/44540e1e9f02f3b69b62834636cf3057edc960d6"><code>44540e1</code></a>
Remove unnecessary CovFailUnderWarning. Closes <a
href="https://redirect.github.com/pytest-dev/pytest-cov/issues/675">#675</a>.</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/204af146f8f4ff03076825a693ee6aef587deb6b"><code>204af14</code></a>
Update changelog.</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/089e7bb5c16dcfdedd54f27fda094ccb3eeaae2c"><code>089e7bb</code></a>
Upgrade ruff.</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest-cov/compare/v2.6.0...v6.1.1">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants