Skip to content

blanket

Calculate radial and vertical coordinates for the geometry of the blanket

blanket_geometry_single_null(radx_outer, rminx_outer, radx_inner, rminx_inner, cumulative_upper, triang, cumulative_lower, dz_blkt_upper, c_shldith, c_blnkoth, dr_blkt_inboard, dr_blkt_outboard)

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

Parameters:

Name Type Description Default
radx_outer float

outboard radius of outer surface of blanket

required
rminx_outer float

inboard radius of outer surface of blanket

required
radx_inner float

outboard radius of inner surface of blanket

required
rminx_inner float

inboard radius of inner surface of blanket

required
cumulative_upper dict

cumulative vertical thicknesses of components above the midplane

required
triang float

plasma triangularity

required
cumulative_lower dict

cumulative vertical thicknesses of components below the midplane

required
dz_blkt_upper float

top blanket vertical thickness

required
c_shldith float

inboard shield thickness

required
c_blnkoth float

outboard blanket radial thickness

required
dr_blkt_inboard float

inboard blanket radial thickness

required
dr_blkt_outboard float

outboard blanket radial thickness

required

Returns:

Type Description
ArbitraryGeometry

dataclass returning radial and vertical coordinates

Source code in process/models/geometry/blanket.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
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
def blanket_geometry_single_null(
    radx_outer: float,
    rminx_outer: float,
    radx_inner: float,
    rminx_inner: float,
    cumulative_upper: dict,
    triang: float,
    cumulative_lower: dict,
    dz_blkt_upper: float,
    c_shldith: float,
    c_blnkoth: float,
    dr_blkt_inboard: float,
    dr_blkt_outboard: float,
) -> ArbitraryGeometry:
    """Calculates radial and vertical distances for the geometry of the blanket in a single null configuration

    Parameters
    ----------
    radx_outer:
        outboard radius of outer surface of blanket
    rminx_outer:
        inboard radius of outer surface of blanket
    radx_inner:
        outboard radius of inner surface of blanket
    rminx_inner:
        inboard radius of inner surface of blanket
    cumulative_upper:
        cumulative vertical thicknesses of components above the midplane
    triang:
        plasma triangularity
    cumulative_lower:
        cumulative vertical thicknesses of components below the midplane
    dz_blkt_upper:
        top blanket vertical thickness
    c_shldith:
        inboard shield thickness
    c_blnkoth:
        outboard blanket radial thickness
    dr_blkt_inboard:
        inboard blanket radial thickness
    dr_blkt_outboard:
        outboard blanket radial thickness

    Returns
    -------
    ArbitraryGeometry
        dataclass returning radial and vertical coordinates
    """
    # Upper blanket outer surface
    kapx = cumulative_upper["dz_blkt_upper"] / rminx_outer
    rs_upper_outboard, zs_upper_outboard = dh_vertices(
        radx_outer, rminx_outer, triang, kapx
    )

    # Upper blanket inner surface
    kapx = cumulative_upper["dz_fw_upper"] / rminx_inner
    rs_upper_inboard, zs_upper_inboard = dh_vertices(
        radx_inner, rminx_inner, triang, kapx
    )

    # Lower blanket
    divgap = cumulative_lower["dz_divertor"]

    (
        rs_lower_outboard,
        zs_lower_outboard,
        rs_lower_inboard,
        zs_lower_inboard,
    ) = blanket_geometry_lower(
        triang=triang,
        dz_blkt_upper=dz_blkt_upper,
        c_shldith=c_shldith,
        c_blnkoth=c_blnkoth,
        dr_blkt_inboard=dr_blkt_inboard,
        dr_blkt_outboard=dr_blkt_outboard,
        divgap=divgap,
    )

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

    return ArbitraryGeometry(rs=rs, zs=zs)

blanket_geometry_lower(triang, dz_blkt_upper, c_shldith, c_blnkoth, dr_blkt_inboard, dr_blkt_outboard, divgap)

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

Parameters:

Name Type Description Default
triang float

plasma triangularity

required
dz_blkt_upper float

top blanket vertical thickness

required
c_shldith float

inboard shield thickness

required
c_blnkoth float

outboard blanket radial thickness

required
dr_blkt_inboard float

inboard blanket radial thickness

required
dr_blkt_outboard float

outboard blanket radial thickness

required
divgap float

divertor structure vertical thickness

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 blanket geometry below the midplane

Source code in process/models/geometry/blanket.py
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
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
def blanket_geometry_lower(
    triang: float,
    dz_blkt_upper: float,
    c_shldith: float,
    c_blnkoth: float,
    dr_blkt_inboard: float,
    dr_blkt_outboard: float,
    divgap: float,
) -> tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]:
    """Calculates radial and vertical distances for the geometry of section of blanket below the midplane

    Parameters
    ----------
    triang:
        plasma triangularity
    dz_blkt_upper:
        top blanket vertical thickness
    c_shldith:
        inboard shield thickness
    c_blnkoth:
        outboard blanket radial thickness
    dr_blkt_inboard:
        inboard blanket radial thickness
    dr_blkt_outboard:
        outboard blanket radial thickness
    divgap:
        divertor structure vertical thickness

    Returns
    -------
    :
        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 blanket geometry below the midplane
    """
    # Lower blanket
    rs1, rs2, rs3, rs4, zs1, zs2, zs3, zs4 = dhgap_vertices(
        c_shldith,
        c_blnkoth,
        dr_blkt_inboard,
        dr_blkt_outboard,
        divgap,
        -dz_blkt_upper,
        triang,
    )
    # outboard radial and vertical coordinates
    rs_lower_outboard = np.concatenate([rs1, rs2[::-1]])
    zs_lower_outboard = np.concatenate([zs1, zs2[::-1]])
    # inboard radial and vertical coordinates
    rs_lower_inboard = np.concatenate([rs3, rs4[::-1]])
    zs_lower_inboard = -np.concatenate([zs3, zs4[::-1]])

    return rs_lower_outboard, zs_lower_outboard, rs_lower_inboard, zs_lower_inboard

blanket_geometry_double_null(cumulative_lower, triang, dz_blkt_upper, c_shldith, c_blnkoth, dr_blkt_inboard, dr_blkt_outboard)

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

Parameters:

Name Type Description Default
cumulative_lower dict

cumulative vertical thicknesses of components below the midplane

required
triang float

plasma triangularity

required
dz_blkt_upper float

top blanket vertical thickness

required
c_shldith float

inboard shield thickness

required
c_blnkoth float

outboard blanket radial thickness

required
dr_blkt_inboard float

inboard blanket radial thickness

required
dr_blkt_outboard float

outboard blanket radial thickness

required

Returns:

Type Description
ArbitraryGeometry

dataclass returning radial and vertical coordinates

Source code in process/models/geometry/blanket.py
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
def blanket_geometry_double_null(
    cumulative_lower: dict,
    triang: float,
    dz_blkt_upper: float,
    c_shldith: float,
    c_blnkoth: float,
    dr_blkt_inboard: float,
    dr_blkt_outboard: float,
) -> ArbitraryGeometry:
    """Calculates radial and vertical distances for the geometry of blanket in a double null configuration
    In a double null configuration, the geometry of the lower blanket is reflected across the midplane to create the section of blanket above the midplane

    Parameters
    ----------
    cumulative_lower:
        cumulative vertical thicknesses of components below the midplane
    triang:
        plasma triangularity
    dz_blkt_upper:
        top blanket vertical thickness
    c_shldith:
        inboard shield thickness
    c_blnkoth:
        outboard blanket radial thickness
    dr_blkt_inboard:
        inboard blanket radial thickness
    dr_blkt_outboard:
        outboard blanket radial thickness

    Returns
    -------
    ArbitraryGeometry
        dataclass returning radial and vertical coordinates
    """
    # Lower blanket
    divgap = cumulative_lower["dz_divertor"]

    (
        rs_lower_outboard,
        zs_lower_outboard,
        rs_lower_inboard,
        zs_lower_inboard,
    ) = blanket_geometry_lower(
        triang=triang,
        dz_blkt_upper=dz_blkt_upper,
        c_shldith=c_shldith,
        c_blnkoth=c_blnkoth,
        dr_blkt_inboard=dr_blkt_inboard,
        dr_blkt_outboard=dr_blkt_outboard,
        divgap=divgap,
    )

    # Upper blanket
    divgap = -1 * divgap

    (
        rs_upper_outboard,
        zs_upper_outboard,
        rs_upper_inboard,
        zs_upper_inboard,
    ) = blanket_geometry_lower(
        triang=triang,
        dz_blkt_upper=dz_blkt_upper,
        c_shldith=c_shldith,
        c_blnkoth=c_blnkoth,
        dr_blkt_inboard=dr_blkt_inboard,
        dr_blkt_outboard=dr_blkt_outboard,
        divgap=divgap,
    )
    rs_1 = np.concatenate([rs_upper_outboard, rs_lower_outboard[::-1]])
    rs_2 = np.concatenate([rs_upper_inboard, rs_lower_inboard[::-1]])
    zs_1 = np.concatenate([zs_upper_outboard, zs_lower_outboard[::-1]])
    zs_2 = np.concatenate([zs_upper_inboard, zs_lower_inboard[::-1]])
    rs = [rs_1, rs_2]
    zs = [zs_1, zs_2]

    return ArbitraryGeometry(rs=rs, zs=zs)