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 "InternalSideFluxBase.h" 11 : 12 : InputParameters 13 116 : InternalSideFluxBase::validParams() 14 : { 15 116 : InputParameters params = GeneralUserObject::validParams(); 16 116 : params.addClassDescription("A base class for computing and caching internal side flux."); 17 116 : return params; 18 0 : } 19 : 20 67 : InternalSideFluxBase::InternalSideFluxBase(const InputParameters & parameters) 21 : : ThreadedGeneralUserObject(parameters), 22 67 : _cached_flux_elem_id(libMesh::invalid_uint), 23 67 : _cached_flux_neig_id(libMesh::invalid_uint), 24 67 : _cached_jacobian_elem_id(libMesh::invalid_uint), 25 67 : _cached_jacobian_neig_id(libMesh::invalid_uint) 26 : { 27 67 : } 28 : 29 : void 30 1004 : InternalSideFluxBase::initialize() 31 : { 32 1004 : _cached_flux_elem_id = libMesh::invalid_uint; 33 1004 : _cached_flux_neig_id = libMesh::invalid_uint; 34 1004 : _cached_jacobian_elem_id = libMesh::invalid_uint; 35 1004 : _cached_jacobian_neig_id = libMesh::invalid_uint; 36 1004 : } 37 : 38 : void 39 1004 : InternalSideFluxBase::execute() 40 : { 41 1004 : } 42 : 43 : void 44 744 : InternalSideFluxBase::finalize() 45 : { 46 744 : } 47 : 48 : void 49 260 : InternalSideFluxBase::threadJoin(const UserObject &) 50 : { 51 260 : } 52 : 53 : const std::vector<Real> & 54 89852 : InternalSideFluxBase::getFlux(unsigned int iside, 55 : dof_id_type ielem, 56 : dof_id_type ineig, 57 : const std::vector<Real> & uvec1, 58 : const std::vector<Real> & uvec2, 59 : const RealVectorValue & dwave) const 60 : { 61 89852 : if (_cached_flux_elem_id != ielem || _cached_flux_neig_id != ineig) 62 : { 63 44926 : _cached_flux_elem_id = ielem; 64 44926 : _cached_flux_neig_id = ineig; 65 : 66 44926 : calcFlux(iside, ielem, ineig, uvec1, uvec2, dwave, _flux); 67 : } 68 89852 : return _flux; 69 : } 70 : 71 : const DenseMatrix<Real> & 72 48312 : InternalSideFluxBase::getJacobian(Moose::DGResidualType type, 73 : unsigned int iside, 74 : dof_id_type ielem, 75 : dof_id_type ineig, 76 : const std::vector<Real> & uvec1, 77 : const std::vector<Real> & uvec2, 78 : const RealVectorValue & dwave) const 79 : { 80 48312 : if (_cached_jacobian_elem_id != ielem || _cached_jacobian_neig_id != ineig) 81 : { 82 6039 : _cached_jacobian_elem_id = ielem; 83 6039 : _cached_jacobian_neig_id = ineig; 84 : 85 6039 : calcJacobian(iside, ielem, ineig, uvec1, uvec2, dwave, _jac1, _jac2); 86 : } 87 : 88 48312 : if (type == Moose::Element) 89 24156 : return _jac1; 90 : else 91 24156 : return _jac2; 92 : }