Source code for piel.materials.thermal_conductivity.copper

import pandas as pd

import piel
from ...types import ArrayTypes
from piel.types.materials import MaterialReferencesTypes, MaterialReferenceType
from piel.types.physical import TemperatureRangeTypes

# CURRENT TODO: finish migrating this, add material sub names, add proper export, put into __init__

__all__ = ["copper", "material_references"]

supported_specifications = ["rrr50", "rrr100", "rrr150", "rrr300", "rrr500"]
material_references: MaterialReferencesTypes = [
    ("copper", specification_i) for specification_i in supported_specifications
]


[docs] def copper( temperature_range_K: TemperatureRangeTypes, material_reference: MaterialReferenceType, *args, **kwargs, ) -> ArrayTypes: specification = material_reference[1] copper_thermal_conductivity_file = ( piel.return_path(__file__).parent / "data" / "ofhc_copper_thermal_conductivity.csv" ) if copper_thermal_conductivity_file.exists(): pass else: print("Dataset is not found: ") print(copper_thermal_conductivity_file) thermal_conductivity_material_dataset = pd.read_csv( copper_thermal_conductivity_file ) # Simplified coefficient extraction coefficients = {} for coeff in ["a", "b", "c", "d", "e", "f", "g", "h", "i"]: coefficients[coeff] = thermal_conductivity_material_dataset.loc[ thermal_conductivity_material_dataset["coefficient"] == coeff, specification ].values[0] # Calculating thermal conductivity numerator = ( coefficients["a"] + coefficients["c"] * temperature_range_K**0.5 + coefficients["e"] * temperature_range_K + coefficients["g"] * temperature_range_K**1.5 + coefficients["i"] * temperature_range_K**2 ) denominator = ( 1 + coefficients["b"] * temperature_range_K**0.5 + coefficients["d"] * temperature_range_K + coefficients["f"] * temperature_range_K**1.5 + coefficients["h"] * temperature_range_K**2 ) thermal_conductivity_fit = numerator / denominator return thermal_conductivity_fit