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 "NumericalFlux3EqnBase.h" 11 : 12 : InputParameters 13 0 : NumericalFlux3EqnBase::validParams() 14 : { 15 0 : InputParameters params = GeneralUserObject::validParams(); 16 0 : params.addClassDescription( 17 : "Base class for implemented objects that compute the numerical flux of the 3-equation model"); 18 0 : return params; 19 0 : } 20 : 21 0 : NumericalFlux3EqnBase::NumericalFlux3EqnBase(const InputParameters & parameters) 22 : : ThreadedGeneralUserObject(parameters), 23 : 24 0 : _cached_flux_elem_id(libMesh::invalid_uint), 25 0 : _cached_flux_side_id(libMesh::invalid_uint), 26 0 : _cached_jacobian_elem_id(libMesh::invalid_uint), 27 0 : _cached_jacobian_side_id(libMesh::invalid_uint), 28 : 29 0 : _last_region_index(0) 30 : { 31 0 : } 32 : 33 : void 34 0 : NumericalFlux3EqnBase::initialize() 35 : { 36 0 : _cached_flux_elem_id = libMesh::invalid_uint; 37 0 : _cached_flux_side_id = libMesh::invalid_uint; 38 0 : _cached_jacobian_elem_id = libMesh::invalid_uint; 39 0 : _cached_jacobian_side_id = libMesh::invalid_uint; 40 0 : } 41 : 42 : void 43 0 : NumericalFlux3EqnBase::execute() 44 : { 45 0 : } 46 : 47 : void 48 0 : NumericalFlux3EqnBase::finalize() 49 : { 50 0 : } 51 : 52 : void 53 0 : NumericalFlux3EqnBase::threadJoin(const UserObject &) 54 : { 55 0 : } 56 : 57 : const std::vector<Real> & 58 0 : NumericalFlux3EqnBase::getFlux(const unsigned int iside, 59 : const dof_id_type ielem, 60 : bool res_side_is_left, 61 : const std::vector<Real> & UL, 62 : const std::vector<Real> & UR, 63 : const Real & nLR_dot_d) const 64 : { 65 0 : if (_cached_flux_elem_id != ielem || _cached_flux_side_id != iside) 66 : { 67 0 : _cached_flux_elem_id = ielem; 68 0 : _cached_flux_side_id = iside; 69 : 70 0 : calcFlux(UL, UR, nLR_dot_d, _FL, _FR); 71 : } 72 : 73 0 : if (res_side_is_left) 74 0 : return _FL; 75 : else 76 0 : return _FR; 77 : } 78 : 79 : const DenseMatrix<Real> & 80 0 : NumericalFlux3EqnBase::getJacobian(bool res_side_is_left, 81 : bool jac_side_is_left, 82 : const unsigned int iside, 83 : const dof_id_type ielem, 84 : const std::vector<Real> & UL, 85 : const std::vector<Real> & UR, 86 : const Real & nLR_dot_d) const 87 : { 88 0 : if (_cached_jacobian_elem_id != ielem || _cached_jacobian_side_id != iside) 89 : { 90 0 : _cached_jacobian_elem_id = ielem; 91 0 : _cached_jacobian_side_id = iside; 92 : 93 0 : calcJacobian(UL, UR, nLR_dot_d, _dFL_dUL, _dFL_dUR, _dFR_dUL, _dFR_dUR); 94 : } 95 : 96 0 : if (res_side_is_left) 97 : { 98 0 : if (jac_side_is_left) 99 0 : return _dFL_dUL; 100 : else 101 0 : return _dFL_dUR; 102 : } 103 : else 104 : { 105 0 : if (jac_side_is_left) 106 0 : return _dFR_dUL; 107 : else 108 0 : return _dFR_dUR; 109 : } 110 : }