www.mooseframework.org
TwoPhaseStressMaterial.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 "TwoPhaseStressMaterial.h"
11 #include "RankTwoTensor.h"
12 #include "RankFourTensor.h"
13 
14 registerMooseObject("TensorMechanicsApp", TwoPhaseStressMaterial);
15 
17 
18 InputParameters
20 {
21  InputParameters params = Material::validParams();
22  params.addClassDescription("Compute a global stress in a two phase model");
23  params.addParam<MaterialPropertyName>(
24  "h", "h", "Switching Function Material that provides h(eta)");
25  params.addRequiredParam<std::string>("base_A", "Base name for the Phase A strain.");
26  params.addRequiredParam<std::string>("base_B", "Base name for the Phase B strain.");
27  params.addParam<std::string>("base_name", "Base name for the computed global stress (optional).");
28  return params;
29 }
30 
31 TwoPhaseStressMaterial::TwoPhaseStressMaterial(const InputParameters & parameters)
32  : DerivativeMaterialInterface<Material>(parameters),
33  _h_eta(getMaterialProperty<Real>("h")),
34 
35  _base_A(getParam<std::string>("base_A") + "_"),
36  _stress_A(getMaterialPropertyByName<RankTwoTensor>(_base_A + "stress")),
37  _dstress_dstrain_A(getMaterialPropertyByName<RankFourTensor>(_base_A + "Jacobian_mult")),
38 
39  _base_B(getParam<std::string>("base_B") + "_"),
40  _stress_B(getMaterialPropertyByName<RankTwoTensor>(_base_B + "stress")),
41  _dstress_dstrain_B(getMaterialPropertyByName<RankFourTensor>(_base_B + "Jacobian_mult")),
42 
43  _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") + "_" : ""),
44  _stress(declareProperty<RankTwoTensor>(_base_name + "stress")),
45  _dstress_dstrain(declareProperty<RankFourTensor>(_base_name + "Jacobian_mult")),
46  _global_extra_stress(getDefaultMaterialProperty<RankTwoTensor>("extra_stress"))
47 {
48 }
49 
50 void
52 {
53  _stress[_qp] = _h_eta[_qp] * _stress_B[_qp] + (1.0 - _h_eta[_qp]) * _stress_A[_qp];
54 
55  // Add in global extra stress
56  _stress[_qp] += _global_extra_stress[_qp];
57 
58  _dstress_dstrain[_qp] =
59  _h_eta[_qp] * _dstress_dstrain_B[_qp] + (1.0 - _h_eta[_qp]) * _dstress_dstrain_A[_qp];
60 }
TwoPhaseStressMaterial::_dstress_dstrain
MaterialProperty< RankFourTensor > & _dstress_dstrain
Definition: TwoPhaseStressMaterial.h:57
TwoPhaseStressMaterial::computeQpProperties
virtual void computeQpProperties()
Definition: TwoPhaseStressMaterial.C:51
TwoPhaseStressMaterial::_stress_B
const MaterialProperty< RankTwoTensor > & _stress_B
Definition: TwoPhaseStressMaterial.h:51
TwoPhaseStressMaterial::_dstress_dstrain_A
const MaterialProperty< RankFourTensor > & _dstress_dstrain_A
Definition: TwoPhaseStressMaterial.h:47
TwoPhaseStressMaterial::_h_eta
const MaterialProperty< Real > & _h_eta
Definition: TwoPhaseStressMaterial.h:42
defineLegacyParams
defineLegacyParams(TwoPhaseStressMaterial)
registerMooseObject
registerMooseObject("TensorMechanicsApp", TwoPhaseStressMaterial)
validParams
InputParameters validParams()
TwoPhaseStressMaterial.h
RankFourTensorTempl< Real >
TwoPhaseStressMaterial::_global_extra_stress
const MaterialProperty< RankTwoTensor > & _global_extra_stress
Global extra stress tensor.
Definition: TwoPhaseStressMaterial.h:60
TwoPhaseStressMaterial::_stress
MaterialProperty< RankTwoTensor > & _stress
Definition: TwoPhaseStressMaterial.h:56
TwoPhaseStressMaterial
Construct a global strain from the phase strains in a manner that is consistent with the construction...
Definition: TwoPhaseStressMaterial.h:31
TwoPhaseStressMaterial::_dstress_dstrain_B
const MaterialProperty< RankFourTensor > & _dstress_dstrain_B
Definition: TwoPhaseStressMaterial.h:52
RankTwoTensorTempl
Definition: ACGrGrElasticDrivingForce.h:17
TwoPhaseStressMaterial::_stress_A
const MaterialProperty< RankTwoTensor > & _stress_A
Definition: TwoPhaseStressMaterial.h:46
TwoPhaseStressMaterial::TwoPhaseStressMaterial
TwoPhaseStressMaterial(const InputParameters &parameters)
Definition: TwoPhaseStressMaterial.C:31
TwoPhaseStressMaterial::validParams
static InputParameters validParams()
Definition: TwoPhaseStressMaterial.C:19