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:

  1. 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)}\)

  1. 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]