https://mooseframework.inl.gov
Loading...
Searching...
No Matches
CHSplitFlux.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 "CHSplitFlux.h"
11
13
16{
18 params.addClassDescription("Computes flux $j$ as nodal variable $j = -M\\nabla\\mu$");
19 params.addRequiredParam<unsigned int>("component", "Flux component");
20 params.addRequiredParam<MaterialPropertyName>("mobility_name", "Mobility property name");
21 params.addRequiredCoupledVar("mu", "Chemical Potential");
22 params.addCoupledVar("c", "Concentration");
23 return params;
24}
25
28 _component(getParam<unsigned int>("component")),
29 _mu_var(coupled("mu")),
30 _grad_mu(coupledGradient("mu")),
31 _mobility(getMaterialProperty<RealTensorValue>("mobility_name")),
32 _has_coupled_c(isCoupled("c")),
33 _c_var(_has_coupled_c ? coupled("c") : 0),
34 _dmobility_dc(_has_coupled_c ? &getMaterialPropertyDerivative<RealTensorValue>(
35 "mobility_name", coupledName("c", 0))
36 : NULL)
37{
38}
39
40Real
42{
43 return _test[_i][_qp] * (_u[_qp] + _mobility[_qp].row(_component) * _grad_mu[_qp]);
44}
45
46Real
48{
49 return _test[_i][_qp] * _phi[_j][_qp];
50}
51
52Real
54{
55 if (jvar == _mu_var)
56 return _test[_i][_qp] * _mobility[_qp].row(_component) * _grad_phi[_j][_qp];
57 else if (_has_coupled_c && jvar == _c_var)
58 return _test[_i][_qp] * (*_dmobility_dc)[_qp].row(_component) * _grad_mu[_qp] * _phi[_j][_qp];
59 else
60 return 0.0;
61}
registerMooseObject("PhaseFieldApp", CHSplitFlux)
void ErrorVector unsigned int
CHSplitFlux computes flux as non-linear variable via residual = flux + mobility * gradient(chemical p...
Definition CHSplitFlux.h:22
const bool _has_coupled_c
Definition CHSplitFlux.h:38
static InputParameters validParams()
Definition CHSplitFlux.C:15
const unsigned int _component
Definition CHSplitFlux.h:33
virtual Real computeQpResidual()
Definition CHSplitFlux.C:41
const VariableGradient & _grad_mu
Definition CHSplitFlux.h:35
virtual Real computeQpOffDiagJacobian(unsigned int jvar)
Definition CHSplitFlux.C:53
const unsigned int _mu_var
Definition CHSplitFlux.h:34
const unsigned int _c_var
Definition CHSplitFlux.h:39
virtual Real computeQpJacobian()
Definition CHSplitFlux.C:47
CHSplitFlux(const InputParameters &parameters)
Definition CHSplitFlux.C:26
const MaterialProperty< RealTensorValue > & _mobility
Definition CHSplitFlux.h:36
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
void addCoupledVar(const std::string &name, const std::string &doc_string)
static InputParameters validParams()