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