https://mooseframework.inl.gov
Loading...
Searching...
No Matches
ACInterfaceKobayashi1.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
11
13
16{
18 params.addClassDescription("Anisotropic gradient energy Allen-Cahn Kernel Part 1");
19 params.addParam<MaterialPropertyName>("mob_name", "L", "The mobility used with the kernel");
20 params.addParam<MaterialPropertyName>("eps_name", "eps", "The anisotropic interface parameter");
21 params.addParam<MaterialPropertyName>(
22 "deps_name",
23 "deps",
24 "The derivative of the anisotropic interface parameter with respect to angle");
25 params.addParam<MaterialPropertyName>(
26 "depsdgrad_op_name",
27 "depsdgrad_op",
28 "The derivative of the anisotropic interface parameter eps with respect to grad_op");
29 params.addParam<MaterialPropertyName>(
30 "ddepsdgrad_op_name", "ddepsdgrad_op", "The derivative of deps with respect to grad_op");
31 return params;
32}
33
36 _L(getMaterialProperty<Real>("mob_name")),
37 _dLdop(getMaterialPropertyDerivative<Real>("mob_name", _var.name())),
38 _eps(getMaterialProperty<Real>("eps_name")),
39 _deps(getMaterialProperty<Real>("deps_name")),
40 _depsdgrad_op(getMaterialProperty<RealGradient>("depsdgrad_op_name")),
41 _ddepsdgrad_op(getMaterialProperty<RealGradient>("ddepsdgrad_op_name"))
42{
43 // reserve space for derivatives
44 _dLdarg.resize(_n_args);
45 _depsdarg.resize(_n_args);
46 _ddepsdarg.resize(_n_args);
47
48 // Iterate over all coupled variables
49 for (unsigned int i = 0; i < _n_args; ++i)
50 {
51 _dLdarg[i] = &getMaterialPropertyDerivative<Real>("mob_name", i);
52 _depsdarg[i] = &getMaterialPropertyDerivative<Real>("eps_name", i);
53 _ddepsdarg[i] = &getMaterialPropertyDerivative<Real>("deps_name", i);
54 }
55}
56
57RealGradient
59{
60 // Set modified gradient vector
61 const RealGradient v(-_grad_u[_qp](1), _grad_u[_qp](0), 0);
62
63 // Define anisotropic interface residual
64 return _eps[_qp] * _deps[_qp] * _L[_qp] * v;
65}
66
67RealGradient
69{
70 // Set modified gradient vector
71 const RealGradient v(-_grad_u[_qp](1), _grad_u[_qp](0), 0);
72
73 // dvdgrad_op*_grad_phi
74 const RealGradient dv(-_grad_phi[_j][_qp](1), _grad_phi[_j][_qp](0), 0);
75
76 // Derivative of epsilon wrt nodal op values
77 Real depsdop_i = _depsdgrad_op[_qp] * _grad_phi[_j][_qp];
78 Real ddepsdop_i = _ddepsdgrad_op[_qp] * _grad_phi[_j][_qp];
79
80 // Set the Jacobian
81 RealGradient jac1 = _eps[_qp] * _deps[_qp] * dv;
82 RealGradient jac2 = _deps[_qp] * depsdop_i * v;
83 RealGradient jac3 = _eps[_qp] * ddepsdop_i * v;
84
85 return _L[_qp] * (jac1 + jac2 + jac3);
86}
87
88Real
90{
91 // get the coupled variable jvar is referring to
92 const unsigned int cvar = mapJvarToCvar(jvar);
93
94 // Set modified gradient vector
95 const RealGradient v(-_grad_u[_qp](1), _grad_u[_qp](0), 0);
96
97 // Set off-diagonal jaocbian terms from mobility dependence
98 Real dsum =
99 _L[_qp] * (_deps[_qp] * (*_depsdarg[cvar])[_qp] * _phi[_j][_qp] * v * _grad_test[_i][_qp]);
100 dsum +=
101 _L[_qp] * (_eps[_qp] * (*_ddepsdarg[cvar])[_qp] * _phi[_j][_qp] * v * _grad_test[_i][_qp]);
102 dsum += (*_dLdarg[cvar])[_qp] * _phi[_j][_qp] * _eps[_qp] * _deps[_qp] * v * _grad_test[_i][_qp];
103
104 return dsum;
105}
registerMooseObject("PhaseFieldApp", ACInterfaceKobayashi1)
const double v
const std::string name
Definition Setup.h:21
Kernel 1 of 2 for interfacial energy anisotropy in the Allen-Cahn equation as implemented in R.
virtual RealGradient precomputeQpJacobian()
const MaterialProperty< Real > & _eps
virtual Real computeQpOffDiagJacobian(unsigned int jvar)
virtual RealGradient precomputeQpResidual()
Enum of computeDFDOP inputs.
const MaterialProperty< RealGradient > & _ddepsdgrad_op
const MaterialProperty< RealGradient > & _depsdgrad_op
ACInterfaceKobayashi1(const InputParameters &parameters)
static InputParameters validParams()
const MaterialProperty< Real > & _deps
const MaterialProperty< Real > & _L
Mobility.
std::vector< const MaterialProperty< Real > * > _dLdarg
Mobility derivative w.r.t. other coupled variables.
std::vector< const MaterialProperty< Real > * > _ddepsdarg
std::vector< const MaterialProperty< Real > * > _depsdarg
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
static InputParameters validParams()