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 3295 : NavierStokesStressIPHDGAssemblyHelper::validParams() 25 : { 26 3295 : auto params = DiffusionIPHDGAssemblyHelper::validParams(); 27 6590 : params.addRequiredParam<NonlinearVariableName>( 28 : "pressure_variable", "The pressure variable that lives on element interiors."); 29 6590 : params.addRequiredParam<NonlinearVariableName>( 30 : "pressure_face_variable", "The pressure variable that lives on element faces."); 31 6590 : params.addRequiredParam<unsigned int>("component", "number of component (0 = x, 1 = y, 2 = z)"); 32 3295 : return params; 33 0 : } 34 : 35 1680 : 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 1680 : const std::set<BoundaryID> & boundary_ids) 45 : : DiffusionIPHDGAssemblyHelper(moose_obj, mvdi, ti, sys, assembly, tid, block_ids, boundary_ids), 46 1680 : _pressure_var(sys.getFieldVariable<Real>( 47 3360 : tid, moose_obj->getParam<NonlinearVariableName>("pressure_variable"))), 48 1680 : _pressure_face_var(sys.getFieldVariable<Real>( 49 1680 : tid, moose_obj->getParam<NonlinearVariableName>("pressure_face_variable"))), 50 1680 : _pressure_sol(_pressure_var.adSln()), 51 1680 : _pressure_face_sol(_pressure_face_var.adSln()), 52 1680 : _coord_sys(assembly.coordSystem()), 53 1680 : _rz_radial_coord(mesh.getAxisymmetricRadialCoord()), 54 5040 : _component(moose_obj->getParam<unsigned int>("component")) 55 : { 56 1680 : } 57 : 58 : void 59 1513336 : NavierStokesStressIPHDGAssemblyHelper::scalarVolume() 60 : { 61 1513336 : DiffusionIPHDGAssemblyHelper::scalarVolume(); 62 : 63 9320668 : for (const auto qp : make_range(_ip_qrule->n_points())) 64 43528524 : for (const auto i : index_range(_scalar_re)) 65 : { 66 107163576 : _scalar_re(i) -= _ip_JxW[qp] * (_grad_scalar_phi[i][qp](_component) * _pressure_sol[qp]); 67 35721192 : 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 1513336 : } 71 : 72 : void 73 4392728 : NavierStokesStressIPHDGAssemblyHelper::scalarFace() 74 : { 75 4392728 : DiffusionIPHDGAssemblyHelper::scalarFace(); 76 : 77 22567316 : for (const auto i : index_range(_scalar_re)) 78 64506492 : for (const auto qp : make_range(_ip_qrule_face->n_points())) 79 92663808 : _scalar_re(i) += _ip_JxW_face[qp] * _pressure_face_sol[qp] * _ip_normals[qp](_component) * 80 92663808 : _scalar_phi_face[i][qp]; 81 4392728 : } 82 : 83 : void 84 148400 : NavierStokesStressIPHDGAssemblyHelper::scalarDirichlet(const Moose::Functor<Real> & dirichlet_value) 85 : { 86 148400 : DiffusionIPHDGAssemblyHelper::scalarDirichlet(dirichlet_value); 87 : 88 869240 : for (const auto i : index_range(_scalar_re)) 89 2710440 : for (const auto qp : make_range(_ip_qrule_face->n_points())) 90 3979200 : _scalar_re(i) += _ip_JxW_face[qp] * _pressure_face_sol[qp] * _ip_normals[qp](_component) * 91 3979200 : _scalar_phi_face[i][qp]; 92 148400 : }