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 "ThermalMonolithicSiCProperties.h" 11 : #include "libmesh/utility.h" 12 : 13 : registerMooseObject("SolidPropertiesApp", ThermalMonolithicSiCProperties); 14 : 15 : InputParameters 16 39 : ThermalMonolithicSiCProperties::validParams() 17 : { 18 39 : InputParameters params = ThermalSolidProperties::validParams(); 19 : 20 78 : MooseEnum ThermalConductivityModel("SNEAD STONE", "SNEAD"); 21 78 : params.addParam<MooseEnum>("thermal_conductivity_model", 22 : ThermalConductivityModel, 23 : "Thermal conductivity model to be used"); 24 78 : params.addRangeCheckedParam<Real>("density", 3216.0, "density > 0.0", "(Constant) density"); 25 39 : params.addClassDescription("Monolithic silicon carbide thermal properties."); 26 39 : return params; 27 39 : } 28 : 29 20 : ThermalMonolithicSiCProperties::ThermalMonolithicSiCProperties(const InputParameters & parameters) 30 : : ThermalSolidProperties(parameters), 31 20 : _k_model(getParam<MooseEnum>("thermal_conductivity_model").getEnum<ThermalConductivityModel>()), 32 40 : _rho_const(getParam<Real>("density")), 33 20 : _c1(925.65), 34 20 : _c2(0.3772), 35 20 : _c3(7.9259e-5), 36 20 : _c4(3.1946e7) 37 : { 38 20 : } 39 : 40 : Real 41 612 : ThermalMonolithicSiCProperties::cp_from_T(const Real & T) const 42 : { 43 612 : return _c1 + _c2 * T - _c3 * Utility::pow<2>(T) - _c4 / Utility::pow<2>(T); 44 : } 45 : 46 : void 47 2 : ThermalMonolithicSiCProperties::cp_from_T(const Real & T, Real & cp, Real & dcp_dT) const 48 : { 49 2 : cp = cp_from_T(T); 50 2 : dcp_dT = _c2 - 2 * _c3 * T + 2 * _c4 / Utility::pow<3>(T); 51 2 : } 52 : 53 : Real 54 14 : ThermalMonolithicSiCProperties::cp_integral(const Real & T) const 55 : { 56 14 : return _c1 * T + 0.5 * _c2 * Utility::pow<2>(T) - _c3 / 3.0 * Utility::pow<3>(T) + _c4 / T; 57 : } 58 : 59 : Real 60 620 : ThermalMonolithicSiCProperties::k_from_T(const Real & T) const 61 : { 62 620 : switch (_k_model) 63 : { 64 610 : case ThermalConductivityModel::SNEAD: 65 610 : return 1.0 / (-0.0003 + 1.05e-5 * T); 66 : case ThermalConductivityModel::STONE: 67 10 : return -3.70e-8 * Utility::pow<3>(T) + 1.54e-4 * Utility::pow<2>(T) - 0.214 * T + 153.1; 68 0 : default: 69 0 : mooseError("Unhandled MooseEnum in ThermalMonolithicSiCProperties!"); 70 : } 71 : } 72 : 73 : void 74 4 : ThermalMonolithicSiCProperties::k_from_T(const Real & T, Real & k, Real & dk_dT) const 75 : { 76 4 : k = k_from_T(T); 77 : 78 4 : switch (_k_model) 79 : { 80 2 : case ThermalConductivityModel::SNEAD: 81 : { 82 2 : dk_dT = -1.0 / Utility::pow<2>(-0.0003 + 1.05e-5 * T) * 1.05e-5; 83 2 : break; 84 : } 85 : case ThermalConductivityModel::STONE: 86 : { 87 2 : dk_dT = -1.11e-7 * Utility::pow<2>(T) + 3.08E-4 * T - 0.214; 88 2 : break; 89 : } 90 0 : default: 91 0 : mooseError("Unhandled MooseEnum in ThermalMonolithicSiCProperties!"); 92 : } 93 4 : } 94 : 95 : Real 96 610 : ThermalMonolithicSiCProperties::rho_from_T(const Real & /* T */) const 97 : { 98 610 : return _rho_const; 99 : } 100 : 101 : void 102 2 : ThermalMonolithicSiCProperties::rho_from_T(const Real & T, Real & rho, Real & drho_dT) const 103 : { 104 2 : rho = rho_from_T(T); 105 2 : drho_dT = 0.0; 106 2 : }