www.mooseframework.org
ACKappaFunction.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 "ACKappaFunction.h"
11 
12 registerMooseObject("PhaseFieldApp", ACKappaFunction);
13 
14 template <>
15 InputParameters
17 {
18  InputParameters params = validParams<Kernel>();
19  params.addClassDescription("Gradient energy term for when kappa as a function of the variable");
20  params.addParam<MaterialPropertyName>("mob_name", "L", "The mobility used with the kernel");
21  params.addParam<MaterialPropertyName>("kappa_name", "kappa_op", "The kappa function name");
22  params.addCoupledVar("v",
23  "Vector of additional nonlinear variables that affect the gradient energy");
24  return params;
25 }
26 
27 ACKappaFunction::ACKappaFunction(const InputParameters & parameters)
28  : DerivativeMaterialInterface<JvarMapKernelInterface<Kernel>>(parameters),
29  _var_name(getParam<NonlinearVariableName>("variable")),
30  _L_name(getParam<MaterialPropertyName>("mob_name")),
31  _L(getMaterialProperty<Real>(_L_name)),
32  _dLdvar(getMaterialPropertyDerivative<Real>(_L_name, _var_name)),
33  _kappa_name(getParam<MaterialPropertyName>("kappa_name")),
34  _dkappadvar(getMaterialPropertyDerivative<Real>(_kappa_name, _var_name)),
35  _d2kappadvar2(getMaterialPropertyDerivative<Real>(_kappa_name, _var_name, _var_name)),
36  _op_num(coupledComponents("v")),
37  _v_name(_op_num),
38  _grad_v(_op_num),
39  _dLdv(_op_num),
40  _d2kappadvardv(_op_num)
41 {
42  for (unsigned int i = 0; i < _op_num; ++i)
43  {
44  _v_name[i] = getVar("v", i)->name();
45  _grad_v[i] = &coupledGradient("v", i);
46  _dLdv[i] = &getMaterialPropertyDerivative<Real>(_L_name, _v_name[i]);
47  _d2kappadvardv[i] = &getMaterialPropertyDerivative<Real>(_kappa_name, _var_name, _v_name[i]);
48  }
49 }
50 
51 Real
53 {
54  return 0.5 * _test[_i][_qp] * _L[_qp] * _dkappadvar[_qp] * computeFg();
55 }
56 
57 Real
59 {
60  Real pre_jac = 0.5 * _test[_i][_qp] * _phi[_j][_qp] * computeFg();
61  Real term1 = _test[_i][_qp] * _L[_qp] * _dkappadvar[_qp] * _grad_u[_qp] * _grad_phi[_j][_qp];
62 
63  return pre_jac * (_dLdvar[_qp] * _dkappadvar[_qp] + _L[_qp] * _d2kappadvar2[_qp]) + term1;
64 }
65 
66 Real
68 {
69  const unsigned int i = mapJvarToCvar(jvar);
70  Real pre_jac = 0.5 * _test[_i][_qp] * _phi[_j][_qp] * computeFg();
71  Real term1 =
72  _test[_i][_qp] * _L[_qp] * _dkappadvar[_qp] * (*_grad_v[i])[_qp] * _grad_phi[_j][_qp];
73  return pre_jac * ((*_dLdv[i])[_qp] * _dkappadvar[_qp] + _L[_qp] * (*_d2kappadvardv[i])[_qp]) +
74  term1;
75 }
76 
77 Real
79 {
80  Real sum_grad_etai2 = 0.0;
81  for (unsigned int i = 0; i < _op_num; ++i)
82  sum_grad_etai2 += (*_grad_v[i])[_qp] * (*_grad_v[i])[_qp];
83 
84  Real grad_var2 = _grad_u[_qp] * _grad_u[_qp];
85  return sum_grad_etai2 + grad_var2;
86 }
ACKappaFunction::_grad_v
std::vector< const VariableGradient * > _grad_v
Definition: ACKappaFunction.h:45
registerMooseObject
registerMooseObject("PhaseFieldApp", ACKappaFunction)
validParams< ACKappaFunction >
InputParameters validParams< ACKappaFunction >()
Definition: ACKappaFunction.C:16
ACKappaFunction::computeFg
Real computeFg()
Definition: ACKappaFunction.C:78
ACKappaFunction::computeQpJacobian
virtual Real computeQpJacobian()
Definition: ACKappaFunction.C:58
ACKappaFunction::_d2kappadvardv
std::vector< const MaterialProperty< Real > * > _d2kappadvardv
Definition: ACKappaFunction.h:47
ACKappaFunction::_L
const MaterialProperty< Real > & _L
Definition: ACKappaFunction.h:38
ACKappaFunction::_op_num
const unsigned int _op_num
Definition: ACKappaFunction.h:43
ACKappaFunction::_d2kappadvar2
const MaterialProperty< Real > & _d2kappadvar2
Definition: ACKappaFunction.h:42
ACKappaFunction::_dLdvar
const MaterialProperty< Real > & _dLdvar
Definition: ACKappaFunction.h:39
ACKappaFunction
Definition: ACKappaFunction.h:26
ACKappaFunction::computeQpResidual
virtual Real computeQpResidual()
Definition: ACKappaFunction.C:52
ACKappaFunction::_v_name
std::vector< NonlinearVariableName > _v_name
Definition: ACKappaFunction.h:44
ACKappaFunction::_kappa_name
const MaterialPropertyName _kappa_name
Definition: ACKappaFunction.h:40
ACKappaFunction.h
ACKappaFunction::_var_name
const NonlinearVariableName _var_name
Definition: ACKappaFunction.h:36
ACKappaFunction::ACKappaFunction
ACKappaFunction(const InputParameters &parameters)
Definition: ACKappaFunction.C:27
ACKappaFunction::computeQpOffDiagJacobian
virtual Real computeQpOffDiagJacobian(unsigned int jvar)
Definition: ACKappaFunction.C:67
ACKappaFunction::_dkappadvar
const MaterialProperty< Real > & _dkappadvar
Definition: ACKappaFunction.h:41
ACKappaFunction::_L_name
const MaterialPropertyName _L_name
Definition: ACKappaFunction.h:37
ACKappaFunction::_dLdv
std::vector< const MaterialProperty< Real > * > _dLdv
Definition: ACKappaFunction.h:46