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 "INSFVMomentumTimeDerivative.h" 11 : #include "SystemBase.h" 12 : #include "NS.h" 13 : 14 : registerMooseObject("NavierStokesApp", INSFVMomentumTimeDerivative); 15 : 16 : InputParameters 17 1814 : INSFVMomentumTimeDerivative::validParams() 18 : { 19 1814 : InputParameters params = INSFVTimeKernel::validParams(); 20 1814 : params.addClassDescription( 21 : "Adds the time derivative term to the incompressible Navier-Stokes momentum equation."); 22 1814 : params.addRequiredParam<MooseFunctorName>(NS::density, "The density functor"); 23 1814 : return params; 24 0 : } 25 : 26 1082 : INSFVMomentumTimeDerivative::INSFVMomentumTimeDerivative(const InputParameters & params) 27 1082 : : INSFVTimeKernel(params), _rho(getFunctor<ADReal>(NS::density)) 28 : { 29 1082 : } 30 : 31 : void 32 8223432 : INSFVMomentumTimeDerivative::gatherRCData(const Elem & elem) 33 : { 34 8223432 : const auto e = makeElemArg(&elem); 35 8223432 : const auto state = determineState(); 36 8223432 : const auto residual = _rho(e, state) * _var.dot(e, state) * _assembly.elementVolume(&elem); 37 8223432 : const auto dof_number = elem.dof_number(_sys.number(), _var.number(), 0); 38 8223432 : const Real a = residual.derivatives()[dof_number]; 39 : 40 8223432 : if (_contribute_to_rc_coeffs) 41 8223432 : _rc_uo.addToA(&elem, _index, a); 42 : 43 8223432 : addResidualAndJacobian(residual, dof_number); 44 8223432 : }