Source code for armi.materials.hastelloyN

# Copyright 2019 TerraPower, LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""
Hastelloy-N is a high-nickel structural material invented by ORNL for handling molten fluoride salts.
"""

from armi.materials.material import Material
from armi.utils.units import getTk, getTc


[docs]class HastelloyN(Material): r""" Hastelloy N alloy (UNS N10003) .. [Haynes] Haynes International, H-2052D 2020 (http://haynesintl.com/docs/default-source/pdfs/new-alloy-brochures/corrosion-resistant-alloys/brochures/n-brochure.pdf) .. [SAB] Sabharwall, et. al. Feasibility Study of Secondary Heat Exchanger Concepts for the Advanced High Temperature Reactor INL/EXT-11-23076, 2011 """ name = "HastelloyN" materialIntro = ( "Hastelloy N alloy is a nickel-base alloy that was invented at Oak RIdge National Laboratories " "as a container material for molten fluoride salts. It has good oxidation resistance to hot fluoride " "salts in the temperature range of 704 to 871C (1300 to 1600F)" ) propertyValidTemperature = { "thermal conductivity": ((473.15, 973.15), "K"), "heat capacity": ((373.15, 973.15), "K"), "thermal expansion": ((293.15, 1173.15), "K"), } refTempK = 293.15
[docs] def setDefaultMassFracs(self): r""" Hastelloy N mass fractions From [Haynes]_. """ self.setMassFrac("CR", 0.07) self.setMassFrac("MO", 0.16) self.setMassFrac("FE", 0.04) # max. self.setMassFrac("SI", 0.01) # max. self.setMassFrac("MN", 0.0080) # max. self.setMassFrac("V", 0.0005) # max. self.setMassFrac("C", 0.0006) self.setMassFrac("CO", 0.0020) # max. self.setMassFrac("CU", 0.0035) # max. self.setMassFrac("W", 0.005) # max. self.setMassFrac("AL", 0.0025) # max. self.setMassFrac("TI", 0.0025) # max. self.setMassFrac("NI", 1.0 - sum(self.massFrac.values())) # balance self.refDens = 8.86
[docs] 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=Tc) self.checkPropertyTempRange("thermal conductivity", Tk) return 1.92857e-05 * Tc ** 2 + 3.12857e-03 * Tc + 1.17743e01 # W/m-K
[docs] 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=Tc) self.checkPropertyTempRange("heat capacity", Tk) 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 )
[docs] 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.refTempK) return 100.0 * self.meanCoefficientThermalExpansion(Tc=Tc) * (Tc - refTempC)
[docs] def meanCoefficientThermalExpansion(self, Tk=None, Tc=None): r""" Mean coefficient of thermal expansion for Hastelloy N. Second order polynomial fit of data from [Haynes]_. 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) Tk = getTk(Tc=Tc) self.checkPropertyTempRange("thermal expansion", Tk) return 2.60282e-12 * Tc ** 2 + 7.69859e-10 * Tc + 1.21036e-05