def thermalConductivity(self, Tc=None, Tk=None): Tc = getTc(Tc, Tk) (TLowerLimit, TUpperLimit ) = self.propertyValidTemperature["thermal conductivity"][0] self.checkTempRange(TLowerLimit, TUpperLimit, Tc, "thermal conductivity") return (52000 * math.exp(-1.24e-5 * Tc)) / (Tc + 437)
def thermalConductivity(self, Tk=None, Tc=None): r""" Calculates the thermal conductivity of Hastelloy N. Second order polynomial fit to data from [Haynes]_. Parameters ---------- Tk : float Temperature in (K) Tc : float Temperature in (C) Returns ------- Hastelloy N thermal conductivity (W/m-K) """ Tc = getTc(Tc, Tk) Tk = getTk(Tc, Tk) (TLowerLimit, TUpperLimit ) = self.propertyValidTemperature["thermal conductivity"][0] self.checkTempRange(TLowerLimit, TUpperLimit, Tk, "thermal conductivity") return 1.92857e-05 * Tc**2 + 3.12857e-03 * Tc + 1.17743e01 # W/m-K
def cumulativeLinearExpansion(self, Tk=None, Tc=None): Tc = getTc(Tc, Tk) (TLowerLimit, TUpperLimit ) = self.propertyValidTemperature["cumulative linear expansion"][0] self.checkTempRange(TLowerLimit, TUpperLimit, Tc, "cumulative linear expansion") return (4.22 + 8.33e-4 * Tc - 3.51 * math.exp(-0.00527 * Tc)) * 1.0e-6
def linearExpansionPercent(self, Tk=None, Tc=None): """Boron carbide expansion. Very preliminary""" Tc = getTc(Tc, Tk) self.checkTempRange(25, 500, Tc, "linear expansion percent") deltaT = Tc - 25 dLL = deltaT * 4.5e-6 * 100 # percent return dLL
def linearExpansion(self, Tk=None, Tc=None): r""" From http://www.specialmetals.com/documents/Inconel%20alloy%20600.pdf Using the correlation for linearExpansionPercent, the 2nd order polynomial is divided by 100 to convert from percent strain to strain, then differentiated with respect to temperature to find the correlation for instantaneous linear expansion. i.e. for a linearExpansionPercent correlation of a*Tc**2 + b*Tc + c, the linearExpansion correlation is 2*a/100*Tc + b/100 2*(3.722e-7/100.0)*Tc + 1.303e-3/100.0 Parameters ---------- Tk : float temperature in (K) Tc : float Temperature in (C) Returns ------- linExp in m/m/C """ Tc = getTc(Tc, Tk) self.checkTempRange(21.0, 900.0, Tc, "linear expansion") linExp = 7.444e-9 * Tc + 1.303e-5 return linExp
def heatCapacity(self, Tk=None, Tc=None): r""" Calculates the specific heat capacity of Hastelloy N. Sixth order polynomial fit to data from Table 2-20 [SAB]_ (R^2=0.97). Parameters ---------- Tk : float Temperature in (K) Tc : float Temperature in (C) Returns ------- Hastelloy N specific heat capacity (J/kg-C) """ Tc = getTc(Tc, Tk) Tk = getTk(Tc, Tk) (TLowerLimit, TUpperLimit) = self.propertyValidTemperature["heat capacity"][0] self.checkTempRange(TLowerLimit, TUpperLimit, Tk, "heat capacity") return (+3.19981e02 + 2.47421e00 * Tc - 2.49306e-02 * Tc**2 + 1.32517e-04 * Tc**3 - 3.58872e-07 * Tc**4 + 4.69003e-10 * Tc**5 - 2.32692e-13 * Tc**6)
def density(self, Tc=None, Tk=None): Tc = getTc(Tc, Tk) (TLowerLimit, TUpperLimit) = self.propertyValidTemperature["density"][0] self.checkTempRange(TLowerLimit, TUpperLimit, Tc, "density") rho0 = 3.16 Tc0 = 0.0 cA = self.cumulativeLinearExpansion(Tc=Tc) return rho0 * (1 + cA * (Tc - Tc0)) ** (-3)
def linearExpansionPercent(self, Tk=None, Tc=None): """ This is dL/L0 for graphite. From [INL-EXT-16-38241]_, page 4. """ Tc = units.getTc(Tc, Tk) return 100 * (-1.454e-4 + 4.812e-6 * Tc + 1.145e-9 * Tc**2)
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): r""" average thermal expansion dL/L. Used for computing hot dimensions Parameters ---------- Tk : float temperature in (K) Tc : float Temperature in (C) Returns ------- %dLL(T) in m/m/K """ Tc = getTc(Tc, Tk) refTempC = getTc(Tk=self.p.refTempK) return 100.0 * self.meanCoefficientThermalExpansion(Tc=Tc) * (Tc - refTempC)
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 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 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 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 polyfitLinearExpansionPercent(self, power=2): r""" Calculates the coefficients of a polynomial fit for linearExpansionPercent. Based on data from http://www.specialmetals.com/documents/Inconel%20alloy%20600.pdf Uses mean CTE values to find percent thermal strain values. Fits a polynomial to the data set and returns the coefficients. Parameters ---------- power : int, optional power of the polynomial fit equation Returns ------- list of length 'power' containing the polynomial fit coefficients for linearExpansionPercent """ refTempC = getTc(None, Tk=self.p.refTempK) Tc = [100.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 800.0, 900.0] alpha_mean = [ 1.33e-05, 1.38e-05, 1.42e-05, 1.45e-05, 1.49e-05, 1.53e-05, 1.58e-05, 1.61e-05, 1.64e-05, ] linExpPercent = [0.0] for i, alpha in enumerate(alpha_mean): linExpPercentVal = 100.0 * alpha * (Tc[i] - refTempC) linExpPercent.append(linExpPercentVal) Tc.insert(0, refTempC) return numpy.polyfit( numpy.array(Tc), numpy.array(linExpPercent), power ).tolist()
def polyfitLinearExpansionPercent(self, power=2): r""" Calculates the coefficients of a polynomial fit for linearExpansionPercent. Based on data from http://www.specialmetals.com/documents/Inconel%20alloy%20X-750.pdf Uses mean CTE values to find percent thermal strain values. Fits a polynomial to the data set and returns the coefficients. Parameters ---------- power : int, optional power of the polynomial fit equation Returns ------- list of length 'power' containing the polynomial fit coefficients for linearExpansionPercent """ refTempC = getTc(None, Tk=self.p.refTempK) Tc = [93.3, 204.4, 315.6, 426.7, 537.8, 648.9, 760.0, 871.1, 982.2] alpha_mean = [ 1.260e-05, 1.296e-05, 1.350e-05, 1.404e-05, 1.458e-05, 1.512e-05, 1.584e-05, 1.674e-05, 1.764e-05, ] linExpPercent = [0.0] for i, alpha in enumerate(alpha_mean): linExpPercentVal = 100.0 * alpha * (Tc[i] - refTempC) linExpPercent.append(linExpPercentVal) Tc.insert(0, refTempC) return numpy.polyfit( numpy.array(Tc), numpy.array(linExpPercent), power ).tolist()
def linearExpansionPercent(self, Tk=None, Tc=None): r""" Returns percent linear thermal expansion of Alloy 200 Parameters ---------- Tk : float, optional temperature in degrees Kelvin Tc : float, optional temperature in degrees Celsius Returns ------- linearExpansionPercent : float percent linear thermal expansion of Alloy 200 (%) """ Tc = getTc(Tc, Tk) self.checkTempRange(-200, 1000, Tc, "linear expansion percent") linearExpansionPercent = self.calcLinearExpansionPercentMetal(T=Tc) return linearExpansionPercent
def linearExpansion(self, Tk=None, Tc=None): r""" Returns instantaneous coefficient of thermal expansion of Alloy 200 Parameters ---------- Tk : float, optional temperature in degrees Kelvin Tc : float, optional temperature in degrees Celsius Returns ------- linearExpansion : float instantaneous coefficient of thermal expansion of Alloy 200 (1/C) """ Tc = getTc(Tc, Tk) self.checkTempRange(-200, 1000, Tc, "linear expansion") linearExpansion = self.calcLinearExpansionMetal(T=Tc) return linearExpansion
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) )
def linearExpansionPercent(self, Tk=None, Tc=None): r""" Returns percent linear expansion of InconelX750. Parameters ---------- Tk : float temperature in (K) Tc : float Temperature in (C) Returns ------- linExpPercent in %-m/m/C """ Tc = getTc(Tc, Tk) self.checkTempRange(21.1, 982.2, Tc, "linear expansion percent") linExpPercent = 6.8378e-7 * Tc ** 2 + 1.056e-3 * Tc - 1.3161e-2 return linExpPercent
def linearExpansionPercent(self, Tk=None, Tc=None): r""" Returns percent linear expansion of Inconel625. Parameters ---------- Tk : float temperature in (K) Tc : float Temperature in (C) Returns ------- linExpPercent in %-m/m/C """ Tc = getTc(Tc, Tk) self.checkTempRange(21.0, 927.0, Tc, "linear expansion percent") linExpPercent = 5.083e-7 * Tc ** 2 + 1.125e-3 * Tc - 1.804e-2 return linExpPercent
def density(self, Tk=None, Tc=None, check_range=True): """ Returns density of Sodium in g/cc. This is from 1.3.1 in [ANL-RE-95-2]_. Parameters ---------- Tk : float, optional temperature in degrees Kelvin Tc : float, optional temperature in degrees Celsius check_range : Boolean, optional Set check_range=False to avoid "zillions" of print-out warnings that occur if the input temperature (Tc or Tk) is out of the applicability range of properties. Returns ------- density : float mass density in g/cc """ Tk = getTk(Tc, Tk) Tc = getTc(Tc, Tk) if check_range: self.checkTempRange(97.85, 2230.55, Tc, "density") if check_range and (Tc is not None) and (Tc <= 97.72): runLog.warning( "Sodium frozen at Tc: {0}".format(Tc), label="Sodium frozen at Tc={0}".format(Tc), single=True, ) critDens = 219 # critical density f = 275.32 # g = 511.58 h = 0.5 Tcrit = 2503.7 # critical temperature return (critDens + f * (1 - (Tc + 273.15) / Tcrit) + g * (1 - (Tc + 273.15) / Tcrit)**h ) / 1000.0 # convert from kg/m^3 to g/cc.
def thermalConductivity(self, Tk=None, Tc=None): r""" Returns the thermal conductivity of Inconel600. Parameters ---------- Tk : float, optional temperature in (K) Tc : float, optional Temperature in (C) Returns ------- thermalCond : float thermal conductivity in W/m/C """ Tc = getTc(Tc, Tk) self.checkTempRange(20.0, 800.0, Tc, "thermal conductivity") thermalCond = 3.4938e-6 * Tc ** 2 + 1.3403e-2 * Tc + 14.572 return thermalCond # W/m-C
def heatCapacity(self, Tk=None, Tc=None): r""" Returns the specific heat capacity of Inconel600. Parameters ---------- Tk : float, optional Temperature in Kelvin. Tc : float, optional Temperature in degrees Celsius. Returns ------- heatCapacity : float heat capacity in J/kg/C """ Tc = getTc(Tc, Tk) self.checkTempRange(20, 900, Tc, "heat capacity") heatCapacity = 7.4021e-6 * Tc ** 2 + 0.20573 * Tc + 441.3 return heatCapacity # J/kg-C
def heatCapacity(self, Tk=None, Tc=None): r""" Returns the specific heat capacity of Inconel625. Parameters ---------- Tk : float, optional Temperature in Kelvin. Tc : float, optional Temperature in degrees Celsius. Returns ------- heatCapacity : float heat capacity in J/kg/C """ Tc = getTc(Tc, Tk) self.checkTempRange(21.0, 1093.0, Tc, "heat capacity") heatCapacity = -5.3777e-6 * Tc ** 2 + 0.25 * Tc + 404.26 return heatCapacity # J/kg-C
def thermalConductivity(self, Tk=None, Tc=None): r""" Returns the thermal conductivity of InconelX750. Parameters ---------- Tk : float, optional Temperature in Kelvin. Tc : float, optional Temperature in degrees Celsius. Returns ------- thermalCond : float thermal conductivity in W/m/C """ Tc = getTc(Tc, Tk) self.checkTempRange(-156.7, 871.1, Tc, "thermal conductivity") thermalCond = 1.4835e-6 * Tc ** 2 + 1.2668e-2 * Tc + 11.632 return thermalCond # W/m-C
def thermalConductivity(self, Tk=None, Tc=None): r""" Returns the thermal conductivity of Inconel625. Parameters ---------- Tk : float, optional Temperature in Kelvin. Tc : float, optional Temperature in degrees Celsius. Returns ------- thermalCond : float thermal conductivity in W/m/C """ Tc = getTc(Tc, Tk) self.checkTempRange(21.0, 982.0, Tc, "thermal conductivity") thermalCond = 2.7474e-6 * Tc ** 2 + 0.012907 * Tc + 9.62532 return thermalCond # W/m-C
def densityTimesHeatCapacity(self, Tk=None, Tc=None): r""" Return heat capacity * density at a temperature Parameters ---------- Tk : float, optional Temperature in Kelvin. Tc : float, optional Temperature in degrees Celsius. Returns ------- rhoCP : float Calculated value for the HT9 density* heat capacity unit (J/m^3-K) """ Tc = getTc(Tc, Tk) rhoCp = self.density(Tc=Tc) * 1000.0 * self.heatCapacity(Tc=Tc) return rhoCp
def meanCoefficientThermalExpansion(self, Tk=None, Tc=None): r""" Mean coefficient of thermal expansion for Incoloy 800. Third order polynomial fit of table 5 from [SM]_. Parameters ---------- Tk : float temperature in (K) Tc : float Temperature in (C) Returns ------- mean coefficient of thermal expansion in m/m/C """ Tc = getTc(Tc, Tk) (TLowerLimit, TUpperLimit) = self.propertyValidTemperature["thermal expansion"][0] self.checkTempRange(TLowerLimit, TUpperLimit, Tc, "thermal expansion") return (2.52525e-14 * Tc**3 - 3.77814e-11 * Tc**2 + 2.06360e-08 * Tc + 1.28071e-05)
def heatCapacity(self, Tk=None, Tc=None): r""" Returns the specific heat capacity of InconelX750. Parameters ---------- Tk : float, optional Temperature in Kelvin. Tc : float, optional Temperature in degrees Celsius. Returns ------- heatCapacity : float heat capacity in J/kg/C """ Tc = getTc(Tc, Tk) self.checkTempRange(-18.0, 1093.0, Tc, "heat capacity") heatCapacity = ( 9.2261e-7 * Tc ** 3 - 9.6368e-4 * Tc ** 2 + 4.7778e-1 * Tc + 420.55 ) return heatCapacity # J/kg-C