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_m0melting temperature \(\left[K\right]\):\(398.0\)
Q_m0melting latent heat \(\left[\frac{J}{kg}\right]\):\(38.6 \cdot 10^3\)
T_b0boiling temperature \(\left[K\right]\):\(1927\)
Q_b0vaporization heat \(\left[\frac{J}{kg}\right]\):\(856.6 \cdot 10^3\)
p_ssaturation vapor pressure \(\left[Pa\right]\):\(p_s\left(T\right) = \displaystyle1.22 \cdot 10^{10} \cdot \exp{\left(-22552 / T\right)}\)
sigmasurface tension \(\left[\frac{N}{m}\right]\):\(\sigma\left(T\right) = \displaystyle\left(448.5 - 0.0799 \cdot T\right) \cdot 10^{-3}\)
u_sspeed of sound \(\left[\frac{m}{s}\right]\):\(u_s\left(T\right) = \displaystyle1855 - 0.212 \cdot T\)
alphathermal expansion coefficient \(\left[\frac{1}{K}\right]\):\(\alpha\left(T\right) = \displaystyle\left(8558 - T\right)^{-1}\)
cpspecific 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}\)
rhodensity \(\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_sisentropic 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}\)
hspecific 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)\)
mudynamic viscosity \(\left[Pa \cdot s\right]\):\(\mu\left(T\right) = \displaystyle4.94 \cdot 10^{-4} \cdot \exp{\left(754.1 / T\right)}\)
relectrical resistivity \(\left[\Omega \cdot m\right]\):\(r\left(T\right) = \displaystyle\left(90.9 + 0.048 \cdot T\right) \cdot 10^{-8}\)
kthermal 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\)
PrPrandtl 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:
Mmolar 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
Hmolar enthalpy \(\left[\frac{J}{mol}\right]\):\(H\left(T\right) = \displaystyle h\left(T\right) \cdot \frac{M}{1000}\)
Smolar 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\)
GGibbs free energy \(\left[\frac{J}{mol}\right]\):\(G\left(T\right) = \displaystyle H\left(T\right) - T \cdot S\left(T\right)\)
pb_alead chemical activity \(\left[ - \right]\):\(pb\_a\left(T\right) = \displaystyle0.42206 - \frac{63.2}{T}\)
bi_abismuth chemical activity \(\left[ - \right]\):\(bi\_a\left(T\right) = \displaystyle0.53381 - \frac{56.2}{T}\)
fe_soliron solubility \(\left[wt.\%\right]\):\(fe\_sol\left(T\right) = \displaystyle10^{2.00 - 4399 / T}\)
ni_solnickel 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_solchromium solubility \(\left[wt.\%\right]\):\(cr\_sol\left(T\right) = \displaystyle10^{1.12 - 3056 / T}\)
o_soloxygen solubility \(\left[wt.\%\right]\):\(o\_sol\left(T\right) = \displaystyle10^{2.25 - 4125 / T}\)
o_difoxygen diffusivity \(\left[ \frac{cm^2}{s} \right]\):\(o\_dif\left(T\right) = \displaystyle2.39 \cdot 10^{-2} \cdot \exp{\left(- 43073 /(RT) \right)}\)
fe_difiron diffusivity \(\left[ \frac{cm^2}{s} \right]\):\(fe\_dif\left(T\right) = \displaystyle10^{- 2.31 - 2295 / T}\)
o_ppoxygen 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_satlower 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_satlower 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_satlower 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_satlower 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_satlower 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_crlower 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_nilower 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_felower 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]