LCOV - code coverage report
Current view: top level - src/kernels - ArrayCoupledTimeDerivative.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 419b9d Lines: 18 21 85.7 %
Date: 2025-08-08 20:01:16 Functions: 4 5 80.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 "ArrayCoupledTimeDerivative.h"
      11             : 
      12             : registerMooseObject("MooseApp", ArrayCoupledTimeDerivative);
      13             : 
      14             : InputParameters
      15       14355 : ArrayCoupledTimeDerivative::validParams()
      16             : {
      17       14355 :   InputParameters params = ArrayKernel::validParams();
      18       14355 :   params.addClassDescription(
      19             :       "Time derivative Array Kernel that acts on a coupled variable. Weak form: "
      20             :       "$(\\psi_i, \\frac{\\partial v_h}{\\partial t})$. The coupled variable and "
      21             :       "the variable must have the same dimensionality");
      22       14355 :   params.addRequiredCoupledVar("v", "Coupled variable");
      23       14355 :   return params;
      24           0 : }
      25             : 
      26          47 : ArrayCoupledTimeDerivative::ArrayCoupledTimeDerivative(const InputParameters & parameters)
      27             :   : ArrayKernel(parameters),
      28          47 :     _v_dot(coupledArrayDot("v")),
      29          47 :     _dv_dot(coupledArrayDotDu("v")),
      30          94 :     _v_var(coupled("v"))
      31             : {
      32          47 : }
      33             : 
      34             : void
      35     9646224 : ArrayCoupledTimeDerivative::computeQpResidual(RealEigenVector & residual)
      36             : {
      37             :   mooseAssert(_var.count() == _v_dot.size(),
      38             :               "The variable and coupled variable have unequal sizes:\n  variable size        : " +
      39             :                   std::to_string(_var.count()) + "\n" +
      40             :                   "  coupled variable size: " + std::to_string(_v_dot.size()));
      41             : 
      42     9646224 :   residual = _test[_i][_qp] * _v_dot[_qp];
      43     9646224 : }
      44             : 
      45             : RealEigenVector
      46           0 : ArrayCoupledTimeDerivative::computeQpJacobian()
      47             : {
      48           0 :   return RealEigenVector::Zero(_var.count());
      49             : }
      50             : 
      51             : RealEigenMatrix
      52      607152 : ArrayCoupledTimeDerivative::computeQpOffDiagJacobian(const MooseVariableFEBase & jvar)
      53             : {
      54      607152 :   if (jvar.number() == _v_var)
      55      303576 :     return _test[_i][_qp] * _phi[_j][_qp] * _dv_dot[_qp] *
      56      910728 :            RealEigenVector::Ones(jvar.count()).asDiagonal();
      57             : 
      58      607152 :   return RealEigenMatrix::Zero(_var.count(), jvar.count());
      59             : }

Generated by: LCOV version 1.14