40 auto reg_props_in = getParam<std::vector<MooseFunctorName>>(
"reg_props_in");
41 auto ad_props_out = getParam<std::vector<MooseFunctorName>>(
"ad_props_out");
42 auto ad_props_in = getParam<std::vector<MooseFunctorName>>(
"ad_props_in");
43 auto reg_props_out = getParam<std::vector<MooseFunctorName>>(
"reg_props_out");
46 if (reg_props_in.size() != ad_props_out.size())
48 "The number of output AD functors must match the number of input regular "
49 "functors, which is " +
50 std::to_string(reg_props_in.size()));
52 if (ad_props_in.size() != reg_props_out.size())
54 "The number of output regular functors must match the number of input AD "
55 "functors, which is " +
56 std::to_string(ad_props_in.size()));
60 for (
const auto i : index_range(reg_props_in))
61 for (
const auto j : index_range(reg_props_in))
62 if (reg_props_in[i] == ad_props_out[j])
64 "Functor names may not overlap between reg_props_in and ad_props_out");
66 for (
const auto i : index_range(reg_props_in))
67 for (
const auto j : index_range(ad_props_in))
68 if (reg_props_in[i] == reg_props_out[j])
70 "Functor names may not overlap between reg_props_in and reg_props_out");
72 for (
const auto i : index_range(ad_props_in))
73 for (
const auto j : index_range(ad_props_in))
74 if (ad_props_in[i] == reg_props_out[j])
76 "Functor names may not overlap between ad_props_in and reg_props_out");
78 for (
const auto i : index_range(ad_props_in))
79 for (
const auto j : index_range(reg_props_in))
80 if (ad_props_in[i] == ad_props_out[j])
82 "Functor names may not overlap between ad_props_in and ad_props_out");
85 for (
const auto i : index_range(reg_props_in))
87 const auto & reg_functor = getFunctor<T>(reg_props_in[i]);
88 addFunctorProperty<typename Moose::ADType<T>::type>(
91 {
return reg_functor(r, t); },
96 for (
const auto i : index_range(ad_props_in))
98 const auto & ad_functor = getFunctor<typename Moose::ADType<T>::type>(ad_props_in[i]);
99 addFunctorProperty<T>(
101 [&ad_functor](
const auto & r,
const auto & t) -> T