LCOV - code coverage report
Current view: top level - src/nodalkernels - ADNodalKernel.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 7323e9 Lines: 33 35 94.3 %
Date: 2025-11-05 20:01:15 Functions: 5 5 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 "ADNodalKernel.h"
      11             : #include "SubProblem.h"
      12             : #include "SystemBase.h"
      13             : #include "MooseVariableFE.h"
      14             : #include "Assembly.h"
      15             : 
      16             : #include "metaphysicl/raw_type.h"
      17             : 
      18             : InputParameters
      19       59687 : ADNodalKernel::validParams()
      20             : {
      21       59687 :   auto params = NodalKernelBase::validParams();
      22       59687 :   params += ADFunctorInterface::validParams();
      23       59687 :   return params;
      24           0 : }
      25             : 
      26         120 : ADNodalKernel::ADNodalKernel(const InputParameters & parameters)
      27             :   : NodalKernelBase(parameters),
      28             :     ADFunctorInterface(this),
      29             :     MooseVariableInterface<Real>(this,
      30             :                                  true,
      31             :                                  "variable",
      32             :                                  Moose::VarKindType::VAR_SOLVER,
      33             :                                  Moose::VarFieldType::VAR_FIELD_STANDARD),
      34         240 :     _var(*mooseVariable()),
      35         360 :     _u(_var.adDofValues())
      36             : {
      37         120 :   addMooseVariableDependency(mooseVariable());
      38         120 : }
      39             : 
      40             : void
      41      235491 : ADNodalKernel::computeResidual()
      42             : {
      43      235491 :   if (_var.isNodalDefined())
      44             :   {
      45      235491 :     const auto dof_idx = _var.nodalDofIndex();
      46      235491 :     _qp = 0;
      47      235491 :     auto res = MetaPhysicL::raw_value(computeQpResidual());
      48      470982 :     addResiduals(_assembly,
      49           0 :                  std::array<Real, 1>{{res}},
      50      235491 :                  std::array<dof_id_type, 1>{{dof_idx}},
      51      235491 :                  _var.scalingFactor());
      52             :   }
      53      235491 : }
      54             : 
      55             : void
      56      115319 : ADNodalKernel::computeJacobian()
      57             : {
      58      115319 :   if (_var.isNodalDefined())
      59             :   {
      60      115319 :     const auto dof_idx = _var.nodalDofIndex();
      61      115319 :     _qp = 0;
      62      115319 :     const auto res = computeQpResidual();
      63      230638 :     addJacobian(_assembly,
      64      115319 :                 std::array<ADReal, 1>{{res}},
      65      115319 :                 std::array<dof_id_type, 1>{{dof_idx}},
      66      115319 :                 _var.scalingFactor());
      67      115319 :   }
      68      115319 : }
      69             : 
      70             : void
      71      207431 : ADNodalKernel::computeOffDiagJacobian(const unsigned int jvar)
      72             : {
      73      207431 :   if (jvar == _var.number())
      74      115319 :     computeJacobian();
      75      207431 : }

Generated by: LCOV version 1.14