www.mooseframework.org
FluxBasedStrainIncrement.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 "libmesh/quadrature.h"
12 
13 registerMooseObject("TensorMechanicsApp", FluxBasedStrainIncrement);
14 
16 
17 InputParameters
19 {
20  InputParameters params = Material::validParams();
21  params.addClassDescription("Compute strain increment based on flux");
22  params.addRequiredCoupledVar("xflux", "x or 0-direction component of flux");
23  params.addCoupledVar("yflux", "y or 1-direction component of flux");
24  params.addCoupledVar("zflux", "z or 2-direction component of flux");
25  params.addCoupledVar("gb", "Grain boundary order parameter");
26  params.addRequiredParam<MaterialPropertyName>("property_name",
27  "Name of diffusive strain increment property");
28  return params;
29 }
30 
31 FluxBasedStrainIncrement::FluxBasedStrainIncrement(const InputParameters & parameters)
32  : DerivativeMaterialInterface<Material>(parameters),
33  _grad_jx(&coupledGradient("xflux")),
34  _has_yflux(isCoupled("yflux")),
35  _has_zflux(isCoupled("zflux")),
36  _grad_jy(_has_yflux ? &coupledGradient("yflux") : nullptr),
37  _grad_jz(_has_zflux ? &coupledGradient("zflux") : nullptr),
38  _gb(isCoupled("gb") ? coupledValue("gb") : _zero),
39  _strain_increment(
40  declareProperty<RankTwoTensor>(getParam<MaterialPropertyName>("property_name")))
41 {
42 }
43 
44 void
46 {
47  _strain_increment[_qp].zero();
48 }
49 
50 void
52 {
54 
55  _strain_increment[_qp] = -0.5 * (_flux_grad_tensor + _flux_grad_tensor.transpose());
56  _strain_increment[_qp] *= (1.0 - _gb[_qp]) * _dt;
57 }
58 
59 void
61 {
62  _flux_grad_tensor.zero();
63 
64  _flux_grad_tensor.fillRow(0, (*_grad_jx)[_qp]);
65 
66  if (_has_yflux)
67  _flux_grad_tensor.fillRow(1, (*_grad_jy)[_qp]);
68 
69  if (_has_zflux)
70  _flux_grad_tensor.fillRow(2, (*_grad_jz)[_qp]);
71 }
FluxBasedStrainIncrement
FluxBasedStrainIncrement computes strain increment based on flux (vacancy) Forest et.
Definition: FluxBasedStrainIncrement.h:25
FluxBasedStrainIncrement.h
registerMooseObject
registerMooseObject("TensorMechanicsApp", FluxBasedStrainIncrement)
FluxBasedStrainIncrement::computeQpProperties
virtual void computeQpProperties()
Definition: FluxBasedStrainIncrement.C:51
FluxBasedStrainIncrement::FluxBasedStrainIncrement
FluxBasedStrainIncrement(const InputParameters &parameters)
Definition: FluxBasedStrainIncrement.C:31
FluxBasedStrainIncrement::_has_zflux
bool _has_zflux
Definition: FluxBasedStrainIncrement.h:40
FluxBasedStrainIncrement::validParams
static InputParameters validParams()
Definition: FluxBasedStrainIncrement.C:18
FluxBasedStrainIncrement::_strain_increment
MaterialProperty< RankTwoTensor > & _strain_increment
Definition: FluxBasedStrainIncrement.h:46
FluxBasedStrainIncrement::_gb
const VariableValue & _gb
Definition: FluxBasedStrainIncrement.h:44
FluxBasedStrainIncrement::initQpStatefulProperties
virtual void initQpStatefulProperties()
Definition: FluxBasedStrainIncrement.C:45
defineLegacyParams
defineLegacyParams(FluxBasedStrainIncrement)
FluxBasedStrainIncrement::computeFluxGradTensor
virtual void computeFluxGradTensor()
Definition: FluxBasedStrainIncrement.C:60
FluxBasedStrainIncrement::_has_yflux
bool _has_yflux
Definition: FluxBasedStrainIncrement.h:39
FluxBasedStrainIncrement::_flux_grad_tensor
RankTwoTensor _flux_grad_tensor
Definition: FluxBasedStrainIncrement.h:48
FluxBasedStrainIncrement::_grad_jy
const VariableGradient * _grad_jy
Definition: FluxBasedStrainIncrement.h:41
validParams
InputParameters validParams()
FluxBasedStrainIncrement::_grad_jx
const VariableGradient * _grad_jx
Definition: FluxBasedStrainIncrement.h:38
RankTwoTensorTempl< Real >
FluxBasedStrainIncrement::_grad_jz
const VariableGradient * _grad_jz
Definition: FluxBasedStrainIncrement.h:42