Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
 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))
Ejemplo n.º 3
0
Archivo: lead.py Proyecto: ntouran/armi
    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)
Ejemplo n.º 4
0
Archivo: uZr.py Proyecto: ntouran/armi
 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
Ejemplo n.º 5
0
Archivo: ht9.py Proyecto: youngmit/armi
    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
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
0
    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
        )
Ejemplo n.º 8
0
    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()
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
0
    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)
Ejemplo n.º 12
0
    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
Ejemplo n.º 13
0
    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
Ejemplo n.º 14
0
 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
Ejemplo n.º 15
0
    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)
Ejemplo n.º 16
0
    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
Ejemplo n.º 17
0
    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
Ejemplo n.º 18
0
Archivo: mgO.py Proyecto: ntouran/armi
    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
Ejemplo n.º 19
0
    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)
Ejemplo n.º 20
0
    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
Ejemplo n.º 21
0
    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
Ejemplo n.º 22
0
    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
Ejemplo n.º 23
0
    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)
Ejemplo n.º 24
0
Archivo: mgO.py Proyecto: ntouran/armi
    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
Ejemplo n.º 25
0
    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
Ejemplo n.º 26
0
    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
Ejemplo n.º 27
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
Ejemplo n.º 28
0
    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
Ejemplo n.º 29
0
    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
Ejemplo n.º 30
0
    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)
            )