Skip to content

materials

Materials module for engineering calculations and properties.

poisson_steel = 0.3 module-attribute

eurofer97_thermal_conductivity(temp, fw_th_conductivity)

Calculates the thermal conductivity of the first wall material (Eurofer97).

Parameters:

Name Type Description Default
temp float

Property temperature in Kelvin (K).

required
fw_th_conductivity float

thermal conductivity of first wall material at 293 K (W/m/K)

required

Returns:

Type Description
float

Thermal conductivity of Eurofer97 in W/m/K.

Notes

Valid up to about 800 K

References
  • A. A. Tavassoli et al., “Materials design data for reduced activation martensitic steel type EUROFER,” Journal of Nuclear Materials, vol. 329-333, pp. 257-262, Aug. 2004, doi: https://doi.org/10.1016/j.jnucmat.2004.04.020.

  • Tavassoli, F. "Fusion Demo Interim Structural Design Criteria (DISDC)/Appendix A Material Design Limit Data/A3. S18E Eurofer Steel." CEA, EFDA_TASK_TW4-TTMS-005-D01 (2004)

Source code in process/models/engineering/materials.py
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
def eurofer97_thermal_conductivity(temp: float, fw_th_conductivity: float) -> float:
    """Calculates the thermal conductivity of the first wall material (Eurofer97).

    Parameters
    ----------
    temp:
        Property temperature in Kelvin (K).
    fw_th_conductivity:
        thermal conductivity of first wall material at 293 K (W/m/K)

    Returns
    -------
    :
        Thermal conductivity of Eurofer97 in W/m/K.

    Notes
    -----
    Valid up to about 800 K

    References
    ----------
    - A. A. Tavassoli et al., “Materials design data for reduced activation martensitic
      steel type EUROFER,”
      Journal of Nuclear Materials, vol. 329-333, pp. 257-262, Aug. 2004,
      doi: https://doi.org/10.1016/j.jnucmat.2004.04.020.

    - Tavassoli, F. "Fusion Demo Interim Structural Design Criteria (DISDC)/Appendix A
      Material Design Limit Data/A3. S18E Eurofer Steel."
      CEA, EFDA_TASK_TW4-TTMS-005-D01 (2004)
    """
    # temp in Kelvin
    return (
        (5.4308 + 0.13565 * temp - 0.00023862 * temp**2 + 1.3393e-7 * temp**3)
        * fw_th_conductivity
        / 28.34
    )

calculate_tresca_stress(stress_x, stress_y, stress_z)

Calculates the Tresca (maximum shear stress) criterion from three principal stress components.

Parameters:

Name Type Description Default
stress_x float | ndarray

First principal stress in Pa.

required
stress_y float | ndarray

Second principal stress in Pa.

required
stress_z float | ndarray

Third principal stress in Pa.

required

Returns:

Type Description
float | ndarray

Tresca stress (maximum shear stress criterion) in Pa, defined as the maximum of |stress_x - stress_y|, |stress_y - stress_z|, |stress_x - stress_z|.

Source code in process/models/engineering/materials.py
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
@numba.njit(cache=True)
def calculate_tresca_stress(
    stress_x: float | np.ndarray,
    stress_y: float | np.ndarray,
    stress_z: float | np.ndarray,
) -> float | np.ndarray:
    """Calculates the Tresca (maximum shear stress) criterion from three principal
    stress components.

    Parameters
    ----------
    stress_x:
        First principal stress in Pa.
    stress_y:
        Second principal stress in Pa.
    stress_z:
        Third principal stress in Pa.

    Returns
    -------
    :
        Tresca stress (maximum shear stress criterion) in Pa, defined as the
        maximum of |stress_x - stress_y|, |stress_y - stress_z|, |stress_x - stress_z|.
    """
    return np.maximum(
        np.maximum(
            np.abs(stress_x - stress_y),
            np.abs(stress_y - stress_z),
        ),
        np.abs(stress_x - stress_z),
    )

calculate_von_mises_stress(stress_x, stress_y, stress_z, stress_shear_xy, stress_shear_yz, stress_shear_zx)

Calculates the von Mises stress criterion from three principal stress components.

Parameters:

Name Type Description Default
stress_x float | ndarray

First principal stress in Pa.

required
stress_y float | ndarray

Second principal stress in Pa.

required
stress_z float | ndarray

Third principal stress in Pa.

required
stress_shear_xy float | ndarray

Shear stress in the xy-plane in Pa.

required
stress_shear_yz float | ndarray

Shear stress in the yz-plane in Pa.

required
stress_shear_zx float | ndarray

Shear stress in the zx-plane in Pa.

required

Returns:

Type Description
float | ndarray

Von Mises stress in Pa, defined as: √(0.5 * ((sx - sy)² + (sy - sz)² + (sx - sz)²) + 6 * (τ_xy² + τ_yz² + τ_zx²))

References

[1] https://en.wikipedia.org/wiki/Von_Mises_yield_criterion

Source code in process/models/engineering/materials.py
 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
123
124
125
126
127
128
129
@numba.njit(cache=True)
def calculate_von_mises_stress(
    stress_x: float | np.ndarray,
    stress_y: float | np.ndarray,
    stress_z: float | np.ndarray,
    stress_shear_xy: float | np.ndarray,
    stress_shear_yz: float | np.ndarray,
    stress_shear_zx: float | np.ndarray,
) -> float | np.ndarray:
    """Calculates the von Mises stress criterion from three principal stress components.

    Parameters
    ----------
    stress_x:
        First principal stress in Pa.
    stress_y:
        Second principal stress in Pa.
    stress_z:
        Third principal stress in Pa.
    stress_shear_xy:
        Shear stress in the xy-plane in Pa.
    stress_shear_yz:
        Shear stress in the yz-plane in Pa.
    stress_shear_zx:
        Shear stress in the zx-plane in Pa.

    Returns
    -------
    :
        Von Mises stress in Pa, defined as:
        √(0.5 * ((sx - sy)² + (sy - sz)² + (sx - sz)²) + 6 * (τ_xy² + τ_yz² + τ_zx²))

    References
    ----------
    [1] https://en.wikipedia.org/wiki/Von_Mises_yield_criterion
    """
    return np.sqrt(
        0.5
        * (
            (stress_x - stress_y) ** 2
            + (stress_y - stress_z) ** 2
            + (stress_z - stress_x) ** 2
            + 6 * (stress_shear_xy**2 + stress_shear_yz**2 + stress_shear_zx**2)
        )
    )