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 "AdvectionIPHDGAssemblyHelper.h" 11 : #include "AdvectionIPHDGOutflowBC.h" 12 : 13 : registerMooseObject("MooseApp", AdvectionIPHDGOutflowBC); 14 : 15 : InputParameters 16 3130 : AdvectionIPHDGOutflowBC::validParams() 17 : { 18 3130 : auto params = IPHDGBC::validParams(); 19 3130 : params += AdvectionIPHDGAssemblyHelper::validParams(); 20 6260 : params.addClassDescription("Implements an outflow boundary condition for use with a hybridized " 21 : "discretization of the advection equation"); 22 9390 : params.addRequiredParam<bool>("constrain_lm", 23 : "Whether to constrain the Lagrange multiplier to weakly match the " 24 : "interior solution on this boundary. This should be set to true " 25 : "for pure advection problems and likely false otherwise."); 26 3130 : return params; 27 0 : } 28 : 29 35 : AdvectionIPHDGOutflowBC::AdvectionIPHDGOutflowBC(const InputParameters & parameters) 30 : : IPHDGBC(parameters), 31 105 : _iphdg_helper(std::make_unique<AdvectionIPHDGAssemblyHelper>( 32 35 : this, this, this, _sys, _assembly, _tid, std::set<SubdomainID>{}, boundaryIDs())), 33 105 : _constrain_lm(getParam<bool>("constrain_lm")) 34 : { 35 35 : } 36 : 37 : void 38 80 : AdvectionIPHDGOutflowBC::compute() 39 : { 40 80 : auto & iphdg_helper = iphdgHelper(); 41 80 : iphdg_helper.resizeResiduals(); 42 : 43 : // u, lm_u 44 80 : iphdg_helper.scalarFace(); 45 80 : if (_constrain_lm) 46 52 : iphdg_helper.lmOutflow(); 47 80 : } 48 : 49 : AdvectionIPHDGAssemblyHelper & 50 304 : AdvectionIPHDGOutflowBC::iphdgHelper() 51 : { 52 304 : return *_iphdg_helper; 53 : }