Source code for struphy.geometry.domains.shafranov_sqrt_cylinder.shafranov_sqrt_cylinder
import copy
from struphy.geometry.base import Domain
[docs]
class ShafranovSqrtCylinder(Domain):
r"""Cylinder with square-root Shafranov shift.
.. image:: ../../pics/mappings/shafranov_sqrt.png
Parameters
----------
rx : float
Radius in x-direction (default: 1.0).
ry : float
Radius in y-direction (default: 1.0).
Lz: float
Length in z-direction (default: 4.0).
delta : float
Shift factor, should be in [0, 0.1] (default: 0.2).
"""
[docs]
@classmethod
def doc_mapping(cls):
r"""
.. math::
F: \begin{bmatrix}\eta_1\\ \eta_2\\ \eta_3\end{bmatrix}\mapsto \begin{bmatrix}
\,\,x= &r_x\,\eta_1\cos(2\pi\,\eta_2)+(1-\sqrt \eta_1)r_x\Delta\,\,\\
\,\,y= &r_y\,\eta_1\sin(2\pi\,\eta_2)\,\,\\
\,\,z= &L_z\,\eta_3\,\,\end{bmatrix}
"""
def __init__(
self,
rx: float = 1.0,
ry: float = 1.0,
Lz: float = 4.0,
delta: float = 0.2,
):
self.kind_map = 31
# use params setter
self.params = copy.deepcopy(locals())
self.params_numpy = self.get_params_numpy()
# periodicity in eta3-direction and pole at eta1=0
self.periodic_eta3 = False
self.pole = True
super().__init__()