LCOV - code coverage report
Current view: top level - src/nodalkernels - ArrayNodalKernel.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: #32971 (54bef8) with base c6cf66 Lines: 28 35 80.0 %
Date: 2026-05-29 20:35:17 Functions: 6 6 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 "ArrayNodalKernel.h"
      11             : #include "SubProblem.h"
      12             : #include "SystemBase.h"
      13             : #include "MooseVariableFE.h"
      14             : #include "Assembly.h"
      15             : 
      16             : InputParameters
      17        6254 : ArrayNodalKernel::validParams()
      18             : {
      19        6254 :   return NodalKernelBase::validParams();
      20             : }
      21             : 
      22          69 : ArrayNodalKernel::ArrayNodalKernel(const InputParameters & parameters)
      23             :   : NodalKernelBase(parameters),
      24             :     MooseVariableInterface<RealEigenVector>(this,
      25             :                                             true,
      26             :                                             "variable",
      27             :                                             Moose::VarKindType::VAR_SOLVER,
      28             :                                             Moose::VarFieldType::VAR_FIELD_ARRAY),
      29         138 :     _var(*mooseVariable()),
      30          69 :     _u(_var.dofValues()),
      31          69 :     _count(_var.count()),
      32          69 :     _work_vector(_count),
      33         276 :     _scaling(_var.arrayScalingFactor())
      34             : {
      35          69 :   addMooseVariableDependency(mooseVariable());
      36          69 : }
      37             : 
      38             : void
      39        1908 : ArrayNodalKernel::computeResidual()
      40             : {
      41        1908 :   if (!_var.isNodalDefined())
      42           0 :     return;
      43        1908 :   _qp = 0;
      44        1908 :   computeQpResidual(_work_vector);
      45        1908 :   addResiduals(_assembly, _work_vector, _var.dofIndices(), _scaling);
      46             : }
      47             : 
      48             : void
      49         261 : ArrayNodalKernel::computeJacobian()
      50             : {
      51         261 :   if (!_var.isNodalDefined())
      52           0 :     return;
      53         261 :   _qp = 0;
      54             : 
      55         261 :   _ivar_indices = &_var.dofIndices();
      56         261 :   _jvar_indices = &_var.dofIndices();
      57             :   mooseAssert(_ivar_indices->size() == _count, "The number of dofs should be equal to count");
      58             : 
      59         261 :   computeQpJacobian();
      60             : }
      61             : 
      62             : void
      63         261 : ArrayNodalKernel::computeOffDiagJacobian(const unsigned int jvar_num)
      64             : {
      65         261 :   if (!_var.isNodalDefined())
      66           0 :     return;
      67             : 
      68         261 :   if (jvar_num == _var.number())
      69         261 :     computeJacobian();
      70             :   else
      71             :   {
      72           0 :     const auto & jvar = getVariable(jvar_num);
      73           0 :     _ivar_indices = &_var.dofIndices();
      74           0 :     _jvar_indices = &jvar.dofIndices();
      75             :     mooseAssert(_ivar_indices->size() == _count, "The number of dofs should be equal to count");
      76             :     mooseAssert(_jvar_indices->size() == jvar.count(),
      77             :                 "The number of dofs should be equal to count");
      78             : 
      79           0 :     computeQpOffDiagJacobian(jvar_num);
      80             :   }
      81             : }
      82             : 
      83             : void
      84         522 : ArrayNodalKernel::setJacobian(unsigned int i, unsigned int j, Real value)
      85             : {
      86         522 :   addJacobianElement(_assembly, value, (*_ivar_indices)[i], (*_jvar_indices)[j], _scaling[i]);
      87         522 : }

Generated by: LCOV version 1.14