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 "NavierStokesStressIPHDGAssemblyHelper.h" 11 : #include "MooseTypes.h" 12 : #include "MooseVariableDependencyInterface.h" 13 : #include "MooseVariableScalar.h" 14 : #include "SystemBase.h" 15 : #include "MooseMesh.h" 16 : #include "MooseObject.h" 17 : #include "MaterialPropertyInterface.h" 18 : #include "Assembly.h" 19 : #include "MooseMesh.h" 20 : 21 : using namespace libMesh; 22 : 23 : InputParameters 24 2617 : NavierStokesStressIPHDGAssemblyHelper::validParams() 25 : { 26 2617 : auto params = DiffusionIPHDGAssemblyHelper::validParams(); 27 5234 : params.addRequiredParam<NonlinearVariableName>( 28 : "pressure_variable", "The pressure variable that lives on element interiors."); 29 5234 : params.addRequiredParam<NonlinearVariableName>( 30 : "pressure_face_variable", "The pressure variable that lives on element faces."); 31 5234 : params.addRequiredParam<unsigned int>("component", "number of component (0 = x, 1 = y, 2 = z)"); 32 2617 : return params; 33 0 : } 34 : 35 1327 : NavierStokesStressIPHDGAssemblyHelper::NavierStokesStressIPHDGAssemblyHelper( 36 : const MooseObject * const moose_obj, 37 : MooseVariableDependencyInterface * const mvdi, 38 : const TransientInterface * const ti, 39 : const MooseMesh & mesh, 40 : SystemBase & sys, 41 : const Assembly & assembly, 42 : const THREAD_ID tid, 43 : const std::set<SubdomainID> & block_ids, 44 1327 : const std::set<BoundaryID> & boundary_ids) 45 : : DiffusionIPHDGAssemblyHelper(moose_obj, mvdi, ti, sys, assembly, tid, block_ids, boundary_ids), 46 1327 : _pressure_var(sys.getFieldVariable<Real>( 47 2654 : tid, moose_obj->getParam<NonlinearVariableName>("pressure_variable"))), 48 1327 : _pressure_face_var(sys.getFieldVariable<Real>( 49 1327 : tid, moose_obj->getParam<NonlinearVariableName>("pressure_face_variable"))), 50 1327 : _pressure_sol(_pressure_var.adSln()), 51 1327 : _pressure_face_sol(_pressure_face_var.adSln()), 52 1327 : _coord_sys(assembly.coordSystem()), 53 1327 : _rz_radial_coord(mesh.getAxisymmetricRadialCoord()), 54 3981 : _component(moose_obj->getParam<unsigned int>("component")) 55 : { 56 1327 : } 57 : 58 : void 59 1106616 : NavierStokesStressIPHDGAssemblyHelper::scalarVolume() 60 : { 61 1106616 : DiffusionIPHDGAssemblyHelper::scalarVolume(); 62 : 63 6824236 : for (const auto qp : make_range(_ip_qrule->n_points())) 64 31929244 : for (const auto i : index_range(_scalar_re)) 65 : { 66 78634872 : _scalar_re(i) -= _ip_JxW[qp] * (_grad_scalar_phi[i][qp](_component) * _pressure_sol[qp]); 67 26211624 : if (_coord_sys == Moose::COORD_RZ && (_rz_radial_coord == _component)) 68 0 : _scalar_re(i) -= _pressure_sol[qp] / _ip_q_point[qp](_rz_radial_coord) * _scalar_phi[i][qp]; 69 : } 70 1106616 : } 71 : 72 : void 73 3228048 : NavierStokesStressIPHDGAssemblyHelper::scalarFace() 74 : { 75 3228048 : DiffusionIPHDGAssemblyHelper::scalarFace(); 76 : 77 16613856 : for (const auto i : index_range(_scalar_re)) 78 47550960 : for (const auto qp : make_range(_ip_qrule_face->n_points())) 79 68330304 : _scalar_re(i) += _ip_JxW_face[qp] * _pressure_face_sol[qp] * _ip_normals[qp](_component) * 80 68330304 : _scalar_phi_face[i][qp]; 81 3228048 : } 82 : 83 : void 84 92888 : NavierStokesStressIPHDGAssemblyHelper::scalarDirichlet(const Moose::Functor<Real> & dirichlet_value) 85 : { 86 92888 : DiffusionIPHDGAssemblyHelper::scalarDirichlet(dirichlet_value); 87 : 88 553148 : for (const auto i : index_range(_scalar_re)) 89 1740708 : for (const auto qp : make_range(_ip_qrule_face->n_points())) 90 2560896 : _scalar_re(i) += _ip_JxW_face[qp] * _pressure_face_sol[qp] * _ip_normals[qp](_component) * 91 2560896 : _scalar_phi_face[i][qp]; 92 92888 : } 93 : 94 : void 95 3228048 : NavierStokesStressIPHDGAssemblyHelper::lmFace() 96 : { 97 3228048 : DiffusionIPHDGAssemblyHelper::lmFace(); 98 : 99 26298000 : for (const auto i : index_range(_lm_re)) 100 80295264 : for (const auto qp : make_range(_ip_qrule_face->n_points())) 101 114450624 : _lm_re(i) -= _ip_JxW_face[qp] * _pressure_face_sol[qp] * _ip_normals[qp](_component) * 102 114450624 : _lm_phi_face[i][qp]; 103 3228048 : }