Index
PackedBed
An implementation of the packed bed thermal energy storage model described by Battisti et al.1.
Assumptions:
- Constant solid phase density
- Constant wall thermal properties
- Constant axial spacing
- Constant diameter
- Constant temperature exterior wall boundary condition
Warning
The model was intended for use with sCO2 as the heat transfer fluid. The fluid
attribute can be
set to any CoolProp.AbstractState
object, but the code has not been tested with any other fluid.
By default, sco2es.PackedBed
uses CoolProp to calculate the properties of
CO2 and assumes that the solid particles are made of Alumina
, for which empirical correlations are used to calculate
relevant properties. To use a material other than alumina, create a class matching the protocol
SolidProperties
and set the solid
attribute.
Info
Arrays are annotated with dimensions as follows:
N
: Number of time steps.Z
: Number of axial nodes.W
: Number of wall nodes.
-
F. Battisti, L. de Araujo Passos, and A. da Silva, “Performance mapping of packed-bed thermal energy storage systems for concentrating solar-powered plants using supercritical carbon dioxide,” Applied Thermal Engineering, vol. 183, p. 116032, 2021. ↩
Attributes:
Name | Type | Description |
---|---|---|
axial_nodes |
int
|
Number of nodes in the axial direction. |
wall_nodes |
int
|
Number of nodes in the axial or radial directions for the walls and lids, respectively. |
z |
Annotated[NDArray[float], Z]
|
Axial positions of the packed bed nodes from the charging inlet in the direction of flow [m]. |
z_top_lid |
Annotated[NDArray[float], W]
|
Axial positions of top lid nodes from charging inlet in direction of flow [m]. |
z_bottom_lid |
Annotated[NDArray[float], W]
|
Axial positions of bottom lid nodes from charging inlet in direction of flow [m]. |
r_wall |
Annotated[NDArray[float], W]
|
Radial positions of wall nodes from centerline [m]. |
T_f |
Annotated[NDArray[float], (N, Z)]
|
Fluid temperature for bed nodes [K]. |
T_s |
Annotated[NDArray[float], (N, Z)]
|
Solid temperature for bed nodes [K]. |
T_wall |
Annotated[NDArray[float], (N, Z, W)]
|
Temperature of the wall nodes [K]. |
T_top_lid |
Annotated[NDArray[float], (N, W)]
|
Temperature of the top lid nodes [K]. |
T_bottom_lid |
Annotated[NDArray[float], (N, W)]
|
Temperature of the bottom lide nodes [K]. |
i_f |
Annotated[NDArray[float], Z]
|
Fluid enthalpy at the node centers [J/kg]. |
cp_f |
Annotated[NDArray[float], (N, Z)]
|
Fluid specific heat capacity at the node centers [J/kg⋅K]. |
k_f |
Annotated[NDArray[float], Z]
|
Fluid thermal conductivity at the node centers [W/m⋅K]. |
rho_f |
Annotated[NDArray[float], Z]
|
Fluid density at the node centers [kg/m3]. |
A_cs |
float
|
Cross-sectional area of the packed bed [m2]. |
V_node |
float
|
Volume of a packed bed node [m3]. |
r_bound |
Annotated[NDArray[float], W + 1]
|
Radial positions of wall cell boundaries from centerline [m]. |
V_wall |
Annotated[NDArray[float], W]
|
Volume of the wall cells [m3]. |
A_wall_z |
Annotated[NDArray[float], W]
|
Surface area of the wall cell boundary in the axial direction [m2]. |
A_wall_r |
Annotated[NDArray[float], W + 1]
|
Surface area of the wall cell boundary in the radial direction [m2]. |
Parameters:
Name | Type | Description | Default |
---|---|---|---|
T_initial |
float
|
Discharge temperature [K]. |
required |
P |
float
|
Initial pressure [Pa]. |
required |
L |
float
|
Domain length [m]. |
required |
D |
float
|
Internal tank diameter [m]. |
required |
d |
float
|
Particle diameter [m]. |
required |
eps |
float
|
Void fraction. |
required |
T_env |
float
|
Temperature of the environment [K]. |
required |
t_wall |
ArrayLike
|
Thickness of each wall layer [m]. |
required |
k_wall |
ArrayLike
|
Thermal conductivity of each wall layer [W/m⋅K]. |
required |
rho_wall |
ArrayLike
|
Density of each wall layer [kg/m3]. |
required |
cp_wall |
ArrayLike
|
Specific heat capacity of each wall layer [J/kg⋅K]. |
required |
axial_nodes |
int
|
Number of axial nodes. |
100
|
wall_layer_nodes |
int | ArrayLike
|
Number of nodes for each wall layer. |
10
|
solid |
SolidProperties | None
|
Solid properties interface. |
None
|
fluid = CP.AbstractState('BICUBIC&HEOS', 'CO2')
class-attribute
instance-attribute
CoolProp.AbstractState
object for accessing
fluid properties. By default, CO2 properties are tabulated for the Helmholtz-based equation of state (HEOS)
and bicubic interpolation is used for performance.
solid: SolidProperties = Alumina
class-attribute
instance-attribute
[SolidPropsInterface
][sco2es.SolidPropsInterface] for calculating temperature-dependent properties of the
solid phase.
max_iter: int = 100
class-attribute
instance-attribute
Maximum number of iterations for the loop.
atol_T_f: float = 0.05
class-attribute
instance-attribute
Absolute tolerance for fluid temperature [ºC].
atol_P: float = 0.1
class-attribute
instance-attribute
Absolute tolerance for pressure [Pa].
atol_T_s: float = 0.05
class-attribute
instance-attribute
Absolute tolerance for solid temperature [ºC].
rtol_T_wall: float = 0.0005
class-attribute
instance-attribute
Relative tolerance for wall and lid temperatures.
rtol_i_f: float = 0.0001
class-attribute
instance-attribute
Relative tolerance for fluid enthalpy.
rtol_rho_f: float = 0.001
class-attribute
instance-attribute
Relative tolerance for fluid density.
rtol_m_dot: float = 0.001
class-attribute
instance-attribute
Relative tolerance for mass flow rate.
rtol_h: float = 0.001
class-attribute
instance-attribute
Relative tolerance for volumetric and wall heat transfer coefficients.
E_loss_total
property
Total energy loss at each timestep.
load_case
classmethod
Loads a packed bed simulation case file in YAML format.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
case_file |
str
|
Filepath to the simulation case file. |
required |
time_index
A function for retrieving the index of the simulation time step with the closest elapsed time to the given time.
advance
Advances the simulation until the charge/discharge stopping criterion is satisfied.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
T_inlet |
float
|
Inlet fluid temperature [K]. |
required |
P_inlet |
float
|
Pressure at the inlet [Pa]. |
required |
m_dot_inlet |
float
|
Mass flow rate of the inlet stream [kg/s]. |
required |
t_max |
float
|
Maximum time advancement [s]. |
12 * 60 * 60
|
T_outlet_stop |
float
|
Outlet fluid temperature [K] condition for stopping. |
None
|
dt |
float
|
Time step [s]. |
10
|
discharge |
bool
|
Flag indicating that the system is discharging. |
False
|
Returns:
Type | Description |
---|---|
Time at which the charging/discharging stop criterion was satisfied. |
Raises:
Type | Description |
---|---|
ModelAssumptionError
|
Raised if the Biot number exceeds the acceptable threshold (\(Bi > 0.1\)). |
StopCriterionError
|
Raised if the stop criterion are not met within the maximum allowed
charging/discharging time ( |
step
Calculates the state of the packed bed at the next time step using an iterative algorithm.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
T_inlet |
float
|
Temperature of the inlet stream [K]. |
required |
P_inlet |
float
|
Pressure at the inlet [Pa]. |
required |
m_dot_inlet |
float
|
Mass flow rate of the inlet stream [kg/s]. |
required |
dt |
Time step [s]. |
required | |
discharge |
bool
|
Flag indicating that the system is discharging. |
False
|
Returns:
Type | Description |
---|---|
Number of iterations required for convergence. |
solve_fluid_solid_bed
staticmethod
Solves for the fluid enthalpy and solid temperature for the next time step.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
i_f_0 |
Fluid enthalpy for the previous time step [J/kg]. |
required | |
i_inlet |
Fluid enthalpy at the inlet [J/kg]. |
required | |
g |
Fluid temperature-enthalpy coupling factor [K⋅kg/J]. |
required | |
e_s_0 |
Solid internal energy for the previous time step [J/kg]. |
required | |
alpha1 |
First linearized parameter for solid internal energy. |
required | |
alpha2 |
Second linearized parameter for solid internal energy. |
required | |
rho_f |
Fluid density estimates for the next time step [kg/m3]. |
required | |
rho_0 |
Fluid densities for the previous time step [kg/m3]. |
required | |
rho_s |
Density of the solid [kg/m3]. |
required | |
P_intf |
Pressure estimate at the interfaces for the next time step [Pa]. |
required | |
P_intf_0 |
Pressure at the interfaces for the previous time step [Pa]. |
required | |
m_dot |
Mass flow rate estimate at node interfaces [kg/s]. |
required | |
T_wall |
Wall interface temperature [K]. |
required | |
T_lid_inlet |
Temperature of the lid at the inlet [K]. |
required | |
T_lid_outlet |
Temperature of the lid at the outlet [K]. |
required | |
k_eff |
Effective thermal conductivity [W/m⋅K] |
required | |
h_wall |
Wall heat transfer coefficient [W/m2⋅K]. |
required | |
h_v |
Volumetric heat transfer coefficient [W/m3⋅K]. |
required | |
A_wall |
Surface area of the node wall boundary [m2]. |
required | |
A_cs |
Cross-sectional area [m2]. |
required | |
V |
Node volume [m3]. |
required | |
eps |
Void fraction [-]. |
required | |
dz |
Axial node spacing [m]. |
required | |
dt |
Time step [s]. |
required |
Returns:
Name | Type | Description |
---|---|---|
i_f |
Fluid enthalpy for the next time step [J/kg]. |
|
T_s |
Solid temperature for the next time step [K]. |
solve_lid_temperature
staticmethod
Solves for the lid temperature profile for the next time step. The boundary conditions are taken as:
- Heat loss to environment by conduction at
i=0
- Heat loss to fluid by convection at
i=m-1
- Insulated at radial surfaces
The reverse
keyword can be used to reverse the axial orientation of the boundary conditions.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
T_lid |
Lid temperature for the previous time step [K]. |
required | |
T_f |
Fluid temperature estimate for the next time step at convection boundary [K]. |
required | |
T_env |
Environment temperature [K]. |
required | |
h_wall |
Wall heat transfer coefficient [W/m2⋅K]. |
required | |
k |
Thermal conductivity [W/m⋅K]. |
required | |
rho |
Density [kg/m3]. |
required | |
cp |
Specific heat capacity [J/kg⋅K]. |
required | |
z |
Axial positions of node centers [m]. |
required | |
V |
Node volumes [m3]. |
required | |
A |
Area of lid [m2]. |
required | |
dt |
Time step [s]. |
required | |
reverse |
Flag for reversing boundary conditions. |
False
|
solve_wall_temperature
staticmethod
Solves for the lid temperature profile for the next time step. The boundary conditions are taken as:
- Heat loss to fluid by convection at
j=0
- Heat loss to environment by conduction at
j=m-1
- Insulated axially at
i=0
andi=n-1
where the domain is discretized with n
nodes in the axial direction and m
in the radial
direction, and the wall temperature T_wall
has the shape (n, m)
.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
T_wall |
Wall temperature for the previous time step [K]. |
required | |
T_f |
Fluid temperature estimate for the next time step [K]. |
required | |
T_env |
Environment temperature [K]. |
required | |
h_wall |
Wall heat transfer coefficient [W/m2⋅K]. |
required | |
k |
Thermal conductivity [W/m K]. |
required | |
rho |
Density [kg/m3]. |
required | |
cp |
Specific heat capacity [J/kg⋅K]. |
required | |
r |
Radial positions of node centers [m]. |
required | |
dr |
Radial node width [m]. |
required | |
dz |
Axial node spacing [m]. |
required | |
V |
Node volumes [m3]. |
required | |
A_r |
Area of node interfaces in the radial direction [m2]. |
required | |
A_z |
Area of node interfaces in the axial direction [m2]. |
required | |
dt |
Time step [s]. |
required |
calculate_heat_transfer_coeffs
Calculates the relevant heat transfer coefficients for the packed bed.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
m_dot |
Mass flow rate [kg/s]. |
required | |
T_f |
Temperature of the fluid [K]. |
required | |
k_f |
Thermal conductivity of the fluid [W/m⋅K]. |
required | |
cp_f |
Specific heat capacity of the fluid [J/kg⋅K]. |
required | |
mu_f |
Dynamic viscosity of the fluid [Pa⋅s]. |
required | |
k_s |
Thermal conductivity of the solid [W/m⋅K]. |
required | |
E_s |
Emissivity of the solid. |
required |
Returns:
Name | Type | Description |
---|---|---|
k_eff |
Effective thermal conductivity [W/m⋅K]. |
|
h_wall |
Wall heat transfer coefficient [W/m2⋅K]. |
|
h_v |
Volumetric heat transfer coefficient [W/m3⋅K]. |
calculate_fluid_enthalpy
Returns the fluid
mass-specific enthalpy at each node.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
T_f |
Temperature [K]. |
required | |
P |
Pressure [Pa]. |
required |
calculate_fluid_props
Returns the fluid
temperature, thermal conductivity, density, viscosity, and
specific heat capacity at each node.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
i_f |
Mass-specific enthalpy of the fluid [J/kg]. |
required | |
P |
Pressure [Pa]. |
required |
Returns:
Name | Type | Description |
---|---|---|
T_f |
Temperature of the fluid [K]. |
|
k_f |
Thermal conductivity of the fluid [W/m⋅K]. |
|
rho_f |
Density of the fluid [kg/m3]. |
|
mu_f |
Dynamic viscosity of the fluid [Pa⋅s]. |
|
cp_f |
Specific heat capacity of the fluid [J/kg⋅K]. |
biot_number
staticmethod
Calculates the biot number (\(Bi\)) for a packed bed1
-
F. Battisti, L. de Araujo Passos, and A. da Silva, “Performance mapping of packed-bed thermal energy storage systems for concentrating solar-powered plants using supercritical carbon dioxide,” Applied Thermal Engineering, vol. 183, p. 116032, 2021. ↩
Parameters:
Name | Type | Description | Default |
---|---|---|---|
h_v |
Volumetric heat transfer coefficient, \(h_v\) [W/m3⋅K]. |
required | |
d |
Particle diameter, \(d\) [m]. |
required | |
eps |
Void fraction, \(\varepsilon\). |
required | |
k_s |
Thermal conductivity of the solid, \(k_s\) [W/m⋅K]. |
required |
effective_film_thickness_ratio
staticmethod
Calculates the ratio between the effective thickness of the fluid film adjacent to the surface of two solid particles and the particle diameter according to the interpolation of Kunii and Smith1 for \(0.260 \leq \varepsilon \leq 0.476\)
where
where \(\kappa = k_s/k_f\) and the interpolation bounds are given by \(\sin^2 \theta_i = \frac{1}{n_i}\) for \(n_1 = 1.5\) and \(n_2 = 4\sqrt{3}\).
-
D. Kunii and J. Smith, “Heat transfer characteristics of porous rocks,” AIChE Journal, vol. 6, no. 1, pp. 71–78, 1960. ↩
Parameters:
Name | Type | Description | Default |
---|---|---|---|
k_s |
Thermal conductivity of the solid, \(k_s\) [W/m⋅K]. |
required | |
k_f |
Thermal conductivity of the fluid, \(k_f\) [W/m⋅K]. |
required | |
eps |
Void fraction, \(\varepsilon\). |
required |
void_radiative_heat_transfer_coeff
staticmethod
Calculates the void-to-void radiative heat transfer coefficient for a packed bed given by the correlation of Yagi and Kunii1
-
S. Yagi and D. Kunii, “Studies on effective thermal conductivities in packed beds,” AIChE Journal, vol. 3, no. 3, pp. 373–381, 1957. ↩
Parameters:
Name | Type | Description | Default |
---|---|---|---|
T |
Temperature, \(T\) [K]. |
required | |
eps |
Void fraction, \(\varepsilon\). |
required | |
E_s |
Emissivity of the solid, \(E_s\). |
required |
surface_radiative_heat_transfer_coeff
staticmethod
Calculates the surface-to-surface radiative heat transfer coefficient for a packed bed given by the correlation of Yagi and Kunii1
-
S. Yagi and D. Kunii, “Studies on effective thermal conductivities in packed beds,” AIChE Journal, vol. 3, no. 3, pp. 373–381, 1957. ↩
Parameters:
Name | Type | Description | Default |
---|---|---|---|
T |
Temperature, \(T\) [K]. |
required | |
E_s |
Emissivity of the solid, \(E_s\). |
required |
effective_thermal_conductivity
staticmethod
Approximates the effective thermal conductivity in a packed bed using the model of Kunii and Smith1
-
D. Kunii and J. Smith, “Heat transfer characteristics of porous rocks,” AIChE Journal, vol. 6, no. 1, pp. 71–78, 1960. ↩
Parameters:
Name | Type | Description | Default |
---|---|---|---|
k_f |
Thermal conductivity of the fluid, \(k_f\) [W/m⋅K]. |
required | |
k_s |
Thermal conductivity of the solid, \(k_s\) [W/m⋅K]. |
required | |
eps |
Void fraction. \(\varepsilon\). |
required | |
h_rv |
Void-to-void radiative heat transfer coefficient, \(h_{rv}\) [W/m2⋅K]. |
required | |
h_rs |
Surface-to-surface radiative heat transfer coefficient, \(h_{rs}\) [W/m2⋅K]. |
required | |
phi |
Effective film thickness ratio, \(\phi\). |
required | |
d |
Solid particle diameter, \(d\) [m]. |
required | |
beta |
Ratio of the average length between the centers of two neighboring solids to the mean particle diameter, \(\beta = 0.9\) (default). |
0.9
|
volumetric_convective_heat_transfer_coeff
staticmethod
Calculates the volumetric convective heat transfer coefficient as the product of the convective heat transfer coefficient for a spherical particle and the ratio between the particles total heat transfer area and the total volume
The particle convective heat transfer coefficient is given by Pfeffer's correlation1
where \(W\) is given by
and \(G\) is the effective mass flow rate per unit area given by
The lower limit of analytical heat transfer is given by
for a heated isothermal sphere in a quiescent fluid medium; therefore, the maximum of the two values is taken.
-
R. Pfeffer, “Heat and mass transport in multiparticle systems,” Industrial & Engineering Chemistry Fundamentals, vol. 3, no. 4, pp. 380–383, 1964. ↩
Parameters:
Name | Type | Description | Default |
---|---|---|---|
m_dot |
Mass flow rate [kg/s]. |
required | |
k_f |
Thermal conductivity of the fluid, \(k_f\) [W/m⋅K]. |
required | |
cp_f |
Specific heat capacity of the fluid, \(c_{p_f}\) [J/kg⋅K]. |
required | |
eps |
Void fraction, \(\varepsilon\). |
required | |
d |
Particle diameter, \(d\) [m]. |
required | |
D |
Diameter [m]. |
required |
conv_wall_heat_transfer_coeff
staticmethod
Returns the convective heat transfer coefficient between the fluid and the wall
according to the correlation of Beek1. The Reynolds number \(Re_d\) is defined as
where \(u_0\) is the superficial velocity, or the velocity if no particles were present, given by
The Prandtl number \(Pr\) is defined as
-
J. Beek, “Design of packed catalytic reactors,” in Advances in Chemical Engineering, Elsevier, 1962, pp. 203–271. ↩
Parameters:
Name | Type | Description | Default |
---|---|---|---|
m_dot |
Mass flow rate, \(\dot{m}\) [kg/s]. |
required | |
k_f |
Thermal conductivity of the fluid, \(k_f\) [W/m⋅K]. |
required | |
cp_f |
Specific heat capacity of the fluid, \({c_p}_f\) [J/kg⋅K]. |
required | |
mu_f |
Dynamic viscosity of the fluid, \(\mu_f\) [Pa⋅s]. |
required | |
d |
Particle diameter, \(d\) [m]. |
required | |
D |
Diameter, \(D\) [m]. |
required |
cond_rad_wall_heat_transfer_coeff
staticmethod
Calculates the conductive and radiative wall heat transfer coefficient according to Ofuchi and Kunii1
where
and
where the wall porosity, \(\varepsilon_{wall}\), is assumed to be \(0.4\) and \(\phi_{wall}\) is given by
where \(\kappa = k_s/k_f\).
-
K. Ofuchi and D. Kunii, “Heat-transfer characteristics of packed beds with stagnant fluids,” International Journal of Heat and Mass Transfer, vol. 8, no. 5, pp. 749–757, 1965. ↩
Parameters:
Name | Type | Description | Default |
---|---|---|---|
k_f |
Thermal conductivity of the fluid, \(k_f\) [W/m⋅K]. |
required | |
k_s |
Thermal conductivity of the solid, \(k_s\) [W/m⋅K]. |
required | |
h_rv |
void-to-void radiative heat transfer coefficient, \(h_{rv}\) [W/m2⋅K]. |
required | |
h_rs |
Solid-to-solid radiative heat transfer coefficient, \(h_{rs}\) [W/m2⋅K]. |
required | |
eps |
Void fraction, \(\varepsilon\). |
required | |
d |
Particle diameter, \(d\) [m]. |
required | |
phi |
Effective film thickness ratio, \(\phi\). |
required |
pressure_drop
staticmethod
Calculates the pressure drop using the modified Ergun's equation1
-
I. Macdonald, M. El-Sayed, K. Mow, and F. Dullien, “Flow through porous media-the Ergun equation revisited,” Industrial & Engineering Chemistry Fundamentals, vol. 18, no. 3, pp. 199–208, 1979. ↩
Parameters:
Name | Type | Description | Default |
---|---|---|---|
dz |
float
|
Axial position step size, \(\Delta z\) [m]. |
required |
rho_f |
float
|
Density of the fluid, \(\rho_f\) [kg/m3]. |
required |
mu_f |
float
|
Dynamic viscosity of the fluid, \(\mu_f\) [Pa⋅s]. |
required |
G |
float
|
Effective mass flow rate per unit cross-section, \(G\) [kg/m2⋅s]. |
required |
eps |
float
|
Void fraction, \(\varepsilon\). |
required |
d |
float
|
Particle diameter, \(d\) [m]. |
required |
psi |
float
|
Sphericity, \(\psi\). |
0.9
|
xi1 |
float
|
Viscous loss coefficient, \(\xi_1\). |
180
|
xi2 |
float
|
Inertial loss coefficient, \(\xi_2\). |
1.8
|