LCOV - code coverage report
Current view: top level - include/kokkos/nodalkernels - KokkosTimeNodalKernel.h (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 6f668f Lines: 9 10 90.0 %
Date: 2025-09-22 20:01:15 Functions: 2 2 100.0 %
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             : #pragma once
      11             : 
      12             : #include "KokkosNodalKernel.h"
      13             : 
      14             : namespace Moose
      15             : {
      16             : namespace Kokkos
      17             : {
      18             : 
      19             : /**
      20             :  * The base class for Kokkos time-derivative nodal kernels
      21             :  */
      22             : template <typename Derived>
      23             : class TimeNodalKernel : public NodalKernel<Derived>
      24             : {
      25             :   usingKokkosNodalKernelMembers(Derived);
      26             : 
      27             : public:
      28             :   static InputParameters validParams();
      29             : 
      30             :   /**
      31             :    * Constructor
      32             :    */
      33             :   TimeNodalKernel(const InputParameters & parameters);
      34             : 
      35             : protected:
      36             :   /**
      37             :    * Time derivative of the current solution at nodes
      38             :    */
      39             :   const VariableNodalValue _u_dot;
      40             :   /**
      41             :    * Derivative of u_dot with respect to u
      42             :    */
      43             :   const Scalar<const Real> _du_dot_du;
      44             : };
      45             : 
      46             : template <typename Derived>
      47             : InputParameters
      48        9182 : TimeNodalKernel<Derived>::validParams()
      49             : {
      50        9182 :   InputParameters params = NodalKernel<Derived>::validParams();
      51             : 
      52       36728 :   params.set<MultiMooseEnum>("vector_tags") = "time";
      53       27546 :   params.set<MultiMooseEnum>("matrix_tags") = "system time";
      54             : 
      55        9182 :   return params;
      56           0 : }
      57             : 
      58             : template <typename Derived>
      59          36 : TimeNodalKernel<Derived>::TimeNodalKernel(const InputParameters & parameters)
      60             :   : NodalKernel<Derived>(parameters),
      61          27 :     _u_dot(kokkosSystems(), _var, Moose::SOLUTION_DOT_TAG),
      62          54 :     _du_dot_du(_var.sys().duDotDu(_var.number()))
      63             : {
      64          36 : }
      65             : 
      66             : } // namespace Kokkos
      67             : } // namespace Moose
      68             : 
      69             : #define usingKokkosTimeNodalKernelMembers(T)                                                       \
      70             :   usingKokkosNodalKernelMembers(T);                                                                \
      71             :                                                                                                    \
      72             : protected:                                                                                         \
      73             :   using Moose::Kokkos::TimeNodalKernel<T>::_u_dot;                                                 \
      74             :   using Moose::Kokkos::TimeNodalKernel<T>::_du_dot_du

Generated by: LCOV version 1.14