Source code for struphy.geometry.domains.shafranov_dshaped_cylinder.shafranov_dshaped_cylinder

import copy

from struphy.geometry.base import Domain


[docs] class ShafranovDshapedCylinder(Domain): r"""Cylinder with D-shaped cross section and quadratic Shafranov shift. .. image:: ../../pics/mappings/shafranov_dshaped.png Parameters ---------- R0 : float Base radius (default: 2.). Lz : float Length in z-direction (default: 4.). delta_x : float Shafranov shift in x-direction (default: 0.05). delta_y : float Shafranov shift in y-direction (default: 0.025). delta_gs : float Delta = sin(alpha): triangularity, shift of high point (default: 0.05). epsilon_gs : float Epsilon: inverse aspect ratio a/r0 (default: 0.5). kappa_gs : float Kappa: ellipticity (elongation) (default: 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_0\left[1 + (1 - \eta_1^2)\Delta_x + \eta_1\epsilon\cos(2\pi\,\eta_2 + \arcsin(\delta)\eta_1\sin(2\pi\,\eta_2)) \right]\,\,\\ \,\,y= &R_0\left[ (1 - \eta_1^2)\Delta_y + \eta_1\epsilon\kappa\sin(2\pi\,\eta_2)\right]\,\,\\ \,\,z= &L_z\,\eta_3\,\,\end{bmatrix} """
def __init__( self, R0: float = 2.0, Lz: float = 3.0, delta_x: float = 0.1, delta_y: float = 0.0, delta_gs: float = 0.33, epsilon_gs: float = 0.32, kappa_gs: float = 1.7, ): self.kind_map = 32 # 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__()