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 "ADScalarKernel.h" 11 : 12 : #include "Assembly.h" 13 : 14 : InputParameters 15 57198 : ADScalarKernel::validParams() 16 : { 17 57198 : InputParameters params = ScalarKernelBase::validParams(); 18 57198 : return params; 19 : } 20 : 21 72 : ADScalarKernel::ADScalarKernel(const InputParameters & parameters) 22 72 : : ScalarKernelBase(parameters), _u(_var.adSln()), _jacobian_already_computed(false) 23 : { 24 72 : } 25 : 26 : void 27 744 : ADScalarKernel::reinit() 28 : { 29 744 : _jacobian_already_computed = false; 30 744 : } 31 : 32 : void 33 549 : ADScalarKernel::computeResidual() 34 : { 35 549 : prepareVectorTag(_assembly, _var.number()); 36 : 37 1098 : for (_i = 0; _i < _var.order(); _i++) 38 549 : _local_re(_i) += raw_value(computeQpResidual()); 39 : 40 549 : accumulateTaggedLocalResidual(); 41 549 : } 42 : 43 : void 44 141 : ADScalarKernel::computeJacobian() 45 : { 46 141 : computeADJacobian(); 47 141 : } 48 : 49 : void 50 0 : ADScalarKernel::computeOffDiagJacobian(unsigned int /*jvar*/) 51 : { 52 0 : if (!_jacobian_already_computed) 53 : { 54 0 : computeADJacobian(); 55 0 : _jacobian_already_computed = true; 56 : } 57 0 : } 58 : 59 : void 60 0 : ADScalarKernel::computeOffDiagJacobianScalar(unsigned int /*jvar*/) 61 : { 62 0 : } 63 : 64 : void 65 141 : ADScalarKernel::computeADJacobian() 66 : { 67 141 : if (_residuals.size() != _var.order()) 68 63 : _residuals.resize(_var.order(), 0.0); 69 282 : for (_i = 0; _i < _var.order(); _i++) 70 141 : _residuals[_i] = computeQpResidual(); 71 : 72 141 : addJacobian(_assembly, _residuals, _var.dofIndices(), _var.scalingFactor()); 73 141 : }