diff --git a/include/bcs/EconomouDielectricBC.h b/include/bcs/EconomouDielectricBC.h index bfc2193f040..cdbbf18432e 100644 --- a/include/bcs/EconomouDielectricBC.h +++ b/include/bcs/EconomouDielectricBC.h @@ -37,12 +37,13 @@ class EconomouDielectricBC : public ADIntegratedBC std::vector *> _sgnip; std::vector *> _muip; const MaterialProperty & _massem; - Real _user_se_coeff; + std::vector _user_se_coeff; const Real & _epsilon_d; const Real & _thickness; Real _a; ADRealVectorValue _ion_flux; + ADRealVectorValue _temp_flux; ADReal _v_thermal; ADRealVectorValue _em_flux; std::string _potential_units; diff --git a/include/bcs/ElectronAdvectionDoNothingBC.h b/include/bcs/ElectronAdvectionDoNothingBC.h index 94f4dae0e75..e466fcf1df6 100644 --- a/include/bcs/ElectronAdvectionDoNothingBC.h +++ b/include/bcs/ElectronAdvectionDoNothingBC.h @@ -32,5 +32,4 @@ class ElectronAdvectionDoNothingBC : public ADIntegratedBC private: // Coupled variables const ADVariableGradient & _grad_potential; - const ADVariableValue & _mean_en; }; diff --git a/include/bcs/ElectronDiffusionDoNothingBC.h b/include/bcs/ElectronDiffusionDoNothingBC.h index 50e175bd37d..908bf920aab 100644 --- a/include/bcs/ElectronDiffusionDoNothingBC.h +++ b/include/bcs/ElectronDiffusionDoNothingBC.h @@ -27,5 +27,4 @@ class ElectronDiffusionDoNothingBC : public ADIntegratedBC Real _r_units; const ADMaterialProperty & _diffem; - const ADVariableValue & _mean_en; }; diff --git a/include/bcs/FieldEmissionBC.h b/include/bcs/FieldEmissionBC.h index af81215ac7d..ecdc413bfa1 100644 --- a/include/bcs/FieldEmissionBC.h +++ b/include/bcs/FieldEmissionBC.h @@ -22,24 +22,24 @@ class FieldEmissionBC : public ADIntegratedBC protected: virtual ADReal computeQpResidual() override; - Real _r_units; - Real _r; + const Real _r_units; + const Real _r; + const unsigned int _num_ions; // Coupled variables const ADVariableGradient & _grad_potential; - const ADVariableValue & _mean_en; - MooseVariable & _ip_var; - const ADVariableValue & _ip; - const ADVariableGradient & _grad_ip; + std::vector _ip_var; + std::vector _ip; + std::vector _grad_ip; const ADMaterialProperty & _muem; const MaterialProperty & _massem; const MaterialProperty & _e; - const MaterialProperty & _sgnip; - const ADMaterialProperty & _muip; - const ADMaterialProperty & _Dip; - const MaterialProperty & _se_coeff; + std::vector *> _sgnip; + std::vector *> _muip; + std::vector *> _Dip; + const std::vector _se_coeff; const MaterialProperty & _work_function; const MaterialProperty & _field_enhancement; diff --git a/include/bcs/HagelaarEnergyAdvectionBC.h b/include/bcs/HagelaarEnergyAdvectionBC.h index 51c6e609c77..656f8bee93d 100644 --- a/include/bcs/HagelaarEnergyAdvectionBC.h +++ b/include/bcs/HagelaarEnergyAdvectionBC.h @@ -24,23 +24,24 @@ class HagelaarEnergyAdvectionBC : public ADIntegratedBC Real _r_units; Real _r; - + const unsigned int _num_ions; // Coupled variables const ADVariableGradient & _grad_potential; - MooseVariable & _ip_var; - const ADVariableValue & _ip; - const ADVariableGradient & _grad_ip; - - const MaterialProperty & _sgnip; - const ADMaterialProperty & _muip; - const ADMaterialProperty & _Dip; - const MaterialProperty & _se_coeff; - const MaterialProperty & _se_energy; + std::vector _ip_var; + std::vector _ip; + std::vector _grad_ip; + + std::vector *> _sgnip; + std::vector *> _muip; + std::vector *> _Dip; + const std::vector _se_coeff; + const Real _se_energy; const ADMaterialProperty & _mumean_en; Real _a; ADRealVectorValue _ion_flux; Real _v_thermal; Real _n_gamma; + ADReal _bc_val; }; diff --git a/include/bcs/HagelaarEnergyBC.h b/include/bcs/HagelaarEnergyBC.h index 896995382f1..62945a22db5 100644 --- a/include/bcs/HagelaarEnergyBC.h +++ b/include/bcs/HagelaarEnergyBC.h @@ -30,8 +30,6 @@ class HagelaarEnergyBC : public ADIntegratedBC const MaterialProperty & _massem; const MaterialProperty & _e; - const MaterialProperty & _se_coeff; - const MaterialProperty & _se_energy; const ADMaterialProperty & _mumean_en; Real _a; diff --git a/include/bcs/LymberopoulosElectronBC.h b/include/bcs/LymberopoulosElectronBC.h index abc6d854c94..51a4cfa2fdf 100644 --- a/include/bcs/LymberopoulosElectronBC.h +++ b/include/bcs/LymberopoulosElectronBC.h @@ -22,23 +22,18 @@ class LymberopoulosElectronBC : public ADIntegratedBC protected: virtual ADReal computeQpResidual() override; - Real _r_units; - Real _ks; - Real _gamma; + const Real _r_units; + const Real _ks; + const std::vector _gamma; + const unsigned int _num_ions; // Coupled variables const ADVariableGradient & _grad_potential; std::vector _ion_var; std::vector _ion; - Real _sign; - std::vector *> _sgnion; std::vector *> _muion; - unsigned int _num_ions; - unsigned int _ip_index; - std::vector::iterator _iter; - ADRealVectorValue _ion_flux; }; diff --git a/include/bcs/NeumannCircuitVoltageMoles_KV.h b/include/bcs/NeumannCircuitVoltageMoles_KV.h index b6a0e511c2e..aa1979300f0 100644 --- a/include/bcs/NeumannCircuitVoltageMoles_KV.h +++ b/include/bcs/NeumannCircuitVoltageMoles_KV.h @@ -34,7 +34,7 @@ class NeumannCircuitVoltageMoles_KV : public ADIntegratedBC const ADVariableValue & _mean_en; const ADVariableValue & _em; - const MaterialProperty & _se_coeff; + const std::vector & _se_coeff; std::vector *> _muip; const MaterialProperty & _eps; const MaterialProperty & _N_A; diff --git a/include/bcs/SakiyamaEnergySecondaryElectronBC.h b/include/bcs/SakiyamaEnergySecondaryElectronBC.h index 929a327cf51..843465591fe 100644 --- a/include/bcs/SakiyamaEnergySecondaryElectronBC.h +++ b/include/bcs/SakiyamaEnergySecondaryElectronBC.h @@ -22,9 +22,10 @@ class SakiyamaEnergySecondaryElectronBC : public ADIntegratedBC protected: virtual ADReal computeQpResidual() override; - Real _r_units; - bool Te_dependent; - + const Real _r_units; + const bool Te_dependent; + const unsigned int _num_ions; + const std::vector _se_coeff; // Coupled variables const ADVariableGradient & _grad_potential; const ADVariableValue & _em; @@ -33,14 +34,10 @@ class SakiyamaEnergySecondaryElectronBC : public ADIntegratedBC std::vector *> _sgnip; std::vector *> _muip; - Real _se_coeff; + Real _user_se_energy; Real _a; ADReal _se_energy; ADRealVectorValue _ion_flux; - - unsigned int _num_ions; - unsigned int _ip_index; - std::vector::iterator _iter; }; diff --git a/include/bcs/SakiyamaSecondaryElectronBC.h b/include/bcs/SakiyamaSecondaryElectronBC.h index d82a5d2753d..edd1cb49817 100644 --- a/include/bcs/SakiyamaSecondaryElectronBC.h +++ b/include/bcs/SakiyamaSecondaryElectronBC.h @@ -22,8 +22,9 @@ class SakiyamaSecondaryElectronBC : public ADIntegratedBC protected: virtual ADReal computeQpResidual() override; - Real _r_units; - + const Real _r_units; + const unsigned int _num_ions; + const std::vector _user_se_coeff; // Coupled variables const ADVariableGradient & _grad_potential; @@ -31,10 +32,7 @@ class SakiyamaSecondaryElectronBC : public ADIntegratedBC Real _a; ADRealVectorValue _ion_flux; - Real _user_se_coeff; std::vector *> _sgnip; std::vector *> _muip; - - unsigned int _num_ions; }; diff --git a/include/bcs/SchottkyEmissionBC.h b/include/bcs/SchottkyEmissionBC.h index 4ccdf9831ff..2ae89438647 100644 --- a/include/bcs/SchottkyEmissionBC.h +++ b/include/bcs/SchottkyEmissionBC.h @@ -22,24 +22,25 @@ class SchottkyEmissionBC : public ADIntegratedBC protected: virtual ADReal computeQpResidual() override; - Real _r_units; - Real _r; - + const Real _r_units; + const Real _r; + const unsigned int _num_ions; + const std::vector _se_coeff; // Coupled variables const ADVariableGradient & _grad_potential; const ADVariableValue & _mean_en; - MooseVariable & _ip_var; - const ADVariableValue & _ip; - const ADVariableGradient & _grad_ip; + std::vector _ip_var; + std::vector _ip; + std::vector _grad_ip; + + std::vector *> _sgnip; + std::vector *> _muip; + std::vector *> _Dip; const MaterialProperty & _massem; const MaterialProperty & _e; - const MaterialProperty & _sgnip; - const ADMaterialProperty & _muip; - const ADMaterialProperty & _Dip; - const MaterialProperty & _se_coeff; const MaterialProperty & _work_function; const MaterialProperty & _field_enhancement; const MaterialProperty & _Richardson_coefficient; diff --git a/include/bcs/SecondaryElectronBC.h b/include/bcs/SecondaryElectronBC.h index 6533ee54ad8..f61f35f2bb4 100644 --- a/include/bcs/SecondaryElectronBC.h +++ b/include/bcs/SecondaryElectronBC.h @@ -26,7 +26,8 @@ class SecondaryElectronBC : public ADIntegratedBC const Real & _r; const Real & _r_ion; const MaterialProperty & _kb; - + const unsigned int _num_ions; + const std::vector _se_coeff; // Coupled variables const ADVariableGradient & _grad_potential; @@ -41,13 +42,10 @@ class SecondaryElectronBC : public ADIntegratedBC std::vector *> _muip; std::vector *> _Tip; std::vector *> _massip; - const MaterialProperty & _se_coeff; Real _a; Real _b; ADReal _v_thermal; ADReal _ion_flux; ADReal _n_gamma; - - unsigned int _num_ions; }; diff --git a/include/bcs/SecondaryElectronEnergyBC.h b/include/bcs/SecondaryElectronEnergyBC.h index af46eb0a7fb..67d1501cafa 100644 --- a/include/bcs/SecondaryElectronEnergyBC.h +++ b/include/bcs/SecondaryElectronEnergyBC.h @@ -26,7 +26,8 @@ class SecondaryElectronEnergyBC : public ADIntegratedBC const Real & _r; const Real & _r_ion; const MaterialProperty & _kb; - + const unsigned int _num_ions; + const std::vector & _se_coeff; // Coupled variables const ADVariableGradient & _grad_potential; @@ -41,8 +42,8 @@ class SecondaryElectronEnergyBC : public ADIntegratedBC std::vector *> _muip; std::vector *> _Tip; std::vector *> _massip; - const MaterialProperty & _se_coeff; - const MaterialProperty & _se_energy; + + const Real & _se_energy; const ADMaterialProperty & _mumean_en; Real _a; @@ -50,6 +51,4 @@ class SecondaryElectronEnergyBC : public ADIntegratedBC ADReal _v_thermal; ADReal _ion_flux; ADReal _n_gamma; - - unsigned int _num_ions; }; diff --git a/src/bcs/EconomouDielectricBC.C b/src/bcs/EconomouDielectricBC.C index f77791ad32d..2f45b020f6f 100644 --- a/src/bcs/EconomouDielectricBC.C +++ b/src/bcs/EconomouDielectricBC.C @@ -19,13 +19,29 @@ EconomouDielectricBC::validParams() params.addRequiredParam("dielectric_constant", "The dielectric constant of the material."); params.addRequiredParam("thickness", "The thickness of the material."); params.addRequiredParam("position_units", "Units of position."); + params.addRequiredCoupledVar("mean_en", "The mean energy."); + params.deprecateCoupledVar("mean_en", "electron_energy", "06/01/2024"); params.addRequiredCoupledVar("em", "The electron density."); + params.deprecateCoupledVar("em", "electrons", "06/01/2024"); params.addRequiredCoupledVar("ip", "The ion density."); + params.deprecateCoupledVar("ip", "ions", "06/01/2024"); params.addRequiredCoupledVar("potential_ion", "The ion potential"); - params.addParam("users_gamma", - "A secondary electron emission coeff. only used for this BC."); + params.deprecateCoupledVar("potential_ion", "ion_potentials", "06/01/2024"); + params.addParam>("users_gamma", + "A secondary electron emission coeff. only used for this BC."); + params.deprecateParam("users_gamma", "emission_coeffs", "06/01/2024"); + + params.addRequiredCoupledVar("electron_energy", "The mean electron energy density. In log form"); + params.addRequiredCoupledVar("electrons", "The electron density in log form"); + params.addRequiredCoupledVar("ions", "A list of ion densities in log form"); + params.addRequiredCoupledVar("ion_potentials", + "The effective potential for each ion provided in 'ions'"); + params.addParam>( + "emission_coeffs", + "The seconday electron emmision coefficient for each ion provided in `ions`"); params.addRequiredParam("potential_units", "The potential units."); + params.addClassDescription("Dielectric boundary condition" "(Based on DOI: https://doi.org/10.1116/1.579300)"); return params; @@ -35,19 +51,20 @@ EconomouDielectricBC::EconomouDielectricBC(const InputParameters & parameters) : ADIntegratedBC(parameters), _r_units(1. / getParam("position_units")), - _mean_en(adCoupledValue("mean_en")), - _em(adCoupledValue("em")), + _mean_en(adCoupledValue("electron_energy")), + _em(adCoupledValue("electrons")), _grad_u_dot(_var.gradSlnDot()), // TODO: make an AD version of this in MOOSE _u_dot(_var.adUDot()), _e(getMaterialProperty("e")), _massem(getMaterialProperty("massem")), - _user_se_coeff(getParam("users_gamma")), + _user_se_coeff(getParam>("emission_coeffs")), _epsilon_d(getParam("dielectric_constant")), _thickness(getParam("thickness")), _a(0.5), _ion_flux(0, 0, 0), + _temp_flux(0, 0, 0), _v_thermal(0), _em_flux(0, 0, 0), _potential_units(getParam("potential_units")) @@ -58,7 +75,7 @@ EconomouDielectricBC::EconomouDielectricBC(const InputParameters & parameters) else if (_potential_units.compare("kV") == 0) _voltage_scaling = 1000; - _num_ions = coupledComponents("ip"); + _num_ions = coupledComponents("ions"); _ip.resize(_num_ions); _ip_var.resize(_num_ions); @@ -75,39 +92,44 @@ EconomouDielectricBC::EconomouDielectricBC(const InputParameters & parameters) // // 2. There are no effective potentials, and potential_ion = potential. If so, ensure // potential_ion is still same size as _ip. - if (coupledComponents("potential_ion") != _num_ions) + if (coupledComponents("ion_potentials") != _num_ions) { - if ((coupledComponents("potential_ion") == 1) && - (getVar("potential_ion", 0)->number() == _var.number())) + if ((coupledComponents("ion_potentials") == 1) && + (getVar("ion_potentials", 0)->number() == _var.number())) { fill_potential_vector = true; } else { mooseError( - "EconomouDielectricBC: ip and potential_ion vectors are not same length. There are two " + "EconomouDielectricBC: `ion` and `ion_potentials` vectors are not same length. There are " + "two " "possible options: \n 1) Ions respond to an effective potential. If so, make sure each " "ion has an associated effective potential. \n 2) Ions and electrons respond to the same " "potential. If so, set potential_ion equal to this potential.\n"); } + + if (_user_se_coeff.size() != _num_ions) + mooseError( + "EconomouDielectricBC: The lengths of `ions` and `emission_coeffs` must be the same"); } for (unsigned int i = 0; i < _num_ions; ++i) { - _ip_var[i] = getVar("ip", i); - _ip[i] = &adCoupledValue("ip", i); - _muip[i] = &getADMaterialProperty("mu" + (*getVar("ip", i)).name()); - _sgnip[i] = &getMaterialProperty("sgn" + (*getVar("ip", i)).name()); + _ip_var[i] = getVar("ions", i); + _ip[i] = &adCoupledValue("ions", i); + _muip[i] = &getADMaterialProperty("mu" + (*getVar("ions", i)).name()); + _sgnip[i] = &getMaterialProperty("sgn" + (*getVar("ions", i)).name()); if (fill_potential_vector) { - _potential_ion[i] = &adCoupledValue("potential_ion", 0); - _grad_potential_ion[i] = &adCoupledGradient("potential_ion", 0); + _potential_ion[i] = &adCoupledValue("ion_potentials", 0); + _grad_potential_ion[i] = &adCoupledGradient("ion_potentials", 0); } else { - _potential_ion[i] = &adCoupledValue("potential_ion", i); - _grad_potential_ion[i] = &adCoupledGradient("potential_ion", i); + _potential_ion[i] = &adCoupledValue("ion_potentials", i); + _grad_potential_ion[i] = &adCoupledGradient("ion_potentials", i); } } } @@ -126,16 +148,16 @@ EconomouDielectricBC::computeQpResidual() { _a = 0.0; } - - _ion_flux += _a * (*_sgnip[i])[_qp] * (*_muip[i])[_qp] * -(*_grad_potential_ion[i])[_qp] * + _temp_flux = _a * (*_sgnip[i])[_qp] * (*_muip[i])[_qp] * -(*_grad_potential_ion[i])[_qp] * _r_units * std::exp((*_ip[i])[_qp]); + _ion_flux += _temp_flux; + _em_flux -= _user_se_coeff[i] * _temp_flux; } _v_thermal = std::sqrt(8 * _e[_qp] * 2.0 / 3 * std::exp(_mean_en[_qp] - _em[_qp]) / (M_PI * _massem[_qp])); - _em_flux = - (0.25 * _v_thermal * std::exp(_em[_qp]) * _normals[_qp]) - (_user_se_coeff * _ion_flux); + _em_flux += (0.25 * _v_thermal * std::exp(_em[_qp]) * _normals[_qp]); return _test[_i][_qp] * _r_units * ((_thickness / _epsilon_d) * _e[_qp] * 6.022e23 * (_ion_flux - _em_flux) * _normals[_qp] / diff --git a/src/bcs/ElectronAdvectionDoNothingBC.C b/src/bcs/ElectronAdvectionDoNothingBC.C index 14429ae88b0..12f0c89a3f5 100644 --- a/src/bcs/ElectronAdvectionDoNothingBC.C +++ b/src/bcs/ElectronAdvectionDoNothingBC.C @@ -18,7 +18,6 @@ ElectronAdvectionDoNothingBC::validParams() InputParameters params = ADIntegratedBC::validParams(); params.addRequiredCoupledVar( "potential", "The gradient of the potential will be used to compute the advection velocity."); - params.addRequiredCoupledVar("mean_en", "The log of the mean energy."); params.addRequiredParam("position_units", "The units of position."); params.addClassDescription("Boundary condition where the election advection flux at the boundary " "is equal to the bulk election advection equation"); @@ -34,8 +33,7 @@ ElectronAdvectionDoNothingBC::ElectronAdvectionDoNothingBC(const InputParameters _sign(getMaterialProperty("sgnem")), // Coupled variables - _grad_potential(adCoupledGradient("potential")), - _mean_en(adCoupledValue("mean_en")) + _grad_potential(adCoupledGradient("potential")) { } diff --git a/src/bcs/ElectronDiffusionDoNothingBC.C b/src/bcs/ElectronDiffusionDoNothingBC.C index 605d004bbc8..510354b9c02 100644 --- a/src/bcs/ElectronDiffusionDoNothingBC.C +++ b/src/bcs/ElectronDiffusionDoNothingBC.C @@ -16,8 +16,6 @@ InputParameters ElectronDiffusionDoNothingBC::validParams() { InputParameters params = ADIntegratedBC::validParams(); - params.addRequiredCoupledVar("mean_en", - "The log of the product of mean energy times electron density."); params.addRequiredParam("position_units", "Units of position"); params.addClassDescription("Boundary condition where the election diffusion flux at the boundary " "is equal to the bulk election diffusion equation"); @@ -31,9 +29,7 @@ ElectronDiffusionDoNothingBC::ElectronDiffusionDoNothingBC(const InputParameters _r_units(1. / getParam("position_units")), - _diffem(getADMaterialProperty("diffem")), - - _mean_en(adCoupledValue("mean_en")) + _diffem(getADMaterialProperty("diffem")) { } diff --git a/src/bcs/ElectronTemperatureDirichletBC.C b/src/bcs/ElectronTemperatureDirichletBC.C index 704cd60a6d1..8e44077e4fd 100644 --- a/src/bcs/ElectronTemperatureDirichletBC.C +++ b/src/bcs/ElectronTemperatureDirichletBC.C @@ -18,6 +18,8 @@ ElectronTemperatureDirichletBC::validParams() InputParameters params = ADNodalBC::validParams(); params.addRequiredParam("value", "Value of the BC"); params.addRequiredCoupledVar("em", "The electron density."); + params.deprecateCoupledVar("em", "electrons", "06/01/2024"); + params.addRequiredCoupledVar("electrons", "The electron density in log form"); params.addParam("penalty_value", 1.0, "The penalty value for the Dirichlet BC."); params.addClassDescription("Electron temperature boundary condition"); return params; @@ -25,7 +27,7 @@ ElectronTemperatureDirichletBC::validParams() ElectronTemperatureDirichletBC::ElectronTemperatureDirichletBC(const InputParameters & parameters) : ADNodalBC(parameters), - _em(adCoupledValue("em")), + _em(adCoupledValue("electrons")), _value(getParam("value")), _penalty_value(getParam("penalty_value")) { diff --git a/src/bcs/FieldEmissionBC.C b/src/bcs/FieldEmissionBC.C index 5bf2a0aec1a..57869bd7972 100644 --- a/src/bcs/FieldEmissionBC.C +++ b/src/bcs/FieldEmissionBC.C @@ -18,8 +18,12 @@ FieldEmissionBC::validParams() InputParameters params = ADIntegratedBC::validParams(); params.addRequiredParam("r", "The reflection coefficient"); params.addRequiredCoupledVar("potential", "The electric potential"); - params.addRequiredCoupledVar("mean_en", "The mean energy."); params.addRequiredCoupledVar("ip", "The ion density."); + params.deprecateCoupledVar("ip", "ions", "06/01/2024"); + params.addRequiredCoupledVar("ions", "A list of ion densities in log form"); + params.addRequiredParam>( + "emission_coeffs", + "The species dependent secondary electron emmision coefficients for this boundary"); params.addRequiredParam("position_units", "Units of position."); params.addRequiredParam("potential_units", "The potential units."); params.addParam("tau", 1e-9, "The time constant for ramping the boundary condition."); @@ -32,21 +36,14 @@ FieldEmissionBC::FieldEmissionBC(const InputParameters & parameters) _r_units(1. / getParam("position_units")), _r(getParam("r")), - + _num_ions(coupledComponents("ip")), // Coupled Variables _grad_potential(adCoupledGradient("potential")), - _mean_en(adCoupledValue("mean_en")), - _ip_var(*getVar("ip", 0)), - _ip(adCoupledValue("ip")), - _grad_ip(adCoupledGradient("ip")), _muem(getADMaterialProperty("muem")), _massem(getMaterialProperty("massem")), _e(getMaterialProperty("e")), - _sgnip(getMaterialProperty("sgn" + _ip_var.name())), - _muip(getADMaterialProperty("mu" + _ip_var.name())), - _Dip(getADMaterialProperty("diff" + _ip_var.name())), - _se_coeff(getMaterialProperty("se_coeff")), + _se_coeff(getParam>("emission_coeffs")), _work_function(getMaterialProperty("work_function")), _field_enhancement(getMaterialProperty("field_enhancement")), _a(0.5), @@ -55,6 +52,10 @@ FieldEmissionBC::FieldEmissionBC(const InputParameters & parameters) _relax(getParam("relax")), _potential_units(getParam("potential_units")) { + + if (_se_coeff.size() != _num_ions) + mooseError("FieldEmissionBC: The lengths of `ions` and `emission_coeffs` must be the same"); + if (_potential_units.compare("V") == 0) { _voltage_scaling = 1.; @@ -67,6 +68,23 @@ FieldEmissionBC::FieldEmissionBC(const InputParameters & parameters) FE_a = 1.541434E-6 * std::pow(_voltage_scaling, 2); // A eV/kV^2 (if _voltage_scaling == 1000) FE_b = 6.830890E9 / _voltage_scaling; // kV/m-eV^1.5 (if _voltage_scaling == 1000) FE_c = 1.439964E-9 * _voltage_scaling; // eV^2*m/kV (if _voltage_scaling == 1000) + + _ip.resize(_num_ions); + _ip_var.resize(_num_ions); + _grad_ip.resize(_num_ions); + _sgnip.resize(_num_ions); + _muip.resize(_num_ions); + _Dip.resize(_num_ions); + + for (unsigned int i = 0; i < _num_ions; ++i) + { + _ip_var[i] = getVar("ions", i); + _ip[i] = &adCoupledValue("ions", i); + _grad_ip[i] = &adCoupledGradient("ions", i); + _sgnip[i] = &getMaterialProperty("sgn" + (*getVar("ions", i)).name()); + _muip[i] = &getADMaterialProperty("mu" + (*getVar("ions", i)).name()); + _Dip[i] = &getADMaterialProperty("diff" + (*getVar("ions", i)).name()); + } } ADReal @@ -88,8 +106,14 @@ FieldEmissionBC::computeQpResidual() { _a = 0.0; - _ion_flux = _sgnip[_qp] * _muip[_qp] * -_grad_potential[_qp] * _r_units * std::exp(_ip[_qp]) - - _Dip[_qp] * std::exp(_ip[_qp]) * _grad_ip[_qp] * _r_units; + for (auto i = 0; i < _num_ions; ++i) + { + + _ion_flux = (*_sgnip[i])[_qp] * (*_muip[i])[_qp] * -_grad_potential[_qp] * _r_units * + std::exp((*_ip[i])[_qp]) - + (*_Dip[i])[_qp] * std::exp((*_ip[i])[_qp]) * (*_grad_ip[i])[_qp] * _r_units; + jSE += _e[_qp] * 6.02E23 * _normals[_qp] * _se_coeff[i] * _ion_flux; + } // Fowler-Nordheim // jFE = (a / wf) * F^2 * exp(-v(f) * b * wf^1.5 / F) @@ -106,7 +130,6 @@ FieldEmissionBC::computeQpResidual() jFE = (FE_a / (_work_function[_qp])) * std::pow(F, 2) * std::exp(-v * FE_b * std::pow(_work_function[_qp], 1.5) / F); - jSE = _e[_qp] * 6.02E23 * _se_coeff[_qp] * _ion_flux * _normals[_qp]; if (_relax == true) _relaxation_Expr = std::tanh(_t / _tau); diff --git a/src/bcs/HagelaarElectronBC.C b/src/bcs/HagelaarElectronBC.C index 9f7afc9d8e6..3bf6f482cae 100644 --- a/src/bcs/HagelaarElectronBC.C +++ b/src/bcs/HagelaarElectronBC.C @@ -19,6 +19,9 @@ HagelaarElectronBC::validParams() params.addRequiredParam("r", "The reflection coefficient"); params.addRequiredCoupledVar("potential", "The electric potential"); params.addRequiredCoupledVar("mean_en", "The mean energy."); + params.deprecateCoupledVar("mean_en", "electron_energy", "06/01/2024"); + params.addRequiredCoupledVar("electron_energy", "The mean electron energy density in log form"); + params.addRequiredParam("position_units", "Units of position."); params.addClassDescription("Kinetic electron boundary condition" "(Based on DOI:https://doi.org/10.1103/PhysRevE.62.1452)"); @@ -32,7 +35,7 @@ HagelaarElectronBC::HagelaarElectronBC(const InputParameters & parameters) // Coupled Variables _grad_potential(adCoupledGradient("potential")), - _mean_en(adCoupledValue("mean_en")), + _mean_en(adCoupledValue("electron_energy")), _muem(getADMaterialProperty("muem")), _massem(getMaterialProperty("massem")), diff --git a/src/bcs/HagelaarEnergyAdvectionBC.C b/src/bcs/HagelaarEnergyAdvectionBC.C index d76f7db102a..90fa1ac6b20 100644 --- a/src/bcs/HagelaarEnergyAdvectionBC.C +++ b/src/bcs/HagelaarEnergyAdvectionBC.C @@ -19,7 +19,13 @@ HagelaarEnergyAdvectionBC::validParams() params.addRequiredParam("r", "The reflection coefficient"); params.addRequiredCoupledVar("potential", "The electric potential"); params.addRequiredCoupledVar("ip", "The ion density."); + params.deprecateCoupledVar("ip", "ions", "06/01/2024"); + params.addRequiredCoupledVar("ions", "A list of ion densities in log form"); + params.addRequiredParam>( + "emission_coeffs", + "The species dependent secondary electron emmision coefficients for this boundary"); params.addRequiredParam("position_units", "Units of position."); + params.addRequiredParam("secondary_electron_energy", "The secondary electron energy in eV"); params.addClassDescription("Kinetic advective electron energy boundary condition" "(Based on DOI:https://doi.org/10.1063/1.2715745)"); return params; @@ -30,29 +36,41 @@ HagelaarEnergyAdvectionBC::HagelaarEnergyAdvectionBC(const InputParameters & par _r_units(1. / getParam("position_units")), _r(getParam("r")), - + _num_ions(coupledComponents("ions")), // Coupled Variables _grad_potential(adCoupledGradient("potential")), - _ip_var(*getVar("ip", 0)), - _ip(adCoupledValue("ip")), - _grad_ip(adCoupledGradient("ip")), - - _sgnip(getMaterialProperty("sgn" + _ip_var.name())), - _muip(getADMaterialProperty("mu" + _ip_var.name())), - _Dip(getADMaterialProperty("diff" + _ip_var.name())), - _se_coeff(getMaterialProperty("se_coeff")), - _se_energy(getMaterialProperty("se_energy")), + _se_coeff(getParam>("emission_coeffs")), + _se_energy(getParam("secondary_electron_energy")), _mumean_en(getADMaterialProperty("mumean_en")), _a(0.5), _ion_flux(0, 0, 0), _v_thermal(0), - _n_gamma(0) + _n_gamma(0), + _bc_val(0) { + _ip.resize(_num_ions); + _ip_var.resize(_num_ions); + _grad_ip.resize(_num_ions); + _sgnip.resize(_num_ions); + _muip.resize(_num_ions); + _Dip.resize(_num_ions); + + for (unsigned int i = 0; i < _num_ions; ++i) + { + _ip_var[i] = getVar("ions", i); + _ip[i] = &adCoupledValue("ions", i); + _grad_ip[i] = &adCoupledGradient("ions", i); + _sgnip[i] = &getMaterialProperty("sgn" + (*getVar("ions", i)).name()); + _muip[i] = &getADMaterialProperty("mu" + (*getVar("ions", i)).name()); + _Dip[i] = &getADMaterialProperty("diff" + (*getVar("ions", i)).name()); + } } ADReal HagelaarEnergyAdvectionBC::computeQpResidual() { + // reset this value just to be safe + _bc_val = 0; if (_normals[_qp] * -1.0 * -_grad_potential[_qp] > 0.0) { _a = 1.0; @@ -62,14 +80,17 @@ HagelaarEnergyAdvectionBC::computeQpResidual() _a = 0.0; } - _ion_flux = _sgnip[_qp] * _muip[_qp] * -_grad_potential[_qp] * _r_units * std::exp(_ip[_qp]) - - _Dip[_qp] * std::exp(_ip[_qp]) * _grad_ip[_qp] * _r_units; + for (auto i = 0; i < _num_ions; ++i) + { + _ion_flux = (*_sgnip[i])[_qp] * (*_muip[i])[_qp] * -_grad_potential[_qp] * _r_units * + std::exp((*_ip[i])[_qp]) - + (*_Dip[i])[_qp] * std::exp((*_ip[i])[_qp]) * (*_grad_ip[i])[_qp] * _r_units; + _bc_val += 10. * _ion_flux * _normals[_qp] * _se_energy * _se_coeff[i] * (_a - 1.) * (_r + 1.); + } return _test[_i][_qp] * _r_units / (6. * (_r + 1.)) * - (10. * _ion_flux * _normals[_qp] * _se_energy[_qp] * _se_coeff[_qp] * (_a - 1.) * - (_r + 1.) + - (_r - 1.) * (std::exp(_u[_qp]) - _se_energy[_qp] * _n_gamma) * - (6. * -_grad_potential[_qp] * _r_units * _normals[_qp] * _mumean_en[_qp] * - (2. * _a - 1.) - - 5. * _v_thermal)); + (_bc_val + (_r - 1.) * (std::exp(_u[_qp]) - _se_energy * _n_gamma) * + (6. * -_grad_potential[_qp] * _r_units * _normals[_qp] * _mumean_en[_qp] * + (2. * _a - 1.) - + 5. * _v_thermal)); } diff --git a/src/bcs/HagelaarEnergyBC.C b/src/bcs/HagelaarEnergyBC.C index e14dd9dbfbb..18adef833a1 100644 --- a/src/bcs/HagelaarEnergyBC.C +++ b/src/bcs/HagelaarEnergyBC.C @@ -19,6 +19,8 @@ HagelaarEnergyBC::validParams() params.addRequiredParam("r", "The reflection coefficient"); params.addRequiredCoupledVar("potential", "The electric potential"); params.addRequiredCoupledVar("em", "The electron density."); + params.deprecateCoupledVar("em", "electrons", "06/01/2024"); + params.addRequiredCoupledVar("electrons", "The electron density in log form"); params.addRequiredParam("position_units", "Units of position."); return params; } @@ -34,8 +36,6 @@ HagelaarEnergyBC::HagelaarEnergyBC(const InputParameters & parameters) _massem(getMaterialProperty("massem")), _e(getMaterialProperty("e")), - _se_coeff(getMaterialProperty("se_coeff")), - _se_energy(getMaterialProperty("se_energy")), _mumean_en(getADMaterialProperty("mumean_en")) { _a = 0.5; diff --git a/src/bcs/LymberopoulosElectronBC.C b/src/bcs/LymberopoulosElectronBC.C index 822d61cf39c..c451e914617 100644 --- a/src/bcs/LymberopoulosElectronBC.C +++ b/src/bcs/LymberopoulosElectronBC.C @@ -17,9 +17,15 @@ LymberopoulosElectronBC::validParams() { InputParameters params = ADIntegratedBC::validParams(); params.addRequiredParam("ks", "The recombination coefficient"); - params.addRequiredParam("gamma", "The secondary electron coefficient"); + params.addRequiredParam>("gamma", "The secondary electron coefficient"); + params.deprecateParam("gamma", "emission_coeffs", "06/01/2024"); + params.addRequiredParam>( + "emission_coeffs", "The species dependent secondary electron emmision coefficients"); params.addRequiredCoupledVar("potential", "The electric potential"); params.addRequiredCoupledVar("ion", "The ion density."); + params.deprecateCoupledVar("ion", "ions", "06/01/2024"); + params.addRequiredCoupledVar("ions", "A list of ion densities in log form"); + params.addRequiredParam("position_units", "Units of position."); params.addClassDescription("Simpified kinetic electron boundary condition" "(Based on DOI: https://doi.org/10.1063/1.352926)"); @@ -31,15 +37,11 @@ LymberopoulosElectronBC::LymberopoulosElectronBC(const InputParameters & paramet _r_units(1. / getParam("position_units")), _ks(getParam("ks")), - _gamma(getParam("gamma")), - + _gamma(getParam>("emission_coeffs")), + _num_ions(coupledComponents("ions")), // Coupled Variables - _grad_potential(adCoupledGradient("potential")), - - _sign(1) + _grad_potential(adCoupledGradient("potential")) { - _num_ions = coupledComponents("ion"); - // Resize the vectors to store _num_ions values: _ion.resize(_num_ions); _ion_var.resize(_num_ions); @@ -66,11 +68,10 @@ LymberopoulosElectronBC::computeQpResidual() _ion_flux.zero(); for (unsigned int i = 0; i < _num_ions; ++i) { - _ion_flux += (*_sgnion[i])[_qp] * (*_muion[i])[_qp] * -_grad_potential[_qp] * _r_units * - std::exp((*_ion[i])[_qp]); + _ion_flux += _gamma[i] * (*_sgnion[i])[_qp] * (*_muion[i])[_qp] * -_grad_potential[_qp] * + _r_units * std::exp((*_ion[i])[_qp]); } return _test[_i][_qp] * _r_units * - (_sign * _ks * std::exp(_u[_qp]) * _normals[_qp] * _normals[_qp] - - _gamma * _ion_flux * _normals[_qp]); + (_ks * std::exp(_u[_qp]) * _normals[_qp] * _normals[_qp] - _ion_flux * _normals[_qp]); } diff --git a/src/bcs/NeumannCircuitVoltageMoles_KV.C b/src/bcs/NeumannCircuitVoltageMoles_KV.C index 02322f74a94..122e9de51ef 100644 --- a/src/bcs/NeumannCircuitVoltageMoles_KV.C +++ b/src/bcs/NeumannCircuitVoltageMoles_KV.C @@ -23,10 +23,23 @@ NeumannCircuitVoltageMoles_KV::validParams() params.addRequiredParam( "data_provider", "The name of the UserObject that can provide some data to materials, bcs, etc."); + params.addRequiredCoupledVar("ip", "The ion density."); + params.deprecateCoupledVar("ip", "ions", "06/01/2024"); + params.addRequiredCoupledVar("ions", "A list of ion densities in log-molar form"); + params.addRequiredCoupledVar("em", "The log of the electron density."); + params.deprecateCoupledVar("em", "electrons", "06/01/2024"); + params.addRequiredCoupledVar("electrons", "The electron density in log form"); + params.addRequiredCoupledVar( "mean_en", "The log of the product of the mean energy and the electron density."); + params.deprecateCoupledVar("mean_en", "electron_energy", "06/01/2024"); + params.addRequiredCoupledVar("electron_energy", "The mean electron energy density in log form"); + + params.addRequiredParam>( + "emission_coeffs", + "The seconday electron emmision coefficient for each ion provided in `ions`"); params.addRequiredParam("potential_units", "The potential units."); params.addRequiredParam("r", "The reflection coefficient applied to both electrons and ions"); @@ -40,9 +53,9 @@ NeumannCircuitVoltageMoles_KV::NeumannCircuitVoltageMoles_KV(const InputParamete _r_units(1. / getParam("position_units")), _V_bat(getFunction("function")), _data(getUserObject("data_provider")), - _mean_en(adCoupledValue("mean_en")), - _em(adCoupledValue("em")), - _se_coeff(getMaterialProperty("se_coeff")), + _mean_en(adCoupledValue("electron_energy")), + _em(adCoupledValue("electrons")), + _se_coeff(getParam>("emission_coeffs")), _eps(getMaterialProperty("eps")), _N_A(getMaterialProperty("N_A")), _muem(getADMaterialProperty("muem")), @@ -69,8 +82,11 @@ NeumannCircuitVoltageMoles_KV::NeumannCircuitVoltageMoles_KV(const InputParamete // First we need to initialize all of the ion densities and material properties. // Find the number of ions coupled into this BC: - _num_ions = coupledComponents("ip"); + _num_ions = coupledComponents("ions"); + if (_se_coeff.size() != _num_ions) + mooseError("NeumannCircuitVoltageMoles_KV: The lengths of `ions` and `emission_coeffs` must be " + "the same"); // Resize the vectors to store _num_ions values: _ip.resize(_num_ions); _grad_ip.resize(_num_ions); @@ -87,13 +103,13 @@ NeumannCircuitVoltageMoles_KV::NeumannCircuitVoltageMoles_KV(const InputParamete // refers to a single ion species. for (unsigned int i = 0; i < _ip.size(); ++i) { - _ip[i] = &adCoupledValue("ip", i); + _ip[i] = &adCoupledValue("ions", i); _grad_ip[i] = &adCoupledGradient("ip", i); - _T_heavy[i] = &getADMaterialProperty("T" + (*getVar("ip", i)).name()); - _muip[i] = &getADMaterialProperty("mu" + (*getVar("ip", i)).name()); - _Dip[i] = &getADMaterialProperty("diff" + (*getVar("ip", i)).name()); - _sgnip[i] = &getMaterialProperty("sgn" + (*getVar("ip", i)).name()); - _mass[i] = &getMaterialProperty("mass" + (*getVar("ip", i)).name()); + _T_heavy[i] = &getADMaterialProperty("T" + (*getVar("ions", i)).name()); + _muip[i] = &getADMaterialProperty("mu" + (*getVar("ions", i)).name()); + _Dip[i] = &getADMaterialProperty("diff" + (*getVar("ions", i)).name()); + _sgnip[i] = &getMaterialProperty("sgn" + (*getVar("ions", i)).name()); + _mass[i] = &getMaterialProperty("mass" + (*getVar("ions", i)).name()); } } @@ -117,16 +133,19 @@ NeumannCircuitVoltageMoles_KV::computeQpResidual() _ion_drift = 0; for (unsigned int i = 0; i < _num_ions; ++i) { - _ion_flux += - (*_sgnip[i])[_qp] * (*_muip[i])[_qp] * -_grad_u[_qp] * _r_units * std::exp((*_ip[i])[_qp]) - - (*_Dip[i])[_qp] * std::exp((*_ip[i])[_qp]) * (*_grad_ip[i])[_qp] * _r_units; + _ion_flux += _se_coeff[i] * + ((*_sgnip[i])[_qp] * (*_muip[i])[_qp] * -_grad_u[_qp] * _r_units * + std::exp((*_ip[i])[_qp]) - + (*_Dip[i])[_qp] * std::exp((*_ip[i])[_qp]) * (*_grad_ip[i])[_qp] * _r_units); - _secondary_ion += std::exp((*_ip[i])[_qp]) * (*_muip[i])[_qp]; + _secondary_ion += + (-1. + (-1. + _a) * _se_coeff[i]) * std::exp((*_ip[i])[_qp]) * (*_muip[i])[_qp]; - _ion_drift += std::sqrt(8 * _kb[_qp] * (*_T_heavy[i])[_qp] / (M_PI * (*_mass[i])[_qp])) * + _ion_drift += (-1. + (-1. + _a) * _se_coeff[i]) * + std::sqrt(8 * _kb[_qp] * (*_T_heavy[i])[_qp] / (M_PI * (*_mass[i])[_qp])) * std::exp((*_ip[i])[_qp]); } - _n_gamma = (1. - _a) * _se_coeff[_qp] * _ion_flux * _normals[_qp] / + _n_gamma = (1. - _a) * _ion_flux * _normals[_qp] / (_muem[_qp] * -_grad_u[_qp] * _r_units * _normals[_qp]); _v_e_th = std::sqrt(8 * _data.coulomb_charge() * 2.0 / 3 * std::exp(_mean_en[_qp] - _em[_qp]) / @@ -136,12 +155,10 @@ NeumannCircuitVoltageMoles_KV::computeQpResidual() (-2. * (1. + _r) * _u[_qp] - 2. * (1. + _r) * -_V_bat.value(_t, _q_point[_qp]) + _data.electrode_area() * _data.coulomb_charge() * _data.ballast_resist() / _voltage_scaling * (-1. + _r) * - ((-1. + (-1. + _a) * _se_coeff[_qp]) * _N_A[_qp] * _ion_drift + - _N_A[_qp] * (std::exp(_em[_qp]) - _n_gamma) * _v_e_th)) / + (_N_A[_qp] * _ion_drift + _N_A[_qp] * (std::exp(_em[_qp]) - _n_gamma) * _v_e_th)) / (2. * _data.electrode_area() * _data.coulomb_charge() * ((-1. + 2. * _a) * _muem[_qp] / _voltage_scaling * _N_A[_qp] * (std::exp(_em[_qp]) - _n_gamma) - - (-1. + 2. * _b) * (-1. + (-1. + _a) * _se_coeff[_qp]) * _secondary_ion / - _voltage_scaling * _N_A[_qp]) * + (-1. + 2. * _b) * _secondary_ion / _voltage_scaling * _N_A[_qp]) * _data.ballast_resist() * (-1. + _r)); } diff --git a/src/bcs/SakiyamaElectronDiffusionBC.C b/src/bcs/SakiyamaElectronDiffusionBC.C index eee0c96c180..244be0f13c2 100644 --- a/src/bcs/SakiyamaElectronDiffusionBC.C +++ b/src/bcs/SakiyamaElectronDiffusionBC.C @@ -17,6 +17,8 @@ SakiyamaElectronDiffusionBC::validParams() { InputParameters params = ADIntegratedBC::validParams(); params.addRequiredCoupledVar("mean_en", "The mean energy."); + params.deprecateCoupledVar("mean_en", "electron_energy", "06/01/2024"); + params.addRequiredCoupledVar("electron_energy", "The mean electron energy density in log form"); params.addRequiredParam("position_units", "Units of position."); params.addClassDescription("Kinetic electron boundary condition" "(Based on DOI: https://doi.org/10.1116/1.579300)"); @@ -29,7 +31,7 @@ SakiyamaElectronDiffusionBC::SakiyamaElectronDiffusionBC(const InputParameters & _r_units(1. / getParam("position_units")), // Coupled Variables - _mean_en(adCoupledValue("mean_en")), + _mean_en(adCoupledValue("electron_energy")), _massem(getMaterialProperty("massem")), _e(getMaterialProperty("e")), diff --git a/src/bcs/SakiyamaEnergyDiffusionBC.C b/src/bcs/SakiyamaEnergyDiffusionBC.C index b07ed522cb2..27f3259b0ba 100644 --- a/src/bcs/SakiyamaEnergyDiffusionBC.C +++ b/src/bcs/SakiyamaEnergyDiffusionBC.C @@ -17,6 +17,8 @@ SakiyamaEnergyDiffusionBC::validParams() { InputParameters params = ADIntegratedBC::validParams(); params.addRequiredCoupledVar("em", "The electron density."); + params.deprecateCoupledVar("em", "electrons", "06/01/2024"); + params.addRequiredCoupledVar("electrons", "The electron density in log form"); params.addRequiredParam("position_units", "Units of position."); params.addClassDescription("Kinetic advective electron energy boundary condition" "(Based on DOI: https://doi.org/10.1116/1.579300)"); @@ -29,7 +31,7 @@ SakiyamaEnergyDiffusionBC::SakiyamaEnergyDiffusionBC(const InputParameters & par _r_units(1. / getParam("position_units")), // Coupled Variables - _em(adCoupledValue("em")), + _em(adCoupledValue("electrons")), _massem(getMaterialProperty("massem")), _e(getMaterialProperty("e")), diff --git a/src/bcs/SakiyamaEnergySecondaryElectronBC.C b/src/bcs/SakiyamaEnergySecondaryElectronBC.C index 88180f6259d..9d43e8a1ed5 100644 --- a/src/bcs/SakiyamaEnergySecondaryElectronBC.C +++ b/src/bcs/SakiyamaEnergySecondaryElectronBC.C @@ -16,14 +16,25 @@ InputParameters SakiyamaEnergySecondaryElectronBC::validParams() { InputParameters params = ADIntegratedBC::validParams(); - params.addRequiredParam("se_coeff", "The secondary electron coefficient"); + params.addRequiredParam>("se_coeff", "The secondary electron coefficient"); + params.deprecateParam("se_coeff", "emission_coeffs", "06/01/2024"); + params.addRequiredParam>( + "emission_coeffs", + "The seconday electron emmision coefficient for each ion provided in `ions`"); params.addRequiredParam( "Tse_equal_Te", "The secondary electron temperature equal the electron temperature in eV"); params.addParam( "user_se_energy", 1.0, "The user's value of the secondary electron temperature in eV"); + params.deprecateParam("user_se_energy", "secondary_electron_energy", "06/01/2024"); + params.addParam("secondary_electron_energy", "The secondary electron temperature in eV"); params.addRequiredCoupledVar("potential", "The electric potential"); params.addRequiredCoupledVar("em", "The electron density."); + params.deprecateCoupledVar("em", "electrons", "06/01/2024"); + params.addRequiredCoupledVar("electrons", "The elctron density in log form"); params.addRequiredCoupledVar("ip", "The ion density."); + params.deprecateCoupledVar("ip", "ions", "06/01/2024"); + params.addRequiredCoupledVar("ions", "A list of ion densities in log form"); + params.addRequiredParam("position_units", "Units of position."); params.addClassDescription( "Kinetic secondary electron for mean electron energy boundary condition" @@ -37,20 +48,22 @@ SakiyamaEnergySecondaryElectronBC::SakiyamaEnergySecondaryElectronBC( _r_units(1. / getParam("position_units")), Te_dependent(getParam("Tse_equal_Te")), - + _num_ions(coupledComponents("ions")), + _se_coeff(getParam>("emission_coeffs")), // Coupled Variables _grad_potential(adCoupledGradient("potential")), _em(adCoupledValue("em")), - _se_coeff(getParam("se_coeff")), - _user_se_energy(getParam("user_se_energy")), + _user_se_energy(getParam("secondary_electron_energy")), _a(0.5), _se_energy(0), _ion_flux(0, 0, 0) { - _num_ions = coupledComponents("ip"); + if (_se_coeff.size() != _num_ions) + mooseError("SakiyamaEnergySecondaryElectronBC: The lengths of `ions` and `emission_coeffs` " + "must be the same"); _ip.resize(_num_ions); _ip_var.resize(_num_ions); _muip.resize(_num_ions); @@ -58,10 +71,10 @@ SakiyamaEnergySecondaryElectronBC::SakiyamaEnergySecondaryElectronBC( for (unsigned int i = 0; i < _num_ions; ++i) { - _ip_var[i] = getVar("ip", i); - _ip[i] = &adCoupledValue("ip", i); - _muip[i] = &getADMaterialProperty("mu" + (*getVar("ip", i)).name()); - _sgnip[i] = &getMaterialProperty("sgn" + (*getVar("ip", i)).name()); + _ip_var[i] = getVar("ions", i); + _ip[i] = &adCoupledValue("ions", i); + _muip[i] = &getADMaterialProperty("mu" + (*getVar("ions", i)).name()); + _sgnip[i] = &getMaterialProperty("sgn" + (*getVar("ions", i)).name()); } } @@ -80,8 +93,8 @@ SakiyamaEnergySecondaryElectronBC::computeQpResidual() _a = 0.0; } - _ion_flux += _a * (*_sgnip[i])[_qp] * (*_muip[i])[_qp] * -_grad_potential[_qp] * _r_units * - std::exp((*_ip[i])[_qp]); + _ion_flux += _se_coeff[i] * _a * (*_sgnip[i])[_qp] * (*_muip[i])[_qp] * -_grad_potential[_qp] * + _r_units * std::exp((*_ip[i])[_qp]); } if (Te_dependent) @@ -93,6 +106,5 @@ SakiyamaEnergySecondaryElectronBC::computeQpResidual() _se_energy = _user_se_energy; } - return -_test[_i][_qp] * _r_units * _se_coeff * (5.0 / 3.0) * _se_energy * _ion_flux * - _normals[_qp]; + return -_test[_i][_qp] * _r_units * (5.0 / 3.0) * _se_energy * _ion_flux * _normals[_qp]; } diff --git a/src/bcs/SakiyamaSecondaryElectronBC.C b/src/bcs/SakiyamaSecondaryElectronBC.C index 11551bef141..078c2289327 100644 --- a/src/bcs/SakiyamaSecondaryElectronBC.C +++ b/src/bcs/SakiyamaSecondaryElectronBC.C @@ -18,9 +18,14 @@ SakiyamaSecondaryElectronBC::validParams() InputParameters params = ADIntegratedBC::validParams(); params.addRequiredCoupledVar("potential", "The electric potential"); params.addRequiredCoupledVar("ip", "The ion density."); + params.deprecateCoupledVar("ip", "ions", "06/01/2024"); + params.addRequiredCoupledVar("ions", "A list of ion densities in log form"); params.addRequiredParam("position_units", "Units of position."); - params.addParam("users_gamma", - "A secondary electron emission coeff. only used for this BC."); + params.addRequiredParam>( + "users_gamma", "A secondary electron emission coeff. only used for this BC."); + params.deprecateParam("users_gamma", "emission_coeffs", "06/01/2024"); + params.addRequiredParam>( + "emission_coeffs", "A list of species dependent secondary electron emmisions coefficients"); params.addClassDescription("Kinetic secondary electron boundary condition" "(Based on DOI: https://doi.org/10.1116/1.579300)"); return params; @@ -30,25 +35,26 @@ SakiyamaSecondaryElectronBC::SakiyamaSecondaryElectronBC(const InputParameters & : ADIntegratedBC(parameters), _r_units(1. / getParam("position_units")), - + _num_ions(coupledComponents("ions")), + _user_se_coeff(getParam>("emission_coeffs")), // Coupled Variables _grad_potential(adCoupledGradient("potential")), _a(0.5), - _ion_flux(0, 0, 0), - _user_se_coeff(getParam("users_gamma")) + _ion_flux(0, 0, 0) { - _num_ions = coupledComponents("ip"); - + if (_user_se_coeff.size() != _num_ions) + mooseError("SakiyamaSecondaryElectronBC: The lengths of `ions` and `emission_coeffs` must be " + "the same"); _ip.resize(_num_ions); _muip.resize(_num_ions); _sgnip.resize(_num_ions); for (unsigned int i = 0; i < _num_ions; ++i) { - _ip[i] = &adCoupledValue("ip", i); - _muip[i] = &getADMaterialProperty("mu" + (*getVar("ip", i)).name()); - _sgnip[i] = &getMaterialProperty("sgn" + (*getVar("ip", i)).name()); + _ip[i] = &adCoupledValue("ions", i); + _muip[i] = &getADMaterialProperty("mu" + (*getVar("ions", i)).name()); + _sgnip[i] = &getMaterialProperty("sgn" + (*getVar("ions", i)).name()); } } @@ -67,9 +73,9 @@ SakiyamaSecondaryElectronBC::computeQpResidual() _a = 0.0; } - _ion_flux += _a * (*_sgnip[i])[_qp] * (*_muip[i])[_qp] * -_grad_potential[_qp] * _r_units * - std::exp((*_ip[i])[_qp]); + _ion_flux += _user_se_coeff[i] * _a * (*_sgnip[i])[_qp] * (*_muip[i])[_qp] * + -_grad_potential[_qp] * _r_units * std::exp((*_ip[i])[_qp]); } - return -_test[_i][_qp] * _r_units * _a * _user_se_coeff * _ion_flux * _normals[_qp]; + return -_test[_i][_qp] * _r_units * _a * _ion_flux * _normals[_qp]; } diff --git a/src/bcs/SchottkyEmissionBC.C b/src/bcs/SchottkyEmissionBC.C index 4c649b54e3f..356b21c99bd 100644 --- a/src/bcs/SchottkyEmissionBC.C +++ b/src/bcs/SchottkyEmissionBC.C @@ -19,7 +19,14 @@ SchottkyEmissionBC::validParams() params.addRequiredParam("r", "The reflection coefficient"); params.addRequiredCoupledVar("potential", "The electric potential"); params.addRequiredCoupledVar("mean_en", "The mean energy."); + params.deprecateCoupledVar("mean_en", "electron_energy", "06/01/204"); + params.addRequiredCoupledVar("electron_energy", "The mean electron energy density in log form"); params.addRequiredCoupledVar("ip", "The ion density."); + params.deprecateCoupledVar("ip", "ions", "06/01/2024"); + params.addRequiredCoupledVar("ions", "A list of ion densities in log form"); + params.addRequiredParam>("emission_coeffs", + "A list of species dependent secondary electron " + "emmision coefficients for each species in `ions`"); params.addRequiredParam("position_units", "Units of position."); params.addRequiredParam("potential_units", "The potential units."); params.addParam("tau", 1e-9, "The time constant for ramping the boundary condition."); @@ -32,20 +39,14 @@ SchottkyEmissionBC::SchottkyEmissionBC(const InputParameters & parameters) _r_units(1. / getParam("position_units")), _r(getParam("r")), - + _num_ions(coupledComponents("ions")), + _se_coeff(getParam>("emission_coeffs")), // Coupled Variables _grad_potential(adCoupledGradient("potential")), - _mean_en(adCoupledValue("mean_en")), - _ip_var(*getVar("ip", 0)), - _ip(adCoupledValue("ip")), - _grad_ip(adCoupledGradient("ip")), + _mean_en(adCoupledValue("electron_energy")), _massem(getMaterialProperty("massem")), _e(getMaterialProperty("e")), - _sgnip(getMaterialProperty("sgn" + _ip_var.name())), - _muip(getADMaterialProperty("mu" + _ip_var.name())), - _Dip(getADMaterialProperty("diff" + _ip_var.name())), - _se_coeff(getMaterialProperty("se_coeff")), _work_function(getMaterialProperty("work_function")), _field_enhancement(getMaterialProperty("field_enhancement")), _Richardson_coefficient(getMaterialProperty("Richardson_coefficient")), @@ -58,6 +59,9 @@ SchottkyEmissionBC::SchottkyEmissionBC(const InputParameters & parameters) _potential_units(getParam("potential_units")) { + if (_se_coeff.size() != _num_ions) + mooseError("SchottkyEmissionBC: The lengths of `ions` and `emission_coeffs` must be the same"); + if (_potential_units.compare("V") == 0) { _voltage_scaling = 1.; @@ -69,6 +73,23 @@ SchottkyEmissionBC::SchottkyEmissionBC(const InputParameters & parameters) _dPhi_over_F = 3.7946865E-5 * std::sqrt(_voltage_scaling); // eV*sqrt(m/kV) (if _voltage_scaling = 1000) + + _ip.resize(_num_ions); + _ip_var.resize(_num_ions); + _grad_ip.resize(_num_ions); + _sgnip.resize(_num_ions); + _muip.resize(_num_ions); + _Dip.resize(_num_ions); + + for (unsigned int i = 0; i < _num_ions; ++i) + { + _ip_var[i] = getVar("ions", i); + _ip[i] = &adCoupledValue("ions", i); + _grad_ip[i] = &adCoupledGradient("ions", i); + _sgnip[i] = &getMaterialProperty("sgn" + (*getVar("ions", i)).name()); + _muip[i] = &getADMaterialProperty("mu" + (*getVar("ions", i)).name()); + _Dip[i] = &getADMaterialProperty("diff" + (*getVar("ions", i)).name()); + } } ADReal @@ -93,8 +114,14 @@ SchottkyEmissionBC::computeQpResidual() { _a = 0.0; - _ion_flux = _sgnip[_qp] * _muip[_qp] * -_grad_potential[_qp] * _r_units * std::exp(_ip[_qp]) - - _Dip[_qp] * std::exp(_ip[_qp]) * _grad_ip[_qp] * _r_units; + _ion_flux.zero(); + for (auto i = 0; i < _num_ions; ++i) + { + _ion_flux += _se_coeff[i] * + ((*_sgnip[i])[_qp] * (*_muip[i])[_qp] * -_grad_potential[_qp] * _r_units * + std::exp((*_ip[i])[_qp]) - + (*_Dip[i])[_qp] * std::exp((*_ip[i])[_qp]) * (*_grad_ip[i])[_qp] * _r_units); + } // Schottky emission // je = AR * T^2 * exp(-(wf - dPhi) / (kB * T)) @@ -107,7 +134,7 @@ SchottkyEmissionBC::computeQpResidual() jRD = _Richardson_coefficient[_qp] * std::pow(_cathode_temperature[_qp], 2) * std::exp(-(_work_function[_qp] - dPhi) / (kB * _cathode_temperature[_qp])); - jSE = _e[_qp] * 6.02E23 * _se_coeff[_qp] * _ion_flux * _normals[_qp]; + jSE = _e[_qp] * 6.02E23 * _ion_flux * _normals[_qp]; if (_relax) { diff --git a/src/bcs/SecondaryElectronBC.C b/src/bcs/SecondaryElectronBC.C index 70a1ef4dc93..119fd53d075 100644 --- a/src/bcs/SecondaryElectronBC.C +++ b/src/bcs/SecondaryElectronBC.C @@ -20,8 +20,14 @@ SecondaryElectronBC::validParams() params.addParam("r_ion", 0, "The reflection coefficient of the ions."); params.addRequiredCoupledVar("potential", "The electric potential"); params.addRequiredCoupledVar("mean_en", "The mean energy."); + params.deprecateCoupledVar("mean_en", "electron_energy", "06/01/2024"); + params.addRequiredCoupledVar("electron_energy", "The mean electron energy density in log form"); params.addRequiredCoupledVar("ip", "The ion density."); + params.deprecateCoupledVar("ip", "ions", "06/01/2024"); + params.addRequiredCoupledVar("ions", "A list of ion densities in log form"); params.addRequiredParam("position_units", "Units of position."); + params.addRequiredParam>( + "emission_coeffs", "A list of species dependent secondary electron emmision coefficients"); return params; } @@ -31,15 +37,16 @@ SecondaryElectronBC::SecondaryElectronBC(const InputParameters & parameters) _r(getParam("r")), _r_ion(getParam("r_ion")), _kb(getMaterialProperty("k_boltz")), - + _num_ions(coupledComponents("ions")), + _se_coeff(getParam>("emission_coeffs")), // Coupled Variables _grad_potential(adCoupledGradient("potential")), - _mean_en(adCoupledValue("mean_en")), + _mean_en(adCoupledValue("electron_energy")), _muem(getADMaterialProperty("muem")), _massem(getMaterialProperty("massem")), - _e(getMaterialProperty("e")), - _se_coeff(getMaterialProperty("se_coeff")) + _e(getMaterialProperty("e")) + { _ion_flux = 0; _a = 0.5; @@ -47,8 +54,8 @@ SecondaryElectronBC::SecondaryElectronBC(const InputParameters & parameters) _v_thermal = 0.0; _n_gamma = 0.0; - _num_ions = coupledComponents("ip"); - + if (_se_coeff.size() != _num_ions) + mooseError("SecondaryElectronBC: The lengths of `ions` and `emission_coeffs` must be the same"); // Resize the vectors to store _num_ions values: _ip.resize(_num_ions); _grad_ip.resize(_num_ions); @@ -64,12 +71,12 @@ SecondaryElectronBC::SecondaryElectronBC(const InputParameters & parameters) // refers to a single ion species. for (unsigned int i = 0; i < _num_ions; ++i) { - _ip[i] = &adCoupledValue("ip", i); - _grad_ip[i] = &adCoupledGradient("ip", i); - _muip[i] = &getADMaterialProperty("mu" + (*getVar("ip", i)).name()); - _Tip[i] = &getADMaterialProperty("T" + (*getVar("ip", i)).name()); - _massip[i] = &getMaterialProperty("mass" + (*getVar("ip", i)).name()); - _sgnip[i] = &getMaterialProperty("sgn" + (*getVar("ip", i)).name()); + _ip[i] = &adCoupledValue("ions", i); + _grad_ip[i] = &adCoupledGradient("ions", i); + _muip[i] = &getADMaterialProperty("mu" + (*getVar("ions", i)).name()); + _Tip[i] = &getADMaterialProperty("T" + (*getVar("ions", i)).name()); + _massip[i] = &getMaterialProperty("mass" + (*getVar("ions", i)).name()); + _sgnip[i] = &getMaterialProperty("sgn" + (*getVar("ions", i)).name()); } } @@ -92,14 +99,14 @@ SecondaryElectronBC::computeQpResidual() _b = 1.0; else _b = 0.0; - _ion_flux += std::exp((*_ip[i])[_qp]) * + _ion_flux += _se_coeff[i] * std::exp((*_ip[i])[_qp]) * (0.5 * std::sqrt(8 * _kb[_qp] * (*_Tip[i])[_qp] / (M_PI * (*_massip[i])[_qp])) + (2 * _b - 1) * (*_sgnip[i])[_qp] * (*_muip[i])[_qp] * -_grad_potential[_qp] * _r_units * _normals[_qp]); } _ion_flux *= (1.0 - _r_ion) / (1.0 + _r_ion); - _n_gamma = (1. - _a) * _se_coeff[_qp] * _ion_flux / + _n_gamma = (1. - _a) * _ion_flux / (_muem[_qp] * -_grad_potential[_qp] * _r_units * _normals[_qp] + std::numeric_limits::epsilon()); _v_thermal = @@ -107,5 +114,5 @@ SecondaryElectronBC::computeQpResidual() return _test[_i][_qp] * _r_units * ((1. - _r) / (1. + _r) * (-0.5 * _v_thermal * _n_gamma) - - 2. / (1. + _r) * (1. - _a) * _se_coeff[_qp] * _ion_flux); + 2. / (1. + _r) * (1. - _a) * _ion_flux); } diff --git a/src/bcs/SecondaryElectronEnergyBC.C b/src/bcs/SecondaryElectronEnergyBC.C index f810841c522..324ed73bc6f 100644 --- a/src/bcs/SecondaryElectronEnergyBC.C +++ b/src/bcs/SecondaryElectronEnergyBC.C @@ -20,8 +20,16 @@ SecondaryElectronEnergyBC::validParams() params.addParam("r_ion", 0, "The reflection coefficient of the ions."); params.addRequiredCoupledVar("potential", "The electric potential"); params.addRequiredCoupledVar("em", "The electron density."); + params.deprecateCoupledVar("em", "electrons", "06/01/2024"); + params.addRequiredCoupledVar("electrons", "The electron density in log form"); + params.addRequiredCoupledVar("ip", "The ion density."); + params.deprecateCoupledVar("ip", "ions", "06/01/2024"); + params.addRequiredCoupledVar("ions", "A list of ion densities in log form"); params.addRequiredParam("position_units", "Units of position."); + params.addRequiredParam>( + "emission_coeffs", "A species dependent list of secondary electron emmision coefficients"); + params.addRequiredParam("secondary_electron_energy", "The secondary electron energy in eV"); return params; } @@ -31,16 +39,17 @@ SecondaryElectronEnergyBC::SecondaryElectronEnergyBC(const InputParameters & par _r(getParam("r")), _r_ion(getParam("r_ion")), _kb(getMaterialProperty("k_boltz")), - + _num_ions(coupledComponents("ions")), + _se_coeff(getParam>("emission_coeffs")), // Coupled Variables _grad_potential(adCoupledGradient("potential")), - _em(adCoupledValue("em")), + _em(adCoupledValue("electrons")), _muem(getADMaterialProperty("muem")), _massem(getMaterialProperty("massem")), _e(getMaterialProperty("e")), - _se_coeff(getMaterialProperty("se_coeff")), - _se_energy(getMaterialProperty("se_energy")), + + _se_energy(getParam("secondary_electron_energy")), _mumean_en(getADMaterialProperty("mumean_en")) { _ion_flux = 0; @@ -49,7 +58,9 @@ SecondaryElectronEnergyBC::SecondaryElectronEnergyBC(const InputParameters & par _v_thermal = 0.0; _n_gamma = 0.0; - _num_ions = coupledComponents("ip"); + if (_se_coeff.size() != _num_ions) + mooseError( + "SecondaryElectronEnergyBC: The lengths of `ions` and `emission_coeffs` must be the same"); // Resize the vectors to store _num_ions values: _ip.resize(_num_ions); @@ -66,12 +77,12 @@ SecondaryElectronEnergyBC::SecondaryElectronEnergyBC(const InputParameters & par // refers to a single ion species. for (unsigned int i = 0; i < _num_ions; ++i) { - _ip[i] = &adCoupledValue("ip", i); - _grad_ip[i] = &adCoupledGradient("ip", i); - _muip[i] = &getADMaterialProperty("mu" + (*getVar("ip", i)).name()); - _Tip[i] = &getADMaterialProperty("T" + (*getVar("ip", i)).name()); - _massip[i] = &getMaterialProperty("mass" + (*getVar("ip", i)).name()); - _sgnip[i] = &getMaterialProperty("sgn" + (*getVar("ip", i)).name()); + _ip[i] = &adCoupledValue("ions", i); + _grad_ip[i] = &adCoupledGradient("ions", i); + _muip[i] = &getADMaterialProperty("mu" + (*getVar("ions", i)).name()); + _Tip[i] = &getADMaterialProperty("T" + (*getVar("ions", i)).name()); + _massip[i] = &getMaterialProperty("mass" + (*getVar("ions", i)).name()); + _sgnip[i] = &getMaterialProperty("sgn" + (*getVar("ions", i)).name()); } } @@ -94,13 +105,13 @@ SecondaryElectronEnergyBC::computeQpResidual() _b = 1.0; else _b = 0.0; - _ion_flux += std::exp((*_ip[i])[_qp]) * + _ion_flux += _se_coeff[i] * std::exp((*_ip[i])[_qp]) * (0.5 * std::sqrt(8 * _kb[_qp] * (*_Tip[i])[_qp] / (M_PI * (*_massip[i])[_qp])) + (2 * _b - 1) * (*_sgnip[i])[_qp] * (*_muip[i])[_qp] * -_grad_potential[_qp] * _r_units * _normals[_qp]); } - _n_gamma = (1. - _a) * _se_coeff[_qp] * _ion_flux / + _n_gamma = (1. - _a) * _ion_flux / (_muem[_qp] * -_grad_potential[_qp] * _r_units * _normals[_qp] + std::numeric_limits::epsilon()); @@ -108,6 +119,6 @@ SecondaryElectronEnergyBC::computeQpResidual() std::sqrt(8 * _e[_qp] * 2.0 / 3 * std::exp(_u[_qp] - _em[_qp]) / (M_PI * _massem[_qp])); return _test[_i][_qp] * _r_units * - ((1 - _r) / (1 + _r) * (-5. / 6. * _v_thermal * _n_gamma * _se_energy[_qp]) - - 5. / 3. * (2. / (1 + _r)) * _se_energy[_qp] * (1 - _a) * _se_coeff[_qp] * _ion_flux); + ((1 - _r) / (1 + _r) * (-5. / 6. * _v_thermal * _n_gamma * _se_energy) - + 5. / 3. * (2. / (1 + _r)) * _se_energy * (1 - _a) * _ion_flux); } diff --git a/test/tests/1d_dc/NonlocalPotentialBCWithSchottky.i b/test/tests/1d_dc/NonlocalPotentialBCWithSchottky.i index 25245a471a8..a76beab6e71 100644 --- a/test/tests/1d_dc/NonlocalPotentialBCWithSchottky.i +++ b/test/tests/1d_dc/NonlocalPotentialBCWithSchottky.i @@ -566,6 +566,7 @@ area = 5.02e-7 # Formerly 3.14e-6 position_units = ${dom0Scale} tau = ${relaxTime} relax = true + emission_coeffs = 0.02 [] # [em_physical_left] diff --git a/test/tests/1d_dc/densities_mean_en.i b/test/tests/1d_dc/densities_mean_en.i index 26d71f11b7b..fbff819a56a 100644 --- a/test/tests/1d_dc/densities_mean_en.i +++ b/test/tests/1d_dc/densities_mean_en.i @@ -753,6 +753,7 @@ dom1Scale = 1e-7 mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 [] [potential_dirichlet_right] type = DirichletBC @@ -811,6 +812,7 @@ dom1Scale = 1e-7 mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 [] [Arp_physical_left_diffusion] type = HagelaarIonDiffusionBC diff --git a/test/tests/1d_dc/mean_en.i b/test/tests/1d_dc/mean_en.i index 271f89c18b6..6b51c55c9f8 100644 --- a/test/tests/1d_dc/mean_en.i +++ b/test/tests/1d_dc/mean_en.i @@ -770,6 +770,8 @@ dom1Scale = 1e-7 em = em ip = 'Arp' r = 0 + emission_coeffs = 0.05 + secondary_electron_energy = 3 position_units = ${dom0Scale} [] @@ -784,6 +786,7 @@ dom1Scale = 1e-7 mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 [] [potential_dirichlet_right] type = DirichletBC @@ -835,6 +838,7 @@ dom1Scale = 1e-7 mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 [] [Arp_physical_left_diffusion] type = HagelaarIonDiffusionBC diff --git a/test/tests/1d_dc/mean_en_multi.i b/test/tests/1d_dc/mean_en_multi.i index 2ab3d5d2fcf..139047f8cef 100644 --- a/test/tests/1d_dc/mean_en_multi.i +++ b/test/tests/1d_dc/mean_en_multi.i @@ -839,6 +839,7 @@ dom1Scale = 1e-7 mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 [] [potential_dirichlet_right] type = DirichletBC @@ -897,6 +898,7 @@ dom1Scale = 1e-7 mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 [] [Arp_physical_left_diffusion] type = HagelaarIonDiffusionBC @@ -958,6 +960,8 @@ dom1Scale = 1e-7 em = em ip = 'Arp' r = 0 + emission_coeffs = 0.05 + secondary_electron_energy = 3 position_units = ${dom0Scale} [] [emliq_right] diff --git a/test/tests/DriftDiffusionAction/mean_en_actions.i b/test/tests/DriftDiffusionAction/mean_en_actions.i index a32e1dfea01..c486f6380e2 100644 --- a/test/tests/DriftDiffusionAction/mean_en_actions.i +++ b/test/tests/DriftDiffusionAction/mean_en_actions.i @@ -468,7 +468,9 @@ dom1Scale = 1e-7 em = em ip = 'Arp' r = 0 + emission_coeffs = 0.05 position_units = ${dom0Scale} + secondary_electron_energy = 3 [] [potential_left] @@ -482,6 +484,7 @@ dom1Scale = 1e-7 mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 [] [potential_dirichlet_right] type = DirichletBC @@ -532,6 +535,7 @@ dom1Scale = 1e-7 mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 [] [Arp_physical_left_diffusion] type = HagelaarIonDiffusionBC diff --git a/test/tests/DriftDiffusionAction/mean_en_no_actions.i b/test/tests/DriftDiffusionAction/mean_en_no_actions.i index 5abee2d4a61..561111d7d9b 100644 --- a/test/tests/DriftDiffusionAction/mean_en_no_actions.i +++ b/test/tests/DriftDiffusionAction/mean_en_no_actions.i @@ -843,6 +843,8 @@ dom1Scale = 1e-7 em = em ip = 'Arp' r = 0 + emission_coeffs = 0.05 + secondary_electron_energy = 3 position_units = ${dom0Scale} [] @@ -857,6 +859,7 @@ dom1Scale = 1e-7 mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 [] [potential_dirichlet_right] type = DirichletBC @@ -907,6 +910,7 @@ dom1Scale = 1e-7 mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 [] [Arp_physical_left_diffusion] type = HagelaarIonDiffusionBC diff --git a/test/tests/Schottky_emission/Example1/Input.i b/test/tests/Schottky_emission/Example1/Input.i index e4c14606c7c..379dc004a7c 100644 --- a/test/tests/Schottky_emission/Example1/Input.i +++ b/test/tests/Schottky_emission/Example1/Input.i @@ -498,6 +498,7 @@ vhigh = -200E-3 #kV mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.02 [] [potential_dirichlet_right] @@ -520,6 +521,7 @@ vhigh = -200E-3 #kV position_units = ${dom0Scale} # tau = 10E-6 relax = true + emission_coeffs = 0.02 [] # [em_physical_left] diff --git a/test/tests/Schottky_emission/Example2/Input.i b/test/tests/Schottky_emission/Example2/Input.i index c2a7ea9249f..7b7574649a0 100644 --- a/test/tests/Schottky_emission/Example2/Input.i +++ b/test/tests/Schottky_emission/Example2/Input.i @@ -498,6 +498,7 @@ vhigh = -80E-3 #kV mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.02 [] [potential_dirichlet_right] @@ -520,6 +521,7 @@ vhigh = -80E-3 #kV position_units = ${dom0Scale} # tau = 10E-6 relax = true + emission_coeffs = 0.02 [] # [em_physical_left] diff --git a/test/tests/Schottky_emission/Example3/Input.i b/test/tests/Schottky_emission/Example3/Input.i index 983ccfb4de2..514ab3dadd6 100644 --- a/test/tests/Schottky_emission/Example3/Input.i +++ b/test/tests/Schottky_emission/Example3/Input.i @@ -501,6 +501,7 @@ threeTimesRelaxTime = 150E-6 #s mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.02 [] [potential_dirichlet_right] @@ -523,6 +524,7 @@ threeTimesRelaxTime = 150E-6 #s position_units = ${dom0Scale} # tau = ${relaxTime} relax = true + emission_coeffs = 0.02 [] # [em_physical_left] diff --git a/test/tests/Schottky_emission/Example4/Input.i b/test/tests/Schottky_emission/Example4/Input.i index e2b42ed6dd2..895bb99bb82 100644 --- a/test/tests/Schottky_emission/Example4/Input.i +++ b/test/tests/Schottky_emission/Example4/Input.i @@ -564,6 +564,7 @@ area = 5.02e-7 # Formerly 3.14e-6 position_units = ${dom0Scale} tau = ${relaxTime} relax = true + emission_coeffs = 0.02 [] # [em_physical_left] diff --git a/test/tests/Schottky_emission/PaschenLaw/Input.i b/test/tests/Schottky_emission/PaschenLaw/Input.i index b9e8fec0d1f..3838d5852d0 100644 --- a/test/tests/Schottky_emission/PaschenLaw/Input.i +++ b/test/tests/Schottky_emission/PaschenLaw/Input.i @@ -499,6 +499,7 @@ vhigh = -0.10 #kV mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.02 [] [potential_dirichlet_right] @@ -521,6 +522,7 @@ vhigh = -0.10 #kV position_units = ${dom0Scale} # tau = 5E-6 relax = true + emission_coeffs = 0.02 [] # [em_physical_left] diff --git a/test/tests/automatic_differentiation/ad_argon.i b/test/tests/automatic_differentiation/ad_argon.i index 7fb3e52fa29..edb10bde5a7 100644 --- a/test/tests/automatic_differentiation/ad_argon.i +++ b/test/tests/automatic_differentiation/ad_argon.i @@ -510,7 +510,9 @@ dom0Scale = 1e-3 em = em ip = 'Arp Ar2p' r = 0 + emission_coeffs = '0.05 0.05' position_units = ${dom0Scale} + secondary_electron_energy = 3 [] [potential_left] @@ -524,6 +526,7 @@ dom0Scale = 1e-3 mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = '0.05 0.05' [] [potential_dirichlet_right] type = DirichletBC @@ -590,6 +593,7 @@ dom0Scale = 1e-3 mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 [] [Arp_physical_left_diffusion] type = HagelaarIonDiffusionBC diff --git a/test/tests/crane_action/townsend_units.i b/test/tests/crane_action/townsend_units.i index d0fe1a006b0..458cdbae6b4 100644 --- a/test/tests/crane_action/townsend_units.i +++ b/test/tests/crane_action/townsend_units.i @@ -711,6 +711,8 @@ dom1Scale = 1e-7 em = em ip = 'Arp' r = 0 + emission_coeffs = 0.05 + secondary_electron_energy = 3 position_units = ${dom0Scale} [] @@ -725,6 +727,7 @@ dom1Scale = 1e-7 mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 [] [potential_dirichlet_right] type = DirichletBC @@ -776,6 +779,7 @@ dom1Scale = 1e-7 mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 [] [Arp_physical_left_diffusion] type = HagelaarIonDiffusionBC diff --git a/test/tests/field_emission/field_emission.i b/test/tests/field_emission/field_emission.i index 3614d709e78..4a5f867ce6e 100644 --- a/test/tests/field_emission/field_emission.i +++ b/test/tests/field_emission/field_emission.i @@ -501,6 +501,7 @@ vhigh = -0.15 #kV mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 [] [potential_dirichlet_right] type = DirichletBC diff --git a/test/tests/reflections/Schottky/Input.i b/test/tests/reflections/Schottky/Input.i index 394f80f4f36..3829ff5aa4a 100644 --- a/test/tests/reflections/Schottky/Input.i +++ b/test/tests/reflections/Schottky/Input.i @@ -492,6 +492,7 @@ vhigh = -150E-3 #kV mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.02 [] [potential_dirichlet_right] @@ -512,6 +513,7 @@ vhigh = -150E-3 #kV mean_en = mean_en r = 1 position_units = ${dom0Scale} + emission_coeffs = 0.02 [] # [em_physical_left] diff --git a/test/tests/reflections/Schottky_300_V_5_um/Input.i b/test/tests/reflections/Schottky_300_V_5_um/Input.i index a2dc3a720f1..80ae6101f91 100644 --- a/test/tests/reflections/Schottky_300_V_5_um/Input.i +++ b/test/tests/reflections/Schottky_300_V_5_um/Input.i @@ -497,6 +497,7 @@ vhigh = -400E-3 #kV mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.02 [] [potential_dirichlet_right] @@ -519,6 +520,7 @@ vhigh = -400E-3 #kV position_units = ${dom0Scale} tau = 100E-9 relax = true + emission_coeffs = 0.02 [] # [em_physical_left] @@ -582,6 +584,8 @@ vhigh = -400E-3 #kV ip = Arp r = 0 position_units = ${dom0Scale} + secondary_electron_energy = 3 + emission_coeffs = 0.02 [] [mean_en_physical_right] @@ -656,3 +660,4 @@ vhigh = -400E-3 #kV block = 0 [] [] + diff --git a/test/tests/reflections/Schottky_400_V_10_um/Input.i b/test/tests/reflections/Schottky_400_V_10_um/Input.i index 173868a21cf..bf07c4b106a 100644 --- a/test/tests/reflections/Schottky_400_V_10_um/Input.i +++ b/test/tests/reflections/Schottky_400_V_10_um/Input.i @@ -494,6 +494,7 @@ vhigh = -175E-3 #kV mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.02 [] [potential_dirichlet_right] @@ -514,6 +515,7 @@ vhigh = -175E-3 #kV mean_en = mean_en r = 1 position_units = ${dom0Scale} + emission_coeffs = 0.02 [] # [em_physical_left] diff --git a/test/tests/reflections/base/Input.i b/test/tests/reflections/base/Input.i index 4ce9c8e09c8..2afd8e0e76a 100644 --- a/test/tests/reflections/base/Input.i +++ b/test/tests/reflections/base/Input.i @@ -489,6 +489,7 @@ vhigh = -175E-3 #kV mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.01 [] [potential_dirichlet_right] @@ -508,6 +509,7 @@ vhigh = -175E-3 #kV mean_en = mean_en r = 1 position_units = ${dom0Scale} + emission_coeffs = 0.01 [] [em_physical_left] diff --git a/test/tests/reflections/high_initial/Input.i b/test/tests/reflections/high_initial/Input.i index f34e5615b2e..6f61d0291db 100644 --- a/test/tests/reflections/high_initial/Input.i +++ b/test/tests/reflections/high_initial/Input.i @@ -491,6 +491,7 @@ vhigh = -175E-3 #kV mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.01 [] [potential_dirichlet_right] @@ -510,6 +511,7 @@ vhigh = -175E-3 #kV mean_en = mean_en r = 1 position_units = ${dom0Scale} + emission_coeffs = 0.01 [] [em_physical_left] diff --git a/test/tests/reflections/low_initial/Input.i b/test/tests/reflections/low_initial/Input.i index 90813f134d3..816270c3055 100644 --- a/test/tests/reflections/low_initial/Input.i +++ b/test/tests/reflections/low_initial/Input.i @@ -491,6 +491,7 @@ vhigh = -175E-3 #kV mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.01 [] [potential_dirichlet_right] @@ -510,6 +511,7 @@ vhigh = -175E-3 #kV mean_en = mean_en r = 1 position_units = ${dom0Scale} + emission_coeffs = 0.01 [] [em_physical_left] diff --git a/tutorial/tutorial05-PlasmaWaterInterface/DC_argon-With-Water.i b/tutorial/tutorial05-PlasmaWaterInterface/DC_argon-With-Water.i index ed00d71fbf2..85624ed206d 100644 --- a/tutorial/tutorial05-PlasmaWaterInterface/DC_argon-With-Water.i +++ b/tutorial/tutorial05-PlasmaWaterInterface/DC_argon-With-Water.i @@ -219,6 +219,7 @@ dom1Scale = 1e-7 mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 [] #Ground electrode under the water [potential_dirichlet_right] @@ -247,6 +248,7 @@ dom1Scale = 1e-7 mean_en = mean_en r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 [] #Mean electron energy on the powered electrode @@ -268,6 +270,8 @@ dom1Scale = 1e-7 ip = 'Arp' r = 0 position_units = ${dom0Scale} + emission_coeffs = 0.05 + secondary_electron_energy = 3 [] #Argon ions on the powered electrode