www.mooseframework.org
ConstantAnisotropicMobility.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 
14 
15 template <bool is_ad>
18 {
20  params.addClassDescription("Provide a constant mobility tensor value");
21  params.addRequiredParam<MaterialPropertyName>("M_name",
22  "Name of the mobility tensor property to generate");
23  params.addRequiredRangeCheckedParam<std::vector<Real>>(
24  "tensor", "tensor_size=9", "Tensor values");
25  params.set<MooseEnum>("constant_on") = "SUBDOMAIN";
26  return params;
27 }
28 
29 template <bool is_ad>
31  const InputParameters & parameters)
32  : Material(parameters),
33  _mobility_values(getParam<std::vector<Real>>("tensor")),
34  _mobility_name(getParam<MaterialPropertyName>("M_name")),
35  _mobility(declareGenericProperty<RealTensorValue, is_ad>(_mobility_name))
36 {
37 }
38 
39 template <bool is_ad>
40 void
42 {
43  for (const auto a : make_range(Moose::dim))
44  for (const auto b : make_range(Moose::dim))
45  _mobility[_qp](a, b) = _mobility_values[a * 3 + b];
46 }
47 
registerMooseObject("PhaseFieldApp", ConstantAnisotropicMobility)
void addRequiredRangeCheckedParam(const std::string &name, const std::string &parsed_function, const std::string &doc_string)
T & set(const std::string &name, bool quiet_mode=false)
static constexpr std::size_t dim
ConstantAnisotropicMobility provides a simple RealTensorValue type MaterialProperty that can be used ...
void addRequiredParam(const std::string &name, const std::string &doc_string)
TensorValue< Real > RealTensorValue
static InputParameters validParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
IntRange< T > make_range(T beg, T end)
void addClassDescription(const std::string &doc_string)
ConstantAnisotropicMobilityTempl(const InputParameters &parameters)