-
Notifications
You must be signed in to change notification settings - Fork 27
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
Adding a separate factor for NFP to calculate umbilic configurations #819
base: master
Are you sure you want to change the base?
Conversation
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.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
flake8
desc/geometry/core.py|120 col 89| line too long (107 > 88 characters)
desc/geometry/core.py|367 col 89| line too long (107 > 88 characters)
desc/geometry/core.py|416 col 89| line too long (109 > 88 characters)
#844 will help with this |
desc/equilibrium/equilibrium.py
Outdated
@@ -64,6 +64,8 @@ class Equilibrium(IOAble, Optimizable): | |||
total toroidal flux (in Webers) within LCFS. Default 1.0 | |||
NFP : int (optional) | |||
number of field periods Default ``surface.NFP`` or 1 | |||
NFP_umbilic_factor : int (optional) | |||
field period prefactor Default ``surface.NFP_umbilic_factor`` or 1 |
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.
this is not a very good description, I would say "integer dividing the field period, such that the effective field period is NFP/NFP_umbilic_factor" or something.
Also out of curiosity, would this work with NFP that is not equal to one?
desc/equilibrium/equilibrium.py
Outdated
== axis_NFP_umbilic_factor | ||
), | ||
ValueError, | ||
"Unequal number of umbilic field period factors for equilibrium " |
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.
this should just be "unequal umbilici field period prefactor" or something, not number of
desc/equilibrium/equilibrium.py
Outdated
@@ -554,6 +602,9 @@ def change_resolution( | |||
Toroidal real space grid resolution. | |||
NFP : int | |||
Number of field periods. | |||
NFP_umbilic_factor : float |
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.
is this not supposed to be an integer still?
desc/equilibrium/equilibrium.py
Outdated
self.N_grid, | ||
self.NFP, | ||
NFP_umbilic_factor=self.NFP_umbilic_factor, | ||
) | ||
data0d = compute_fun( |
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.
have you checked if quantities like volume are correct when the prefactor is used?
@@ -29,6 +29,9 @@ class FourierRZCurve(Curve): | |||
Mode numbers associated with Z_n, If not given defaults to [-n:n]]. | |||
NFP : int | |||
Number of field periods. | |||
NFP_umbilic_factor : float |
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.
again this is an integer right? not a float?
I think the objective you added makes sense, it tries to align the alpha=0 field line with the umbilic curve. Something I am not sure of is, do your curves have a given helicity to them? that is, as phi increases do they move clockwise/counterclockwise poloidally? might have to make sure that if they do, that it is consistent with the helicity of the equilibrium field as determined by the sign of iota |
Excellent question! Yes, there can be a sign issue but helicity of the curve = |curve.NFP/curve.NFP_umbilic_factor|. The sign decides clockwise/anticlockwise. I think the sign should be the same as the sign of iota. The objective tries to align the field line (red line) with the umbilic curve (blue line) |
An umbilic torus is a 3D shape with a boundary characterized by a closed torus with a continuous sharp edge that goes around three times toroidally before meeting itself. This shape can be thought of as a stellarator with a rational field period because the cross-section is only exactly identical (each sharp point completes a full poloidal rotation) after three toroidal turns.
Practically, these configurations are useful for resonant divertor design and may simplify divertor placement.
The objective of this PR is to add an additional factor that adds an integer NFP_umbilic_factor so that NFP -> NFP/NFP_umbilic_factor and make sure that the code runs without any issues.
To create an umbilic edge, we take the boundary of the stellarator and a 3D umbilic curve on the boundary and vary both the curve and the surface to obtain a stellarator that resembles an umbilic-torus-like shape.