https://mooseframework.inl.gov
DiffusionFluxAux.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 "DiffusionFluxAux.h"
11 #include "Assembly.h"
12 
14 
17 {
19  MooseEnum component("x y z normal");
20  params.addClassDescription("Compute components of flux vector for diffusion problems "
21  "$(\\vec{J} = -D \\nabla C)$.");
22  params.addRequiredParam<MooseEnum>("component", component, "The desired component of flux.");
23  params.addRequiredCoupledVar("diffusion_variable", "The name of the variable");
24  params.addRequiredParam<MaterialPropertyName>(
25  "diffusivity",
26  "The name of the diffusivity material property that will be used in the flux computation.");
27  return params;
28 }
29 
31  : AuxKernel(parameters),
32  _use_normal(getParam<MooseEnum>("component") == "normal"),
33  _component(getParam<MooseEnum>("component")),
34  _grad_u(coupledGradient("diffusion_variable")),
35  _diffusion_coef(hasMaterialProperty<Real>("diffusivity")
36  ? &getMaterialProperty<Real>("diffusivity")
37  : nullptr),
38  _ad_diffusion_coef(!_diffusion_coef ? &getADMaterialProperty<Real>("diffusivity") : nullptr),
39  _normals(_assembly.normals())
40 {
41  if (_use_normal && !isParamValid("boundary"))
42  paramError("boundary", "A boundary must be provided if using the normal component!");
43 }
44 
45 Real
47 {
49  const Real diffusion_coef = _diffusion_coef ? (*_diffusion_coef)[_qp]
51  return -diffusion_coef * gradient;
52 }
const ADMaterialProperty< Real > *const _ad_diffusion_coef
Holds the diffusivity from the material system if AD.
void paramError(const std::string &param, Args... args) const
Emits an error prefixed with the file and line number of the given param (from the input file) along ...
Definition: MooseBase.h:435
const bool _use_normal
Whether the normal component has been selected.
const int _component
Will hold 0, 1, or 2 corresponding to x, y, or z.
const MaterialProperty< Real > *const _diffusion_coef
Holds the diffusivity from the material system if non-AD.
auto raw_value(const Eigen::Map< T > &in)
Definition: EigenADReal.h:73
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
void addRequiredParam(const std::string &name, const std::string &doc_string)
This method adds a parameter and documentation string to the InputParameters object that will be extr...
DiffusionFluxAux(const InputParameters &parameters)
registerMooseObject("MooseApp", DiffusionFluxAux)
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:33
const MooseArray< Point > & _normals
normals at quadrature points
virtual Real computeValue()
Compute and return the value of the aux variable.
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
This method adds a coupled variable name pair.
Auxiliary kernel responsible for computing the components of the flux vector in diffusion problems...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual const OutputTools< Real >::VariableGradient & gradient()
The gradient of the variable this object is operating on.
unsigned int _qp
Quadrature point index.
Definition: AuxKernel.h:230
void addClassDescription(const std::string &doc_string)
This method adds a description of the class that will be displayed in the input file syntax dump...
static InputParameters validParams()
Definition: AuxKernel.C:27
Base class for creating new auxiliary kernels and auxiliary boundary conditions.
Definition: AuxKernel.h:36
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition: MooseBase.h:195
static InputParameters validParams()
const VariableGradient & _grad_u
Holds the solution gradient at the current quadrature points.