www.mooseframework.org
MaterialTensorIntegral.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 "MaterialTensorIntegral.h"
11 #include "RankTwoScalarTools.h"
12 
13 #include "metaphysicl/raw_type.h"
14 
15 registerMooseObject("SolidMechanicsApp", MaterialTensorIntegral);
16 registerMooseObject("SolidMechanicsApp", ADMaterialTensorIntegral);
17 
18 template <bool is_ad>
21 {
23  params.addClassDescription("This postprocessor computes an element integral of "
24  "a component of a material tensor as specified by "
25  "the user-supplied indices");
26  params.addRequiredParam<MaterialPropertyName>("rank_two_tensor",
27  "The rank two material property tensor name");
28  params.addRequiredRangeCheckedParam<unsigned int>(
29  "index_i",
30  "index_i >= 0 & index_i <= 2",
31  "The index i of ij for the tensor to output (0, 1, 2)");
32  params.addRequiredRangeCheckedParam<unsigned int>(
33  "index_j",
34  "index_j >= 0 & index_j <= 2",
35  "The index j of ij for the tensor to output (0, 1, 2)");
36  params.set<bool>("use_displaced_mesh") = true;
37  return params;
38 }
39 
40 template <bool is_ad>
42  : ElementIntegralPostprocessor(parameters),
43  _tensor(getGenericMaterialProperty<RankTwoTensor, is_ad>("rank_two_tensor")),
44  _i(getParam<unsigned int>("index_i")),
45  _j(getParam<unsigned int>("index_j"))
46 {
47 }
48 
49 template <bool is_ad>
50 Real
52 {
53  return RankTwoScalarTools::component(MetaPhysicL::raw_value(_tensor[_qp]), _i, _j);
54 }
55 
void addRequiredRangeCheckedParam(const std::string &name, const std::string &parsed_function, const std::string &doc_string)
MaterialTensorIntegralTempl(const InputParameters &parameters)
T & set(const std::string &name, bool quiet_mode=false)
auto raw_value(const Eigen::Map< T > &in)
void addRequiredParam(const std::string &name, const std::string &doc_string)
static InputParameters validParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
registerMooseObject("SolidMechanicsApp", MaterialTensorIntegral)
void addClassDescription(const std::string &doc_string)
T component(const RankTwoTensorTempl< T > &r2tensor, unsigned int i, unsigned int j)
This postprocessor computes an element integral of a component of a material tensor as specified by t...
void ErrorVector unsigned int
static InputParameters validParams()