www.mooseframework.org
ComputePlaneFiniteStrain.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 
12 registerMooseObject("TensorMechanicsApp", ComputePlaneFiniteStrain);
13 
15 
16 InputParameters
18 {
19  InputParameters params = Compute2DFiniteStrain::validParams();
20  params.addClassDescription("Compute strain increment and rotation increment for finite strain "
21  "under 2D planar assumptions.");
22  params.addParam<UserObjectName>("subblock_index_provider",
23  "SubblockIndexProvider user object name");
24  params.addCoupledVar("scalar_out_of_plane_strain",
25  "Scalar variable for generalized plane strain");
26  params.addCoupledVar("out_of_plane_strain", "Nonlinear variable for plane stress condition");
27 
28  return params;
29 }
30 
31 ComputePlaneFiniteStrain::ComputePlaneFiniteStrain(const InputParameters & parameters)
32  : Compute2DFiniteStrain(parameters),
33  _subblock_id_provider(isParamValid("subblock_index_provider")
34  ? &getUserObject<SubblockIndexProvider>("subblock_index_provider")
35  : nullptr),
36  _scalar_out_of_plane_strain_coupled(isParamValid("scalar_out_of_plane_strain")),
37  _nscalar_strains(coupledScalarComponents("scalar_out_of_plane_strain")),
38  _out_of_plane_strain_coupled(isCoupled("out_of_plane_strain")),
39  _out_of_plane_strain(_out_of_plane_strain_coupled ? coupledValue("out_of_plane_strain")
40  : _zero),
41  _out_of_plane_strain_old(_out_of_plane_strain_coupled ? coupledValueOld("out_of_plane_strain")
42  : _zero)
43 {
45  mooseError("Must define only one of out_of_plane_strain or scalar_out_of_plane_strain");
46 
48  {
51  for (unsigned int i = 0; i < _nscalar_strains; ++i)
52  {
53  _scalar_out_of_plane_strain[i] = &coupledScalarValue("scalar_out_of_plane_strain", i);
54  _scalar_out_of_plane_strain_old[i] = &coupledScalarValueOld("scalar_out_of_plane_strain", i);
55  }
56  }
57 }
58 
59 Real
61 {
67  return std::exp((*_scalar_out_of_plane_strain[getCurrentSubblockIndex()])[0]) - 1.0;
68  else
69  return std::exp(_out_of_plane_strain[_qp]) - 1.0;
70 }
71 
72 Real
74 {
76  return std::exp((*_scalar_out_of_plane_strain_old[getCurrentSubblockIndex()])[0]) - 1.0;
77  else
78  return std::exp(_out_of_plane_strain_old[_qp]) - 1.0;
79 }
ComputePlaneFiniteStrain::getCurrentSubblockIndex
unsigned int getCurrentSubblockIndex() const
gets its subblock index for current element
Definition: ComputePlaneFiniteStrain.h:36
ComputePlaneFiniteStrain::_out_of_plane_strain_old
const VariableValue & _out_of_plane_strain_old
Definition: ComputePlaneFiniteStrain.h:50
ComputePlaneFiniteStrain::computeOutOfPlaneGradDisp
virtual Real computeOutOfPlaneGradDisp() override
Computes the current out-of-plane component of the displacement gradient; as a virtual function,...
Definition: ComputePlaneFiniteStrain.C:60
SubblockIndexProvider
Abstract base class for user objects that provide an index for a given element that is independent of...
Definition: SubblockIndexProvider.h:24
Compute2DFiniteStrain
Compute2DFiniteStrain defines a strain increment and a rotation increment for finite strains in 2D ge...
Definition: Compute2DFiniteStrain.h:26
ComputePlaneFiniteStrain::validParams
static InputParameters validParams()
Definition: ComputePlaneFiniteStrain.C:17
ComputePlaneFiniteStrain::_scalar_out_of_plane_strain_coupled
const bool _scalar_out_of_plane_strain_coupled
Definition: ComputePlaneFiniteStrain.h:43
registerMooseObject
registerMooseObject("TensorMechanicsApp", ComputePlaneFiniteStrain)
ComputePlaneFiniteStrain::_out_of_plane_strain_coupled
const bool _out_of_plane_strain_coupled
Definition: ComputePlaneFiniteStrain.h:48
ComputePlaneFiniteStrain::_scalar_out_of_plane_strain_old
std::vector< const VariableValue * > _scalar_out_of_plane_strain_old
Definition: ComputePlaneFiniteStrain.h:46
ComputePlaneFiniteStrain::ComputePlaneFiniteStrain
ComputePlaneFiniteStrain(const InputParameters &parameters)
Definition: ComputePlaneFiniteStrain.C:31
defineLegacyParams
defineLegacyParams(ComputePlaneFiniteStrain)
ComputePlaneFiniteStrain::computeOutOfPlaneGradDispOld
virtual Real computeOutOfPlaneGradDispOld() override
Computes the old out-of-plane component of the displacement gradient; as a virtual function,...
Definition: ComputePlaneFiniteStrain.C:73
ComputePlaneFiniteStrain::_nscalar_strains
unsigned int _nscalar_strains
Definition: ComputePlaneFiniteStrain.h:44
ComputePlaneFiniteStrain::_out_of_plane_strain
const VariableValue & _out_of_plane_strain
Definition: ComputePlaneFiniteStrain.h:49
ComputePlaneFiniteStrain::_scalar_out_of_plane_strain
std::vector< const VariableValue * > _scalar_out_of_plane_strain
Definition: ComputePlaneFiniteStrain.h:45
ComputePlaneFiniteStrain.h
ComputePlaneFiniteStrain
ComputePlaneFiniteStrain defines strain increment and rotation increment for finite strain under 2D p...
Definition: ComputePlaneFiniteStrain.h:24
Compute2DFiniteStrain::validParams
static InputParameters validParams()
Definition: Compute2DFiniteStrain.C:17