LCOV - code coverage report
Current view: top level - src/kokkos/interfaces - KokkosCoupleable.K (source / functions) Hit Total Coverage
Test: idaholab/moose framework: #31730 (e8b711) with base e0c998 Lines: 93 210 44.3 %
Date: 2025-10-29 16:49:47 Functions: 20 51 39.2 %
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             : Moose::Kokkos::Variable
      17         658 : Coupleable::kokkosCoupledVectorTagVariable(const std::string & var_name,
      18             :                                            const std::string & tag_name,
      19             :                                            unsigned int comp) const
      20             : {
      21         658 :   Moose::Kokkos::Variable variable;
      22             : 
      23         658 :   if (isCoupled(var_name))
      24             :   {
      25         152 :     auto var = const_cast<MooseVariableField<Real> *>(
      26         475 :         getVarHelper<MooseVariableField<Real>>(var_name, comp));
      27             : 
      28         627 :     if (tag_name == Moose::OLD_SOLUTION_TAG)
      29          36 :       var->sys().needSolutionState(1);
      30         591 :     else if (tag_name == Moose::OLDER_SOLUTION_TAG)
      31          24 :       var->sys().needSolutionState(2);
      32             : 
      33         627 :     const auto tag = _c_fe_problem.getVectorTagID(tag_name);
      34             : 
      35         627 :     const_cast<Coupleable *>(this)->addFEVariableCoupleableVectorTag(tag);
      36             : 
      37        1881 :     variable.init({var}, tag, {});
      38             :   }
      39             :   else
      40          93 :     variable.init({_c_parameters.defaultCoupledValue(var_name, comp)}, {});
      41             : 
      42         658 :   return variable;
      43           0 : }
      44             : 
      45             : Moose::Kokkos::Variable
      46          12 : Coupleable::kokkosCoupledVectorTagVariables(const std::string & var_name,
      47             :                                             const std::string & tag_name) const
      48             : {
      49          12 :   Moose::Kokkos::Variable variable;
      50             : 
      51          12 :   const auto components = coupledComponents(var_name);
      52             : 
      53          12 :   if (isCoupled(var_name))
      54             :   {
      55          12 :     std::vector<const MooseVariableBase *> vars;
      56             : 
      57          36 :     for (unsigned int comp = 0; comp < components; ++comp)
      58             :     {
      59           6 :       auto var = const_cast<MooseVariableField<Real> *>(
      60          18 :           getVarHelper<MooseVariableField<Real>>(var_name, comp));
      61             : 
      62          24 :       if (tag_name == Moose::OLD_SOLUTION_TAG)
      63           0 :         var->sys().needSolutionState(1);
      64          24 :       else if (tag_name == Moose::OLDER_SOLUTION_TAG)
      65           0 :         var->sys().needSolutionState(2);
      66             : 
      67          24 :       vars.push_back(var);
      68             :     }
      69             : 
      70          12 :     const auto tag = _c_fe_problem.getVectorTagID(tag_name);
      71             : 
      72          12 :     const_cast<Coupleable *>(this)->addFEVariableCoupleableVectorTag(tag);
      73             : 
      74          12 :     variable.init({vars}, tag, {});
      75          12 :   }
      76             :   else
      77             :   {
      78           0 :     std::vector<Real> default_values(components);
      79             : 
      80           0 :     for (unsigned int comp = 0; comp < components; ++comp)
      81           0 :       default_values[comp] = _c_parameters.defaultCoupledValue(var_name, comp);
      82             : 
      83           0 :     variable.init(default_values, {});
      84           0 :   }
      85             : 
      86          12 :   return variable;
      87           0 : }
      88             : 
      89             : Moose::Kokkos::Variable
      90         231 : Coupleable::kokkosZeroVariable() const
      91             : {
      92         231 :   Moose::Kokkos::Variable variable;
      93             : 
      94         462 :   variable.init({0}, {});
      95             : 
      96         231 :   return variable;
      97           0 : }
      98             : 
      99             : Moose::Kokkos::VariableValue
     100         294 : Coupleable::kokkosCoupledVectorTagValueByName(const std::string & var_name,
     101             :                                               const std::string & tag_name,
     102             :                                               unsigned int comp) const
     103             : {
     104         294 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     105             : 
     106         588 :   return Moose::Kokkos::VariableValue(variable);
     107         294 : }
     108             : 
     109             : Moose::Kokkos::VariableValue
     110          12 : Coupleable::kokkosCoupledVectorTagValuesByName(const std::string & var_name,
     111             :                                                const std::string & tag_name) const
     112             : {
     113          12 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     114             : 
     115          24 :   return Moose::Kokkos::VariableValue(variable);
     116          12 : }
     117             : 
     118             : Moose::Kokkos::VariableGradient
     119           0 : Coupleable::kokkosCoupledVectorTagGradientByName(const std::string & var_name,
     120             :                                                  const std::string & tag_name,
     121             :                                                  unsigned int comp) const
     122             : {
     123           0 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     124             : 
     125           0 :   return Moose::Kokkos::VariableGradient(variable);
     126           0 : }
     127             : 
     128             : Moose::Kokkos::VariableGradient
     129           0 : Coupleable::kokkosCoupledVectorTagGradientsByName(const std::string & var_name,
     130             :                                                   const std::string & tag_name) const
     131             : {
     132           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     133             : 
     134           0 :   return Moose::Kokkos::VariableGradient(variable);
     135           0 : }
     136             : 
     137             : Moose::Kokkos::VariableValue
     138         316 : Coupleable::kokkosCoupledVectorTagNodalValueByName(const std::string & var_name,
     139             :                                                    const std::string & tag_name,
     140             :                                                    unsigned int comp) const
     141             : {
     142         316 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     143             : 
     144         316 :   if (!variable.nodal())
     145           0 :     mooseError("Cannot get nodal values from the coupled variable '",
     146             :                var_name,
     147             :                "', because the associated variable is not nodal.");
     148             : 
     149         632 :   return Moose::Kokkos::VariableValue(variable, true);
     150         316 : }
     151             : 
     152             : Moose::Kokkos::VariableValue
     153           0 : Coupleable::kokkosCoupledVectorTagNodalValuesByName(const std::string & var_name,
     154             :                                                     const std::string & tag_name) const
     155             : {
     156           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     157             : 
     158           0 :   if (!variable.nodal())
     159           0 :     mooseError("Cannot get nodal values from the coupled variable '",
     160             :                var_name,
     161             :                "', because the associated variable is not nodal.");
     162             : 
     163           0 :   return Moose::Kokkos::VariableValue(variable, true);
     164           0 : }
     165             : 
     166             : Moose::Kokkos::VariableValue
     167          48 : Coupleable::kokkosCoupledVectorTagDofValueByName(const std::string & var_name,
     168             :                                                  const std::string & tag_name,
     169             :                                                  unsigned int comp) const
     170             : {
     171          48 :   auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
     172             : 
     173          96 :   return Moose::Kokkos::VariableValue(variable, true);
     174          48 : }
     175             : 
     176             : Moose::Kokkos::VariableValue
     177           0 : Coupleable::kokkosCoupledVectorTagDofValuesByName(const std::string & var_name,
     178             :                                                   const std::string & tag_name) const
     179             : {
     180           0 :   auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
     181             : 
     182           0 :   return Moose::Kokkos::VariableValue(variable, true);
     183           0 : }
     184             : 
     185             : Moose::Kokkos::VariableValue
     186         156 : Coupleable::kokkosCoupledVectorTagValue(const std::string & var_name,
     187             :                                         const std::string & tag_param_name,
     188             :                                         unsigned int comp) const
     189             : {
     190         156 :   if (!_c_parameters.isParamValid(tag_param_name))
     191           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     192             : 
     193         156 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     194             : 
     195         312 :   return kokkosCoupledVectorTagValueByName(var_name, tag_name, comp);
     196         156 : }
     197             : 
     198             : Moose::Kokkos::VariableValue
     199           0 : Coupleable::kokkosCoupledVectorTagValues(const std::string & var_name,
     200             :                                          const std::string & tag_param_name) const
     201             : {
     202           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     203           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     204             : 
     205           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     206             : 
     207           0 :   return kokkosCoupledVectorTagValuesByName(var_name, tag_name);
     208           0 : }
     209             : 
     210             : Moose::Kokkos::VariableGradient
     211           0 : Coupleable::kokkosCoupledVectorTagGradient(const std::string & var_name,
     212             :                                            const std::string & tag_param_name,
     213             :                                            unsigned int comp) const
     214             : {
     215           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     216           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     217             : 
     218           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     219             : 
     220           0 :   return kokkosCoupledVectorTagGradientByName(var_name, tag_name, comp);
     221           0 : }
     222             : 
     223             : Moose::Kokkos::VariableGradient
     224           0 : Coupleable::kokkosCoupledVectorTagGradients(const std::string & var_name,
     225             :                                             const std::string & tag_param_name) const
     226             : {
     227           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     228           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     229             : 
     230           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     231             : 
     232           0 :   return kokkosCoupledVectorTagGradientsByName(var_name, tag_name);
     233           0 : }
     234             : 
     235             : Moose::Kokkos::VariableValue
     236          60 : Coupleable::kokkosCoupledVectorTagNodalValue(const std::string & var_name,
     237             :                                              const std::string & tag_param_name,
     238             :                                              unsigned int comp) const
     239             : {
     240          60 :   if (!_c_parameters.isParamValid(tag_param_name))
     241           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     242             : 
     243          60 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     244             : 
     245         120 :   return kokkosCoupledVectorTagNodalValueByName(var_name, tag_name, comp);
     246          60 : }
     247             : 
     248             : Moose::Kokkos::VariableValue
     249           0 : Coupleable::kokkosCoupledVectorTagNodalValues(const std::string & var_name,
     250             :                                               const std::string & tag_param_name) const
     251             : {
     252           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     253           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     254             : 
     255           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     256             : 
     257           0 :   return kokkosCoupledVectorTagNodalValuesByName(var_name, tag_name);
     258           0 : }
     259             : 
     260             : Moose::Kokkos::VariableValue
     261           0 : Coupleable::kokkosCoupledVectorTagDofValue(const std::string & var_name,
     262             :                                            const std::string & tag_param_name,
     263             :                                            unsigned int comp) const
     264             : {
     265           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     266           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     267             : 
     268           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     269             : 
     270           0 :   return kokkosCoupledVectorTagDofValueByName(var_name, tag_name, comp);
     271           0 : }
     272             : 
     273             : Moose::Kokkos::VariableValue
     274           0 : Coupleable::kokkosCoupledVectorTagDofValues(const std::string & var_name,
     275             :                                             const std::string & tag_param_name) const
     276             : {
     277           0 :   if (!_c_parameters.isParamValid(tag_param_name))
     278           0 :     mooseError("Tag name parameter '", tag_param_name, "' is invalid");
     279             : 
     280           0 :   TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
     281             : 
     282           0 :   return kokkosCoupledVectorTagDofValuesByName(var_name, tag_name);
     283           0 : }
     284             : 
     285             : Moose::Kokkos::VariableValue
     286         155 : Coupleable::kokkosCoupledValue(const std::string & var_name, unsigned int comp) const
     287             : {
     288         155 :   return _c_nodal ? kokkosCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_TAG, comp)
     289         119 :                   : kokkosCoupledVectorTagValueByName(var_name, Moose::SOLUTION_TAG, comp);
     290             : }
     291             : 
     292             : Moose::Kokkos::VariableValue
     293          12 : Coupleable::kokkosCoupledValues(const std::string & var_name) const
     294             : {
     295          12 :   return _c_nodal ? kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_TAG)
     296           9 :                   : kokkosCoupledVectorTagValuesByName(var_name, Moose::SOLUTION_TAG);
     297             : }
     298             : 
     299             : Moose::Kokkos::VariableGradient
     300           0 : Coupleable::kokkosCoupledGradient(const std::string & var_name, unsigned int comp) const
     301             : {
     302           0 :   return kokkosCoupledVectorTagGradientByName(var_name, Moose::SOLUTION_TAG, comp);
     303             : }
     304             : 
     305             : Moose::Kokkos::VariableGradient
     306           0 : Coupleable::kokkosCoupledGradients(const std::string & var_name) const
     307             : {
     308           0 :   return kokkosCoupledVectorTagGradientsByName(var_name, Moose::SOLUTION_TAG);
     309             : }
     310             : 
     311             : Moose::Kokkos::VariableValue
     312         184 : Coupleable::kokkosCoupledNodalValue(const std::string & var_name, unsigned int comp) const
     313             : {
     314         184 :   return kokkosCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_TAG, comp);
     315             : }
     316             : 
     317             : Moose::Kokkos::VariableValue
     318           0 : Coupleable::kokkosCoupledNodalValues(const std::string & var_name) const
     319             : {
     320           0 :   return kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_TAG);
     321             : }
     322             : 
     323             : Moose::Kokkos::VariableValue
     324          24 : Coupleable::kokkosCoupledDofValue(const std::string & var_name, unsigned int comp) const
     325             : {
     326          24 :   return kokkosCoupledVectorTagDofValueByName(var_name, Moose::SOLUTION_TAG, comp);
     327             : }
     328             : 
     329             : Moose::Kokkos::VariableValue
     330           0 : Coupleable::kokkosCoupledDofValues(const std::string & var_name) const
     331             : {
     332           0 :   return kokkosCoupledVectorTagDofValuesByName(var_name, Moose::SOLUTION_TAG);
     333             : }
     334             : 
     335             : Moose::Kokkos::VariableValue
     336          24 : Coupleable::kokkosCoupledValueOld(const std::string & var_name, unsigned int comp) const
     337             : {
     338          24 :   return _c_nodal ? kokkosCoupledVectorTagNodalValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp)
     339          18 :                   : kokkosCoupledVectorTagValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
     340             : }
     341             : 
     342             : Moose::Kokkos::VariableValue
     343           0 : Coupleable::kokkosCoupledValuesOld(const std::string & var_name) const
     344             : {
     345           0 :   return _c_nodal ? kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::OLD_SOLUTION_TAG)
     346           0 :                   : kokkosCoupledVectorTagValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
     347             : }
     348             : 
     349             : Moose::Kokkos::VariableGradient
     350           0 : Coupleable::kokkosCoupledGradientOld(const std::string & var_name, unsigned int comp) const
     351             : {
     352           0 :   return kokkosCoupledVectorTagGradientByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
     353             : }
     354             : 
     355             : Moose::Kokkos::VariableGradient
     356           0 : Coupleable::kokkosCoupledGradientsOld(const std::string & var_name) const
     357             : {
     358           0 :   return kokkosCoupledVectorTagGradientsByName(var_name, Moose::OLD_SOLUTION_TAG);
     359             : }
     360             : 
     361             : Moose::Kokkos::VariableValue
     362           0 : Coupleable::kokkosCoupledNodalValueOld(const std::string & var_name, unsigned int comp) const
     363             : {
     364           0 :   return kokkosCoupledVectorTagNodalValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
     365             : }
     366             : 
     367             : Moose::Kokkos::VariableValue
     368           0 : Coupleable::kokkosCoupledNodalValuesOld(const std::string & var_name) const
     369             : {
     370           0 :   return kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
     371             : }
     372             : 
     373             : Moose::Kokkos::VariableValue
     374          12 : Coupleable::kokkosCoupledDofValueOld(const std::string & var_name, unsigned int comp) const
     375             : {
     376          12 :   return kokkosCoupledVectorTagDofValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
     377             : }
     378             : 
     379             : Moose::Kokkos::VariableValue
     380           0 : Coupleable::kokkosCoupledDofValuesOld(const std::string & var_name) const
     381             : {
     382           0 :   return kokkosCoupledVectorTagDofValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
     383             : }
     384             : 
     385             : Moose::Kokkos::VariableValue
     386          12 : Coupleable::kokkosCoupledValueOlder(const std::string & var_name, unsigned int comp) const
     387             : {
     388          12 :   return _c_nodal
     389           9 :              ? kokkosCoupledVectorTagNodalValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp)
     390           9 :              : kokkosCoupledVectorTagValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     391             : }
     392             : 
     393             : Moose::Kokkos::VariableValue
     394           0 : Coupleable::kokkosCoupledValuesOlder(const std::string & var_name) const
     395             : {
     396           0 :   return _c_nodal ? kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::OLDER_SOLUTION_TAG)
     397           0 :                   : kokkosCoupledVectorTagValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
     398             : }
     399             : 
     400             : Moose::Kokkos::VariableGradient
     401           0 : Coupleable::kokkosCoupledGradientOlder(const std::string & var_name, unsigned int comp) const
     402             : {
     403           0 :   return kokkosCoupledVectorTagGradientByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     404             : }
     405             : 
     406             : Moose::Kokkos::VariableGradient
     407           0 : Coupleable::kokkosCoupledGradientsOlder(const std::string & var_name) const
     408             : {
     409           0 :   return kokkosCoupledVectorTagGradientsByName(var_name, Moose::OLDER_SOLUTION_TAG);
     410             : }
     411             : 
     412             : Moose::Kokkos::VariableValue
     413           0 : Coupleable::kokkosCoupledNodalValueOlder(const std::string & var_name, unsigned int comp) const
     414             : {
     415           0 :   return kokkosCoupledVectorTagNodalValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     416             : }
     417             : 
     418             : Moose::Kokkos::VariableValue
     419           0 : Coupleable::kokkosCoupledNodalValuesOlder(const std::string & var_name) const
     420             : {
     421           0 :   return kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
     422             : }
     423             : 
     424             : Moose::Kokkos::VariableValue
     425          12 : Coupleable::kokkosCoupledDofValueOlder(const std::string & var_name, unsigned int comp) const
     426             : {
     427          12 :   return kokkosCoupledVectorTagDofValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
     428             : }
     429             : 
     430             : Moose::Kokkos::VariableValue
     431           0 : Coupleable::kokkosCoupledDofValuesOlder(const std::string & var_name) const
     432             : {
     433           0 :   return kokkosCoupledVectorTagDofValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
     434             : }
     435             : 
     436             : Moose::Kokkos::VariableValue
     437          19 : Coupleable::kokkosCoupledDot(const std::string & var_name, unsigned int comp) const
     438             : {
     439          19 :   return _c_nodal ? kokkosCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp)
     440          15 :                   : kokkosCoupledVectorTagValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp);
     441             : }
     442             : 
     443             : Moose::Kokkos::VariableValue
     444           0 : Coupleable::kokkosCoupledDots(const std::string & var_name) const
     445             : {
     446           0 :   return _c_nodal ? kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_DOT_TAG)
     447           0 :                   : kokkosCoupledVectorTagValuesByName(var_name, Moose::SOLUTION_DOT_TAG);
     448             : }
     449             : 
     450             : Moose::Kokkos::VariableValue
     451           0 : Coupleable::kokkosCoupledNodalDot(const std::string & var_name, unsigned int comp) const
     452             : {
     453           0 :   return kokkosCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp);
     454             : }
     455             : 
     456             : Moose::Kokkos::VariableValue
     457           0 : Coupleable::kokkosCoupledNodalDots(const std::string & var_name) const
     458             : {
     459           0 :   return kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_DOT_TAG);
     460             : }
     461             : 
     462             : Moose::Kokkos::Scalar<const Real>
     463          19 : Coupleable::kokkosCoupledDotDu(const std::string & var_name, unsigned int comp) const
     464             : {
     465          19 :   const auto var = getVar(var_name, comp);
     466             : 
     467          19 :   if (!var)
     468           0 :     return Moose::Kokkos::Scalar<const Real>(_kokkos_default_value_zero);
     469             :   else
     470          19 :     return Moose::Kokkos::Scalar<const Real>(var->sys().duDotDu(var->number() + comp));
     471             : }
     472             : 
     473             : Moose::Kokkos::VariableValue
     474         231 : Coupleable::kokkosZeroValue() const
     475             : {
     476         231 :   auto variable = kokkosZeroVariable();
     477             : 
     478         462 :   return Moose::Kokkos::VariableValue(variable);
     479         231 : }
     480             : 
     481             : Moose::Kokkos::VariableGradient
     482           0 : Coupleable::kokkosZeroGradient() const
     483             : {
     484           0 :   auto variable = kokkosZeroVariable();
     485             : 
     486           0 :   return Moose::Kokkos::VariableGradient(variable);
     487           0 : }
     488             : 
     489             : Moose::Kokkos::VariableValue
     490           0 : Coupleable::kokkosZeroNodalValue() const
     491             : {
     492           0 :   auto variable = kokkosZeroVariable();
     493             : 
     494           0 :   return Moose::Kokkos::VariableValue(variable, true);
     495           0 : }

Generated by: LCOV version 1.14