Line data Source code
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 : 10 : #include "ComputeVariableBaseEigenStrain.h" 11 : 12 : registerMooseObject("SolidMechanicsApp", ComputeVariableBaseEigenStrain); 13 : 14 : InputParameters 15 0 : ComputeVariableBaseEigenStrain::validParams() 16 : { 17 0 : InputParameters params = ComputeEigenstrainBase::validParams(); 18 0 : params.addClassDescription("Computes Eigenstrain based on material property tensor base"); 19 0 : params.addRequiredParam<MaterialPropertyName>("base_tensor_property_name", 20 : "Name of base tensor property"); 21 0 : params.addParam<MaterialPropertyName>( 22 0 : "prefactor", 1.0, "Name of material defining the variable dependence"); 23 0 : params.addParam<std::vector<Real>>( 24 : "offset_tensor", "Vector of values defining the constant base tensor for the Eigenstrain"); 25 0 : return params; 26 0 : } 27 : 28 0 : ComputeVariableBaseEigenStrain::ComputeVariableBaseEigenStrain(const InputParameters & parameters) 29 : : ComputeEigenstrainBase(parameters), 30 0 : _base_tensor(getMaterialProperty<RealTensorValue>("base_tensor_property_name")), 31 0 : _prefactor(getMaterialProperty<Real>("prefactor")) 32 : { 33 0 : if (isParamValid("offset_tensor")) 34 0 : _offset_tensor.fillFromInputVector(getParam<std::vector<Real>>("offset_tensor")); 35 : else 36 : _offset_tensor.zero(); 37 0 : } 38 : 39 : void 40 0 : ComputeVariableBaseEigenStrain::computeQpEigenstrain() 41 : { 42 0 : RankTwoTensor base_rank_two_tensor = _base_tensor[_qp]; 43 0 : _eigenstrain[_qp] = base_rank_two_tensor * _prefactor[_qp] + _offset_tensor; 44 0 : }