www.mooseframework.org
ComputeReducedOrderEigenstrain.h
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 #pragma once
11 #include "ComputeEigenstrainBase.h"
12 #include "RankTwoTensor.h"
13 
14 // libmesh includes
15 #include "libmesh/dense_matrix.h"
16 #include "libmesh/dense_vector.h"
17 
18 class Assembly;
19 class InputParameters;
20 class MooseObject;
21 class SubProblem;
22 
24 
25 template <>
27 
29 {
30 public:
31  static InputParameters validParams();
32 
33  ComputeReducedOrderEigenstrain(const InputParameters & parameters);
34 
36  void computeProperties();
37  void computeQpEigenstrain();
38 
39 private:
41  void applyEigenstrain(MaterialProperty<RankTwoTensor> & strain);
42 
44  void sumEigenstrain();
45 
47  void prepareEigenstrain();
48 
49  std::vector<MaterialPropertyName> _input_eigenstrain_names;
50  std::vector<const MaterialProperty<RankTwoTensor> *> _eigenstrains;
51 
52  SubProblem & _subproblem;
54  const unsigned _ncols;
56  const bool _second_order;
58  std::vector<RankTwoTensor> _eigsum;
60  DenseMatrix<Real> _A;
62  std::vector<DenseVector<Real>> _b;
64  DenseMatrix<Real> _AT;
66  DenseVector<Real> _ATb;
68  std::vector<DenseVector<Real>> _x;
70  std::vector<Real> _vals;
73 };
74 
75 template <>
ComputeReducedOrderEigenstrain::initQpStatefulProperties
void initQpStatefulProperties()
Definition: ComputeReducedOrderEigenstrain.C:55
ComputeReducedOrderEigenstrain::_AT
DenseMatrix< Real > _AT
Transpose of A.
Definition: ComputeReducedOrderEigenstrain.h:64
ComputeReducedOrderEigenstrain::_x
std::vector< DenseVector< Real > > _x
The solution vector for each unique component of the adjusted eigenstrain.
Definition: ComputeReducedOrderEigenstrain.h:68
ComputeReducedOrderEigenstrain::_A
DenseMatrix< Real > _A
The (num q points x ncols) array for the least squares. Holds 1, xcoor, ycoor, zcoor.
Definition: ComputeReducedOrderEigenstrain.h:60
ComputeReducedOrderEigenstrain::_vals
std::vector< Real > _vals
Vector to hold the adjusted strain as computed with _x.
Definition: ComputeReducedOrderEigenstrain.h:70
ComputeReducedOrderEigenstrain::ComputeReducedOrderEigenstrain
ComputeReducedOrderEigenstrain(const InputParameters &parameters)
Definition: ComputeReducedOrderEigenstrain.C:30
ComputeReducedOrderEigenstrain::prepareEigenstrain
void prepareEigenstrain()
Compute either the volume average or linear eigenstrain field in an element.
Definition: ComputeReducedOrderEigenstrain.C:99
ComputeReducedOrderEigenstrain::_second_order
const bool _second_order
Whether the mesh is made of second order elements.
Definition: ComputeReducedOrderEigenstrain.h:56
ComputeReducedOrderEigenstrain::validParams
static InputParameters validParams()
Definition: ComputeReducedOrderEigenstrain.C:20
ComputeReducedOrderEigenstrain::applyEigenstrain
void applyEigenstrain(MaterialProperty< RankTwoTensor > &strain)
Subtract adjusted eigenstrain from strain.
ComputeReducedOrderEigenstrain::_subproblem
SubProblem & _subproblem
Definition: ComputeReducedOrderEigenstrain.h:52
ComputeReducedOrderEigenstrain
Definition: ComputeReducedOrderEigenstrain.h:28
ComputeReducedOrderEigenstrain::_ncols
const unsigned _ncols
Number of columns in A matrix (1 plus mesh dimension)
Definition: ComputeReducedOrderEigenstrain.h:54
ComputeReducedOrderEigenstrain::_eigsum
std::vector< RankTwoTensor > _eigsum
The sum of all eigenstrains at each integration point.
Definition: ComputeReducedOrderEigenstrain.h:58
validParams< ComputeReducedOrderEigenstrain >
InputParameters validParams< ComputeReducedOrderEigenstrain >()
ComputeReducedOrderEigenstrain::_b
std::vector< DenseVector< Real > > _b
The b array holding the unique eigenstrain components for each integration point.
Definition: ComputeReducedOrderEigenstrain.h:62
ComputeReducedOrderEigenstrain::sumEigenstrain
void sumEigenstrain()
Add contributions from every eigenstrain at each integration point.
Definition: ComputeReducedOrderEigenstrain.C:87
ComputeReducedOrderEigenstrain::computeProperties
void computeProperties()
Definition: ComputeReducedOrderEigenstrain.C:61
ComputeReducedOrderEigenstrain::_adjusted_eigenstrain
RankTwoTensor _adjusted_eigenstrain
Filled with _vals and subracted from strain.
Definition: ComputeReducedOrderEigenstrain.h:72
ComputeEigenstrainBase.h
ComputeReducedOrderEigenstrain::_ATb
DenseVector< Real > _ATb
Transpose of A times b.
Definition: ComputeReducedOrderEigenstrain.h:66
ComputeReducedOrderEigenstrain::computeQpEigenstrain
void computeQpEigenstrain()
Compute the eigenstrain and store in _eigenstrain.
Definition: ComputeReducedOrderEigenstrain.C:71
ComputeReducedOrderEigenstrain::_eigenstrains
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains
Definition: ComputeReducedOrderEigenstrain.h:50
ComputeReducedOrderEigenstrain::_input_eigenstrain_names
std::vector< MaterialPropertyName > _input_eigenstrain_names
Definition: ComputeReducedOrderEigenstrain.h:49
ComputeEigenstrainBase
ComputeEigenstrainBase is the base class for eigenstrain tensors.
Definition: ComputeEigenstrainBase.h:26
RankTwoTensorTempl< Real >