LCOV - code coverage report
Current view: top level - src/kokkos/interfaces - KokkosCoupleable.K (source / functions) Hit Total Coverage
Test: idaholab/moose framework: #32971 (54bef8) with base c6cf66 Lines: 110 361 30.5 %
Date: 2026-05-29 20:35:17 Functions: 25 95 26.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        3092 : Coupleable::kokkosCoupledVectorTagVariable(const std::string & var_name,
      20             :                                            const std::string & tag_name,
      21             :                                            unsigned int comp) const
      22             : {
      23        3092 :   Moose::Kokkos::Variable variable;
      24             : 
      25        3092 :   if (isCoupled(var_name))
      26             :   {
      27        1382 :     auto var = const_cast<MooseVariableField<Real> *>(
      28        1618 :         getVarHelper<MooseVariableField<Real>>(var_name, comp));
      29             : 
      30        3000 :     if (tag_name == Moose::OLD_SOLUTION_TAG)
      31          51 :       var->sys().needSolutionState(1);
      32        2949 :     else if (tag_name == Moose::OLDER_SOLUTION_TAG)
      33          34 :       var->sys().needSolutionState(2);
      34             : 
      35        3000 :     const auto tag = _c_fe_problem.getVectorTagID(tag_name);
      36             : 
      37        3000 :     const_cast<Coupleable *>(this)->addFEVariableCoupleableVectorTag(tag);
      38             : 
      39        3000 :     variable.init(*var, tag);
      40             :   }
      41             :   else
      42         276 :     variable.init({_c_parameters.defaultCoupledValue(var_name, comp)}, CoupleableKey{});
      43             : 
      44        3092 :   return variable;
      45           0 : }
      46             : 
      47             : Moose::Kokkos::Variable
      48         135 : Coupleable::kokkosCoupledVectorTagVariables(const std::string & var_name,
      49             :                                             const std::string & tag_name) const
      50             : {
      51         135 :   Moose::Kokkos::Variable variable;
      52             : 
      53         135 :   const auto components = coupledComponents(var_name);
      54             : 
      55         135 :   if (isCoupled(var_name))
      56             :   {
      57         135 :     std::vector<const MooseVariableFieldBase *> vars;
      58             : 
      59         353 :     for (unsigned int comp = 0; comp < components; ++comp)
      60             :     {
      61          88 :       auto var = const_cast<MooseVariableField<Real> *>(
      62         130 :           getVarHelper<MooseVariableField<Real>>(var_name, comp));
      63             : 
      64         218 :       if (tag_name == Moose::OLD_SOLUTION_TAG)
      65           0 :         var->sys().needSolutionState(1);
      66         218 :       else if (tag_name == Moose::OLDER_SOLUTION_TAG)
      67           0 :         var->sys().needSolutionState(2);
      68             : 
      69         218 :       vars.push_back(var);
      70             :     }
      71             : 
      72         135 :     const auto tag = _c_fe_problem.getVectorTagID(tag_name);
      73             : 
      74         135 :     const_cast<Coupleable *>(this)->addFEVariableCoupleableVectorTag(tag);
      75             : 
      76         135 :     variable.init(vars, tag);
      77         135 :   }
      78             :   else
      79             :   {
      80           0 :     std::vector<Real> default_values(components);
      81             : 
      82           0 :     for (unsigned int comp = 0; comp < components; ++comp)
      83           0 :       default_values[comp] = _c_parameters.defaultCoupledValue(var_name, comp);
      84             : 
      85           0 :     variable.init(default_values, CoupleableKey{});
      86           0 :   }
      87             : 
      88         135 :   return variable;
      89           0 : }
      90             : 
      91             : Moose::Kokkos::Variable
      92         306 : Coupleable::kokkosZeroVariable() const
      93             : {
      94         306 :   Moose::Kokkos::Variable variable;
      95             : 
      96         612 :   variable.init({0}, CoupleableKey{});
      97             : 
      98         306 :   return variable;
      99           0 : }
     100             : 
     101             : Moose::Kokkos::VariableValue
     102        1371 : Coupleable::kokkosCoupledVectorTagValueByName(const std::string & var_name,
     103             :                                               const std::string & tag_name,
     104             :                                               unsigned int comp) const
     105             : {
     106        1371 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     107             : 
     108        2742 :   return Moose::Kokkos::VariableValue(variable);
     109        1371 : }
     110             : 
     111             : Moose::Kokkos::VariableValue
     112         135 : Coupleable::kokkosCoupledVectorTagValuesByName(const std::string & var_name,
     113             :                                                const std::string & tag_name) const
     114             : {
     115         135 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     116             : 
     117         270 :   return Moose::Kokkos::VariableValue(variable);
     118         135 : }
     119             : 
     120             : Moose::Kokkos::VariableGradient
     121         665 : Coupleable::kokkosCoupledVectorTagGradientByName(const std::string & var_name,
     122             :                                                  const std::string & tag_name,
     123             :                                                  unsigned int comp) const
     124             : {
     125         665 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     126             : 
     127        1330 :   return Moose::Kokkos::VariableGradient(variable);
     128         665 : }
     129             : 
     130             : Moose::Kokkos::VariableGradient
     131           0 : Coupleable::kokkosCoupledVectorTagGradientsByName(const std::string & var_name,
     132             :                                                   const std::string & tag_name) const
     133             : {
     134           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     135             : 
     136           0 :   return Moose::Kokkos::VariableGradient(variable);
     137           0 : }
     138             : 
     139             : Moose::Kokkos::VariableValue
     140         850 : Coupleable::kokkosCoupledVectorTagNodalValueByName(const std::string & var_name,
     141             :                                                    const std::string & tag_name,
     142             :                                                    unsigned int comp) const
     143             : {
     144         850 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     145             : 
     146         850 :   if (!variable.nodal())
     147           0 :     mooseError("Cannot get nodal values from the coupled variable '",
     148             :                var_name,
     149             :                "', because the associated variable is not nodal.");
     150             : 
     151        1700 :   return Moose::Kokkos::VariableValue(variable, true);
     152         850 : }
     153             : 
     154             : Moose::Kokkos::VariableValue
     155           0 : Coupleable::kokkosCoupledVectorTagNodalValuesByName(const std::string & var_name,
     156             :                                                     const std::string & tag_name) const
     157             : {
     158           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     159             : 
     160           0 :   if (!variable.nodal())
     161           0 :     mooseError("Cannot get nodal values from the coupled variable '",
     162             :                var_name,
     163             :                "', because the associated variable is not nodal.");
     164             : 
     165           0 :   return Moose::Kokkos::VariableValue(variable, true);
     166           0 : }
     167             : 
     168             : Moose::Kokkos::VariableValue
     169          68 : Coupleable::kokkosCoupledVectorTagDofValueByName(const std::string & var_name,
     170             :                                                  const std::string & tag_name,
     171             :                                                  unsigned int comp) const
     172             : {
     173          68 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     174             : 
     175         136 :   return Moose::Kokkos::VariableValue(variable, true);
     176          68 : }
     177             : 
     178             : Moose::Kokkos::VariableValue
     179           0 : Coupleable::kokkosCoupledVectorTagDofValuesByName(const std::string & var_name,
     180             :                                                   const std::string & tag_name) const
     181             : {
     182           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     183             : 
     184           0 :   return Moose::Kokkos::VariableValue(variable, true);
     185           0 : }
     186             : 
     187             : Moose::Kokkos::VariableValue
     188         204 : Coupleable::kokkosCoupledVectorTagValue(const std::string & var_name,
     189             :                                         const std::string & tag_param_name,
     190             :                                         unsigned int comp) const
     191             : {
     192         204 :   if (!_c_parameters.isParamValid(tag_param_name))
     193           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     194             : 
     195         204 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     196             : 
     197         408 :   return kokkosCoupledVectorTagValueByName(var_name, tag_name, comp);
     198         204 : }
     199             : 
     200             : Moose::Kokkos::VariableValue
     201           0 : Coupleable::kokkosCoupledVectorTagValues(const std::string & var_name,
     202             :                                          const std::string & tag_param_name) const
     203             : {
     204           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     205           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     206             : 
     207           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     208             : 
     209           0 :   return kokkosCoupledVectorTagValuesByName(var_name, tag_name);
     210           0 : }
     211             : 
     212             : Moose::Kokkos::VariableGradient
     213           0 : Coupleable::kokkosCoupledVectorTagGradient(const std::string & var_name,
     214             :                                            const std::string & tag_param_name,
     215             :                                            unsigned int comp) const
     216             : {
     217           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     218           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     219             : 
     220           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     221             : 
     222           0 :   return kokkosCoupledVectorTagGradientByName(var_name, tag_name, comp);
     223           0 : }
     224             : 
     225             : Moose::Kokkos::VariableGradient
     226           0 : Coupleable::kokkosCoupledVectorTagGradients(const std::string & var_name,
     227             :                                             const std::string & tag_param_name) const
     228             : {
     229           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     230           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     231             : 
     232           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     233             : 
     234           0 :   return kokkosCoupledVectorTagGradientsByName(var_name, tag_name);
     235           0 : }
     236             : 
     237             : Moose::Kokkos::VariableValue
     238         100 : Coupleable::kokkosCoupledVectorTagNodalValue(const std::string & var_name,
     239             :                                              const std::string & tag_param_name,
     240             :                                              unsigned int comp) const
     241             : {
     242         100 :   if (!_c_parameters.isParamValid(tag_param_name))
     243           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     244             : 
     245         100 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     246             : 
     247         200 :   return kokkosCoupledVectorTagNodalValueByName(var_name, tag_name, comp);
     248         100 : }
     249             : 
     250             : Moose::Kokkos::VariableValue
     251           0 : Coupleable::kokkosCoupledVectorTagNodalValues(const std::string & var_name,
     252             :                                               const std::string & tag_param_name) const
     253             : {
     254           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     255           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     256             : 
     257           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     258             : 
     259           0 :   return kokkosCoupledVectorTagNodalValuesByName(var_name, tag_name);
     260           0 : }
     261             : 
     262             : Moose::Kokkos::VariableValue
     263           0 : Coupleable::kokkosCoupledVectorTagDofValue(const std::string & var_name,
     264             :                                            const std::string & tag_param_name,
     265             :                                            unsigned int comp) const
     266             : {
     267           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     268           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     269             : 
     270           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     271             : 
     272           0 :   return kokkosCoupledVectorTagDofValueByName(var_name, tag_name, comp);
     273           0 : }
     274             : 
     275             : Moose::Kokkos::VariableValue
     276           0 : Coupleable::kokkosCoupledVectorTagDofValues(const std::string & var_name,
     277             :                                             const std::string & tag_param_name) const
     278             : {
     279           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     280           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     281             : 
     282           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     283             : 
     284           0 :   return kokkosCoupledVectorTagDofValuesByName(var_name, tag_name);
     285           0 : }
     286             : 
     287             : Moose::Kokkos::VariableValue
     288        1563 : Coupleable::kokkosCoupledValue(const std::string & var_name, unsigned int comp) const
     289             : {
     290        1563 :   return _c_nodal ? kokkosCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_TAG, comp)
     291         857 :                   : kokkosCoupledVectorTagValueByName(var_name, Moose::SOLUTION_TAG, comp);
     292             : }
     293             : 
     294             : Moose::Kokkos::VariableValue
     295         135 : Coupleable::kokkosCoupledValues(const std::string & var_name) const
     296             : {
     297         135 :   return _c_nodal ? kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_TAG)
     298          79 :                   : kokkosCoupledVectorTagValuesByName(var_name, Moose::SOLUTION_TAG);
     299             : }
     300             : 
     301             : Moose::Kokkos::VariableGradient
     302         665 : Coupleable::kokkosCoupledGradient(const std::string & var_name, unsigned int comp) const
     303             : {
     304         665 :   return kokkosCoupledVectorTagGradientByName(var_name, Moose::SOLUTION_TAG, comp);
     305             : }
     306             : 
     307             : Moose::Kokkos::VariableGradient
     308           0 : Coupleable::kokkosCoupledGradients(const std::string & var_name) const
     309             : {
     310           0 :   return kokkosCoupledVectorTagGradientsByName(var_name, Moose::SOLUTION_TAG);
     311             : }
     312             : 
     313             : Moose::Kokkos::VariableValue
     314         274 : Coupleable::kokkosCoupledNodalValue(const std::string & var_name, unsigned int comp) const
     315             : {
     316         274 :   return kokkosCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_TAG, comp);
     317             : }
     318             : 
     319             : Moose::Kokkos::VariableValue
     320           0 : Coupleable::kokkosCoupledNodalValues(const std::string & var_name) const
     321             : {
     322           0 :   return kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_TAG);
     323             : }
     324             : 
     325             : Moose::Kokkos::VariableValue
     326          34 : Coupleable::kokkosCoupledDofValue(const std::string & var_name, unsigned int comp) const
     327             : {
     328          34 :   return kokkosCoupledVectorTagDofValueByName(var_name, Moose::SOLUTION_TAG, comp);
     329             : }
     330             : 
     331             : Moose::Kokkos::VariableValue
     332           0 : Coupleable::kokkosCoupledDofValues(const std::string & var_name) const
     333             : {
     334           0 :   return kokkosCoupledVectorTagDofValuesByName(var_name, Moose::SOLUTION_TAG);
     335             : }
     336             : 
     337             : Moose::Kokkos::VariableValue
     338          34 : Coupleable::kokkosCoupledValueOld(const std::string & var_name, unsigned int comp) const
     339             : {
     340          34 :   return _c_nodal ? kokkosCoupledVectorTagNodalValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp)
     341          18 :                   : kokkosCoupledVectorTagValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
     342             : }
     343             : 
     344             : Moose::Kokkos::VariableValue
     345           0 : Coupleable::kokkosCoupledValuesOld(const std::string & var_name) const
     346             : {
     347           0 :   return _c_nodal ? kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::OLD_SOLUTION_TAG)
     348           0 :                   : kokkosCoupledVectorTagValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
     349             : }
     350             : 
     351             : Moose::Kokkos::VariableGradient
     352           0 : Coupleable::kokkosCoupledGradientOld(const std::string & var_name, unsigned int comp) const
     353             : {
     354           0 :   return kokkosCoupledVectorTagGradientByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
     355             : }
     356             : 
     357             : Moose::Kokkos::VariableGradient
     358           0 : Coupleable::kokkosCoupledGradientsOld(const std::string & var_name) const
     359             : {
     360           0 :   return kokkosCoupledVectorTagGradientsByName(var_name, Moose::OLD_SOLUTION_TAG);
     361             : }
     362             : 
     363             : Moose::Kokkos::VariableValue
     364           0 : Coupleable::kokkosCoupledNodalValueOld(const std::string & var_name, unsigned int comp) const
     365             : {
     366           0 :   return kokkosCoupledVectorTagNodalValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
     367             : }
     368             : 
     369             : Moose::Kokkos::VariableValue
     370           0 : Coupleable::kokkosCoupledNodalValuesOld(const std::string & var_name) const
     371             : {
     372           0 :   return kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
     373             : }
     374             : 
     375             : Moose::Kokkos::VariableValue
     376          17 : Coupleable::kokkosCoupledDofValueOld(const std::string & var_name, unsigned int comp) const
     377             : {
     378          17 :   return kokkosCoupledVectorTagDofValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
     379             : }
     380             : 
     381             : Moose::Kokkos::VariableValue
     382           0 : Coupleable::kokkosCoupledDofValuesOld(const std::string & var_name) const
     383             : {
     384           0 :   return kokkosCoupledVectorTagDofValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
     385             : }
     386             : 
     387             : Moose::Kokkos::VariableValue
     388          17 : Coupleable::kokkosCoupledValueOlder(const std::string & var_name, unsigned int comp) const
     389             : {
     390          17 :   return _c_nodal
     391           9 :              ? kokkosCoupledVectorTagNodalValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp)
     392           9 :              : kokkosCoupledVectorTagValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     393             : }
     394             : 
     395             : Moose::Kokkos::VariableValue
     396           0 : Coupleable::kokkosCoupledValuesOlder(const std::string & var_name) const
     397             : {
     398           0 :   return _c_nodal ? kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::OLDER_SOLUTION_TAG)
     399           0 :                   : kokkosCoupledVectorTagValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
     400             : }
     401             : 
     402             : Moose::Kokkos::VariableGradient
     403           0 : Coupleable::kokkosCoupledGradientOlder(const std::string & var_name, unsigned int comp) const
     404             : {
     405           0 :   return kokkosCoupledVectorTagGradientByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     406             : }
     407             : 
     408             : Moose::Kokkos::VariableGradient
     409           0 : Coupleable::kokkosCoupledGradientsOlder(const std::string & var_name) const
     410             : {
     411           0 :   return kokkosCoupledVectorTagGradientsByName(var_name, Moose::OLDER_SOLUTION_TAG);
     412             : }
     413             : 
     414             : Moose::Kokkos::VariableValue
     415           0 : Coupleable::kokkosCoupledNodalValueOlder(const std::string & var_name, unsigned int comp) const
     416             : {
     417           0 :   return kokkosCoupledVectorTagNodalValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     418             : }
     419             : 
     420             : Moose::Kokkos::VariableValue
     421           0 : Coupleable::kokkosCoupledNodalValuesOlder(const std::string & var_name) const
     422             : {
     423           0 :   return kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
     424             : }
     425             : 
     426             : Moose::Kokkos::VariableValue
     427          17 : Coupleable::kokkosCoupledDofValueOlder(const std::string & var_name, unsigned int comp) const
     428             : {
     429          17 :   return kokkosCoupledVectorTagDofValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     430             : }
     431             : 
     432             : Moose::Kokkos::VariableValue
     433           0 : Coupleable::kokkosCoupledDofValuesOlder(const std::string & var_name) const
     434             : {
     435           0 :   return kokkosCoupledVectorTagDofValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
     436             : }
     437             : 
     438             : Moose::Kokkos::VariableValue
     439          29 : Coupleable::kokkosCoupledDot(const std::string & var_name, unsigned int comp) const
     440             : {
     441          29 :   return _c_nodal ? kokkosCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp)
     442          15 :                   : kokkosCoupledVectorTagValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp);
     443             : }
     444             : 
     445             : Moose::Kokkos::VariableValue
     446           0 : Coupleable::kokkosCoupledDots(const std::string & var_name) const
     447             : {
     448           0 :   return _c_nodal ? kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_DOT_TAG)
     449           0 :                   : kokkosCoupledVectorTagValuesByName(var_name, Moose::SOLUTION_DOT_TAG);
     450             : }
     451             : 
     452             : Moose::Kokkos::VariableValue
     453           0 : Coupleable::kokkosCoupledNodalDot(const std::string & var_name, unsigned int comp) const
     454             : {
     455           0 :   return kokkosCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp);
     456             : }
     457             : 
     458             : Moose::Kokkos::VariableValue
     459           0 : Coupleable::kokkosCoupledNodalDots(const std::string & var_name) const
     460             : {
     461           0 :   return kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_DOT_TAG);
     462             : }
     463             : 
     464             : Moose::Kokkos::ADVariableValue
     465         138 : Coupleable::kokkosADCoupledVectorTagValueByName(const std::string & var_name,
     466             :                                                 const std::string & tag_name,
     467             :                                                 unsigned int comp) const
     468             : {
     469         138 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     470             : 
     471         276 :   return Moose::Kokkos::ADVariableValue(variable);
     472         138 : }
     473             : 
     474             : Moose::Kokkos::ADVariableValue
     475           0 : Coupleable::kokkosADCoupledVectorTagValuesByName(const std::string & var_name,
     476             :                                                  const std::string & tag_name) const
     477             : {
     478           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     479             : 
     480           0 :   return Moose::Kokkos::ADVariableValue(variable);
     481           0 : }
     482             : 
     483             : Moose::Kokkos::ADVariableGradient
     484           0 : Coupleable::kokkosADCoupledVectorTagGradientByName(const std::string & var_name,
     485             :                                                    const std::string & tag_name,
     486             :                                                    unsigned int comp) const
     487             : {
     488           0 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     489             : 
     490           0 :   return Moose::Kokkos::ADVariableGradient(variable);
     491           0 : }
     492             : 
     493             : Moose::Kokkos::ADVariableGradient
     494           0 : Coupleable::kokkosADCoupledVectorTagGradientsByName(const std::string & var_name,
     495             :                                                     const std::string & tag_name) const
     496             : {
     497           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     498             : 
     499           0 :   return Moose::Kokkos::ADVariableGradient(variable);
     500           0 : }
     501             : 
     502             : Moose::Kokkos::ADVariableValue
     503           0 : Coupleable::kokkosADCoupledVectorTagNodalValueByName(const std::string & var_name,
     504             :                                                      const std::string & tag_name,
     505             :                                                      unsigned int comp) const
     506             : {
     507           0 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     508             : 
     509           0 :   if (!variable.nodal())
     510           0 :     mooseError("Cannot get nodal values from the coupled variable '",
     511             :                var_name,
     512             :                "', because the associated variable is not nodal.");
     513             : 
     514           0 :   return Moose::Kokkos::ADVariableValue(variable, true);
     515           0 : }
     516             : 
     517             : Moose::Kokkos::ADVariableValue
     518           0 : Coupleable::kokkosADCoupledVectorTagNodalValuesByName(const std::string & var_name,
     519             :                                                       const std::string & tag_name) const
     520             : {
     521           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     522             : 
     523           0 :   if (!variable.nodal())
     524           0 :     mooseError("Cannot get nodal values from the coupled variable '",
     525             :                var_name,
     526             :                "', because the associated variable is not nodal.");
     527             : 
     528           0 :   return Moose::Kokkos::ADVariableValue(variable, true);
     529           0 : }
     530             : 
     531             : Moose::Kokkos::ADVariableValue
     532           0 : Coupleable::kokkosADCoupledVectorTagDofValueByName(const std::string & var_name,
     533             :                                                    const std::string & tag_name,
     534             :                                                    unsigned int comp) const
     535             : {
     536           0 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     537             : 
     538           0 :   return Moose::Kokkos::ADVariableValue(variable, true);
     539           0 : }
     540             : 
     541             : Moose::Kokkos::ADVariableValue
     542           0 : Coupleable::kokkosADCoupledVectorTagDofValuesByName(const std::string & var_name,
     543             :                                                     const std::string & tag_name) const
     544             : {
     545           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     546             : 
     547           0 :   return Moose::Kokkos::ADVariableValue(variable, true);
     548           0 : }
     549             : 
     550             : Moose::Kokkos::ADVariableValue
     551           0 : Coupleable::kokkosADCoupledVectorTagValue(const std::string & var_name,
     552             :                                           const std::string & tag_param_name,
     553             :                                           unsigned int comp) const
     554             : {
     555           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     556           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     557             : 
     558           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     559             : 
     560           0 :   return kokkosADCoupledVectorTagValueByName(var_name, tag_name, comp);
     561           0 : }
     562             : 
     563             : Moose::Kokkos::ADVariableValue
     564           0 : Coupleable::kokkosADCoupledVectorTagValues(const std::string & var_name,
     565             :                                            const std::string & tag_param_name) const
     566             : {
     567           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     568           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     569             : 
     570           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     571             : 
     572           0 :   return kokkosADCoupledVectorTagValuesByName(var_name, tag_name);
     573           0 : }
     574             : 
     575             : Moose::Kokkos::ADVariableGradient
     576           0 : Coupleable::kokkosADCoupledVectorTagGradient(const std::string & var_name,
     577             :                                              const std::string & tag_param_name,
     578             :                                              unsigned int comp) const
     579             : {
     580           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     581           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     582             : 
     583           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     584             : 
     585           0 :   return kokkosADCoupledVectorTagGradientByName(var_name, tag_name, comp);
     586           0 : }
     587             : 
     588             : Moose::Kokkos::ADVariableGradient
     589           0 : Coupleable::kokkosADCoupledVectorTagGradients(const std::string & var_name,
     590             :                                               const std::string & tag_param_name) const
     591             : {
     592           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     593           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     594             : 
     595           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     596             : 
     597           0 :   return kokkosADCoupledVectorTagGradientsByName(var_name, tag_name);
     598           0 : }
     599             : 
     600             : Moose::Kokkos::ADVariableValue
     601           0 : Coupleable::kokkosADCoupledVectorTagNodalValue(const std::string & var_name,
     602             :                                                const std::string & tag_param_name,
     603             :                                                unsigned int comp) const
     604             : {
     605           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     606           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     607             : 
     608           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     609             : 
     610           0 :   return kokkosADCoupledVectorTagNodalValueByName(var_name, tag_name, comp);
     611           0 : }
     612             : 
     613             : Moose::Kokkos::ADVariableValue
     614           0 : Coupleable::kokkosADCoupledVectorTagNodalValues(const std::string & var_name,
     615             :                                                 const std::string & tag_param_name) const
     616             : {
     617           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     618           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     619             : 
     620           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     621             : 
     622           0 :   return kokkosADCoupledVectorTagNodalValuesByName(var_name, tag_name);
     623           0 : }
     624             : 
     625             : Moose::Kokkos::ADVariableValue
     626           0 : Coupleable::kokkosADCoupledVectorTagDofValue(const std::string & var_name,
     627             :                                              const std::string & tag_param_name,
     628             :                                              unsigned int comp) const
     629             : {
     630           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     631           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     632             : 
     633           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     634             : 
     635           0 :   return kokkosADCoupledVectorTagDofValueByName(var_name, tag_name, comp);
     636           0 : }
     637             : 
     638             : Moose::Kokkos::ADVariableValue
     639           0 : Coupleable::kokkosADCoupledVectorTagDofValues(const std::string & var_name,
     640             :                                               const std::string & tag_param_name) const
     641             : {
     642           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     643           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     644             : 
     645           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     646             : 
     647           0 :   return kokkosADCoupledVectorTagDofValuesByName(var_name, tag_name);
     648           0 : }
     649             : 
     650             : Moose::Kokkos::ADVariableValue
     651          92 : Coupleable::kokkosADCoupledValue(const std::string & var_name, unsigned int comp) const
     652             : {
     653          92 :   return _c_nodal ? kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_TAG, comp)
     654          48 :                   : kokkosADCoupledVectorTagValueByName(var_name, Moose::SOLUTION_TAG, comp);
     655             : }
     656             : 
     657             : Moose::Kokkos::ADVariableValue
     658           0 : Coupleable::kokkosADCoupledValues(const std::string & var_name) const
     659             : {
     660           0 :   return _c_nodal ? kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_TAG)
     661           0 :                   : kokkosADCoupledVectorTagValuesByName(var_name, Moose::SOLUTION_TAG);
     662             : }
     663             : 
     664             : Moose::Kokkos::ADVariableGradient
     665           0 : Coupleable::kokkosADCoupledGradient(const std::string & var_name, unsigned int comp) const
     666             : {
     667           0 :   return kokkosADCoupledVectorTagGradientByName(var_name, Moose::SOLUTION_TAG, comp);
     668             : }
     669             : 
     670             : Moose::Kokkos::ADVariableGradient
     671           0 : Coupleable::kokkosADCoupledGradients(const std::string & var_name) const
     672             : {
     673           0 :   return kokkosADCoupledVectorTagGradientsByName(var_name, Moose::SOLUTION_TAG);
     674             : }
     675             : 
     676             : Moose::Kokkos::ADVariableValue
     677           0 : Coupleable::kokkosADCoupledNodalValue(const std::string & var_name, unsigned int comp) const
     678             : {
     679           0 :   return kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_TAG, comp);
     680             : }
     681             : 
     682             : Moose::Kokkos::ADVariableValue
     683           0 : Coupleable::kokkosADCoupledNodalValues(const std::string & var_name) const
     684             : {
     685           0 :   return kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_TAG);
     686             : }
     687             : 
     688             : Moose::Kokkos::ADVariableValue
     689           0 : Coupleable::kokkosADCoupledDofValue(const std::string & var_name, unsigned int comp) const
     690             : {
     691           0 :   return kokkosADCoupledVectorTagDofValueByName(var_name, Moose::SOLUTION_TAG, comp);
     692             : }
     693             : 
     694             : Moose::Kokkos::ADVariableValue
     695           0 : Coupleable::kokkosADCoupledDofValues(const std::string & var_name) const
     696             : {
     697           0 :   return kokkosADCoupledVectorTagDofValuesByName(var_name, Moose::SOLUTION_TAG);
     698             : }
     699             : 
     700             : Moose::Kokkos::ADVariableValue
     701           0 : Coupleable::kokkosADCoupledValueOld(const std::string & var_name, unsigned int comp) const
     702             : {
     703           0 :   return _c_nodal
     704           0 :              ? kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp)
     705           0 :              : kokkosADCoupledVectorTagValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
     706             : }
     707             : 
     708             : Moose::Kokkos::ADVariableValue
     709           0 : Coupleable::kokkosADCoupledValuesOld(const std::string & var_name) const
     710             : {
     711           0 :   return _c_nodal ? kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::OLD_SOLUTION_TAG)
     712           0 :                   : kokkosADCoupledVectorTagValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
     713             : }
     714             : 
     715             : Moose::Kokkos::ADVariableGradient
     716           0 : Coupleable::kokkosADCoupledGradientOld(const std::string & var_name, unsigned int comp) const
     717             : {
     718           0 :   return kokkosADCoupledVectorTagGradientByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
     719             : }
     720             : 
     721             : Moose::Kokkos::ADVariableGradient
     722           0 : Coupleable::kokkosADCoupledGradientsOld(const std::string & var_name) const
     723             : {
     724           0 :   return kokkosADCoupledVectorTagGradientsByName(var_name, Moose::OLD_SOLUTION_TAG);
     725             : }
     726             : 
     727             : Moose::Kokkos::ADVariableValue
     728           0 : Coupleable::kokkosADCoupledNodalValueOld(const std::string & var_name, unsigned int comp) const
     729             : {
     730           0 :   return kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
     731             : }
     732             : 
     733             : Moose::Kokkos::ADVariableValue
     734           0 : Coupleable::kokkosADCoupledNodalValuesOld(const std::string & var_name) const
     735             : {
     736           0 :   return kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
     737             : }
     738             : 
     739             : Moose::Kokkos::ADVariableValue
     740           0 : Coupleable::kokkosADCoupledDofValueOld(const std::string & var_name, unsigned int comp) const
     741             : {
     742           0 :   return kokkosADCoupledVectorTagDofValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
     743             : }
     744             : 
     745             : Moose::Kokkos::ADVariableValue
     746           0 : Coupleable::kokkosADCoupledDofValuesOld(const std::string & var_name) const
     747             : {
     748           0 :   return kokkosADCoupledVectorTagDofValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
     749             : }
     750             : 
     751             : Moose::Kokkos::ADVariableValue
     752           0 : Coupleable::kokkosADCoupledValueOlder(const std::string & var_name, unsigned int comp) const
     753             : {
     754           0 :   return _c_nodal
     755           0 :              ? kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp)
     756           0 :              : kokkosADCoupledVectorTagValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     757             : }
     758             : 
     759             : Moose::Kokkos::ADVariableValue
     760           0 : Coupleable::kokkosADCoupledValuesOlder(const std::string & var_name) const
     761             : {
     762           0 :   return _c_nodal ? kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::OLDER_SOLUTION_TAG)
     763           0 :                   : kokkosADCoupledVectorTagValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
     764             : }
     765             : 
     766             : Moose::Kokkos::ADVariableGradient
     767           0 : Coupleable::kokkosADCoupledGradientOlder(const std::string & var_name, unsigned int comp) const
     768             : {
     769           0 :   return kokkosADCoupledVectorTagGradientByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     770             : }
     771             : 
     772             : Moose::Kokkos::ADVariableGradient
     773           0 : Coupleable::kokkosADCoupledGradientsOlder(const std::string & var_name) const
     774             : {
     775           0 :   return kokkosADCoupledVectorTagGradientsByName(var_name, Moose::OLDER_SOLUTION_TAG);
     776             : }
     777             : 
     778             : Moose::Kokkos::ADVariableValue
     779           0 : Coupleable::kokkosADCoupledNodalValueOlder(const std::string & var_name, unsigned int comp) const
     780             : {
     781           0 :   return kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     782             : }
     783             : 
     784             : Moose::Kokkos::ADVariableValue
     785           0 : Coupleable::kokkosADCoupledNodalValuesOlder(const std::string & var_name) const
     786             : {
     787           0 :   return kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
     788             : }
     789             : 
     790             : Moose::Kokkos::ADVariableValue
     791           0 : Coupleable::kokkosADCoupledDofValueOlder(const std::string & var_name, unsigned int comp) const
     792             : {
     793           0 :   return kokkosADCoupledVectorTagDofValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     794             : }
     795             : 
     796             : Moose::Kokkos::ADVariableValue
     797           0 : Coupleable::kokkosADCoupledDofValuesOlder(const std::string & var_name) const
     798             : {
     799           0 :   return kokkosADCoupledVectorTagDofValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
     800             : }
     801             : 
     802             : Moose::Kokkos::ADVariableValue
     803          46 : Coupleable::kokkosADCoupledDot(const std::string & var_name, unsigned int comp) const
     804             : {
     805          46 :   return _c_nodal
     806          24 :              ? kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp)
     807          24 :              : kokkosADCoupledVectorTagValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp);
     808             : }
     809             : 
     810             : Moose::Kokkos::ADVariableValue
     811           0 : Coupleable::kokkosADCoupledDots(const std::string & var_name) const
     812             : {
     813           0 :   return _c_nodal ? kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_DOT_TAG)
     814           0 :                   : kokkosADCoupledVectorTagValuesByName(var_name, Moose::SOLUTION_DOT_TAG);
     815             : }
     816             : 
     817             : Moose::Kokkos::ADVariableValue
     818           0 : Coupleable::kokkosADCoupledNodalDot(const std::string & var_name, unsigned int comp) const
     819             : {
     820           0 :   return kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp);
     821             : }
     822             : 
     823             : Moose::Kokkos::ADVariableValue
     824           0 : Coupleable::kokkosADCoupledNodalDots(const std::string & var_name) const
     825             : {
     826           0 :   return kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_DOT_TAG);
     827             : }
     828             : 
     829             : Moose::Kokkos::Scalar<const Real>
     830          29 : Coupleable::kokkosCoupledDotDu(const std::string & var_name, unsigned int comp) const
     831             : {
     832          29 :   const auto var = getVar(var_name, comp);
     833             : 
     834          29 :   if (!var)
     835           0 :     return Moose::Kokkos::Scalar<const Real>(_kokkos_default_value_zero);
     836             :   else
     837          29 :     return Moose::Kokkos::Scalar<const Real>(var->sys().duDotDu(var->number() + comp));
     838             : }
     839             : 
     840             : Moose::Kokkos::VariableValue
     841         306 : Coupleable::kokkosZeroValue() const
     842             : {
     843         306 :   auto variable = kokkosZeroVariable();
     844             : 
     845         612 :   return Moose::Kokkos::VariableValue(variable);
     846         306 : }
     847             : 
     848             : Moose::Kokkos::VariableGradient
     849           0 : Coupleable::kokkosZeroGradient() const
     850             : {
     851           0 :   auto variable = kokkosZeroVariable();
     852             : 
     853           0 :   return Moose::Kokkos::VariableGradient(variable);
     854           0 : }
     855             : 
     856             : Moose::Kokkos::VariableValue
     857           0 : Coupleable::kokkosZeroNodalValue() const
     858             : {
     859           0 :   auto variable = kokkosZeroVariable();
     860             : 
     861           0 :   return Moose::Kokkos::VariableValue(variable, true);
     862           0 : }

Generated by: LCOV version 1.14