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 : }