# Copper.py
#
# Created: Feb 2020, K. Hamilton - Through New Zealand Ministry of Business Innovation and Employment Research Contract RTVU2004
# Modified: Jan 2022, S. Claridge
#-------------------------------------------------------------------------------
# Imports
#-------------------------------------------------------------------------------
from .Solid import Solid
from RCAIDE.Framework.Core import Units
from scipy import interpolate
from array import *
import numpy as np
#-------------------------------------------------------------------------------
# RRR=50 OFHC Copper Class
#-------------------------------------------------------------------------------
[docs]
class Copper(Solid):
"""
A class representing copper material properties.
Attributes
----------
density : float
Material density in kg/m³ (8960.0)
conductivity_electrical : float
Electrical conductivity in mhos/m (58391886.09)
conductivity_thermal : float
Thermal conductivity at room temperature in W/(m·K) (392.4)
interpolate : bool
Flag to enable interpolation of temperature-dependent properties
c_thermal : function
Interpolation function for temperature-dependent thermal conductivity
- Input: Temperature in K
- Output: Thermal conductivity in W/(m·K)
- Valid range: 4K to 300K
c_electrical : function
Interpolation function for temperature-dependent electrical conductivity
- Input: Temperature in K
- Output: Electrical conductivity in mhos/m
- Valid range: 4.2K to 320K
Notes
-----
This class implements temperature-dependent properties for copper,
particularly focused on cryogenic applications.
References
----------
[1] Bradley, P. and Radebaugh, R. (2013), Properties of Selected Materials at Cryogenic Temperatures, CRC Press, Boca Raton, FL, [online], https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=913059 (Accessed January 8, 2025)
[2] T. M. Dauphinee, H. Preston‐Thomas; A Copper Resistance Temperature Scale. Rev. Sci. Instrum. 1 September 1954; 25 (9): 884–886. https://doi.org/10.1063/1.1771200
"""
def __defaults__(self):
"""Sets material properties at instantiation.
Assumptions:
None
Source:
N/A
Inputs:
N/A
Outputs:
N/A
Properties Used:
None
"""
self.density = 8960.0 # [kg/(m**3)]
self.conductivity_electrical = 58391886.09 # [mhos/m]
self.conductivity_thermal = 392.4 # [W/(m*K)]
self.interpolate = False
# Lookup table arrays. Temperature in K, thermal conductivity in W/(m*K)
temperatures = np.array([4.0, 6.0, 8.0, 10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 120.0, 140.0, 160.0, 180.0, 200.0, 220.0, 240.0, 260.0, 280.0, 300.0])
conductivities = np.array([3.204, 4.668, 6.223, 7.781, 9.273, 10.64, 11.85, 12.87, 13.68, 14.44, 11.63, 8.636, 6.7, 5.611, 5.003, 4.651, 4.439, 4.218, 4.116, 4.06, 4.026, 4.001, 3.982, 3.965, 3.95, 3.936, 3.924])
# Function that interpolates the lookup table data
self.c_thermal = interpolate.interp1d(temperatures, conductivities, kind = 'cubic', fill_value='extrapolate')
# Lookup table. Temperature in K, conductivity in mhos/m
temperatures = np.array([4.2, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 38.0, 40.0, 42.0, 44.0, 46.0, 48.0, 50.0, 52.0, 54.0, 56.0, 58.0, 60.0, 64.0, 68.0, 72.0, 76.0, 80.0, 85.0, 90.0, 95.0, 100.0, 110.0, 120.0, 130.0, 140.0, 150.0, 160.0, 170.0, 180.0, 190.0, 200.0, 210.0, 220.0, 230.0, 240.0, 250.0, 260.0, 270.0, 273.16, 280.0, 290.0, 300.0, 310.0, 320.0])
conductivities = np.array([62706513.73, 59649351.1, 58823529.41, 57862233.7, 56756705.27, 55547010.82, 54265718.98, 52838319.53, 51265727.5, 49621943.91, 47879990.68, 46119256.86, 44295117.43, 42462678.59, 40594025.68, 38689780.55, 36839664.93, 34982975.23, 33178363.63, 29768952.17, 26747761.29, 23951445.97, 21412914.59, 19097216.66, 17144994.46, 15418051.98, 13912657.74, 12602171.91, 11436522.41, 10413826.85, 9526550.123, 8071135.431, 6915841.211, 6030094.818, 5295406.175, 4719663.549, 4129948.887, 3661837.678, 3283955.516, 2972855.668, 2494427.41, 2147259.712, 1884972.1, 1680269.452, 1516360.227, 1382622.667, 1270747.745, 1176213.988, 1095370.181, 1025134.636, 963654.7402, 909308.7026, 860944.9011, 817561.3102, 778513.0909, 742977.6209, 710652.6341, 701058.8235, 681102.5197, 653862.9927, 628729.7528, 605483.2867, 583918.8609])
# Function that interpolates the lookup table data
self.c_electrical = interpolate.interp1d(temperatures, conductivities, kind = 'cubic', fill_value='extrapolate')
[docs]
def thermal_conductivity(self, temperature):
# Create output variable
conductivity = self.c_thermal(temperature)
return conductivity
# lookup table and interpolator for estimating the electrical conductivity of copper at cryogenic temperatures.
[docs]
def electrical_conductivity(self, temperature):
conductivity = self.c_electrical(temperature)
return conductivity