LCOV - code coverage report
Current view: top level - src/kernels - ArrayCoupledTimeDerivative.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 2bf808 Lines: 18 21 85.7 %
Date: 2025-07-17 01:28:37 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       14353 : ArrayCoupledTimeDerivative::validParams()
      16             : {
      17       14353 :   InputParameters params = ArrayKernel::validParams();
      18       14353 :   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       14353 :   params.addRequiredCoupledVar("v", "Coupled variable");
      23       14353 :   return params;
      24           0 : }
      25             : 
      26          46 : ArrayCoupledTimeDerivative::ArrayCoupledTimeDerivative(const InputParameters & parameters)
      27             :   : ArrayKernel(parameters),
      28          46 :     _v_dot(coupledArrayDot("v")),
      29          46 :     _dv_dot(coupledArrayDotDu("v")),
      30          92 :     _v_var(coupled("v"))
      31             : {
      32          46 : }
      33             : 
      34             : void
      35     9646128 : 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     9646128 :   residual = _test[_i][_qp] * _v_dot[_qp];
      43     9646128 : }
      44             : 
      45             : RealEigenVector
      46           0 : ArrayCoupledTimeDerivative::computeQpJacobian()
      47             : {
      48           0 :   return RealEigenVector::Zero(_var.count());
      49             : }
      50             : 
      51             : RealEigenMatrix
      52      606960 : ArrayCoupledTimeDerivative::computeQpOffDiagJacobian(const MooseVariableFEBase & jvar)
      53             : {
      54      606960 :   if (jvar.number() == _v_var)
      55      303480 :     return _test[_i][_qp] * _phi[_j][_qp] * _dv_dot[_qp] *
      56      910440 :            RealEigenVector::Ones(jvar.count()).asDiagonal();
      57             : 
      58      606960 :   return RealEigenMatrix::Zero(_var.count(), jvar.count());
      59             : }

Generated by: LCOV version 1.14