LCOV - code coverage report
Current view: top level - src/kokkos/interfaces - KokkosCoupleable.K (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 329044 Lines: 143 596 24.0 %
Date: 2026-08-03 21:12:22 Functions: 30 141 21.3 %
Legend: Lines: hit not hit

          Line data    Source code
       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 "KokkosVariableValue.h"
      11             : 
      12             : #include "Coupleable.h"
      13             : #include "SystemBase.h"
      14             : #include "FEProblemBase.h"
      15             : 
      16             : using CoupleableKey = Moose::Kokkos::Variable::CoupleableKey;
      17             : 
      18             : Moose::Kokkos::Variable
      19        3137 : Coupleable::kokkosCoupledVectorTagVariable(const std::string & var_name,
      20             :                                            const std::string & tag_name,
      21             :                                            unsigned int comp) const
      22             : {
      23        3137 :   Moose::Kokkos::Variable variable;
      24             : 
      25        3137 :   if (isCoupled(var_name))
      26             :   {
      27        1403 :     auto var = const_cast<MooseVariableField<Real> *>(
      28        1642 :         getVarHelper<MooseVariableField<Real>>(var_name, comp));
      29             : 
      30        3045 :     if (tag_name == Moose::OLD_SOLUTION_TAG)
      31          51 :       var->sys().needSolutionState(1);
      32        2994 :     else if (tag_name == Moose::OLDER_SOLUTION_TAG)
      33          34 :       var->sys().needSolutionState(2);
      34             : 
      35        3045 :     const auto tag = _c_fe_problem.getVectorTagID(tag_name);
      36             : 
      37        3045 :     const_cast<Coupleable *>(this)->addFEVariableCoupleableVectorTag(tag);
      38             : 
      39        3045 :     variable.init(*var, tag);
      40             :   }
      41             :   else
      42             :   {
      43         184 :     std::vector<Real> default_value = {_c_parameters.defaultCoupledValue(var_name, comp)};
      44             : 
      45          92 :     variable.init(default_value, CoupleableKey{});
      46          92 :   }
      47             : 
      48        3137 :   return variable;
      49           0 : }
      50             : 
      51             : Moose::Kokkos::Variable
      52         135 : Coupleable::kokkosCoupledVectorTagVariables(const std::string & var_name,
      53             :                                             const std::string & tag_name) const
      54             : {
      55         135 :   Moose::Kokkos::Variable variable;
      56             : 
      57         135 :   const auto components = coupledComponents(var_name);
      58             : 
      59         135 :   if (isCoupled(var_name))
      60             :   {
      61         135 :     std::vector<const MooseVariableFieldBase *> vars;
      62             : 
      63         353 :     for (unsigned int comp = 0; comp < components; ++comp)
      64             :     {
      65          88 :       auto var = const_cast<MooseVariableField<Real> *>(
      66         130 :           getVarHelper<MooseVariableField<Real>>(var_name, comp));
      67             : 
      68         218 :       if (tag_name == Moose::OLD_SOLUTION_TAG)
      69           0 :         var->sys().needSolutionState(1);
      70         218 :       else if (tag_name == Moose::OLDER_SOLUTION_TAG)
      71           0 :         var->sys().needSolutionState(2);
      72             : 
      73         218 :       vars.push_back(var);
      74             :     }
      75             : 
      76         135 :     const auto tag = _c_fe_problem.getVectorTagID(tag_name);
      77             : 
      78         135 :     const_cast<Coupleable *>(this)->addFEVariableCoupleableVectorTag(tag);
      79             : 
      80         135 :     variable.init(vars, tag);
      81         135 :   }
      82             :   else
      83             :   {
      84           0 :     std::vector<Real> default_values(components);
      85             : 
      86           0 :     for (unsigned int comp = 0; comp < components; ++comp)
      87           0 :       default_values[comp] = _c_parameters.defaultCoupledValue(var_name, comp);
      88             : 
      89           0 :     variable.init(default_values, CoupleableKey{});
      90           0 :   }
      91             : 
      92         135 :   return variable;
      93           0 : }
      94             : 
      95             : Moose::Kokkos::Variable
      96         121 : Coupleable::kokkosCoupledVectorTagVectorVariable(const std::string & var_name,
      97             :                                                  const std::string & tag_name,
      98             :                                                  unsigned int comp) const
      99             : {
     100         121 :   Moose::Kokkos::Variable variable;
     101             : 
     102         121 :   if (isCoupled(var_name))
     103             :   {
     104          38 :     auto var = const_cast<MooseVariableField<RealVectorValue> *>(
     105          42 :         getVarHelper<MooseVariableField<RealVectorValue>>(var_name, comp));
     106             : 
     107          80 :     if (tag_name == Moose::OLD_SOLUTION_TAG)
     108          17 :       var->sys().needSolutionState(1);
     109          63 :     else if (tag_name == Moose::OLDER_SOLUTION_TAG)
     110          17 :       var->sys().needSolutionState(2);
     111             : 
     112          80 :     const auto tag = _c_fe_problem.getVectorTagID(tag_name);
     113             : 
     114          80 :     const_cast<Coupleable *>(this)->addFEVariableCoupleableVectorTag(tag);
     115             : 
     116          80 :     variable.init(*var, tag);
     117             :   }
     118             :   else
     119             :   {
     120          41 :     Moose::Kokkos::Real3 default_value = (*getDefaultVectorValue(var_name))[0];
     121             : 
     122         123 :     variable.init({default_value}, CoupleableKey{});
     123             :   }
     124             : 
     125         121 :   return variable;
     126           0 : }
     127             : 
     128             : Moose::Kokkos::Variable
     129           0 : Coupleable::kokkosCoupledVectorTagVectorVariables(const std::string & var_name,
     130             :                                                   const std::string & tag_name) const
     131             : {
     132           0 :   Moose::Kokkos::Variable variable;
     133             : 
     134           0 :   const auto components = coupledComponents(var_name);
     135             : 
     136           0 :   if (isCoupled(var_name))
     137             :   {
     138           0 :     std::vector<const MooseVariableFieldBase *> vars;
     139             : 
     140           0 :     for (unsigned int comp = 0; comp < components; ++comp)
     141             :     {
     142           0 :       auto var = const_cast<MooseVariableField<RealVectorValue> *>(
     143           0 :           getVarHelper<MooseVariableField<RealVectorValue>>(var_name, comp));
     144             : 
     145           0 :       if (tag_name == Moose::OLD_SOLUTION_TAG)
     146           0 :         var->sys().needSolutionState(1);
     147           0 :       else if (tag_name == Moose::OLDER_SOLUTION_TAG)
     148           0 :         var->sys().needSolutionState(2);
     149             : 
     150           0 :       vars.push_back(var);
     151             :     }
     152             : 
     153           0 :     const auto tag = _c_fe_problem.getVectorTagID(tag_name);
     154             : 
     155           0 :     const_cast<Coupleable *>(this)->addFEVariableCoupleableVectorTag(tag);
     156             : 
     157           0 :     variable.init(vars, tag);
     158           0 :   }
     159             :   else
     160             :   {
     161           0 :     Moose::Kokkos::Real3 default_value = (*getDefaultVectorValue(var_name))[0];
     162             : 
     163           0 :     variable.init({default_value}, CoupleableKey{});
     164             :   }
     165             : 
     166           0 :   return variable;
     167           0 : }
     168             : 
     169             : Moose::Kokkos::Variable
     170         306 : Coupleable::kokkosZeroVariable() const
     171             : {
     172         306 :   Moose::Kokkos::Variable variable;
     173             : 
     174         612 :   variable.init(std::vector<Real>{0}, CoupleableKey{});
     175             : 
     176         306 :   return variable;
     177           0 : }
     178             : 
     179             : Moose::Kokkos::VariableValue
     180        1386 : Coupleable::kokkosCoupledVectorTagValueByName(const std::string & var_name,
     181             :                                               const std::string & tag_name,
     182             :                                               unsigned int comp) const
     183             : {
     184        1386 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     185             : 
     186        2772 :   return Moose::Kokkos::VariableValue(variable);
     187        1386 : }
     188             : 
     189             : Moose::Kokkos::VariableValue
     190         135 : Coupleable::kokkosCoupledVectorTagValuesByName(const std::string & var_name,
     191             :                                                const std::string & tag_name) const
     192             : {
     193         135 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     194             : 
     195         270 :   return Moose::Kokkos::VariableValue(variable);
     196         135 : }
     197             : 
     198             : Moose::Kokkos::VariableGradient
     199         680 : Coupleable::kokkosCoupledVectorTagGradientByName(const std::string & var_name,
     200             :                                                  const std::string & tag_name,
     201             :                                                  unsigned int comp) const
     202             : {
     203         680 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     204             : 
     205        1360 :   return Moose::Kokkos::VariableGradient(variable);
     206         680 : }
     207             : 
     208             : Moose::Kokkos::VariableGradient
     209           0 : Coupleable::kokkosCoupledVectorTagGradientsByName(const std::string & var_name,
     210             :                                                   const std::string & tag_name) const
     211             : {
     212           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     213             : 
     214           0 :   return Moose::Kokkos::VariableGradient(variable);
     215           0 : }
     216             : 
     217             : Moose::Kokkos::VariableValue
     218         850 : Coupleable::kokkosCoupledVectorTagNodalValueByName(const std::string & var_name,
     219             :                                                    const std::string & tag_name,
     220             :                                                    unsigned int comp) const
     221             : {
     222         850 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     223             : 
     224         850 :   if (!variable.nodal())
     225           0 :     mooseError("Cannot get nodal values from the coupled variable '",
     226             :                var_name,
     227             :                "', because the associated variable is not nodal.");
     228             : 
     229        1700 :   return Moose::Kokkos::VariableValue(variable, true);
     230         850 : }
     231             : 
     232             : Moose::Kokkos::VariableValue
     233           0 : Coupleable::kokkosCoupledVectorTagNodalValuesByName(const std::string & var_name,
     234             :                                                     const std::string & tag_name) const
     235             : {
     236           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     237             : 
     238           0 :   if (!variable.nodal())
     239           0 :     mooseError("Cannot get nodal values from the coupled variable '",
     240             :                var_name,
     241             :                "', because the associated variable is not nodal.");
     242             : 
     243           0 :   return Moose::Kokkos::VariableValue(variable, true);
     244           0 : }
     245             : 
     246             : Moose::Kokkos::VariableValue
     247          83 : Coupleable::kokkosCoupledVectorTagDofValueByName(const std::string & var_name,
     248             :                                                  const std::string & tag_name,
     249             :                                                  unsigned int comp) const
     250             : {
     251          83 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     252             : 
     253         166 :   return Moose::Kokkos::VariableValue(variable, true);
     254          83 : }
     255             : 
     256             : Moose::Kokkos::VariableValue
     257           0 : Coupleable::kokkosCoupledVectorTagDofValuesByName(const std::string & var_name,
     258             :                                                   const std::string & tag_name) const
     259             : {
     260           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     261             : 
     262           0 :   return Moose::Kokkos::VariableValue(variable, true);
     263           0 : }
     264             : 
     265             : Moose::Kokkos::VariableValue
     266         204 : Coupleable::kokkosCoupledVectorTagValue(const std::string & var_name,
     267             :                                         const std::string & tag_param_name,
     268             :                                         unsigned int comp) const
     269             : {
     270         204 :   if (!_c_parameters.isParamValid(tag_param_name))
     271           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     272             : 
     273         204 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     274             : 
     275         408 :   return kokkosCoupledVectorTagValueByName(var_name, tag_name, comp);
     276         204 : }
     277             : 
     278             : Moose::Kokkos::VariableValue
     279           0 : Coupleable::kokkosCoupledVectorTagValues(const std::string & var_name,
     280             :                                          const std::string & tag_param_name) const
     281             : {
     282           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     283           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     284             : 
     285           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     286             : 
     287           0 :   return kokkosCoupledVectorTagValuesByName(var_name, tag_name);
     288           0 : }
     289             : 
     290             : Moose::Kokkos::VariableGradient
     291           0 : Coupleable::kokkosCoupledVectorTagGradient(const std::string & var_name,
     292             :                                            const std::string & tag_param_name,
     293             :                                            unsigned int comp) const
     294             : {
     295           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     296           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     297             : 
     298           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     299             : 
     300           0 :   return kokkosCoupledVectorTagGradientByName(var_name, tag_name, comp);
     301           0 : }
     302             : 
     303             : Moose::Kokkos::VariableGradient
     304           0 : Coupleable::kokkosCoupledVectorTagGradients(const std::string & var_name,
     305             :                                             const std::string & tag_param_name) const
     306             : {
     307           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     308           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     309             : 
     310           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     311             : 
     312           0 :   return kokkosCoupledVectorTagGradientsByName(var_name, tag_name);
     313           0 : }
     314             : 
     315             : Moose::Kokkos::VariableValue
     316         100 : Coupleable::kokkosCoupledVectorTagNodalValue(const std::string & var_name,
     317             :                                              const std::string & tag_param_name,
     318             :                                              unsigned int comp) const
     319             : {
     320         100 :   if (!_c_parameters.isParamValid(tag_param_name))
     321           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     322             : 
     323         100 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     324             : 
     325         200 :   return kokkosCoupledVectorTagNodalValueByName(var_name, tag_name, comp);
     326         100 : }
     327             : 
     328             : Moose::Kokkos::VariableValue
     329           0 : Coupleable::kokkosCoupledVectorTagNodalValues(const std::string & var_name,
     330             :                                               const std::string & tag_param_name) const
     331             : {
     332           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     333           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     334             : 
     335           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     336             : 
     337           0 :   return kokkosCoupledVectorTagNodalValuesByName(var_name, tag_name);
     338           0 : }
     339             : 
     340             : Moose::Kokkos::VariableValue
     341           0 : Coupleable::kokkosCoupledVectorTagDofValue(const std::string & var_name,
     342             :                                            const std::string & tag_param_name,
     343             :                                            unsigned int comp) const
     344             : {
     345           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     346           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     347             : 
     348           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     349             : 
     350           0 :   return kokkosCoupledVectorTagDofValueByName(var_name, tag_name, comp);
     351           0 : }
     352             : 
     353             : Moose::Kokkos::VariableValue
     354           0 : Coupleable::kokkosCoupledVectorTagDofValues(const std::string & var_name,
     355             :                                             const std::string & tag_param_name) const
     356             : {
     357           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     358           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     359             : 
     360           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     361             : 
     362           0 :   return kokkosCoupledVectorTagDofValuesByName(var_name, tag_name);
     363           0 : }
     364             : 
     365             : Moose::Kokkos::VectorVariableValue
     366           0 : Coupleable::kokkosCoupledVectorTagVectorValueByName(const std::string & var_name,
     367             :                                                     const std::string & tag_name,
     368             :                                                     unsigned int comp) const
     369             : {
     370           0 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, tag_name, comp);
     371             : 
     372           0 :   return Moose::Kokkos::VectorVariableValue(variable);
     373           0 : }
     374             : 
     375             : Moose::Kokkos::VectorVariableValue
     376           0 : Coupleable::kokkosCoupledVectorTagVectorValuesByName(const std::string & var_name,
     377             :                                                      const std::string & tag_name) const
     378             : {
     379           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, tag_name);
     380             : 
     381           0 :   return Moose::Kokkos::VectorVariableValue(variable);
     382           0 : }
     383             : 
     384             : Moose::Kokkos::VectorVariableGradient
     385           0 : Coupleable::kokkosCoupledVectorTagVectorGradientByName(const std::string & var_name,
     386             :                                                        const std::string & tag_name,
     387             :                                                        unsigned int comp) const
     388             : {
     389           0 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, tag_name, comp);
     390             : 
     391           0 :   return Moose::Kokkos::VectorVariableGradient(variable);
     392           0 : }
     393             : 
     394             : Moose::Kokkos::VectorVariableGradient
     395           0 : Coupleable::kokkosCoupledVectorTagVectorGradientsByName(const std::string & var_name,
     396             :                                                         const std::string & tag_name) const
     397             : {
     398           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, tag_name);
     399             : 
     400           0 :   return Moose::Kokkos::VectorVariableGradient(variable);
     401           0 : }
     402             : 
     403             : Moose::Kokkos::VectorVariableValue
     404           0 : Coupleable::kokkosCoupledVectorTagVectorNodalValueByName(const std::string & var_name,
     405             :                                                          const std::string & tag_name,
     406             :                                                          unsigned int comp) const
     407             : {
     408           0 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, tag_name, comp);
     409             : 
     410           0 :   if (!variable.nodal())
     411           0 :     mooseError("Cannot get nodal values from the coupled vector variable '",
     412             :                var_name,
     413             :                "', because the associated variable is not nodal.");
     414             : 
     415           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     416           0 : }
     417             : 
     418             : Moose::Kokkos::VectorVariableValue
     419           0 : Coupleable::kokkosCoupledVectorTagVectorNodalValuesByName(const std::string & var_name,
     420             :                                                           const std::string & tag_name) const
     421             : {
     422           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, tag_name);
     423             : 
     424           0 :   if (!variable.nodal())
     425           0 :     mooseError("Cannot get nodal values from the coupled vector variable '",
     426             :                var_name,
     427             :                "', because the associated variable is not nodal.");
     428             : 
     429           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     430           0 : }
     431             : 
     432             : Moose::Kokkos::VectorVariableValue
     433           0 : Coupleable::kokkosCoupledVectorTagVectorDofValueByName(const std::string & var_name,
     434             :                                                        const std::string & tag_name,
     435             :                                                        unsigned int comp) const
     436             : {
     437           0 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, tag_name, comp);
     438             : 
     439           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     440           0 : }
     441             : 
     442             : Moose::Kokkos::VectorVariableValue
     443           0 : Coupleable::kokkosCoupledVectorTagVectorDofValuesByName(const std::string & var_name,
     444             :                                                         const std::string & tag_name) const
     445             : {
     446           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, tag_name);
     447             : 
     448           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     449           0 : }
     450             : 
     451             : Moose::Kokkos::VectorVariableValue
     452           0 : Coupleable::kokkosCoupledVectorTagVectorValue(const std::string & var_name,
     453             :                                               const std::string & tag_param_name,
     454             :                                               unsigned int comp) const
     455             : {
     456           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     457           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     458             : 
     459           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     460             : 
     461           0 :   return kokkosCoupledVectorTagVectorValueByName(var_name, tag_name, comp);
     462           0 : }
     463             : 
     464             : Moose::Kokkos::VectorVariableValue
     465           0 : Coupleable::kokkosCoupledVectorTagVectorValues(const std::string & var_name,
     466             :                                                const std::string & tag_param_name) const
     467             : {
     468           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     469           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     470             : 
     471           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     472             : 
     473           0 :   return kokkosCoupledVectorTagVectorValuesByName(var_name, tag_name);
     474           0 : }
     475             : 
     476             : Moose::Kokkos::VectorVariableGradient
     477           0 : Coupleable::kokkosCoupledVectorTagVectorGradient(const std::string & var_name,
     478             :                                                  const std::string & tag_param_name,
     479             :                                                  unsigned int comp) const
     480             : {
     481           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     482           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     483             : 
     484           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     485             : 
     486           0 :   return kokkosCoupledVectorTagVectorGradientByName(var_name, tag_name, comp);
     487           0 : }
     488             : 
     489             : Moose::Kokkos::VectorVariableGradient
     490           0 : Coupleable::kokkosCoupledVectorTagVectorGradients(const std::string & var_name,
     491             :                                                   const std::string & tag_param_name) const
     492             : {
     493           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     494           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     495             : 
     496           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     497             : 
     498           0 :   return kokkosCoupledVectorTagVectorGradientsByName(var_name, tag_name);
     499           0 : }
     500             : 
     501             : Moose::Kokkos::VectorVariableValue
     502           0 : Coupleable::kokkosCoupledVectorTagVectorNodalValue(const std::string & var_name,
     503             :                                                    const std::string & tag_param_name,
     504             :                                                    unsigned int comp) const
     505             : {
     506           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     507           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     508             : 
     509           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     510             : 
     511           0 :   return kokkosCoupledVectorTagVectorNodalValueByName(var_name, tag_name, comp);
     512           0 : }
     513             : 
     514             : Moose::Kokkos::VectorVariableValue
     515           0 : Coupleable::kokkosCoupledVectorTagVectorNodalValues(const std::string & var_name,
     516             :                                                     const std::string & tag_param_name) const
     517             : {
     518           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     519           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     520             : 
     521           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     522             : 
     523           0 :   return kokkosCoupledVectorTagVectorNodalValuesByName(var_name, tag_name);
     524           0 : }
     525             : 
     526             : Moose::Kokkos::VectorVariableValue
     527           0 : Coupleable::kokkosCoupledVectorTagVectorDofValue(const std::string & var_name,
     528             :                                                  const std::string & tag_param_name,
     529             :                                                  unsigned int comp) const
     530             : {
     531           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     532           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     533             : 
     534           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     535             : 
     536           0 :   return kokkosCoupledVectorTagVectorDofValueByName(var_name, tag_name, comp);
     537           0 : }
     538             : 
     539             : Moose::Kokkos::VectorVariableValue
     540           0 : Coupleable::kokkosCoupledVectorTagVectorDofValues(const std::string & var_name,
     541             :                                                   const std::string & tag_param_name) const
     542             : {
     543           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     544           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     545             : 
     546           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     547             : 
     548           0 :   return kokkosCoupledVectorTagVectorDofValuesByName(var_name, tag_name);
     549           0 : }
     550             : 
     551             : Moose::Kokkos::VariableValue
     552        1578 : Coupleable::kokkosCoupledValue(const std::string & var_name, unsigned int comp) const
     553             : {
     554        1578 :   return _c_nodal ? kokkosCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_TAG, comp)
     555         865 :                   : kokkosCoupledVectorTagValueByName(var_name, Moose::SOLUTION_TAG, comp);
     556             : }
     557             : 
     558             : Moose::Kokkos::VariableValue
     559         135 : Coupleable::kokkosCoupledValues(const std::string & var_name) const
     560             : {
     561         135 :   return _c_nodal ? kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_TAG)
     562          79 :                   : kokkosCoupledVectorTagValuesByName(var_name, Moose::SOLUTION_TAG);
     563             : }
     564             : 
     565             : Moose::Kokkos::VariableGradient
     566         680 : Coupleable::kokkosCoupledGradient(const std::string & var_name, unsigned int comp) const
     567             : {
     568         680 :   return kokkosCoupledVectorTagGradientByName(var_name, Moose::SOLUTION_TAG, comp);
     569             : }
     570             : 
     571             : Moose::Kokkos::VariableGradient
     572           0 : Coupleable::kokkosCoupledGradients(const std::string & var_name) const
     573             : {
     574           0 :   return kokkosCoupledVectorTagGradientsByName(var_name, Moose::SOLUTION_TAG);
     575             : }
     576             : 
     577             : Moose::Kokkos::VariableValue
     578         274 : Coupleable::kokkosCoupledNodalValue(const std::string & var_name, unsigned int comp) const
     579             : {
     580         274 :   return kokkosCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_TAG, comp);
     581             : }
     582             : 
     583             : Moose::Kokkos::VariableValue
     584           0 : Coupleable::kokkosCoupledNodalValues(const std::string & var_name) const
     585             : {
     586           0 :   return kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_TAG);
     587             : }
     588             : 
     589             : Moose::Kokkos::VariableValue
     590          49 : Coupleable::kokkosCoupledDofValue(const std::string & var_name, unsigned int comp) const
     591             : {
     592          49 :   return kokkosCoupledVectorTagDofValueByName(var_name, Moose::SOLUTION_TAG, comp);
     593             : }
     594             : 
     595             : Moose::Kokkos::VariableValue
     596           0 : Coupleable::kokkosCoupledDofValues(const std::string & var_name) const
     597             : {
     598           0 :   return kokkosCoupledVectorTagDofValuesByName(var_name, Moose::SOLUTION_TAG);
     599             : }
     600             : 
     601             : Moose::Kokkos::VariableValue
     602          34 : Coupleable::kokkosCoupledValueOld(const std::string & var_name, unsigned int comp) const
     603             : {
     604          34 :   return _c_nodal ? kokkosCoupledVectorTagNodalValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp)
     605          18 :                   : kokkosCoupledVectorTagValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
     606             : }
     607             : 
     608             : Moose::Kokkos::VariableValue
     609           0 : Coupleable::kokkosCoupledValuesOld(const std::string & var_name) const
     610             : {
     611           0 :   return _c_nodal ? kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::OLD_SOLUTION_TAG)
     612           0 :                   : kokkosCoupledVectorTagValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
     613             : }
     614             : 
     615             : Moose::Kokkos::VariableGradient
     616           0 : Coupleable::kokkosCoupledGradientOld(const std::string & var_name, unsigned int comp) const
     617             : {
     618           0 :   return kokkosCoupledVectorTagGradientByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
     619             : }
     620             : 
     621             : Moose::Kokkos::VariableGradient
     622           0 : Coupleable::kokkosCoupledGradientsOld(const std::string & var_name) const
     623             : {
     624           0 :   return kokkosCoupledVectorTagGradientsByName(var_name, Moose::OLD_SOLUTION_TAG);
     625             : }
     626             : 
     627             : Moose::Kokkos::VariableValue
     628           0 : Coupleable::kokkosCoupledNodalValueOld(const std::string & var_name, unsigned int comp) const
     629             : {
     630           0 :   return kokkosCoupledVectorTagNodalValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
     631             : }
     632             : 
     633             : Moose::Kokkos::VariableValue
     634           0 : Coupleable::kokkosCoupledNodalValuesOld(const std::string & var_name) const
     635             : {
     636           0 :   return kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
     637             : }
     638             : 
     639             : Moose::Kokkos::VariableValue
     640          17 : Coupleable::kokkosCoupledDofValueOld(const std::string & var_name, unsigned int comp) const
     641             : {
     642          17 :   return kokkosCoupledVectorTagDofValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
     643             : }
     644             : 
     645             : Moose::Kokkos::VariableValue
     646           0 : Coupleable::kokkosCoupledDofValuesOld(const std::string & var_name) const
     647             : {
     648           0 :   return kokkosCoupledVectorTagDofValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
     649             : }
     650             : 
     651             : Moose::Kokkos::VariableValue
     652          17 : Coupleable::kokkosCoupledValueOlder(const std::string & var_name, unsigned int comp) const
     653             : {
     654          17 :   return _c_nodal
     655           9 :              ? kokkosCoupledVectorTagNodalValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp)
     656           9 :              : kokkosCoupledVectorTagValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     657             : }
     658             : 
     659             : Moose::Kokkos::VariableValue
     660           0 : Coupleable::kokkosCoupledValuesOlder(const std::string & var_name) const
     661             : {
     662           0 :   return _c_nodal ? kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::OLDER_SOLUTION_TAG)
     663           0 :                   : kokkosCoupledVectorTagValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
     664             : }
     665             : 
     666             : Moose::Kokkos::VariableGradient
     667           0 : Coupleable::kokkosCoupledGradientOlder(const std::string & var_name, unsigned int comp) const
     668             : {
     669           0 :   return kokkosCoupledVectorTagGradientByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     670             : }
     671             : 
     672             : Moose::Kokkos::VariableGradient
     673           0 : Coupleable::kokkosCoupledGradientsOlder(const std::string & var_name) const
     674             : {
     675           0 :   return kokkosCoupledVectorTagGradientsByName(var_name, Moose::OLDER_SOLUTION_TAG);
     676             : }
     677             : 
     678             : Moose::Kokkos::VariableValue
     679           0 : Coupleable::kokkosCoupledNodalValueOlder(const std::string & var_name, unsigned int comp) const
     680             : {
     681           0 :   return kokkosCoupledVectorTagNodalValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     682             : }
     683             : 
     684             : Moose::Kokkos::VariableValue
     685           0 : Coupleable::kokkosCoupledNodalValuesOlder(const std::string & var_name) const
     686             : {
     687           0 :   return kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
     688             : }
     689             : 
     690             : Moose::Kokkos::VariableValue
     691          17 : Coupleable::kokkosCoupledDofValueOlder(const std::string & var_name, unsigned int comp) const
     692             : {
     693          17 :   return kokkosCoupledVectorTagDofValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     694             : }
     695             : 
     696             : Moose::Kokkos::VariableValue
     697           0 : Coupleable::kokkosCoupledDofValuesOlder(const std::string & var_name) const
     698             : {
     699           0 :   return kokkosCoupledVectorTagDofValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
     700             : }
     701             : 
     702             : Moose::Kokkos::VariableValue
     703          29 : Coupleable::kokkosCoupledDot(const std::string & var_name, unsigned int comp) const
     704             : {
     705          29 :   return _c_nodal ? kokkosCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp)
     706          15 :                   : kokkosCoupledVectorTagValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp);
     707             : }
     708             : 
     709             : Moose::Kokkos::VariableValue
     710           0 : Coupleable::kokkosCoupledDots(const std::string & var_name) const
     711             : {
     712           0 :   return _c_nodal ? kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_DOT_TAG)
     713           0 :                   : kokkosCoupledVectorTagValuesByName(var_name, Moose::SOLUTION_DOT_TAG);
     714             : }
     715             : 
     716             : Moose::Kokkos::VariableValue
     717           0 : Coupleable::kokkosCoupledNodalDot(const std::string & var_name, unsigned int comp) const
     718             : {
     719           0 :   return kokkosCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp);
     720             : }
     721             : 
     722             : Moose::Kokkos::VariableValue
     723           0 : Coupleable::kokkosCoupledNodalDots(const std::string & var_name) const
     724             : {
     725           0 :   return kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_DOT_TAG);
     726             : }
     727             : 
     728             : Moose::Kokkos::VectorVariableValue
     729          70 : Coupleable::kokkosCoupledVectorValue(const std::string & var_name, unsigned int comp) const
     730             : {
     731          70 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::SOLUTION_TAG, comp);
     732             : 
     733         140 :   return Moose::Kokkos::VectorVariableValue(variable, _c_nodal);
     734          70 : }
     735             : 
     736             : Moose::Kokkos::VectorVariableGradient
     737          17 : Coupleable::kokkosCoupledVectorGradient(const std::string & var_name, unsigned int comp) const
     738             : {
     739          17 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::SOLUTION_TAG, comp);
     740             : 
     741          34 :   return Moose::Kokkos::VectorVariableGradient(variable);
     742          17 : }
     743             : 
     744             : Moose::Kokkos::VectorVariableValue
     745           0 : Coupleable::kokkosCoupledVectorNodalValue(const std::string & var_name, unsigned int comp) const
     746             : {
     747           0 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::SOLUTION_TAG, comp);
     748             : 
     749           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     750           0 : }
     751             : 
     752             : Moose::Kokkos::VectorVariableValue
     753           0 : Coupleable::kokkosCoupledVectorDofValue(const std::string & var_name, unsigned int comp) const
     754             : {
     755           0 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::SOLUTION_TAG, comp);
     756             : 
     757           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     758           0 : }
     759             : 
     760             : Moose::Kokkos::VectorVariableValue
     761           0 : Coupleable::kokkosCoupledVectorValues(const std::string & var_name) const
     762             : {
     763           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::SOLUTION_TAG);
     764             : 
     765           0 :   return Moose::Kokkos::VectorVariableValue(variable, _c_nodal);
     766           0 : }
     767             : 
     768             : Moose::Kokkos::VectorVariableGradient
     769           0 : Coupleable::kokkosCoupledVectorGradients(const std::string & var_name) const
     770             : {
     771           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::SOLUTION_TAG);
     772             : 
     773           0 :   return Moose::Kokkos::VectorVariableGradient(variable);
     774           0 : }
     775             : 
     776             : Moose::Kokkos::VectorVariableValue
     777           0 : Coupleable::kokkosCoupledVectorNodalValues(const std::string & var_name) const
     778             : {
     779           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::SOLUTION_TAG);
     780             : 
     781           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     782           0 : }
     783             : 
     784             : Moose::Kokkos::VectorVariableValue
     785           0 : Coupleable::kokkosCoupledVectorDofValues(const std::string & var_name) const
     786             : {
     787           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::SOLUTION_TAG);
     788             : 
     789           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     790           0 : }
     791             : 
     792             : Moose::Kokkos::VectorVariableValue
     793           0 : Coupleable::kokkosCoupledVectorValueOld(const std::string & var_name, unsigned int comp) const
     794             : {
     795           0 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::OLD_SOLUTION_TAG, comp);
     796             : 
     797           0 :   return Moose::Kokkos::VectorVariableValue(variable, _c_nodal);
     798           0 : }
     799             : 
     800             : Moose::Kokkos::VectorVariableGradient
     801          17 : Coupleable::kokkosCoupledVectorGradientOld(const std::string & var_name, unsigned int comp) const
     802             : {
     803          17 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::OLD_SOLUTION_TAG, comp);
     804             : 
     805          34 :   return Moose::Kokkos::VectorVariableGradient(variable);
     806          17 : }
     807             : 
     808             : Moose::Kokkos::VectorVariableValue
     809           0 : Coupleable::kokkosCoupledVectorNodalValueOld(const std::string & var_name, unsigned int comp) const
     810             : {
     811           0 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::OLD_SOLUTION_TAG, comp);
     812             : 
     813           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     814           0 : }
     815             : 
     816             : Moose::Kokkos::VectorVariableValue
     817           0 : Coupleable::kokkosCoupledVectorDofValueOld(const std::string & var_name, unsigned int comp) const
     818             : {
     819           0 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::OLD_SOLUTION_TAG, comp);
     820             : 
     821           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     822           0 : }
     823             : 
     824             : Moose::Kokkos::VectorVariableValue
     825           0 : Coupleable::kokkosCoupledVectorValuesOld(const std::string & var_name) const
     826             : {
     827           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::OLD_SOLUTION_TAG);
     828             : 
     829           0 :   return Moose::Kokkos::VectorVariableValue(variable, _c_nodal);
     830           0 : }
     831             : 
     832             : Moose::Kokkos::VectorVariableGradient
     833           0 : Coupleable::kokkosCoupledVectorGradientsOld(const std::string & var_name) const
     834             : {
     835           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::OLD_SOLUTION_TAG);
     836             : 
     837           0 :   return Moose::Kokkos::VectorVariableGradient(variable);
     838           0 : }
     839             : 
     840             : Moose::Kokkos::VectorVariableValue
     841           0 : Coupleable::kokkosCoupledVectorNodalValuesOld(const std::string & var_name) const
     842             : {
     843           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::OLD_SOLUTION_TAG);
     844             : 
     845           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     846           0 : }
     847             : 
     848             : Moose::Kokkos::VectorVariableValue
     849           0 : Coupleable::kokkosCoupledVectorDofValuesOld(const std::string & var_name) const
     850             : {
     851           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::OLD_SOLUTION_TAG);
     852             : 
     853           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     854           0 : }
     855             : 
     856             : Moose::Kokkos::VectorVariableValue
     857           0 : Coupleable::kokkosCoupledVectorValueOlder(const std::string & var_name, unsigned int comp) const
     858             : {
     859           0 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     860             : 
     861           0 :   return Moose::Kokkos::VectorVariableValue(variable, _c_nodal);
     862           0 : }
     863             : 
     864             : Moose::Kokkos::VectorVariableGradient
     865          17 : Coupleable::kokkosCoupledVectorGradientOlder(const std::string & var_name, unsigned int comp) const
     866             : {
     867          17 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     868             : 
     869          34 :   return Moose::Kokkos::VectorVariableGradient(variable);
     870          17 : }
     871             : 
     872             : Moose::Kokkos::VectorVariableValue
     873           0 : Coupleable::kokkosCoupledVectorNodalValueOlder(const std::string & var_name,
     874             :                                                unsigned int comp) const
     875             : {
     876           0 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     877             : 
     878           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     879           0 : }
     880             : 
     881             : Moose::Kokkos::VectorVariableValue
     882           0 : Coupleable::kokkosCoupledVectorDofValueOlder(const std::string & var_name, unsigned int comp) const
     883             : {
     884           0 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     885             : 
     886           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     887           0 : }
     888             : 
     889             : Moose::Kokkos::VectorVariableValue
     890           0 : Coupleable::kokkosCoupledVectorValuesOlder(const std::string & var_name) const
     891             : {
     892           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::OLDER_SOLUTION_TAG);
     893             : 
     894           0 :   return Moose::Kokkos::VectorVariableValue(variable, _c_nodal);
     895           0 : }
     896             : 
     897             : Moose::Kokkos::VectorVariableGradient
     898           0 : Coupleable::kokkosCoupledVectorGradientsOlder(const std::string & var_name) const
     899             : {
     900           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::OLDER_SOLUTION_TAG);
     901             : 
     902           0 :   return Moose::Kokkos::VectorVariableGradient(variable);
     903           0 : }
     904             : 
     905             : Moose::Kokkos::VectorVariableValue
     906           0 : Coupleable::kokkosCoupledVectorNodalValuesOlder(const std::string & var_name) const
     907             : {
     908           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::OLDER_SOLUTION_TAG);
     909             : 
     910           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     911           0 : }
     912             : 
     913             : Moose::Kokkos::VectorVariableValue
     914           0 : Coupleable::kokkosCoupledVectorDofValuesOlder(const std::string & var_name) const
     915             : {
     916           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::OLDER_SOLUTION_TAG);
     917             : 
     918           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     919           0 : }
     920             : 
     921             : Moose::Kokkos::VectorVariableValue
     922           0 : Coupleable::kokkosCoupledVectorDot(const std::string & var_name, unsigned int comp) const
     923             : {
     924           0 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::SOLUTION_DOT_TAG, comp);
     925             : 
     926           0 :   return Moose::Kokkos::VectorVariableValue(variable, _c_nodal);
     927           0 : }
     928             : 
     929             : Moose::Kokkos::VectorVariableValue
     930           0 : Coupleable::kokkosCoupledVectorNodalDot(const std::string & var_name, unsigned int comp) const
     931             : {
     932           0 :   auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::SOLUTION_DOT_TAG, comp);
     933             : 
     934           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     935           0 : }
     936             : 
     937             : Moose::Kokkos::VectorVariableValue
     938           0 : Coupleable::kokkosCoupledVectorDots(const std::string & var_name) const
     939             : {
     940           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::SOLUTION_DOT_TAG);
     941             : 
     942           0 :   return Moose::Kokkos::VectorVariableValue(variable, _c_nodal);
     943           0 : }
     944             : 
     945             : Moose::Kokkos::VectorVariableValue
     946           0 : Coupleable::kokkosCoupledVectorNodalDots(const std::string & var_name) const
     947             : {
     948           0 :   auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::SOLUTION_DOT_TAG);
     949             : 
     950           0 :   return Moose::Kokkos::VectorVariableValue(variable, true);
     951           0 : }
     952             : 
     953             : Moose::Kokkos::ADVariableValue
     954         138 : Coupleable::kokkosADCoupledVectorTagValueByName(const std::string & var_name,
     955             :                                                 const std::string & tag_name,
     956             :                                                 unsigned int comp) const
     957             : {
     958         138 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     959             : 
     960         276 :   return Moose::Kokkos::ADVariableValue(variable);
     961         138 : }
     962             : 
     963             : Moose::Kokkos::ADVariableValue
     964           0 : Coupleable::kokkosADCoupledVectorTagValuesByName(const std::string & var_name,
     965             :                                                  const std::string & tag_name) const
     966             : {
     967           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     968             : 
     969           0 :   return Moose::Kokkos::ADVariableValue(variable);
     970           0 : }
     971             : 
     972             : Moose::Kokkos::ADVariableGradient
     973           0 : Coupleable::kokkosADCoupledVectorTagGradientByName(const std::string & var_name,
     974             :                                                    const std::string & tag_name,
     975             :                                                    unsigned int comp) const
     976             : {
     977           0 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     978             : 
     979           0 :   return Moose::Kokkos::ADVariableGradient(variable);
     980           0 : }
     981             : 
     982             : Moose::Kokkos::ADVariableGradient
     983           0 : Coupleable::kokkosADCoupledVectorTagGradientsByName(const std::string & var_name,
     984             :                                                     const std::string & tag_name) const
     985             : {
     986           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     987             : 
     988           0 :   return Moose::Kokkos::ADVariableGradient(variable);
     989           0 : }
     990             : 
     991             : Moose::Kokkos::ADVariableValue
     992           0 : Coupleable::kokkosADCoupledVectorTagNodalValueByName(const std::string & var_name,
     993             :                                                      const std::string & tag_name,
     994             :                                                      unsigned int comp) const
     995             : {
     996           0 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     997             : 
     998           0 :   if (!variable.nodal())
     999           0 :     mooseError("Cannot get nodal values from the coupled variable '",
    1000             :                var_name,
    1001             :                "', because the associated variable is not nodal.");
    1002             : 
    1003           0 :   return Moose::Kokkos::ADVariableValue(variable, true);
    1004           0 : }
    1005             : 
    1006             : Moose::Kokkos::ADVariableValue
    1007           0 : Coupleable::kokkosADCoupledVectorTagNodalValuesByName(const std::string & var_name,
    1008             :                                                       const std::string & tag_name) const
    1009             : {
    1010           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
    1011             : 
    1012           0 :   if (!variable.nodal())
    1013           0 :     mooseError("Cannot get nodal values from the coupled variable '",
    1014             :                var_name,
    1015             :                "', because the associated variable is not nodal.");
    1016             : 
    1017           0 :   return Moose::Kokkos::ADVariableValue(variable, true);
    1018           0 : }
    1019             : 
    1020             : Moose::Kokkos::ADVariableValue
    1021           0 : Coupleable::kokkosADCoupledVectorTagDofValueByName(const std::string & var_name,
    1022             :                                                    const std::string & tag_name,
    1023             :                                                    unsigned int comp) const
    1024             : {
    1025           0 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
    1026             : 
    1027           0 :   return Moose::Kokkos::ADVariableValue(variable, true);
    1028           0 : }
    1029             : 
    1030             : Moose::Kokkos::ADVariableValue
    1031           0 : Coupleable::kokkosADCoupledVectorTagDofValuesByName(const std::string & var_name,
    1032             :                                                     const std::string & tag_name) const
    1033             : {
    1034           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
    1035             : 
    1036           0 :   return Moose::Kokkos::ADVariableValue(variable, true);
    1037           0 : }
    1038             : 
    1039             : Moose::Kokkos::ADVariableValue
    1040           0 : Coupleable::kokkosADCoupledVectorTagValue(const std::string & var_name,
    1041             :                                           const std::string & tag_param_name,
    1042             :                                           unsigned int comp) const
    1043             : {
    1044           0 :   if (!_c_parameters.isParamValid(tag_param_name))
    1045           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
    1046             : 
    1047           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
    1048             : 
    1049           0 :   return kokkosADCoupledVectorTagValueByName(var_name, tag_name, comp);
    1050           0 : }
    1051             : 
    1052             : Moose::Kokkos::ADVariableValue
    1053           0 : Coupleable::kokkosADCoupledVectorTagValues(const std::string & var_name,
    1054             :                                            const std::string & tag_param_name) const
    1055             : {
    1056           0 :   if (!_c_parameters.isParamValid(tag_param_name))
    1057           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
    1058             : 
    1059           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
    1060             : 
    1061           0 :   return kokkosADCoupledVectorTagValuesByName(var_name, tag_name);
    1062           0 : }
    1063             : 
    1064             : Moose::Kokkos::ADVariableGradient
    1065           0 : Coupleable::kokkosADCoupledVectorTagGradient(const std::string & var_name,
    1066             :                                              const std::string & tag_param_name,
    1067             :                                              unsigned int comp) const
    1068             : {
    1069           0 :   if (!_c_parameters.isParamValid(tag_param_name))
    1070           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
    1071             : 
    1072           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
    1073             : 
    1074           0 :   return kokkosADCoupledVectorTagGradientByName(var_name, tag_name, comp);
    1075           0 : }
    1076             : 
    1077             : Moose::Kokkos::ADVariableGradient
    1078           0 : Coupleable::kokkosADCoupledVectorTagGradients(const std::string & var_name,
    1079             :                                               const std::string & tag_param_name) const
    1080             : {
    1081           0 :   if (!_c_parameters.isParamValid(tag_param_name))
    1082           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
    1083             : 
    1084           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
    1085             : 
    1086           0 :   return kokkosADCoupledVectorTagGradientsByName(var_name, tag_name);
    1087           0 : }
    1088             : 
    1089             : Moose::Kokkos::ADVariableValue
    1090           0 : Coupleable::kokkosADCoupledVectorTagNodalValue(const std::string & var_name,
    1091             :                                                const std::string & tag_param_name,
    1092             :                                                unsigned int comp) const
    1093             : {
    1094           0 :   if (!_c_parameters.isParamValid(tag_param_name))
    1095           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
    1096             : 
    1097           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
    1098             : 
    1099           0 :   return kokkosADCoupledVectorTagNodalValueByName(var_name, tag_name, comp);
    1100           0 : }
    1101             : 
    1102             : Moose::Kokkos::ADVariableValue
    1103           0 : Coupleable::kokkosADCoupledVectorTagNodalValues(const std::string & var_name,
    1104             :                                                 const std::string & tag_param_name) const
    1105             : {
    1106           0 :   if (!_c_parameters.isParamValid(tag_param_name))
    1107           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
    1108             : 
    1109           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
    1110             : 
    1111           0 :   return kokkosADCoupledVectorTagNodalValuesByName(var_name, tag_name);
    1112           0 : }
    1113             : 
    1114             : Moose::Kokkos::ADVariableValue
    1115           0 : Coupleable::kokkosADCoupledVectorTagDofValue(const std::string & var_name,
    1116             :                                              const std::string & tag_param_name,
    1117             :                                              unsigned int comp) const
    1118             : {
    1119           0 :   if (!_c_parameters.isParamValid(tag_param_name))
    1120           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
    1121             : 
    1122           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
    1123             : 
    1124           0 :   return kokkosADCoupledVectorTagDofValueByName(var_name, tag_name, comp);
    1125           0 : }
    1126             : 
    1127             : Moose::Kokkos::ADVariableValue
    1128           0 : Coupleable::kokkosADCoupledVectorTagDofValues(const std::string & var_name,
    1129             :                                               const std::string & tag_param_name) const
    1130             : {
    1131           0 :   if (!_c_parameters.isParamValid(tag_param_name))
    1132           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
    1133             : 
    1134           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
    1135             : 
    1136           0 :   return kokkosADCoupledVectorTagDofValuesByName(var_name, tag_name);
    1137           0 : }
    1138             : 
    1139             : Moose::Kokkos::ADVariableValue
    1140          92 : Coupleable::kokkosADCoupledValue(const std::string & var_name, unsigned int comp) const
    1141             : {
    1142          92 :   return _c_nodal ? kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_TAG, comp)
    1143          48 :                   : kokkosADCoupledVectorTagValueByName(var_name, Moose::SOLUTION_TAG, comp);
    1144             : }
    1145             : 
    1146             : Moose::Kokkos::ADVariableValue
    1147           0 : Coupleable::kokkosADCoupledValues(const std::string & var_name) const
    1148             : {
    1149           0 :   return _c_nodal ? kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_TAG)
    1150           0 :                   : kokkosADCoupledVectorTagValuesByName(var_name, Moose::SOLUTION_TAG);
    1151             : }
    1152             : 
    1153             : Moose::Kokkos::ADVariableGradient
    1154           0 : Coupleable::kokkosADCoupledGradient(const std::string & var_name, unsigned int comp) const
    1155             : {
    1156           0 :   return kokkosADCoupledVectorTagGradientByName(var_name, Moose::SOLUTION_TAG, comp);
    1157             : }
    1158             : 
    1159             : Moose::Kokkos::ADVariableGradient
    1160           0 : Coupleable::kokkosADCoupledGradients(const std::string & var_name) const
    1161             : {
    1162           0 :   return kokkosADCoupledVectorTagGradientsByName(var_name, Moose::SOLUTION_TAG);
    1163             : }
    1164             : 
    1165             : Moose::Kokkos::ADVariableValue
    1166           0 : Coupleable::kokkosADCoupledNodalValue(const std::string & var_name, unsigned int comp) const
    1167             : {
    1168           0 :   return kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_TAG, comp);
    1169             : }
    1170             : 
    1171             : Moose::Kokkos::ADVariableValue
    1172           0 : Coupleable::kokkosADCoupledNodalValues(const std::string & var_name) const
    1173             : {
    1174           0 :   return kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_TAG);
    1175             : }
    1176             : 
    1177             : Moose::Kokkos::ADVariableValue
    1178           0 : Coupleable::kokkosADCoupledDofValue(const std::string & var_name, unsigned int comp) const
    1179             : {
    1180           0 :   return kokkosADCoupledVectorTagDofValueByName(var_name, Moose::SOLUTION_TAG, comp);
    1181             : }
    1182             : 
    1183             : Moose::Kokkos::ADVariableValue
    1184           0 : Coupleable::kokkosADCoupledDofValues(const std::string & var_name) const
    1185             : {
    1186           0 :   return kokkosADCoupledVectorTagDofValuesByName(var_name, Moose::SOLUTION_TAG);
    1187             : }
    1188             : 
    1189             : Moose::Kokkos::ADVariableValue
    1190           0 : Coupleable::kokkosADCoupledValueOld(const std::string & var_name, unsigned int comp) const
    1191             : {
    1192           0 :   return _c_nodal
    1193           0 :              ? kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp)
    1194           0 :              : kokkosADCoupledVectorTagValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
    1195             : }
    1196             : 
    1197             : Moose::Kokkos::ADVariableValue
    1198           0 : Coupleable::kokkosADCoupledValuesOld(const std::string & var_name) const
    1199             : {
    1200           0 :   return _c_nodal ? kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::OLD_SOLUTION_TAG)
    1201           0 :                   : kokkosADCoupledVectorTagValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
    1202             : }
    1203             : 
    1204             : Moose::Kokkos::ADVariableGradient
    1205           0 : Coupleable::kokkosADCoupledGradientOld(const std::string & var_name, unsigned int comp) const
    1206             : {
    1207           0 :   return kokkosADCoupledVectorTagGradientByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
    1208             : }
    1209             : 
    1210             : Moose::Kokkos::ADVariableGradient
    1211           0 : Coupleable::kokkosADCoupledGradientsOld(const std::string & var_name) const
    1212             : {
    1213           0 :   return kokkosADCoupledVectorTagGradientsByName(var_name, Moose::OLD_SOLUTION_TAG);
    1214             : }
    1215             : 
    1216             : Moose::Kokkos::ADVariableValue
    1217           0 : Coupleable::kokkosADCoupledNodalValueOld(const std::string & var_name, unsigned int comp) const
    1218             : {
    1219           0 :   return kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
    1220             : }
    1221             : 
    1222             : Moose::Kokkos::ADVariableValue
    1223           0 : Coupleable::kokkosADCoupledNodalValuesOld(const std::string & var_name) const
    1224             : {
    1225           0 :   return kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
    1226             : }
    1227             : 
    1228             : Moose::Kokkos::ADVariableValue
    1229           0 : Coupleable::kokkosADCoupledDofValueOld(const std::string & var_name, unsigned int comp) const
    1230             : {
    1231           0 :   return kokkosADCoupledVectorTagDofValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
    1232             : }
    1233             : 
    1234             : Moose::Kokkos::ADVariableValue
    1235           0 : Coupleable::kokkosADCoupledDofValuesOld(const std::string & var_name) const
    1236             : {
    1237           0 :   return kokkosADCoupledVectorTagDofValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
    1238             : }
    1239             : 
    1240             : Moose::Kokkos::ADVariableValue
    1241           0 : Coupleable::kokkosADCoupledValueOlder(const std::string & var_name, unsigned int comp) const
    1242             : {
    1243           0 :   return _c_nodal
    1244           0 :              ? kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp)
    1245           0 :              : kokkosADCoupledVectorTagValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
    1246             : }
    1247             : 
    1248             : Moose::Kokkos::ADVariableValue
    1249           0 : Coupleable::kokkosADCoupledValuesOlder(const std::string & var_name) const
    1250             : {
    1251           0 :   return _c_nodal ? kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::OLDER_SOLUTION_TAG)
    1252           0 :                   : kokkosADCoupledVectorTagValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
    1253             : }
    1254             : 
    1255             : Moose::Kokkos::ADVariableGradient
    1256           0 : Coupleable::kokkosADCoupledGradientOlder(const std::string & var_name, unsigned int comp) const
    1257             : {
    1258           0 :   return kokkosADCoupledVectorTagGradientByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
    1259             : }
    1260             : 
    1261             : Moose::Kokkos::ADVariableGradient
    1262           0 : Coupleable::kokkosADCoupledGradientsOlder(const std::string & var_name) const
    1263             : {
    1264           0 :   return kokkosADCoupledVectorTagGradientsByName(var_name, Moose::OLDER_SOLUTION_TAG);
    1265             : }
    1266             : 
    1267             : Moose::Kokkos::ADVariableValue
    1268           0 : Coupleable::kokkosADCoupledNodalValueOlder(const std::string & var_name, unsigned int comp) const
    1269             : {
    1270           0 :   return kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
    1271             : }
    1272             : 
    1273             : Moose::Kokkos::ADVariableValue
    1274           0 : Coupleable::kokkosADCoupledNodalValuesOlder(const std::string & var_name) const
    1275             : {
    1276           0 :   return kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
    1277             : }
    1278             : 
    1279             : Moose::Kokkos::ADVariableValue
    1280           0 : Coupleable::kokkosADCoupledDofValueOlder(const std::string & var_name, unsigned int comp) const
    1281             : {
    1282           0 :   return kokkosADCoupledVectorTagDofValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
    1283             : }
    1284             : 
    1285             : Moose::Kokkos::ADVariableValue
    1286           0 : Coupleable::kokkosADCoupledDofValuesOlder(const std::string & var_name) const
    1287             : {
    1288           0 :   return kokkosADCoupledVectorTagDofValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
    1289             : }
    1290             : 
    1291             : Moose::Kokkos::ADVariableValue
    1292          46 : Coupleable::kokkosADCoupledDot(const std::string & var_name, unsigned int comp) const
    1293             : {
    1294          46 :   return _c_nodal
    1295          24 :              ? kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp)
    1296          24 :              : kokkosADCoupledVectorTagValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp);
    1297             : }
    1298             : 
    1299             : Moose::Kokkos::ADVariableValue
    1300           0 : Coupleable::kokkosADCoupledDots(const std::string & var_name) const
    1301             : {
    1302           0 :   return _c_nodal ? kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_DOT_TAG)
    1303           0 :                   : kokkosADCoupledVectorTagValuesByName(var_name, Moose::SOLUTION_DOT_TAG);
    1304             : }
    1305             : 
    1306             : Moose::Kokkos::ADVariableValue
    1307           0 : Coupleable::kokkosADCoupledNodalDot(const std::string & var_name, unsigned int comp) const
    1308             : {
    1309           0 :   return kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp);
    1310             : }
    1311             : 
    1312             : Moose::Kokkos::ADVariableValue
    1313           0 : Coupleable::kokkosADCoupledNodalDots(const std::string & var_name) const
    1314             : {
    1315           0 :   return kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_DOT_TAG);
    1316             : }
    1317             : 
    1318             : Moose::Kokkos::Scalar<const Real>
    1319          29 : Coupleable::kokkosCoupledDotDu(const std::string & var_name, unsigned int comp) const
    1320             : {
    1321          29 :   const auto var = getVar(var_name, comp);
    1322             : 
    1323          29 :   if (!var)
    1324           0 :     return Moose::Kokkos::Scalar<const Real>(_kokkos_default_value_zero);
    1325             :   else
    1326          29 :     return Moose::Kokkos::Scalar<const Real>(var->sys().duDotDu(var->number() + comp));
    1327             : }
    1328             : 
    1329             : Moose::Kokkos::VariableValue
    1330         306 : Coupleable::kokkosZeroValue() const
    1331             : {
    1332         306 :   auto variable = kokkosZeroVariable();
    1333             : 
    1334         612 :   return Moose::Kokkos::VariableValue(variable);
    1335         306 : }
    1336             : 
    1337             : Moose::Kokkos::VariableGradient
    1338           0 : Coupleable::kokkosZeroGradient() const
    1339             : {
    1340           0 :   auto variable = kokkosZeroVariable();
    1341             : 
    1342           0 :   return Moose::Kokkos::VariableGradient(variable);
    1343           0 : }
    1344             : 
    1345             : Moose::Kokkos::VariableValue
    1346           0 : Coupleable::kokkosZeroNodalValue() const
    1347             : {
    1348           0 :   auto variable = kokkosZeroVariable();
    1349             : 
    1350           0 :   return Moose::Kokkos::VariableValue(variable, true);
    1351           0 : }

Generated by: LCOV version 1.14