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