Source code for pyrk.materials.sodium

from utilities.ur import units
from density_model import DensityModel
from materials.material import Material


[docs]class Sodium(Material): """This class represents Sodium. It inherits from the material class and possesses attributes intrinsic to flibe. """ def __init__(self, name="sodium"): """Initalizes a material, specifically sodium :param name: The name of the component (i.e., "fuel" or "cool") :type name: str. """ Material.__init__(self, name=name, k=self.thermal_conductivity(), cp=self.specific_heat_capacity(), dm=self.density())
[docs] def thermal_conductivity(self): """Sodium thermal conductivity in [W/m-K] TODO, Issue #3 .. math:: k &= 124.67 - 0.11381\\times T &+ 5.5226 \\times 10^{-5}T^2 &- 1.1842\\times 10^8T^3 Below is an estimate of sodium k_th at temperatures around 400C based on table 2.1-1 in http://www.ne.anl.gov/eda/ANL-RE-95-2.pdf (but, note that wikipedia gives it as 142 W/m-K...) """ return 70.0*units.watt/(units.meter*units.kelvin)
[docs] def specific_heat_capacity(self): """Specific heat capacity of Sodium [J/kg/K] actually depends on temperature pretty strongly. TODO, Issue #4 The CODATA equation gives the relation: .. math :: c_p &= 1.6582 - 8.4790\\times10{-4}T &+ 4.4541times{-7}T^2 \\\\ &- 2992.6\\times T^{-2} Below is a constant estimate of sodium cp at temperatures around 400C based on table 1.1-5 in http://www.ne.anl.gov/eda/ANL-RE-95-2.pdf """ to_ret = 1.3*units.kilojoule/(units.kg*units.kelvin) return to_ret.to('J/kg/kelvin')
[docs] def density(self): """ Sodium density as a funciton of T. [kg/m^3] The relation is .. math:: \\rho_l &= \\rho_c + f(1-T/T_c) + g(1-T/T_c)^h\\\\ p_c &= 219 [kg/m^3]\\\\ f &= 275.32 [-]\\\\ g &= 511.58 [-]\\\\ h &= 0.5[-] This is based on http://www.ne.anl.gov/eda/ANL-RE-95-2.pdf It is valid between the melting point and the critical point .. math:: t_m = 371.0K .. math:: t_c = 2503.7K """ return SodiumDensity()
[docs]class SodiumDensity(DensityModel): def __init__(self): """ Sodium density as a function of T. [kg/m^3] The relation is .. math:: \rho_l &= \rho_c + f(1-T/T_c) + g(1-T/T_c)^h\\\\ p_c &= 219 [kg/m^3]\\\\ f &= 275.32 [?]\\\\ g &= 511.58 [?]\\\\ h &= 0.5 This is based on http://www.ne.anl.gov/eda/ANL-RE-95-2.pdf It is valid between the melting point and the critical point .. math:: t_m = 371.0K .. math:: t_c = 2503.7K """ self.rho_c = 219.0*units.kg/pow(units.meter, 3) self.T_c = 2503.7*units.kelvin self.T_m = 371.0*units.kelvin self.f = 275.32*units.kg/pow(units.meter, 3) self.g = 511.58*units.kg/pow(units.meter, 3) self.h = 0.5
[docs] def hornung(self, temp=0.0*units.kelvin): """In the hornung model, K. Hornung [Hornung, 1985] used the available data on the sound velocity and the density of Na to determine its adiabatic and isothermal compressibility. :param temp: the temperature of the sodium :type temp: Quantity (units of kelvin) """ to_ret = self.rho_c + self.f*(1 - temp/self.T_c) + \ self.g*pow((1 - temp/self.T_c), self.h) return to_ret.to('kg/m**3')
[docs] def rho(self, temp=0.0*units.kelvin): return self.hornung(temp)