https://mooseframework.inl.gov
ADJouleHeatingSource.C
Go to the documentation of this file.
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 "ADJouleHeatingSource.h"
11 
12 registerMooseObject("HeatTransferApp", ADJouleHeatingSource);
13 
16 {
18  params.addCoupledVar("elec", "Electrostatic potential for joule heating.");
19  params.addParam<MaterialPropertyName>(
20  "heating_term", "electric_field_heating", "Material property providing the Joule heating.");
21  params.addParam<MaterialPropertyName>(
22  "electrical_conductivity",
23  "electrical_conductivity",
24  "Material property providing electrical conductivity of the material.");
25  params.addClassDescription(
26  "Calculates the heat source term corresponding to electrostatic or electromagnetic Joule "
27  "heating, with Jacobian contributions calculated using the automatic "
28  "differentiation system.");
29  return params;
30 }
31 
33  : ADKernelValue(parameters),
34  _supplied_potential(isParamValid("elec")),
35 
36  _grad_potential(_supplied_potential ? adCoupledGradient("elec") : _ad_grad_zero),
37  _elec_cond(_supplied_potential ? getADMaterialProperty<Real>("electrical_conductivity")
38  : getGenericZeroMaterialProperty<Real, true>()),
39 
40  _heating_residual(_supplied_potential ? getGenericZeroMaterialProperty<Real, true>()
41  : getADMaterialProperty<Real>("heating_term"))
42 {
45  "Directly coupling an electrostatic potential will be deprecated in the near future "
46  "(10/01/2025). Please use the material object 'ElectromagneticHeatingMaterial' to couple "
47  "either the electrostatic or electromagnetic field for Joule heating.");
48 }
49 
50 ADReal
52 {
53  /*
54  * NOTE: Coupling in the gradient of the potential will be deprecated in the
55  * near future (10/01/2025). After the deprecation, the residual contribution of this kernel
56  * will be solely provided by the 'ElectromagneticHeatingMaterial' material object.
57  */
60  else
61  return -_heating_residual[_qp];
62 }
void mooseDeprecated(Args &&... args) const
static InputParameters validParams()
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
static InputParameters validParams()
const ADVariableGradient & _grad_potential
Gradient of the coupled potential.
DualNumber< Real, DNDerivativeType, true > ADReal
const bool _supplied_potential
Set to true when an electrostatic potential is provided.
virtual ADReal precomputeQpResidual() override
const ADMaterialProperty< Real > & _heating_residual
The Joule heating residual provided as a material object.
registerMooseObject("HeatTransferApp", ADJouleHeatingSource)
This kernel supplies the heat source term corresponding to Joule heating (Q).
ADJouleHeatingSource(const InputParameters &parameters)
void addCoupledVar(const std::string &name, const std::string &doc_string)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const ADMaterialProperty< Real > & _elec_cond
Electric conductivity coefficient.
void addClassDescription(const std::string &doc_string)
unsigned int _qp