www.mooseframework.org
ThermoDiffusion.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 "ThermoDiffusion.h"
11 
13 
14 template <>
15 InputParameters
17 {
18  InputParameters params = validParams<Kernel>();
19  params.addRequiredCoupledVar("temp", "Coupled temperature");
20  params.addParam<Real>("gas_constant", 8.3144621, "Gas constant");
21  params.addParam<std::string>(
22  "heat_of_transport", "heat_of_transport", "Property name for the heat of transport.");
23  params.addParam<std::string>(
24  "mass_diffusivity", "mass_diffusivity", "Property name for the diffusivity.");
25 
26  params.addClassDescription("Kernel for thermo-diffusion (Soret effect, thermophoresis, etc.)");
27  return params;
28 }
29 
30 ThermoDiffusion::ThermoDiffusion(const InputParameters & parameters)
31  : Kernel(parameters),
32  _temperature(coupledValue("temp")),
33  _grad_temperature(coupledGradient("temp")),
34  _mass_diffusivity(getMaterialProperty<Real>(getParam<std::string>("mass_diffusivity"))),
35  _heat_of_transport(getMaterialProperty<Real>(getParam<std::string>("heat_of_transport"))),
36  _gas_constant(getParam<Real>("gas_constant")),
37  _temperature_index(coupled("temp"))
38 {
39 }
40 
43 {
44  // The thermo-diffusion term looks like grad( v * C ) where v is like a diffusive
45  // velocity. If the concentration C does not couple back into the heat equation,
46  // then the one-way coupling of temperature means that thermo-diffusion of C
47  // behaves like advection. Then v is the velocity:
48  //
49  // v = D Qstar grad(T) / ( R T^2 )
50  //
51  Real coeff = _mass_diffusivity[_qp] * _heat_of_transport[_qp] /
52  (_gas_constant * _temperature[_qp] * _temperature[_qp]);
53  return coeff * _grad_temperature[_qp];
54 }
55 
56 Real
58 {
59  return thermoDiffusionVelocity() * _u[_qp] * _grad_test[_i][_qp];
60 }
61 
62 Real
64 {
65  return thermoDiffusionVelocity() * _phi[_j][_qp] * _grad_test[_i][_qp];
66 }
67 
68 Real
70 {
71  if (jvar == _temperature_index)
72  {
73  Real coeff = _mass_diffusivity[_qp] * _heat_of_transport[_qp] /
74  (_gas_constant * _temperature[_qp] * _temperature[_qp]);
75  return coeff * _grad_test[_i][_qp] * _u[_qp] *
76  (_grad_phi[_j][_qp] - 2 * _phi[_j][_qp] * _grad_temperature[_qp] / _temperature[_qp]);
77  }
78  return 0;
79 }
registerMooseObject
registerMooseObject("MiscApp", ThermoDiffusion)
libMesh::RealGradient
VectorValue< Real > RealGradient
Definition: GrainForceAndTorqueInterface.h:17
ThermoDiffusion.h
ThermoDiffusion::_grad_temperature
const VariableGradient & _grad_temperature
Definition: ThermoDiffusion.h:56
ThermoDiffusion::computeQpOffDiagJacobian
virtual Real computeQpOffDiagJacobian(unsigned int jvar)
Computes contribution from grad( T ) / T^2 term.
Definition: ThermoDiffusion.C:69
ThermoDiffusion::_mass_diffusivity
const MaterialProperty< Real > & _mass_diffusivity
Definition: ThermoDiffusion.h:57
ThermoDiffusion::_temperature
const VariableValue & _temperature
Definition: ThermoDiffusion.h:55
validParams< ThermoDiffusion >
InputParameters validParams< ThermoDiffusion >()
Definition: ThermoDiffusion.C:16
ThermoDiffusion::_heat_of_transport
const MaterialProperty< Real > & _heat_of_transport
Definition: ThermoDiffusion.h:58
ThermoDiffusion::thermoDiffusionVelocity
RealGradient thermoDiffusionVelocity() const
Definition: ThermoDiffusion.C:42
ThermoDiffusion::computeQpJacobian
virtual Real computeQpJacobian()
Definition: ThermoDiffusion.C:63
ThermoDiffusion::ThermoDiffusion
ThermoDiffusion(const InputParameters &parameters)
Definition: ThermoDiffusion.C:30
ThermoDiffusion
Models thermo-diffusion (aka Soret effect, thermophoresis, etc.).
Definition: ThermoDiffusion.h:37
ThermoDiffusion::_temperature_index
const unsigned int _temperature_index
Definition: ThermoDiffusion.h:60
ThermoDiffusion::computeQpResidual
virtual Real computeQpResidual()
Definition: ThermoDiffusion.C:57
ThermoDiffusion::_gas_constant
const Real _gas_constant
Definition: ThermoDiffusion.h:59