www.mooseframework.org
PhaseNormalTensor.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 "PhaseNormalTensor.h"
11 
12 registerMooseObject("PhaseFieldApp", PhaseNormalTensor);
13 
14 template <>
15 InputParameters
17 {
18  InputParameters params = validParams<Material>();
19  params.addClassDescription("Calculate normal tensor of a phase based on gradient");
20  params.addRequiredCoupledVar("phase", "Phase variable");
21  params.addRequiredParam<MaterialPropertyName>("normal_tensor_name", "Name of normal tensor");
22  return params;
23 }
24 
25 PhaseNormalTensor::PhaseNormalTensor(const InputParameters & parameters)
26  : DerivativeMaterialInterface<Material>(parameters),
27  _grad_u(coupledGradient("phase")),
28  _normal_tensor(
29  declareProperty<RankTwoTensor>(getParam<MaterialPropertyName>("normal_tensor_name")))
30 {
31 }
32 
33 void
35 {
36  _normal_tensor[_qp].zero();
37 }
38 
39 void
41 {
42  const Real magnitude = _grad_u[_qp].norm();
43 
44  if (magnitude > 0.0)
45  {
46  RealVectorValue vector = _grad_u[_qp] / magnitude;
47  _normal_tensor[_qp].vectorOuterProduct(vector, vector);
48  }
49  else
50  _normal_tensor[_qp].zero();
51 }
PhaseNormalTensor.h
PhaseNormalTensor::_normal_tensor
MaterialProperty< RankTwoTensor > & _normal_tensor
Definition: PhaseNormalTensor.h:34
PhaseNormalTensor::_grad_u
const VariableGradient & _grad_u
Definition: PhaseNormalTensor.h:33
validParams< PhaseNormalTensor >
InputParameters validParams< PhaseNormalTensor >()
Definition: PhaseNormalTensor.C:16
PhaseNormalTensor::PhaseNormalTensor
PhaseNormalTensor(const InputParameters &parameters)
Definition: PhaseNormalTensor.C:25
PhaseNormalTensor::computeQpProperties
virtual void computeQpProperties()
Definition: PhaseNormalTensor.C:40
RankTwoTensorTempl< Real >
registerMooseObject
registerMooseObject("PhaseFieldApp", PhaseNormalTensor)
PhaseNormalTensor::initQpStatefulProperties
virtual void initQpStatefulProperties()
Definition: PhaseNormalTensor.C:34
PhaseNormalTensor
Calculate phase normal tensor based on gradient.
Definition: PhaseNormalTensor.h:24