def linearExpansion(self, Tk=None, Tc=None): """ Linear expansion coefficient. Curve fit from data in [#ornltm2000]_""" Tk = getTk(Tc, Tk) self.checkTempRange(273, 3120, Tk, "linear expansion") return 1.06817e-12 * Tk ** 2 - 1.37322e-9 * Tk + 1.02863e-5
def linearExpansionPercent(self, Tk=None, Tc=None): """ Approximate the linear thermal expansion percent from the linear expansion coefficient, taking 298K as the reference temperature. """ Tk = getTk(Tc=Tc, Tk=Tk) linearExpansionCoef = self.linearExpansion(Tk=Tk) return 100 * (linearExpansionCoef * (Tk - 298))
def volumetricExpansion(self, Tk=None, Tc=None): r"""volumetric expansion inferred from density. NOT BASED ON MEASUREMENT. Done by V. sobolev/ J Nucl Mat 362 (2007) 235-247""" Tk = getTk(Tc, Tk) self.checkTempRange(600, 1700, Tk, "volumetric expansion") return 1.0 / (9516.9 - Tk)
def linearExpansionPercent(self, Tk=None, Tc=None): """ Gets the linear expansion from eq. 3 in [Chandrabhanu]_ for U-10Zr. """ tk = units.getTk(Tc, Tk) tk2 = tk * tk tk3 = tk2 * tk return -0.73 + 3.489e-3 * tk - 5.154e-6 * tk2 + 4.39e-9 * tk3
def linearExpansionPercent(self, Tk=None, Tc=None): """ Gets the linear expansion from E.2.2.2 in [MFH]_ for HT9. The ref gives dL/L0 in percent and is valid from 293 - 1050 K. """ tk = units.getTk(Tc, Tk) self.checkTempRange(293, 1050, tk, "linear expansion") return -0.16256 + 1.62307e-4 * tk + 1.42357e-6 * tk**2 - 5.50344e-10 * tk**3
def thermalConductivity(self, Tk: float = None, Tc: float = None) -> float: """The thermal conductivity of pure U in W-m/K.""" Tk = getTk(Tc, Tk) (TLowerLimit, TUpperLimit ) = self.propertyValidTemperature["thermal conductivity"][0] self.checkTempRange(TLowerLimit, TUpperLimit, Tk, "thermal conductivity") kU = 21.73 + (0.01591 * Tk) + (0.000005907 * Tk**2) return kU
def volumetricExpansion(self, Tk=None, Tc=None): r"""P. Espeau, R. Ceolin "density of molten sulfur in the 334-508K range" This is just a two-point interpolation.""" Tk = getTk(Tc, Tk) self.checkTempRange(334, 430, Tk, "volumetric expansion") return utils.linearInterpolation( x0=334, y0=5.28e-4, x1=430, y1=5.56e-4, targetX=Tk )
def density(self, Tk=None, Tc=None): """ Density in (g/cc) Polynomial line fit to data from [#ornltm2000]_ on page 11. """ Tk = getTk(Tc, Tk) self.checkTempRange(300, 3100, Tk, "thermal conductivity") return (-1.01147e-7 * Tk ** 2 - 1.29933e-4 * Tk + 1.09805e1) * self.getTD()
def linearExpansionPercent(self, Tk=None, Tc=None): r""" Finds the linear expansion coefficient of Be9. given T in C returns m/m-K Based on http://www-ferp.ucsd.edu/LIB/PROPS/PANOS/be.html which is in turn based on Fusion Engineering and Design . FEDEEE 5(2), 141-234 (1987) """ Tk = getTk(Tc, Tk) self.checkTempRange(50, 1560.0, Tk, "linear expansion") return 1e-4 * (8.4305 + 1.1464e-2 * Tk - 2.9752e-6 * Tk**2)
def thermalConductivity(self, Tk=None, Tc=None): """ Thermal conductivity in W/mK. Reference: AAA Fuels handbook. ANL. """ Tc = getTc(Tc, Tk) Tk = getTk(Tc, Tk) self.checkTempRange(298, 2000, Tk, "thermal conductivity") return 8.853 + (0.007082 * Tk) + (0.000002533 * Tk ** 2) + (2992.0 / Tk)
def thermalConductivity(self, Tk=None, Tc=None): """ Thermal conductivity Ref: Thermal conductivity of uranium dioxide by nonequilibrium molecular dynamics simulation. S. Motoyama. Physical Review B, Volume 60, Number 1, July 1999 """ Tk = getTk(Tc, Tk) self.checkTempRange(300, 3000, Tk, "density") return interp(Tk, self.thermalConductivityTableK, self.thermalConductivityTable)
def _computeReferenceDensity(self, Tk=None, Tc=None): r"""AAA Materials Handbook 45803""" Tc = getTc(Tc, Tk) Tk = getTk(Tc, Tk) self.checkTempRange(293, 1800, Tk, "density") if Tk < 1135: return -3.29256e-8 * Tk ** 2 - 9.67145e-5 * Tk + 6.60176 else: return -2.61683e-8 * Tk ** 2 - 1.11331e-4 * Tk + 6.63616
def linearExpansionPercent(self, Tk=None, Tc=None): """ Return the linear expansion percent for Scandium Oxide (Scandia). Notes ----- From Table 4 of "Thermal Expansion and Phase Inversion of Rare-Earth Oxides. """ Tk = getTk(Tc, Tk) self.checkTempRange(273.15, 1573.15, Tk, "linear expansion percent") return 2.6045e-07 * Tk**2 + 4.6374e-04 * Tk - 1.4696e-01
def density(self, Tk=None, Tc=None, check_range=True): r""" Calculates the density of molten Potassium in g/cc From Foust, O.J. Sodium-NaK Engineering Handbook Vol. 1. New York: Gordon and Breach, 1972. Page 18. """ Tc = getTc(Tc, Tk) Tk = getTk(Tc, Tk) if check_range: self.checkTempRange(63.38, 759, Tk, "density") return 0.8415 - 2.172e-4 * Tc - 2.70e-8 * Tc**2 + 4.77e-12 * Tc**3
def thermalConductivity(self, Tk=None, Tc=None): """ Thermal conductivity in W/m-K) From [MFH]_, E.2.2.3, eq 5. .. tip:: This can probably be sped up with a polynomial evaluator. """ Tk = units.getTk(Tc, Tk) return (29.65 - 6.668e-2 * Tk + 2.184e-4 * Tk**2 - 2.527e-7 * Tk**3 + 9.621e-11 * Tk**4)
def density(self, Tk=None, Tc=None): """ Return the density of Sodium Chloride. Notes ----- From equation 10 of Thermophysical Properties of NaCl NaBr and NaF by y-ray attenuation technique """ Tk = getTk(Tc, Tk) return -3.130e-04 * Tk + 2.23
def linearExpansionPercent(self, Tk=None, Tc=None): """ Return the linear expansion percent for Yttrium Oxide (Yttria). Notes ----- From Table 5 of "Thermal Expansion and Phase Inversion of Rare-Earth Oxides. """ Tk = getTk(Tc, Tk) self.checkTempRange(273.15, 1573.15, Tk, "linear expansion percent") return 1.4922e-07 * Tk ** 2 + 6.2448e-04 * Tk - 1.8414e-01
def density(self, Tk=None, Tc=None): """same reference as linear expansion. Table II. Reference density is from Wolfram Alpha At STP (273 K)""" Tk = getTk(Tc, Tk) rho0 = 3.58 self.checkTempRange(273, 1273, Tk, "density") dLL = self.linearExpansionPercent(Tk=Tk) dRho = (1 - (1 + dLL) ** 3) / (1 + dLL) ** 3 density = rho0 * (1 + dRho) return density
def linearExpansion(self, Tk=None, Tc=None): r"""linear expansion in m/mK Reference: Y.S. Touloukian, R.K. Kirby, R.E. Taylor and P.D. Desai, Thermal Expansion, Thermophysical Properties of Matter, Vol. 12, IFI/Plenum, New York-Washington (1975) See page 400 """ Tc = getTc(Tc, Tk) Tk = getTk(Tc, Tk) self.checkTempRange(293, 1800, Tk, "linear expansion") return interp(Tk, self.linearExpansionTableK, self.linearExpansionTable)
def linearExpansion(self, Tk=None, Tc=None): r""" Finds the linear expansion coefficient of Be9. given T in C returns m/m-K Based on Austenitic SS http://www-ferp.ucsd.edu/LIB/PROPS/PANOS/ss.html which is in turn based on Fusion Engineering and Design . FEDEEE 5(2), 141-234 (1987) Valid up to 1000K """ Tk = getTk(Tc, Tk) self.checkTempRange(50, 1560.0, Tk, "linear expansion") return 1e-6 * 11.4
def enthalpy(self, Tk=None, Tc=None): """ Return enthalpy in J/kg. From [ANL-RE-95-2]_, Table 1.1-2. """ Tk = getTk(Tc, Tk) self.checkTempRange(371.0, 2000.0, Tk, "enthalpy") enthalpy = (-365.77 + 1.6582 * Tk - 4.2395e-4 * Tk**2 + 1.4847e-7 * Tk**3 + 2992.6 / Tk) enthalpy = enthalpy * 1000 # convert from kJ/kg to kJ/kg return enthalpy
def linearExpansionPercent(self, Tk=None, Tc=None): """ Return the linear expansion percent for Copper Notes ----- Digitized using Engauge Digitizer from Figure 21 of Thrust Chamber Life Prediction - Volume I - Mechanical and Physical Properties of High Performance Rocket Nozzle Materials (NASA CR - 134806) """ Tk = getTk(Tc, Tk) self.checkTempRange(40.43, 788.83, Tk, "linear expansion percent") return 5.0298e-07 * Tk**2 + 1.3042e-03 * Tk - 4.3097e-01
def linearExpansionPercent(self, Tk=None, Tc=None): """ Return the linear expansion percent for Polycrystalline ZnO Notes ----- Digitized from Figure 1.24 from Zinc Oxide: Fundamentals, Materials and Device Technology """ Tk = getTk(Tc, Tk) self.checkTempRange(10.12, 1491.28, Tk, "linear expansion percent") return (-1.9183e-03 * Tk**3 + 6.5944e-07 * Tk**2 + 5.2992e-05 * Tk - 5.2631e-02)
def linearExpansionPercent(self, Tk=None, Tc=None): """THE COEFFICIENT OF EXPANSION OF MAGNESIUM OXIDE Milo A. Durand Journal of Applied Physics 7, 297 (1936); doi: 10.1063/1.174539 This is based on a 3rd order polynomial fit of the data in Table I. """ # Note: This is in C! Others are mostly in K. Depends on reference. Tc = getTc(Tc, Tk) Tk = getTk(Tc, Tk) self.checkTempRange(273.15, 1273.15, Tk, "deltaL") return 1.0489e-5 * Tc + 6.0458e-9 * Tc ** 2 - 2.6875e-12 * Tc ** 3
def getProperty(self, propName, Tk=None, Tc=None, **kwargs): r"""gets properties in a way that caches them. """ Tk = getTk(Tc, Tk) cached = self._getCached(propName) if cached and cached[0] == Tk: # only use cached value if the temperature at which it is cached is the same. return cached[1] else: # go look it up from material properties. val = getattr(self, propName)(Tk=Tk, **kwargs) # cache only one value for each property. Prevents unbounded cache explosion. self._setCache(propName, (Tk, val)) return val
def linearExpansionPercent(self, Tk=None, Tc=None): """ Return dL/L From Section 3.3 of [#ornltm2000]_ """ Tk = getTk(Tc, Tk) self.checkTempRange(273, self.meltingPoint(), Tk, "linear expansion percent") if Tk >= 273.0 and Tk < 923.0: return (-2.66e-03 + 9.802e-06 * Tk - 2.705e-10 * Tk**2 + 4.391e-13 * Tk**3) * 100.0 else: return (-3.28e-03 + 1.179e-05 * Tk - 2.429e-09 * Tk**2 + 1.219e-12 * Tk**3) * 100.0
def heatCapacity(self, Tk=None, Tc=None): """ Heat capacity in J/kg-K. From Section 4.3 in [#ornltm2000]_ """ Tk = getTk(Tc, Tk) self.checkTempRange(298.15, 3120, Tk, "heat capacity") hcc = self.heatCapacityConstants # eq 4.2 specificHeatCapacity = ( hcc.c1 * (hcc.theta / Tk)**2 * math.exp(hcc.theta / Tk) / (math.exp(hcc.theta / Tk) - 1.0)**2 + 2 * hcc.c2 * Tk + hcc.c3 * hcc.Ea * math.exp(-hcc.Ea / Tk) / Tk**2) return specificHeatCapacity
def vaporPressure(self, Tk=None, Tc=None): """ Returns vapor pressure in (Pa) Parameters ---------- Tk: float temperature in Kelvin Tc: float temperature in Celcius Returns ------- vaporPressure: float vapor pressure in Pa Notes ----- IAPWS-IF97 http://www.iapws.org/relguide/supsat.pdf IAPWS-IF97 is now the international standard for calculations in the steam power industry """ tau = self.tau(Tc=Tc, Tk=Tk) T_ratio = self.TEMPERATURE_CRITICAL_K / getTk(Tc=Tc, Tk=Tk) a1 = -7.85951783 a2 = 1.84408259 a3 = -11.7866497 a4 = 22.6807411 a5 = -15.9618719 a6 = 1.80122502 sum_coefficients = ( a1 * tau + a2 * tau ** 1.5 + a3 * tau ** 3 + a4 * tau ** 3.5 + a5 * tau ** 4 + a6 * tau ** 7.5 ) log_vapor_pressure = T_ratio * sum_coefficients vapor_pressure = self.VAPOR_PRESSURE_CRITICAL_PA * math.e ** ( log_vapor_pressure ) # past the supercritical point tau's raised to .5 cause complex #'s return vapor_pressure.real
def vaporPressurePrime(self, Tk=None, Tc=None, dT=1e-6): """ approximation of derivative of vapor pressure wrt temperature Parameters ---------- Tk: float temperature in Kelvin Tc: float temperature in Celcius Note ---- this uses a numerical approximation """ Tcold = getTk(Tc=Tc, Tk=Tk) - dT / 2.0 Thot = Tcold + dT dp = self.vaporPressure(Tk=Thot) - self.vaporPressure(Tk=Tcold) return dp / dT
def linearExpansionPercent(self, Tk=None, Tc=None): r"""linear expansion in dL/L Reference: Y.S. Touloukian, R.K. Kirby, R.E. Taylor and P.D. Desai, Thermal Expansion, Thermophysical Properties of Matter, Vol. 12, IFI/Plenum, New York-Washington (1975) See page 400 """ Tc = getTc(Tc, Tk) Tk = getTk(Tc, Tk) self.checkTempRange(293, 1800, Tk, "linear expansion percent") if Tk >= 293 and Tk < 1137: return ( -0.111 + (2.325e-4 * Tk) + (5.595e-7 * Tk ** 2) - (1.768e-10 * Tk ** 3) ) elif Tk >= 1137: return ( -0.759 + (1.474e-3 * Tk) - (5.140e-7 * Tk ** 2) + (1.559e-10 * Tk ** 3) )