Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
7f66c24
Move elbow coeffieicnt calc from blanket to pumping
chris-ashe Jun 4, 2026
693d5ca
Add coolant properties to BlanketData class
chris-ashe Jun 4, 2026
f3bcda6
Add coolant friction loss parameters and output functions for blanket…
chris-ashe Jun 4, 2026
d23fc88
Add function to plot blanket coolant channel structure and update mai…
chris-ashe Jun 4, 2026
992e8b2
Refactor pressure drop assertions in blanket tests for clarity and co…
chris-ashe Jun 5, 2026
8d84409
Add function to plot outboard blanket coolant properties along the po…
chris-ashe Jun 5, 2026
8ab606f
Tidy some variable names to match style guide
chris-ashe Jun 5, 2026
7b10286
Create mass flow required function and implement
chris-ashe Jun 5, 2026
595ddf2
🔄 Rename FW and Blkt heat capacity variables
chris-ashe Jun 5, 2026
23740c9
Add output for outboard blanket piping
chris-ashe Jun 5, 2026
641860c
Add output table for outboard blanket
chris-ashe Jun 5, 2026
7dabfcb
Refactor coolant friction loss parameters and update related tests
chris-ashe Jun 7, 2026
53ceec1
Enhance inboard blanket coolant channel output and pressure drop calc…
chris-ashe Jun 7, 2026
5966913
Move FW number of bends to FW file
chris-ashe Jun 8, 2026
9bdc028
Remove pipe plotting
chris-ashe Jun 8, 2026
a72f44e
Update summary positions of tables
chris-ashe Jun 8, 2026
e3f5762
Post rebase fixes
chris-ashe Jun 11, 2026
622b957
Remove unused CoolProp imports and related plotting functions for out…
chris-ashe Jun 23, 2026
02f1a1f
Post merge coflict fixes
chris-ashe Jul 2, 2026
775f652
Move all of the pumping related function from `BlanketLibrary` into t…
chris-ashe Jul 2, 2026
2033ce5
Update some output formatting
chris-ashe Jul 3, 2026
96c3b10
Fix some coolant pumping power function imports
chris-ashe Jul 3, 2026
a02897d
Refactor pumping outputs to be specifically for inboard and outboard …
chris-ashe Jul 3, 2026
bdfa340
Add coolant mass flow rate output
chris-ashe Jul 15, 2026
8de7197
Refactor coolant pumping power types to use CALCULATE_PRESSURE_DROP a…
chris-ashe Jul 15, 2026
0c82b7e
Rename mass flow rate variables for clarity in blanket model
chris-ashe Jul 15, 2026
539fb4f
Add coolant mass flow rate and velocity outputs for single channels i…
chris-ashe Jul 15, 2026
9944ab1
Post rebase fixes
chris-ashe Aug 3, 2026
2f0d153
Only output pumping variables if pressure drop is calculated
chris-ashe Aug 3, 2026
ca7110f
Add pumping power calculation option output in first wall pumping det…
chris-ashe Aug 5, 2026
db47075
Update process/models/blankets/blanket_library.py
chris-ashe Aug 21, 2026
94feec4
Refactor blanket models to use pipe_hydraulic_diameter function and a…
chris-ashe Aug 25, 2026
01352c5
Remove unnecessary @staticmethod decorators from calculate_reynolds_n…
chris-ashe Aug 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions documentation/source/development/standards.md
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,14 @@ This should be used for units of $\text{kg} \cdot \text{m}^{-2}\text{s}^{-1}$

---------------------

##### Specific Heat Capacities

- Specific heat capacities for materials $[\text{J/kg/K}]$ should start with the `heatcap_` prefix
- Specific heat capacities at constant volume should start with the `heatcap_vol_` pefix
- Specific heat capacities at constant pressure should start with the `heatcap_pres_` pefix

---------------------

##### Pressures

- Pressures should start with the `pres_` prefix
Expand Down
97 changes: 0 additions & 97 deletions documentation/source/eng-models/blanket_overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,100 +5,3 @@

--------------------

### Coolant mechanical pumping power | `coolant_pumping_power()`

To calculate the coolant pumping power we use the change in enthalpies of the coolant as it goes through the pump.
**We assume the pump is isentropic so the entropy change of the coolant is 0**.

The mechanical pumping power is defined as:

$$
P = \frac{\frac{\dot{m} \times \left(H_{\text{out}}-H_{\text{in}}\right)}{\eta}}{\left(1-fp\right)}
$$

where $\dot{m}$ is the coolant mass flow rate, $H$ is the coolant enthalpy, $\eta$ is the isentropic efficiency of the pump and $\gamma$ is the adiabatic index of the coolant.

$$
fp = \frac{T_{\text{pump,out}}\left(\frac{P_{\text{pump,out}}}{P_{\text{pump,in}}}\right)^{-\frac{\gamma -1}{\gamma}}}{\eta \left(T_{\text{pump,in}}-T_{\text{pump,out}}\right)}
$$

------------------

### Coolant pressure drop | `coolant_friction_pressure_drop()`

The pressure drop in the coolant is given by the [Darcy-Weisbach Equation](https://en.wikipedia.org/wiki/Darcy%E2%80%93Weisbach_equation)

For a cylindrical pipe of uniform diameter the pressure loss due to viscous effects can be characterized by:

$$
\Delta P = L\left[f_{\text{D}}\frac{\rho}{2}\frac{\langle v \rangle^2}{D_{\text{H}}}\right]
$$

where $L$ is the pipe length, $f_{\text{D}}$ is the [Darcy friction factor](https://en.wikipedia.org/wiki/Darcy_friction_factor_formulae), $\rho$ is the coolant density, $\langle v \rangle$ is the mean flow coolant velocity and $D_{\text{H}}$ is the hydraulic diameter or the pipe diameter in this case.

To find the Darcy friction factor we need to know the Reynolds number given by:

$$
\text{Re} = \frac{\rho v L}{\mu}
$$

here $L$ is the characteristic length which we set to be the pipe diameter and $\mu$ is the coolant dynamic viscosity.

Using the Reynolds number we calculate the Darcy friction factor using the Haaland approximation calculated by [`darcy_friction_haaland()`](../eng-models/generic_methods/pumping.md#pumping-coolant-friction--darcy_friction_haaland).

For the radius of the pipe bend we assume it to be 3 times the radius of the coolant channel.

The elbow coefficients for the 90 and 180 degree bends $\left(f_{\text{90,elbow}}, f_{\text{180,elbow}}\right)$ are calculated via [`elbow_coeff()`](#pipe-bend-elbow-coefficient--elbow_coeff).

The pressure drop for the straights along the entire pipe length is the same as above:

$$
\Delta P = L\left[f_{\text{D}}\frac{\rho}{2}\frac{\langle v \rangle^2}{D_{\text{H}}}\right]
$$

where we define $\frac{f_{\text{D}}L}{D_{\text{H}}}$ as our straight section coefficient.

The pressure drop for the 90 and 180 degree bends are:

$$
\Delta P = N_{\text{90}} \left[f_{\text{90,elbow}} \frac{\rho \langle v \rangle^2}{2}\right]
$$

$$
\Delta P = N_{\text{180}} \left[f_{\text{180,elbow}} \frac{\rho \langle v \rangle^2}{2}\right]
$$

where $N_{\text{90}}$ and $N_{\text{180}}$ are the number of 90 and 180 degree bends in the system.

The total returned pressure drop is simply:

$$
\Delta P = L\left[f_{\text{D}}\frac{\rho}{2}\frac{\langle v \rangle^2}{D_{\text{H}}}\right] + N_{\text{90}} \left[f_{\text{90,elbow}} \frac{\rho \langle v \rangle^2}{2}\right] + N_{\text{180}} \left[f_{\text{180,elbow}} \frac{\rho \langle v \rangle^2}{2}\right]
$$

-------------------

### Pipe bend elbow coefficient | `elbow_coeff()`

This function calculates the elbow bend coefficients for pressure drop calculations.

$$
a = 1.0 \quad \text{if} \ \theta = 90^{\circ} \\
a = 0.9 \times \sin{\left(\frac{\theta \pi}{180^{\circ}}\right)} \quad \text{if} \ \theta < 70^{\circ} \\
a = 0.7 + 0.35 \times \sin{\left(\frac{\theta}{90^{\circ}} \times \frac{\pi}{180^{\circ}}\right)} \quad \text{if} \ \theta > 90^{\circ} \\
$$

where $\theta$ is the angle of the pipe bend.

$$
b = \frac{0.21}{\sqrt{\frac{R_{\text{elbow}}}{D_{\text{pipe}}}}}\quad \text{if} \ \frac{R_{\text{elbow}}}{D_{\text{pipe}}} \ge 1 \\
b = \frac{0.21}{\left(\frac{R_{\text{elbow}}}{D_{\text{pipe}}}\right)^{2.5}}\quad \text{if} \ \frac{R_{\text{elbow}}}{D_{\text{pipe}}} \le 1 \\
\text{else} \quad b =0.21
$$

The elbow coefficient is given by:

$$
ab + \left( f_{\text{D}} \times \frac{R_{\text{elbow}}}{D_{\text{pipe}}}\right) \times \theta \times \left(\frac{\pi}{180^{\circ}}\right)
$$

131 changes: 130 additions & 1 deletion documentation/source/eng-models/generic_methods/pumping.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,80 @@
# Pumping Methods


## Coolant mechanical pumping power | `coolant_pumping_power()`

To calculate the coolant pumping power we use the change in enthalpies of the coolant as it goes through the pump.
**We assume the pump is isentropic so the entropy change of the coolant is 0**.

The mechanical pumping power is defined as:

$$
P = \frac{\frac{\dot{m} \times \left(H_{\text{out}}-H_{\text{in}}\right)}{\eta}}{\left(1-fp\right)}
$$

where $\dot{m}$ is the coolant mass flow rate, $H$ is the coolant enthalpy, $\eta$ is the isentropic efficiency of the pump and $\gamma$ is the adiabatic index of the coolant.

$$
fp = \frac{T_{\text{pump,out}}\left(\frac{P_{\text{pump,out}}}{P_{\text{pump,in}}}\right)^{-\frac{\gamma -1}{\gamma}}}{\eta \left(T_{\text{pump,in}}-T_{\text{pump,out}}\right)}
$$

------------------

## Coolant pressure drop | `coolant_friction_pressure_drop()`

The pressure drop in the coolant is given by the [Darcy-Weisbach Equation](https://en.wikipedia.org/wiki/Darcy%E2%80%93Weisbach_equation)

For a cylindrical pipe of uniform diameter the pressure loss due to viscous effects can be characterized by:

$$
\Delta P = L\left[f_{\text{D}}\frac{\rho}{2}\frac{\langle v \rangle^2}{D_{\text{H}}}\right]
$$

where $L$ is the pipe length, $f_{\text{D}}$ is the [Darcy friction factor](https://en.wikipedia.org/wiki/Darcy_friction_factor_formulae), $\rho$ is the coolant density, $\langle v \rangle$ is the mean flow coolant velocity and $D_{\text{H}}$ is the hydraulic diameter or the pipe diameter in this case.

To find the Darcy friction factor we need to know the Reynolds number given by:

$$
\text{Re} = \frac{\rho v L}{\mu}
$$

here $L$ is the characteristic length which we set to be the pipe diameter and $\mu$ is the coolant dynamic viscosity.

Using the Reynolds number we calculate the Darcy friction factor using the Haaland approximation calculated by [`darcy_friction_haaland()`](../eng-models/generic_methods/pumping.md#pumping-coolant-friction--darcy_friction_haaland).

For the radius of the pipe bend we assume it to be 3 times the radius of the coolant channel.

The elbow coefficients for the 90 and 180 degree bends $\left(f_{\text{90,elbow}}, f_{\text{180,elbow}}\right)$ are calculated via [`elbow_coeff()`](#pipe-bend-elbow-coefficient--elbow_coeff).

The pressure drop for the straights along the entire pipe length is the same as above:

$$
\Delta P = L\left[f_{\text{D}}\frac{\rho}{2}\frac{\langle v \rangle^2}{D_{\text{H}}}\right]
$$

where we define $\frac{f_{\text{D}}L}{D_{\text{H}}}$ as our straight section coefficient.

The pressure drop for the 90 and 180 degree bends are:

$$
\Delta P = N_{\text{90}} \left[f_{\text{90,elbow}} \frac{\rho \langle v \rangle^2}{2}\right]
$$

$$
\Delta P = N_{\text{180}} \left[f_{\text{180,elbow}} \frac{\rho \langle v \rangle^2}{2}\right]
$$

where $N_{\text{90}}$ and $N_{\text{180}}$ are the number of 90 and 180 degree bends in the system.

The total returned pressure drop is simply:

$$
\Delta P = L\left[f_{\text{D}}\frac{\rho}{2}\frac{\langle v \rangle^2}{D_{\text{H}}}\right] + N_{\text{90}} \left[f_{\text{90,elbow}} \frac{\rho \langle v \rangle^2}{2}\right] + N_{\text{180}} \left[f_{\text{180,elbow}} \frac{\rho \langle v \rangle^2}{2}\right]
$$

-------------------


## Pumping coolant friction | `darcy_friction_haaland()`

The pressure drop is based on the Darcy friction factor, using the [Haaland equation](https://en.wikipedia.org/wiki/Darcy_friction_factor_formulae#Haaland_equation), an approximation to the implicit Colebrook–White equation.
Expand Down Expand Up @@ -61,4 +136,58 @@ where $\rho$ is the coolant density and $\mu$ is the coolant viscosity.

$$
h = \frac{\mathrm{Nu_D}k}{2r_{\text{channel}}}
$$
$$

-------------------------

## Pipe bend elbow coefficient | `elbow_coeff()`

This function calculates the elbow bend coefficients for pressure drop calculations.

$$
a = 1.0 \quad \text{if} \ \theta = 90^{\circ} \\
a = 0.9 \times \sin{\left(\frac{\theta \pi}{180^{\circ}}\right)} \quad \text{if} \ \theta < 70^{\circ} \\
a = 0.7 + 0.35 \times \sin{\left(\frac{\theta}{90^{\circ}} \times \frac{\pi}{180^{\circ}}\right)} \quad \text{if} \ \theta > 90^{\circ} \\
$$

where $\theta$ is the angle of the pipe bend.

$$
b = \frac{0.21}{\sqrt{\frac{R_{\text{elbow}}}{D_{\text{pipe}}}}}\quad \text{if} \ \frac{R_{\text{elbow}}}{D_{\text{pipe}}} \ge 1 \\
b = \frac{0.21}{\left(\frac{R_{\text{elbow}}}{D_{\text{pipe}}}\right)^{2.5}}\quad \text{if} \ \frac{R_{\text{elbow}}}{D_{\text{pipe}}} \le 1 \\
\text{else} \quad b =0.21
$$

The elbow coefficient is given by:

$$
ab + \left( f_{\text{D}} \times \frac{R_{\text{elbow}}}{D_{\text{pipe}}}\right) \times \theta \times \left(\frac{\pi}{180^{\circ}}\right)
$$

--------------

## Required mass flow rate | `calculate_required_mass_flow_rate()`

The required mass flow rate of a coolant is given simply by the fundamental heat transfer equation:

$$
\dot{m} = \frac{P}{c_{\text{p}}(T)\times \Delta T}
$$

where $\dot{m}$ is the required mass flow rate in, $P$ is the heating power to be removed, $c_{\text{p}}$ is the coolant specific heat capacity for constant pressure and $\Delta T$ is the temperature change in the coolant.

!!! note "Variation specific heat capacity"

The heat capacity itself is a function of temperature. Therefore it is common to use the heat capacity value at the simple average between the initial and final temperature.
This however assumes a linear relationship. Ideally the equation should be solves as:

$$
\dot{m} = \frac{P}{\int_{T_{\text{in}}}^{T_{\text{in}}}c_{\text{p}}(T) dT}
$$


!!! info "Choice of specific heat capacity"

For pumping, the specific heat capacity for constant pressure $(c_{\text{p}})$ is used as cooling loops are open-flow systems where the fluid moves continuously through pipes, heat exchangers, and pumps. As the coolant heats up, it expands freely along the loop. Because it is free to expand, the local pressure remains relatively constant while the volume changes.

You would only use the specific heat capacity for constant volume $(c_{\text{v}})$ if the coolant was completely sealed inside a rigid, unyielding container with zero flow, where heating it would cause the pressure to spike but the volume to stay exactly the same.
Comment on lines +168 to +193

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this bit of doc is new, so probably worth an @ukaea/process-model-review looking at it

Loading
Loading