Line data Source code
1 : //* This file is part of the MOOSE framework 2 : //* https://www.mooseframework.org 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 "KokkosADKernel.h" 11 : 12 : namespace Moose::Kokkos 13 : { 14 : 15 : InputParameters 16 6928 : ADKernel::validParams() 17 : { 18 6928 : InputParameters params = KernelBase::validParams(); 19 6928 : return params; 20 : } 21 : 22 317 : ADKernel::ADKernel(const InputParameters & parameters) 23 : : KernelBase(parameters, Moose::VarFieldType::VAR_FIELD_STANDARD), 24 : _test(), 25 : _grad_test(), 26 : _phi(), 27 : _grad_phi(), 28 165 : _u(_var), 29 165 : _grad_u(_var) 30 : { 31 317 : addMooseVariableDependency(&_var); 32 317 : } 33 : 34 : void 35 1056 : ADKernel::computeResidual() 36 : { 37 1056 : _computing_residual = true; 38 1056 : _computing_jacobian = false; 39 : 40 1056 : dispatch(); 41 1056 : } 42 : 43 : void 44 96 : ADKernel::computeJacobian() 45 : { 46 96 : _computing_residual = false; 47 96 : _computing_jacobian = true; 48 : 49 96 : dispatch(); 50 96 : } 51 : 52 : void 53 14547 : ADKernel::computeResidualAndJacobian() 54 : { 55 14547 : _computing_residual = true; 56 14547 : _computing_jacobian = true; 57 : 58 14547 : dispatch(); 59 14547 : } 60 : 61 : void 62 15699 : ADKernel::dispatch() 63 : { 64 15699 : _thread.resize(_num_local_threads, numKokkosBlockElements()); 65 : 66 15699 : Policy policy(0, _thread.size()); 67 : 68 15699 : if (!_residual_dispatcher) 69 295 : _residual_dispatcher = DispatcherRegistry::build<ResidualLoop>(this, type()); 70 : 71 15699 : _residual_dispatcher->parallelFor(policy); 72 15699 : } 73 : 74 : } // namespace Moose::Kokkos