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 57208 : ADScalarKernel::validParams() 16 : { 17 57208 : InputParameters params = ScalarKernelBase::validParams(); 18 57208 : return params; 19 : } 20 : 21 77 : ADScalarKernel::ADScalarKernel(const InputParameters & parameters) 22 77 : : ScalarKernelBase(parameters), _u(_var.adSln()), _jacobian_already_computed(false) 23 : { 24 77 : } 25 : 26 : void 27 810 : ADScalarKernel::reinit() 28 : { 29 810 : _jacobian_already_computed = false; 30 810 : } 31 : 32 : void 33 589 : ADScalarKernel::computeResidual() 34 : { 35 589 : prepareVectorTag(_assembly, _var.number()); 36 : 37 1178 : for (_i = 0; _i < _var.order(); _i++) 38 589 : _local_re(_i) += raw_value(computeQpResidual()); 39 : 40 589 : accumulateTaggedLocalResidual(); 41 589 : } 42 : 43 : void 44 167 : ADScalarKernel::computeJacobian() 45 : { 46 167 : computeADJacobian(); 47 167 : } 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 167 : ADScalarKernel::computeADJacobian() 66 : { 67 167 : if (_residuals.size() != _var.order()) 68 68 : _residuals.resize(_var.order(), 0.0); 69 334 : for (_i = 0; _i < _var.order(); _i++) 70 167 : _residuals[_i] = computeQpResidual(); 71 : 72 167 : addJacobian(_assembly, _residuals, _var.dofIndices(), _var.scalingFactor()); 73 167 : }