Virtual Plasma Control System (FreeGSNKE Pulse Design Tool) - #64
Conversation
…gained deltas for teseting.
…s. Black and Isort
…e documentation and add another abstract method to validate a supplied observable registry.
…rface' into control_loop/code_reorganising
The internal state was being updated before the integral term, which is wrong. Many logging variables are created in this commit for testing purposes, and new arguments are added to the ControlSolenoid class and calculate_solenoid_delta method.
…s. Black and Isort
…e documentation and add another abstract method to validate a supplied observable registry.
…oss/freegsnke_private into control_loop/code_reorganising
…oss/freegsnke_private into control_loop/code_reorganising
Thanks for the notes @capstayn! I've addressed them all (except for the unit tests) and will wait now for @georgeholt1 to do a quick Codex review. Maybe we can add some tests before that. |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c2fffd9f47
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Thank you all for the review comments and help building this PR (it's a big one)! Hopefully should enable some more control-orientated simulation studies! |
Hi all,
In this PR, we introduce a virtual plasma control system (PCS) class that couples with FreeGSNKE's evolutive solver. This is useful for plasma scenario and control design enabling users to build plasma, shape, and position controllers that regulate the poloidal field coil voltages applied to the evolutive solver at each time step. It also enables one to encode machine safety limits such as coil voltage and current limits and coil activation times. It is inspired by the MAST-U PCS and more details can be found in the pre-print on arXiv.
The easiest way to see how the virtual PCS works is to check out the above paper and the new Example11 notebook. The different controllers can be used all together in the PCS framework or individually (for example, you may only care about the vertical controller, not the plasma current controller).
As can be seen this is quite a large PR and includes many small fixes to the FreeGSNKE ecosystem. The main changes related to the virtual PCS are the:
Other changes:
Here we can see a few screenshots from Example11 demonstrating the control of plasma current, shape parameters, and vertical position in the MAST-U-like tokamak:
Plasma current control:

Vertical position control:

Shape parameter control:
