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 : // Navier-Stokes includes 11 : #include "NS.h" 12 : #include "NSEnergyInviscidUnspecifiedBC.h" 13 : 14 : registerMooseObject("NavierStokesApp", NSEnergyInviscidUnspecifiedBC); 15 : 16 : InputParameters 17 0 : NSEnergyInviscidUnspecifiedBC::validParams() 18 : { 19 0 : InputParameters params = NSEnergyInviscidBC::validParams(); 20 0 : params.addRequiredCoupledVar(NS::pressure, "pressure"); 21 0 : return params; 22 0 : } 23 : 24 0 : NSEnergyInviscidUnspecifiedBC::NSEnergyInviscidUnspecifiedBC(const InputParameters & parameters) 25 0 : : NSEnergyInviscidBC(parameters), _pressure(coupledValue(NS::pressure)) 26 : { 27 0 : } 28 : 29 : Real 30 0 : NSEnergyInviscidUnspecifiedBC::computeQpResidual() 31 : { 32 : // Velocity vector object 33 0 : RealVectorValue vel(_u_vel[_qp], _v_vel[_qp], _w_vel[_qp]); 34 : 35 : // Normal component 36 0 : Real un = vel * _normals[_qp]; 37 : 38 0 : return qpResidualHelper(_pressure[_qp], un); 39 : } 40 : 41 : Real 42 0 : NSEnergyInviscidUnspecifiedBC::computeQpJacobian() 43 : { 44 0 : return computeJacobianHelper(/*on-diagonal variable is energy=*/4); 45 : } 46 : 47 : Real 48 0 : NSEnergyInviscidUnspecifiedBC::computeQpOffDiagJacobian(unsigned jvar) 49 : { 50 0 : if (isNSVariable(jvar)) 51 0 : return computeJacobianHelper(mapVarNumber(jvar)); 52 : else 53 : return 0.0; 54 : } 55 : 56 : Real 57 0 : NSEnergyInviscidUnspecifiedBC::computeJacobianHelper(unsigned var_number) 58 : { 59 : // Velocity vector object 60 0 : RealVectorValue vel(_u_vel[_qp], _v_vel[_qp], _w_vel[_qp]); 61 : 62 : // Normal component of velocity 63 0 : Real un = vel * _normals[_qp]; 64 : 65 : // When both u.n and pressure are unspecified, all 3 Jacobian terms apply. 66 : // See base class for details. 67 0 : return qpJacobianTermA(var_number, _pressure[_qp]) + qpJacobianTermB(var_number, un) + 68 0 : qpJacobianTermC(var_number, un); 69 : }