www.mooseframework.org
ComputeSurfaceTensionKKS.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 
11 #include "RankTwoTensor.h"
12 
13 registerMooseObject("TensorMechanicsApp", ComputeSurfaceTensionKKS);
14 
16 
17 InputParameters
19 {
20  InputParameters params = Material::validParams();
21  params.addClassDescription(
22  "Surface tension of an interface defined by the gradient of an order parameter");
23  params.addCoupledVar("v",
24  "Order parameter that defines the interface, assumed to vary from 0 to 1.");
25  params.addParam<MaterialPropertyName>("kappa_name", "kappa_op", "Gradient energy coefficient");
26  params.addParam<MaterialPropertyName>("g", "g", "Barrier Function Material that provides g(eta)");
27  params.addRequiredParam<Real>("w", "Double well height parameter");
28  params.addParam<MaterialPropertyName>("planar_stress_name",
29  "extra_stress",
30  "Material property name for the interfacial planar stress");
31  return params;
32 }
33 
34 ComputeSurfaceTensionKKS::ComputeSurfaceTensionKKS(const InputParameters & parameters)
35  : Material(parameters),
36  _v(coupledValue("v")),
37  _grad_v(coupledGradient("v")),
38  _kappa(getMaterialProperty<Real>("kappa_name")),
39  _g(getMaterialProperty<Real>("g")),
40  _w(getParam<Real>("w")),
41  _planar_stress(
42  declareProperty<RankTwoTensor>(getParam<MaterialPropertyName>("planar_stress_name")))
43 {
44 }
45 
46 void
48 {
49  auto & S = _planar_stress[_qp];
50  S.zero();
51 
52  // compute norm square of the order parameter gradient
53  const Real grad_norm_sq = _grad_v[_qp].norm_sq();
54 
55  const Real nx = _grad_v[_qp](0);
56  const Real ny = _grad_v[_qp](1);
57  const Real nz = _grad_v[_qp](2);
58  Real fsum = _w * _g[_qp] + 0.5 * _kappa[_qp] * grad_norm_sq;
59 
60  S(0, 0) += fsum - _kappa[_qp] * nx * nx;
61  S(0, 1) += -_kappa[_qp] * nx * ny;
62  S(1, 1) += fsum - _kappa[_qp] * ny * ny;
63  S(0, 2) += -_kappa[_qp] * nx * nz;
64  S(1, 2) += -_kappa[_qp] * ny * nz;
65  S(2, 2) += fsum - _kappa[_qp] * nz * nz;
66 
67  // fill in symmetrically
68  S(1, 0) = S(0, 1);
69  S(2, 0) = S(0, 2);
70  S(2, 1) = S(1, 2);
71 }
registerMooseObject
registerMooseObject("TensorMechanicsApp", ComputeSurfaceTensionKKS)
ComputeSurfaceTensionKKS::_g
const MaterialProperty< Real > & _g
Material property for barrier function.
Definition: ComputeSurfaceTensionKKS.h:40
ComputeSurfaceTensionKKS.h
ComputeSurfaceTensionKKS::_w
Real _w
double well height parameter
Definition: ComputeSurfaceTensionKKS.h:42
ComputeSurfaceTensionKKS::ComputeSurfaceTensionKKS
ComputeSurfaceTensionKKS(const InputParameters &parameters)
Definition: ComputeSurfaceTensionKKS.C:34
ComputeSurfaceTensionKKS
Definition: ComputeSurfaceTensionKKS.h:22
ComputeSurfaceTensionKKS::_planar_stress
MaterialProperty< RankTwoTensor > & _planar_stress
Definition: ComputeSurfaceTensionKKS.h:44
ComputeSurfaceTensionKKS::_kappa
const MaterialProperty< Real > & _kappa
Material property for gradient energy coefficient.
Definition: ComputeSurfaceTensionKKS.h:38
ComputeSurfaceTensionKKS::validParams
static InputParameters validParams()
Definition: ComputeSurfaceTensionKKS.C:18
validParams
InputParameters validParams()
ComputeSurfaceTensionKKS::_grad_v
const VariableGradient & _grad_v
Gradient of order parameter.
Definition: ComputeSurfaceTensionKKS.h:35
ComputeSurfaceTensionKKS::computeQpProperties
virtual void computeQpProperties() override
Definition: ComputeSurfaceTensionKKS.C:47
defineLegacyParams
defineLegacyParams(ComputeSurfaceTensionKKS)
RankTwoTensorTempl< Real >