Skip to content

A simple eigenvalue solver + optimizer to calculate and reduce the growth rate of a pressure-driven instability in fusion devices

Notifications You must be signed in to change notification settings

rahulgaur104/ideal-ballooning-solver

Repository files navigation

ballopt: stellarator and tokamak stability optimizer

DOI

This repository contains a set of Python scripts that, along with the SIMSOPT package can optimize or evaluate a tokamak or stellarator equilibrium against the infinite-n, ideal ballooning mode using an adjoint-based method.

The details of implementation of this method and the results are available in the paper An adjoint-based method to optimize MHD equilibria against the infinite-n ideal ballooning mode

Dependencies

This optimizer is designed to run a cluster or supercomputer that uses SLURM. To run ballopt, you also need a Python version >= 3.8 and either

  • a SIMSOPT singularity image_v0.13 to run this optimizer
  • or SIMSOPT Python environment and the VMEC2000 code from the SIMSOPT GitHub page and make three one-line changes to the Simsopt_submit.py (uncomment line 39) and ball_submit.py (line 57) and slurm_x0.sl (line 11) files.

Instructions to reproduce the results in the adjoint-ballooning paper

The input files for the equilibria studied in the paper above are presented in this repository. You should be able to optimize any of the three equilibria with the following equilibrium names:

  1. D3D
  2. NCSX
  3. HBERG

Depending on which equilibrium you want to optimize, run

python3 sims_runner_<equilibrium_name>.py

from your login node. After each iteration, the data are saved in the directory save_n_load.

Please do not hesitate to contact me at rgaur@terpmail.umd.edu if you need any help running or understanding this optimizer.

Relevant papers

About

A simple eigenvalue solver + optimizer to calculate and reduce the growth rate of a pressure-driven instability in fusion devices

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published