bismuth Module
Module implementing the liquid bismuth class.
A Bismuth
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, Bismuth
class dynamically adds the
thermo-physical properties implemented in lbh15.properties.bismuth_properties
module and the
thermo-chemical properties implemented in lbh15.properties.bismuth_thermochemical_properties.diffusivity_in_bismuth
,
lbh15.properties.bismuth_thermochemical_properties.bismuth_thermochemical
and
lbh15.properties.bismuth_thermochemical_properties.solubility_in_bismuth
modules. For instance:
>>> from lbh15 import Bismuth
>>> liquid_bismuth = Bismuth(T=668.15)
>>> liquid_bismuth.rho
9909.857
In detail, a Bismuth
object comes with the following default properties:
Thermo-physical:
T_m0
melting temperature \(\left[K\right]\):\(544.6\)
Q_m0
melting latent heat \(\left[\frac{J}{kg}\right]\):\(53.3 \cdot 10^3\)
T_b0
boiling temperature \(\left[K\right]\):\(1831\)
Q_b0
vaporization heat \(\left[\frac{J}{kg}\right]\):\(856.2 \cdot 10^3\)
p_s
saturation vapor pressure \(\left[Pa\right]\):\(p_s\left(T\right) = \displaystyle2.67 \cdot 10^{10} \cdot \exp{\left(-22858/T\right)}\)
sigma
surface tension \(\left[\frac{N}{m}\right]\):\(\sigma\left(T\right) = \displaystyle\left(420.8 - 0.081 \cdot T \right) \cdot 10^{-3}\)
u_s
speed of sound \(\left[\frac{m}{s}\right]\):\(u_s\left(T\right) = \displaystyle1616 + 0.187 \cdot T - 2.2 \cdot 10^{-4} \cdot T^2\)
alpha
thermal expansion coefficient \(\left[\frac{1}{K}\right]\):\(\alpha\left(T\right) = \displaystyle\left(8791 - T\right)^{-1}\)
cp
specific heat capacity \(\left[\frac{J}{kg{\cdot}K}\right]\):\(c_p\left(T\right) = \displaystyle118.2 + 5.934 \cdot 10^{-3} \cdot T + 7.183 \cdot 10^6 \cdot T^{-2}\)
rho
density \(\left[\frac{kg}{m^3}\right]\):\(\rho_0\left(T\right) = \displaystyle10725 - 1.22{\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) = \displaystyle118.2 \cdot \left(T - T_{m0}\right) + 2.967 \cdot 10^{-3} \cdot \left(T^2 - T_{m0}^2\right)\)
\(\qquad\qquad - 7.183 \cdot 10^6 \cdot \left(T^{-1} - T_{m0}^{-1}\right)\)
mu
dynamic viscosity \(\left[Pa{\cdot}s\right]\):\(\mu\left(T\right) = \displaystyle4.456 \cdot 10^{-4} \cdot \exp{\left(780 / T\right)}\)
r
electrical resistivity \(\left[\Omega{\cdot}m\right]\):\(r\left(T\right) = \displaystyle\left(98.96 + 0.0554 \cdot T \right) \cdot 10^{-8}\)
k
thermal conductivity \(\left[\frac{W}{m \cdot K}\right]\):\(k\left(T\right) = \displaystyle7.34 + 9.5 \cdot 10^{-3} \cdot T\)
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]\):\(208.98\)
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)\)
fe_sol
iron solubility \(\left[wt.\%\right]\):\(fe\_sol\left(T\right) = \displaystyle10^{2.20 - 3930 / T}\)
ni_sol
nickel solubility \(\left[wt.\%\right]\):\(ni\_sol\left(T\right) = \displaystyle10^{3.81 - 2429 / T} \quad \Longleftrightarrow \quad 543 K <= T < 738 K\)
\(ni\_sol\left(T\right) = \displaystyle10^{2.05 - 1131 / T} \quad \Longleftrightarrow \quad 738 K <= T < 918 K\)
\(ni\_sol\left(T\right) = \displaystyle10^{1.35 - 484 / T} \quad \Longleftrightarrow \quad 918 K <= T < 1173 K\)
cr_sol
chromium solubility \(\left[wt.\%\right]\):\(cr\_sol\left(T\right) = \displaystyle10^{2.34 - 3610 / T}\)
o_sol
oxygen solubility \(\left[wt.\%\right]\):\(o\_sol\left(T\right) = \displaystyle10^{2.30 - 4066 / T} \quad \Longleftrightarrow \quad T <= 1002 K\)
\(o\_sol\left(T\right) = \displaystyle10^{3.04 - 4810 / T} \quad \Longleftrightarrow \quad T > 1002 K\)
o_dif
oxygen diffusivity \(\left[ \frac{cm^2}{s} \right]\):\(o\_dif\left(T\right) = \displaystyle1.07 \cdot 10^{-2} \cdot \exp{\left(- 49229 /\left(RT\right) \right)}\)
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( - 101098 / T + 15.66 \right) }\), \(\quad\) where:
\(M_O = 16 \frac{g}{mol} \quad\) oxygen molecular mass
where \(T\) is the bismuth temperature in \(\left[K\right]\), \(p\) is the bismuth 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 Bismuth
object dynamically adds the methods named
<property_name>_info
, that return full information about the corresponding property. For instance:
>>> from lbh15 import Bismuth
>>> liquid_bismuth = Bismuth(T=668.15)
>>> liquid_bismuth.rho_info()
rho:
Value: 9909.86 [kg/m^3]
Validity range: [544.60, 1831.00] K
Correlation name: 'imbeni1998'
Long name: density
Units: [kg/m^3]
Description:
Liquid bismuth density
Bismuth
Class Attributes
Module with the definition of bismuth liquid metal object class, i.e., Bismuth
- class Bismuth(p: float = scipy.constants.atm, **kwargs)
Class to model liquid bismuth 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]\)
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]\)
o_pp (float) : Oxygen partial pressure divided by Oxygen concentration squared \([Pa / wt.\%^2]\)
Example
>>> liquid_bismuth = Bismuth(T=670.0) >>> liquid_bismuth.k # [W/(m*K)] 13.705
- 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]