lbe Module
Module implementing the liquid lead-bismuth-eutectic (lbe) class.
A LBE
instance can be created by providing either the temperature value or the value of one
of the available properties. The instantiation based on the value of
properties other than the temperature passes through the solution, in terms of the temperature value,
of the corresponding correlation implemented in the lbh15 package.
In addition to the class attributes that are shown in the second part of this section, LBE
class dynamically adds the
thermo-physical properties implemented in lbh15.properties.lbe_properties
module and the
thermo-chemical properties implemented in lbh15.properties.lbe_thermochemical_properties.diffusivity_in_lbe
,
lbh15.properties.lbe_thermochemical_properties.lbe_oxygen_limits
,
lbh15.properties.lbe_thermochemical_properties.lbe_thermochemical
and
lbh15.properties.lbe_thermochemical_properties.solubility_in_lbe
modules. For instance:
>>> from lbh15 import LBE
>>> liquid_lbe = LBE(T=668.15)
>>> liquid_lbe.k
13.058977206137499
In detail, a LBE
object comes with the following default properties:
Thermo-physical:
T_m0
melting temperature \(\left[K\right]\):\(398.0\)
Q_m0
melting latent heat \(\left[\frac{J}{kg}\right]\):\(38.6 \cdot 10^3\)
T_b0
boiling temperature \(\left[K\right]\):\(1927\)
Q_b0
vaporization heat \(\left[\frac{J}{kg}\right]\):\(856.6 \cdot 10^3\)
p_s
saturation vapor pressure \(\left[Pa\right]\):\(p_s\left(T\right) = \displaystyle1.22 \cdot 10^{10} \cdot \exp{\left(-22552 / T\right)}\)
sigma
surface tension \(\left[\frac{N}{m}\right]\):\(\sigma\left(T\right) = \displaystyle\left(448.5 - 0.0799 \cdot T\right) \cdot 10^{-3}\)
u_s
speed of sound \(\left[\frac{m}{s}\right]\):\(u_s\left(T\right) = \displaystyle1855 - 0.212 \cdot T\)
alpha
thermal expansion coefficient \(\left[\frac{1}{K}\right]\):\(\alpha\left(T\right) = \displaystyle\left(8558 - T\right)^{-1}\)
cp
specific heat capacity \(\left[\frac{J}{kg{\cdot}K}\right]\):\(c_p\left(T\right) = \displaystyle164.8 - 3.94 \cdot 10^{-2} \cdot T + 1.25 \cdot 10^{-5} \cdot T^2 - 4.56 \cdot 10^5 \cdot T^{-2}\)
rho
density \(\left[\frac{kg}{m^3}\right]\):\(\rho_0\left(T\right) = \displaystyle11065 - 1.293 \cdot T\)
\(\rho\left(T,p\right) = \displaystyle\rho_0\left(T\right) + \left( \frac{1}{u_s\left(T\right)^2} + T \cdot \frac{\alpha\left(T\right)^2}{c_p\left(T\right)} \right) \cdot \left( p - p_{atm} \right)\), \(\quad\) where:
\(\quad p_{atm}=101325.00 \left[Pa\right]\)
beta_s
isentropic compressibility \(\left[\frac{1}{Pa}\right]\):\(\beta_s\left(T\right) = \displaystyle\frac{1}{\rho\left(T,p\right) \cdot u_s\left(T\right)^2}\)
h
specific enthalpy (as difference with respect to the melting point enthalpy) \(\left[\frac{J}{kg}\right]\):\(h\left(T\right) = \displaystyle164.8 \cdot \left(T - T_{m0}\right) - 1.97 \cdot 10^{-2} \cdot \left(T^2 - T_{m0}^2\right)\)
\(\qquad\qquad + 4.167 \cdot 10^{-6} \cdot \left(T^3 - T_{m0}^3\right) + 4.56 \cdot 10^5 \cdot \left(T^{-1} - T_{m0}^{-1}\right)\)
mu
dynamic viscosity \(\left[Pa \cdot s\right]\):\(\mu\left(T\right) = \displaystyle4.94 \cdot 10^{-4} \cdot \exp{\left(754.1 / T\right)}\)
r
electrical resistivity \(\left[\Omega \cdot m\right]\):\(r\left(T\right) = \displaystyle\left(90.9 + 0.048 \cdot T\right) \cdot 10^{-8}\)
k
thermal conductivity \(\left[\frac{W}{m \cdot K}\right]\):\(k\left(T\right) = \displaystyle3.284 + 1.617 \cdot 10^{-2} \cdot T - 2.305 \cdot 10^{-6} \cdot T^2\)
Pr
Prandtl number \(\left[-\right]\):\(Pr\left(T\right) = \displaystyle\frac{c_p\left(T\right) \cdot \mu\left(T\right)}{k\left(T\right)}\)
Thermo-chemical:
M
molar mass \(\left[\frac{g}{mol}\right]\):\(M = \displaystyle0.55 \cdot M_{Bismuth} + 0.45 \cdot M_{Lead}\), \(\quad\) where:
\(M_{Bismuth}\) is the molar mass of bismuth
\(M_{Lead}\) is the molar mass of Lead
H
molar enthalpy \(\left[\frac{J}{mol}\right]\):\(H\left(T\right) = \displaystyle h\left(T\right) \cdot \frac{M}{1000}\)
S
molar entropy \(\left[\frac{J}{mol \cdot K}\right]\):\(S\left(T\right) = \displaystyle \frac{M}{1000} \cdot \int_{T_{m0}}^T \frac{c_p\left(T\right)}{T} dT\)
G
Gibbs free energy \(\left[\frac{J}{mol}\right]\):\(G\left(T\right) = \displaystyle H\left(T\right) - T \cdot S\left(T\right)\)
pb_a
lead chemical activity \(\left[ - \right]\):\(pb\_a\left(T\right) = \displaystyle0.42206 - \frac{63.2}{T}\)
bi_a
bismuth chemical activity \(\left[ - \right]\):\(bi\_a\left(T\right) = \displaystyle0.53381 - \frac{56.2}{T}\)
fe_sol
iron solubility \(\left[wt.\%\right]\):\(fe\_sol\left(T\right) = \displaystyle10^{2.00 - 4399 / T}\)
ni_sol
nickel solubility \(\left[wt.\%\right]\):\(ni\_sol\left(T\right) = \displaystyle10^{4.32 - 2933 / T} \quad \Longleftrightarrow \quad T <= 742 K\)
\(ni\_sol\left(T\right) = \displaystyle10^{1.74 - 1006 / T} \quad \Longleftrightarrow \quad T > 742 K\)
cr_sol
chromium solubility \(\left[wt.\%\right]\):\(cr\_sol\left(T\right) = \displaystyle10^{1.12 - 3056 / T}\)
o_sol
oxygen solubility \(\left[wt.\%\right]\):\(o\_sol\left(T\right) = \displaystyle10^{2.25 - 4125 / T}\)
o_dif
oxygen diffusivity \(\left[ \frac{cm^2}{s} \right]\):\(o\_dif\left(T\right) = \displaystyle2.39 \cdot 10^{-2} \cdot \exp{\left(- 43073 /(RT) \right)}\)
fe_dif
iron diffusivity \(\left[ \frac{cm^2}{s} \right]\):\(fe\_dif\left(T\right) = \displaystyle10^{- 2.31 - 2295 / T}\)
o_pp
oxygen partial pressure divided by oxygen concentration squared \(\left[ \frac{atm}{wt.\%^2} \right]\):\(o\_pp\left(T\right) = \displaystyle \left( \frac{M}{M_O} \right)^2 \cdot 10^{ 2 /\left(2.3 \cdot R\right) \cdot \left( - 127398 / T + 27.938 \right) }\), \(\quad\) where:
\(M_O = 16 \frac{g}{mol} \quad\) oxygen molecular mass
lim_fe_sat
lower limit of ox concentration with iron @ saturation \(\left[wt.\%\right]\):\(lim\_fe\_sat\left(T\right) = \displaystyle pb\_a\left(T\right) \cdot o\_sol\left(T\right) \cdot \exp{\left( - \frac{57190}{R T} - \frac{21.1}{R} \right)}\)
lim_cr_sat
lower limit of ox concentration with chromium @ saturation \(\left[wt.\%\right]\):\(lim\_cr\_sat\left(T\right) = \displaystyle pb\_a\left(T\right) \cdot o\_sol\left(T\right) \cdot \exp{\left( - \frac{317800}{2 R T} - \frac{27.3}{2 R} \right)}\)
lim_ni_sat
lower limit of ox concentration with nickel @ saturation \(\left[wt.\%\right]\):\(lim\_ni\_sat\left(T\right) = \displaystyle pb\_a\left(T\right) \cdot o\_sol\left(T\right) \cdot \exp{\left( - \frac{36080}{2 R T} - \frac{23.4}{2 R} \right)}\)
lim_si_sat
lower limit of ox concentration with silicon @ saturation \(\left[wt.\%\right]\):\(lim\_si\_sat\left(T\right) = \displaystyle pb\_a\left(T\right) \cdot o\_sol\left(T\right) \cdot \exp{\left( - \frac{471710}{2 R T} - \frac{19.5}{2 R} \right)}\)
lim_al_sat
lower limit of ox concentration with aluminium @ saturation \(\left[wt.\%\right]\):\(lim\_al\_sat\left(T\right) = \displaystyle pb\_a\left(T\right) \cdot o\_sol\left(T\right) \cdot \exp{\left( - \frac{679540}{2 R T} + \frac{10.7}{2R} \right)}\)
lim_cr
lower limit of ox concentration times chromium concentration raised to \(2/3\) \(\left[wt.\%\right]\):\(lim\_cr\left(T\right) = \displaystyle lim\_cr\_sat\left(T\right) \cdot cr\_sol\left(T\right)^{2/3}\)
lim_ni
lower limit of ox concentration times nickel concentration \(\left[wt.\%\right]\):\(lim\_ni\left(T\right) = \displaystyle lim\_ni\_sat\left(T\right) \cdot ni\_sol\left(T\right)\)
lim_fe
lower limit of ox concentration times iron concentration raised to \(3/4\) \(\left[wt.\%\right]\):\(lim\_fe\left(T\right) = \displaystyle lim\_fe\_sat\left(T\right) \cdot fe\_sol\left(T\right)^{3/4}\)
where \(T\) is the lbe temperature in \(\left[K\right]\), \(p\) is the lbe pressure in \(\left[Pa\right]\) and \(R\) is the molar gas constant in \(\left[J/(mol K)\right]\).
In addition to provide the properties values directly, the LBE
object dynamically adds the methods named
<property_name>_info
, that return full information about the corresponding property. For instance:
>>> from lbh15 import LBE
>>> liquid_lbe = LBE(T=668.15)
>>> liquid_lbe.k_info()
k:
Value: 13.06 [W/(m*K)]
Validity range: [398.00, 1200.00] K
Correlation name: 'sobolev2011'
Long name: thermal conductivity
Units: [W/(m*K)]
Description:
Liquid lbe thermal conductivity
LBE
Class Attributes
Module with the definition of lead-bismuth eutectic liquid metal object class, i.e., LBE
- class LBE(p: float = scipy.constants.atm, **kwargs)
Class to model liquid lbe properties either at a given temperature or at a given value of a specific property to choose among a list of available properties.
- Parameters:
p (float, optional) – Pressure in [Pa], by default the atmospheric pressure value, i.e., 101325.0 Pa
**kwargs (dict) –
One-item dictionary that specifies the quantity which the object shall be initialized from. The available ones by default are:
T (float) : temperature \([K]\)
p_s (float) : saturation vapour pressure \([Pa]\)
sigma (float) : surface tension \([N/m]\)
rho (float) : density \([kg/m^3]\)
alpha (float) : thermal expansion coefficient \([1/K]\)
u_s (float) : speed of sound \([m/s]\)
beta_s (float) : isentropic compressibility \([1/Pa]\)
cp (float) : specific heat capacity \([J/(kg \cdot K)]\)
h (float) : specific enthalpy (with respect to melting point) \([J/kg]\)
mu (float) : dynamic viscosity \([Pa \cdot s]\)
r (float) : electrical resistivity \([Ohm \cdot m]\)
k (float) : thermal conductivity \([W/(m \cdot K)]\)
H (float) : molar enthalpy \([J/mol]\)
S (float) : molar entropy \([J/(mol \cdot K)]\)
G (float) : Gibbs free energy \([J/mol]\)
pb_a (float) : Lead chemical activity \([-]\)
bi_a (float) : Bismuth chemical activity \([-]\)
fe_sol (float) : Iron solubility \([wt.\%]\)
ni_sol (float) : Nickel solubility \([wt.\%]\)
cr_sol (float) : Chromium solubility \([wt.\%]\)
o_sol (float) : Oxygen solubility \([wt.\%]\)
o_dif (float) : Oxygen diffusivity \([m^2 / s]\)
fe_dif (float) : Iron diffusivity \([m^2 / s]\)
o_pp (float) : Oxygen partial pressure divided by Oxygen concentration squared \([Pa / wt.\%^2]\)
lim_fe_sat (float) : Lower limit of Oxygen concentration with Iron at saturation \([wt.\%]\)
lim_cr_sat (float) : Lower limit of Oxygen concentration with Chromium at saturation \([wt.\%]\)
lim_ni_sat (float) : Lower limit of Oxygen concentration with Nickel at saturation \([wt.\%]\)
lim_si_sat (float) : Lower limit of Oxygen concentration with Silicon at saturation \([wt.\%]\)
lim_al_sat (float) : Lower limit of Oxygen concentration with Aluminium at saturation \([wt.\%]\)
lim_cr (float) : Lower limit of Oxygen concentration times Chromium concentration raised to \(2/3\) \([wt.\%]\)
lim_ni (float) : Lower limit of Oxygen concentration times Nickel concentration \([wt.\%]\)
lim_fe (float) : Lower limit of Oxygen concentration times Iron concentration raised to \(3/4\) \([wt.\%]\)
Example
>>> liquid_lbe = LBE(T=600.0) >>> liquid_lbe.mu # [Pa*s] 0.001736052003181349
- property M: float
metal molar mass \([g/mol]\)
- Type:
float
- property Pr: float
Prandtl number \([-]\)
- Type:
float
- property Q_b0: float
vaporisation heat \([J/kg]\)
- Type:
float
- property Q_m0: float
melting latent heat \([J/kg]\)
- Type:
float
- property T: float
temperature used to compute properties \([K]\)
- Type:
float
- property T_b0: float
boiling temperature \([K]\)
- Type:
float
- property T_m0: float
melting temperature \([K]\)
- Type:
float
- classmethod available_correlations(properties: str | List[str] | None = None) Dict[str, List[str]]
Returns the available correlations for the properties passed as argument. Result is formatted as dictionary, where keys are the required property names and values are the corresponding lists of available correlations. In case at least one required property is not among the implemented ones, a warning message is returned listing the names of all the properties that have not been found. In case no value is passed as argument, the available correlations are returned for all the implemented properties.
- Parameters:
properties (str | List[str] | None) – name(s) of the property(ies) whose available correlations are to be retrieved. If multiple properties are required, the list of their names must be provided, otherwise a simple string is enough. If the correlations are required for all the implemented properties, then None value is to be passed.
- Return type:
Dict[str, List[str]]
- change_correlation_to_use(property_name: str, correlation_name: str) None
Changes property correlation if property is defined as instance attribute, otherwise a warning message is returned without applying any change.
- Parameters:
property_name (str) – Name of the property
correlation_name (str) – Name of the correlation
- check_temperature(T: float) Tuple[bool, str]
Checks whether the provided temperature value belongs to the valid temperature range, i.e., the liquid temperature range.
- Parameters:
T (float) – Temperature in \([K]\)
- Returns:
- bool:
True if check is ok, False otherwise
- str:
error message (if any) associated to the temperature check
- Return type:
Tuple[bool, str]
- classmethod correlations_to_use() Dict[str, str]
Returns the dictionary defining the correlation used for the corresponding property. Only properties are considered for which a specific correlation has been chosen a priori.
- Return type:
Dict[str, str]
- property p: float
pressure adopted for property calculation \([Pa]\), i.e., atmospheric pressure
- Type:
float
- classmethod properties_for_initialization() List[str]
Returns the list of the available properties an instance can be initialized from.
- Return type:
List[str]
- classmethod roots_to_use() Dict[str, int]
Returns the dictionary containing, for each specified property, the index of the root to use for identifying the temperature of the liquid metal. Useful when the initialization is performed from a property whose correlation is not injective.
- Return type:
Dict[str, int]
- classmethod set_correlation_to_use(property_name: str, correlation_name: str) None
Sets the correlation to use for the specified property.
- Parameters:
property_name (str) – Name of the property
correlation_name (str) – Name of the correlation
- classmethod set_custom_properties_path(file_path: str) None
Sets the absolute path of the file where looking for custom properties.
- Parameters:
file_path (str) – absolute path of the file where custom properties are implemented
- classmethod set_root_to_use(property_name: str, root_index: int) None
Sets the index of the root to use for computing the temperature from the correlation function of the property the instantiation is based on. Temperature roots are sorted in ascending order, i.e, \(T_i <= T_j\), with \(i < j\). Used only if property correlation is not injective.
- Parameters:
property_name (str) – Name of the property
root_index (int) – Index of the temperature root to use
- property used_correlations: Dict[str, str]
Returns the dictionary defining the correlation used for the corresponding property. Only properties are considered for which a specific correlation has been chosen a priori.
- Return type:
Dict[str, str]