STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
graphite_properties.py
Go to the documentation of this file.
1"""Temperature-dependent properties of the graphite throat insert, as named models.
2
3The specific heat of graphite nearly triples between room temperature and the throat's running
4temperature (0.71 kJ/(kg K) at 300 K, 2.0 at 2000 K). A constant room-temperature value heats the
5surface too fast and so runs the surface chemistry early. Unlike conductivity, density or ash
6content, the specific heat is a property of the carbon lattice and is the same for every
7polygranular grade to within a few percent, so a published correlation stands for any insert.
8
9Conductivity has no such model here: it depends on the grade (grain, porosity, graphitisation),
10and a datasheet gives it at room temperature only.
11"""
12
13from __future__ import annotations
14
15from typing import Callable, Dict, Optional
16
17import numpy as np
18
19CAL = 4184.0 # J/kcal
20
21
22def cp_butland_maddison(T: np.ndarray) -> np.ndarray:
23 """Specific heat of graphite [J/(kg K)], Butland & Maddison, J. Nucl. Mater. 49 (1973) 45-56.
24
25 cp = 0.54212 - 2.42667e-6 T - 90.2725/T - 43449.3/T^2 + 1.59309e7/T^3 - 1.43688e9/T^4
26 in cal/(g K), T in K, fitted 200-3500 K. Outside that range it is held at the ends.
27 """
28 T = np.clip(np.asarray(T, dtype=float), 200.0, 3500.0)
29 c = 0.54212 - 2.42667e-6 * T - 90.2725 / T - 43449.3 / T**2 + 1.59309e7 / T**3 - 1.43688e9 / T**4
30 return c * CAL
31
32
33#: ``graphite_insert.specific_heat_model`` -> cp(T) [J/(kg K)]; ``None`` uses ``specific_heat``.
34SPECIFIC_HEAT_MODELS: Dict[str, Optional[Callable[[np.ndarray], np.ndarray]]] = {
35 "constant": None,
36 "butland_maddison_1973": cp_butland_maddison,
37}