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 "ADShaftTimeDerivativeScalarKernel.h" 11 : #include "ADShaftConnectableUserObjectInterface.h" 12 : #include "UserObject.h" 13 : 14 : registerMooseObject("ThermalHydraulicsApp", ADShaftTimeDerivativeScalarKernel); 15 : 16 : InputParameters 17 486 : ADShaftTimeDerivativeScalarKernel::validParams() 18 : { 19 486 : InputParameters params = ADScalarTimeDerivative::validParams(); 20 972 : params.addRequiredParam<std::vector<UserObjectName>>("uo_names", 21 : "Names of shaft-connectable user objects"); 22 486 : params.addClassDescription("Adds a time derivative term to the shaft ODE"); 23 972 : params.set<MultiMooseEnum>("vector_tags") = "time"; 24 972 : params.set<MultiMooseEnum>("matrix_tags") = "system time"; 25 : 26 486 : return params; 27 0 : } 28 : 29 243 : ADShaftTimeDerivativeScalarKernel::ADShaftTimeDerivativeScalarKernel( 30 243 : const InputParameters & parameters) 31 : : ADScalarTimeDerivative(parameters), 32 243 : _uo_names(getParam<std::vector<UserObjectName>>("uo_names")), 33 486 : _n_components(_uo_names.size()) 34 : { 35 243 : _shaft_connected_uos.resize(_n_components); 36 693 : for (unsigned int i = 0; i < _n_components; ++i) 37 : { 38 450 : _shaft_connected_uos[i] = 39 450 : &getUserObjectByName<ADShaftConnectableUserObjectInterface>(_uo_names[i]); 40 : } 41 243 : } 42 : 43 : ADReal 44 8631 : ADShaftTimeDerivativeScalarKernel::computeQpResidual() 45 : { 46 8631 : ADReal sum_inertias = 0; 47 34575 : for (unsigned int i = 0; i < _n_components; ++i) 48 25944 : sum_inertias += _shaft_connected_uos[i]->getMomentOfInertia(); 49 : 50 17262 : return sum_inertias * _u_dot[0]; 51 : }