https://mooseframework.inl.gov
Loading...
Searching...
No Matches
ConstantAnisotropicMobility.C
Go to the documentation of this file.
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
11
14
15template <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
29template <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
39template <bool is_ad>
40void
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)
ConstantAnisotropicMobility provides a simple RealTensorValue type MaterialProperty that can be used ...
ConstantAnisotropicMobilityTempl(const InputParameters &parameters)
void addRequiredRangeCheckedParam(const std::string &name, const std::string &parsed_function, const std::string &doc_string)
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
T & set(const std::string &name, bool quiet_mode=false)
static InputParameters validParams()
static constexpr std::size_t dim