Line data Source code
1 : //* This file is part of the MOOSE framework 2 : //* https://mooseframework.inl.gov 3 : //* 4 : //* All rights reserved, see COPYRIGHT for full restrictions 5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT 6 : //* 7 : //* Licensed under LGPL 2.1, please see LICENSE for details 8 : //* https://www.gnu.org/licenses/lgpl-2.1.html 9 : 10 : #include "SemiconductorLinearConductivity.h" 11 : #include "libmesh/quadrature.h" 12 : 13 : registerMooseObject("HeatTransferApp", SemiconductorLinearConductivity); 14 : 15 : InputParameters 16 39 : SemiconductorLinearConductivity::validParams() 17 : { 18 39 : InputParameters params = Material::validParams(); 19 78 : params.addRequiredCoupledVar("temp", "Variable for temperature in Kelvin."); 20 78 : params.addParam<std::string>("base_name", "Material property base name"); 21 78 : params.addRequiredParam<Real>("sh_coeff_A", "Steinhart_Hart coefficient A of the material"); 22 78 : params.addRequiredRangeCheckedParam<Real>( 23 : "sh_coeff_B", "sh_coeff_B != 0", "Steinhart_Hart coefficient B of the material."); 24 : 25 39 : params.addClassDescription( 26 : "Calculates electrical conductivity of a semiconductor from temperature"); 27 : 28 39 : return params; 29 0 : } 30 : 31 30 : SemiconductorLinearConductivity::SemiconductorLinearConductivity(const InputParameters & parameters) 32 : : DerivativeMaterialInterface<Material>(parameters), 33 30 : _sh_coeff_A(getParam<Real>("sh_coeff_A")), 34 60 : _sh_coeff_B(getParam<Real>("sh_coeff_B")), 35 30 : _T(coupledValue("temp")), 36 60 : _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") + "_" : ""), 37 30 : _electric_conductivity(declareProperty<Real>(_base_name + "electrical_conductivity")), 38 30 : _delectric_conductivity_dT( 39 30 : isCoupledConstant("temp") 40 30 : ? nullptr 41 120 : : &declarePropertyDerivative<Real>(_base_name + "electrical_conductivity", 42 150 : coupledName("temp", 0))) 43 : { 44 30 : } 45 : 46 : void 47 46800 : SemiconductorLinearConductivity::computeQpProperties() 48 : { 49 : mooseAssert(MooseUtils::absoluteFuzzyGreaterThan(_T[_qp], 0.0), 50 : "Encountered zero or negative temperature in SemiconductorLinearConductivity"); 51 : 52 : mooseAssert(_sh_coeff_B != 0, "Divided by zero as _sh_coeff_B = 0"); 53 : 54 46800 : _electric_conductivity[_qp] = exp((_sh_coeff_A - 1 / _T[_qp]) / _sh_coeff_B); 55 46800 : if (_delectric_conductivity_dT) 56 46800 : (*_delectric_conductivity_dT)[_qp] = 57 46800 : _electric_conductivity[_qp] / (_sh_coeff_B * _T[_qp] * _T[_qp]); 58 46800 : }