Skip to content

shield

Calculate radial and vertical coordinates for the geometry of the shield

shield_geometry_single_null(cumulative_upper, radx_far, rminx_far, radx_near, rminx_near, triang, cumulative_lower)

Calculates radial and vertical distances for the geometry of shield in a single null configuration

Parameters:

Name Type Description Default
cumulative_upper dict

cumulative vertical thicknesses of components above the midplane

required
radx_far float

outboard radius of outer surface of shield

required
rminx_far float

inboard radius of outer surface of shield

required
radx_near float

outboard radius of inner surface of shield

required
rminx_near float

inboard radius of inner surface of shield

required
triang float

plasma triangularity

required

Returns:

Type Description
ArbitraryGeometry

dataclass returning radial and vertical coordinates

Source code in process/models/geometry/shield.py
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
def shield_geometry_single_null(
    cumulative_upper: dict,
    radx_far: float,
    rminx_far: float,
    radx_near: float,
    rminx_near: float,
    triang: float,
    cumulative_lower: dict,
) -> ArbitraryGeometry:
    """Calculates radial and vertical distances for the geometry of shield in a single null configuration

    Parameters
    ----------
    cumulative_upper:
        cumulative vertical thicknesses of components above the midplane
    radx_far:
        outboard radius of outer surface of shield
    rminx_far:
        inboard radius of outer surface of shield
    radx_near:
        outboard radius of inner surface of shield
    rminx_near:
        inboard radius of inner surface of shield
    triang:
        plasma triangularity

    Returns
    -------
    ArbitraryGeometry
        dataclass returning radial and vertical coordinates
    """
    # Upper shield
    # Side furthest from plasma
    kapx = cumulative_upper["dz_shld_upper"] / rminx_far
    rs_upper_outboard, zs_upper_outboard = dh_vertices(radx_far, rminx_far, triang, kapx)

    # Side nearest to plasma
    kapx = (cumulative_upper["dr_shld_blkt_gap"]) / rminx_near
    rs_upper_inboard, zs_upper_inboard = dh_vertices(radx_near, rminx_near, triang, kapx)

    # Lower shield
    (
        rs_lower_outboard,
        zs_lower_outboard,
        rs_lower_inboard,
        zs_lower_inboard,
    ) = shield_geometry_lower(
        cumulative_lower=cumulative_lower,
        radx_far=radx_far,
        radx_near=radx_near,
        rminx_far=rminx_far,
        rminx_near=rminx_near,
        triang=triang,
    )

    rs = np.concatenate([
        rs_lower_inboard,
        rs_lower_outboard[::-1],
        rs_upper_outboard,
        rs_upper_inboard[::-1],
    ])
    zs = np.concatenate([
        zs_lower_inboard,
        zs_lower_outboard[::-1],
        zs_upper_outboard,
        zs_upper_inboard[::-1],
    ])
    return ArbitraryGeometry(
        rs=rs,
        zs=zs,
    )

shield_geometry_lower(cumulative_lower, radx_far, rminx_far, radx_near, rminx_near, triang)

Calculates radial and vertical distances for the geometry of section of shield below the midplane

Parameters:

Name Type Description Default
cumulative_lower dict

cumulative vertical thicknesses of components below the midplane

required
radx_far float

outboard radius of outer surface of shield

required
rminx_far float

inboard radius of outer surface of shield

required
radx_near float

outboard radius of inner surface of shield

required
rminx_near float

inboard radius of inner surface of shield

required
triang float

plasma triangularity

required

Returns:

Type Description
Tuple[ndarray, ndarray, ndarray, ndarray]

tuple containing the R coordinates for the outboard, Z coordinates for the outboard, R coordinates for the inboard, Z coordinates for the inboard of the shield geometry below the midplane

Source code in process/models/geometry/shield.py
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
def shield_geometry_lower(
    cumulative_lower: dict,
    radx_far: float,
    rminx_far: float,
    radx_near: float,
    rminx_near: float,
    triang: float,
) -> tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]:
    """Calculates radial and vertical distances for the geometry of section of shield below the midplane

    Parameters
    ----------
    cumulative_lower:
        cumulative vertical thicknesses of components below the midplane
    radx_far:
        outboard radius of outer surface of shield
    rminx_far:
        inboard radius of outer surface of shield
    radx_near:
        outboard radius of inner surface of shield
    rminx_near:
        inboard radius of inner surface of shield
    triang:
        plasma triangularity

    Returns
    -------
    Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]
        tuple containing the R coordinates for the outboard, Z coordinates for the outboard, R coordinates for the inboard, Z coordinates for the inboard of the shield geometry below the midplane
    """
    # Side furthest from plasma
    kapx = cumulative_lower["dz_shld_lower"] / rminx_far
    rs_lower_outboard, zs_lower_outboard = dh_vertices(radx_far, rminx_far, triang, kapx)

    # Side nearest to plasma
    kapx = (cumulative_lower["dz_divertor"]) / rminx_near
    rs_lower_inboard, zs_lower_inboard = dh_vertices(radx_near, rminx_near, triang, kapx)

    return rs_lower_outboard, zs_lower_outboard, rs_lower_inboard, zs_lower_inboard

shield_geometry_double_null(cumulative_lower, radx_far, rminx_far, radx_near, rminx_near, triang)

Calculates radial and vertical distances for the geometry of shield in a double null configuration In a double null configuration, the geometry of the lower shield is reflected across the midplane to create the section of shield above the midplane

Parameters:

Name Type Description Default
cumulative_lowe

cumulative vertical thicknesses of components below the midplane

required
radx_far float

outboard radius of outer surface of shield

required
rminx_far float

inboard radius of outer surface of shield

required
radx_near float

outboard radius of inner surface of shield

required
rminx_near float

inboard radius of inner surface of shield

required
triang float

plasma triangularity

required

Returns:

Type Description
ArbitraryGeometry

dataclass returning radial and vertical coordinates

Source code in process/models/geometry/shield.py
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
def shield_geometry_double_null(
    cumulative_lower: dict,
    radx_far: float,
    rminx_far: float,
    radx_near: float,
    rminx_near: float,
    triang: float,
) -> ArbitraryGeometry:
    """Calculates radial and vertical distances for the geometry of shield in a double null configuration
    In a double null configuration, the geometry of the lower shield is reflected across the midplane to create the section of shield above the midplane

    Parameters
    ----------
    cumulative_lowe:
        cumulative vertical thicknesses of components below the midplane
    radx_far:
        outboard radius of outer surface of shield
    rminx_far:
        inboard radius of outer surface of shield
    radx_near:
        outboard radius of inner surface of shield
    rminx_near:
        inboard radius of inner surface of shield
    triang:
        plasma triangularity

    Returns
    -------
    ArbitraryGeometry
        dataclass returning radial and vertical coordinates
    """
    # Lower shield
    (
        rs_lower_outboard,
        zs_lower_outboard,
        rs_lower_inboard,
        zs_lower_inboard,
    ) = shield_geometry_lower(
        cumulative_lower=cumulative_lower,
        radx_far=radx_far,
        radx_near=radx_near,
        rminx_far=rminx_far,
        rminx_near=rminx_near,
        triang=triang,
    )

    rs_lower = np.concatenate([rs_lower_outboard, rs_lower_inboard[::-1]])
    zs_lower = np.concatenate([zs_lower_outboard, zs_lower_inboard[::-1]])

    # Upper shield
    rs_upper = rs_lower
    zs_upper = -1 * zs_lower

    rs = np.concatenate([rs_lower[::-1], rs_upper])
    zs = np.concatenate([zs_lower[::-1], zs_upper])

    return ArbitraryGeometry(rs=rs, zs=zs)