LCOV - code coverage report
Current view: top level - src/kokkos/nodalkernels - KokkosNodalKernel.K (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 863ef6 Lines: 30 30 100.0 %
Date: 2025-10-15 18:16:15 Functions: 4 4 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //* This file is part of the MOOSE framework
       2             : //* https://mooseframework.inl.gov
       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 "KokkosNodalKernel.h"
      11             : 
      12             : namespace Moose
      13             : {
      14             : namespace Kokkos
      15             : {
      16             : 
      17             : InputParameters
      18       64324 : NodalKernel::validParams()
      19             : {
      20       64324 :   InputParameters params = NodalKernelBase::validParams();
      21       64324 :   return params;
      22             : }
      23             : 
      24         272 : NodalKernel::NodalKernel(const InputParameters & parameters)
      25             :   : NodalKernelBase(parameters, Moose::VarFieldType::VAR_FIELD_STANDARD),
      26         215 :     _u(_var, Moose::SOLUTION_TAG, true),
      27         215 :     _boundary_restricted(boundaryRestricted())
      28             : {
      29         272 : }
      30             : 
      31             : void
      32       20340 : NodalKernel::computeResidual()
      33             : {
      34       20340 :   Policy policy(0, _boundary_restricted ? numKokkosBoundaryNodes() : numKokkosBlockNodes());
      35             : 
      36       20340 :   if (!_residual_dispatcher)
      37         270 :     _residual_dispatcher = DispatcherRegistry::build<ResidualLoop>(this, type());
      38             : 
      39       20340 :   _residual_dispatcher->parallelFor(policy);
      40       20340 : }
      41             : 
      42             : void
      43        5424 : NodalKernel::computeJacobian()
      44             : {
      45        5424 :   if (DispatcherRegistry::hasUserMethod<JacobianLoop>(type()))
      46             :   {
      47        3118 :     Policy policy(0, _boundary_restricted ? numKokkosBoundaryNodes() : numKokkosBlockNodes());
      48             : 
      49        3118 :     if (!_jacobian_dispatcher)
      50         156 :       _jacobian_dispatcher = DispatcherRegistry::build<JacobianLoop>(this, type());
      51             : 
      52        3118 :     _jacobian_dispatcher->parallelFor(policy);
      53        3118 :   }
      54             : 
      55        5424 :   if (DispatcherRegistry::hasUserMethod<OffDiagJacobianLoop>(type()))
      56             :   {
      57        3364 :     auto & sys = kokkosSystem(_kokkos_var.sys());
      58             : 
      59        9456 :     _thread.resize({sys.getCoupling(_kokkos_var.var()).size(),
      60        2728 :                     _boundary_restricted ? numKokkosBoundaryNodes() : numKokkosBlockNodes()});
      61             : 
      62        3364 :     Policy policy(0, _thread.size());
      63             : 
      64        3364 :     if (!_offdiag_jacobian_dispatcher)
      65         160 :       _offdiag_jacobian_dispatcher = DispatcherRegistry::build<OffDiagJacobianLoop>(this, type());
      66             : 
      67        3364 :     _offdiag_jacobian_dispatcher->parallelFor(policy);
      68        3364 :   }
      69        5424 : }
      70             : 
      71             : } // namespace Kokkos
      72             : } // namespace Moose

Generated by: LCOV version 1.14