www.mooseframework.org
InternalSideFluxBase.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 template <>
13 InputParameters
15 {
16  InputParameters params = validParams<GeneralUserObject>();
17  params.addClassDescription("A base class for computing and caching internal side flux.");
18  return params;
19 }
20 
21 InternalSideFluxBase::InternalSideFluxBase(const InputParameters & parameters)
22  : ThreadedGeneralUserObject(parameters),
23  _cached_flux_elem_id(libMesh::invalid_uint),
24  _cached_flux_neig_id(libMesh::invalid_uint),
25  _cached_jacobian_elem_id(libMesh::invalid_uint),
26  _cached_jacobian_neig_id(libMesh::invalid_uint)
27 {
28 }
29 
30 void
32 {
33  _cached_flux_elem_id = libMesh::invalid_uint;
34  _cached_flux_neig_id = libMesh::invalid_uint;
35  _cached_jacobian_elem_id = libMesh::invalid_uint;
36  _cached_jacobian_neig_id = libMesh::invalid_uint;
37 }
38 
39 void
41 {
42 }
43 
44 void
46 {
47 }
48 
49 void
51 {
52 }
53 
54 const std::vector<Real> &
55 InternalSideFluxBase::getFlux(unsigned int iside,
56  dof_id_type ielem,
57  dof_id_type ineig,
58  const std::vector<Real> & uvec1,
59  const std::vector<Real> & uvec2,
60  const RealVectorValue & dwave) const
61 {
62  if (_cached_flux_elem_id != ielem || _cached_flux_neig_id != ineig)
63  {
64  _cached_flux_elem_id = ielem;
65  _cached_flux_neig_id = ineig;
66 
67  calcFlux(iside, ielem, ineig, uvec1, uvec2, dwave, _flux);
68  }
69  return _flux;
70 }
71 
72 const DenseMatrix<Real> &
73 InternalSideFluxBase::getJacobian(Moose::DGResidualType type,
74  unsigned int iside,
75  dof_id_type ielem,
76  dof_id_type ineig,
77  const std::vector<Real> & uvec1,
78  const std::vector<Real> & uvec2,
79  const RealVectorValue & dwave) const
80 {
81  if (_cached_jacobian_elem_id != ielem || _cached_jacobian_neig_id != ineig)
82  {
85 
86  calcJacobian(iside, ielem, ineig, uvec1, uvec2, dwave, _jac1, _jac2);
87  }
88 
89  if (type == Moose::Element)
90  return _jac1;
91  else
92  return _jac2;
93 }
InternalSideFluxBase.h
InternalSideFluxBase::_cached_jacobian_neig_id
unsigned int _cached_jacobian_neig_id
neighbor element ID of the cached Jacobian values
Definition: InternalSideFluxBase.h:122
InternalSideFluxBase::finalize
virtual void finalize() override
Definition: InternalSideFluxBase.C:45
InternalSideFluxBase::threadJoin
virtual void threadJoin(const UserObject &) override
Definition: InternalSideFluxBase.C:50
libMesh
Definition: RANFSNormalMechanicalContact.h:24
InternalSideFluxBase::_cached_flux_neig_id
unsigned int _cached_flux_neig_id
neighbor element ID of the cached flux values
Definition: InternalSideFluxBase.h:117
InternalSideFluxBase::getJacobian
virtual const DenseMatrix< Real > & getJacobian(Moose::DGResidualType type, unsigned int iside, dof_id_type ielem, dof_id_type ineig, const std::vector< Real > &uvec1, const std::vector< Real > &uvec2, const RealVectorValue &dwave) const
Get the Jacobian matrix.
Definition: InternalSideFluxBase.C:73
InternalSideFluxBase::_cached_flux_elem_id
unsigned int _cached_flux_elem_id
element ID of the cached flux values
Definition: InternalSideFluxBase.h:115
InternalSideFluxBase::calcJacobian
virtual void calcJacobian(unsigned int iside, dof_id_type ielem, dof_id_type ineig, const std::vector< Real > &uvec1, const std::vector< Real > &uvec2, const RealVectorValue &dwave, DenseMatrix< Real > &jac1, DenseMatrix< Real > &jac2) const =0
Compute the Jacobian matrix.
InternalSideFluxBase::execute
virtual void execute() override
Definition: InternalSideFluxBase.C:40
InternalSideFluxBase::getFlux
virtual const std::vector< Real > & getFlux(unsigned int iside, dof_id_type ielem, dof_id_type ineig, const std::vector< Real > &uvec1, const std::vector< Real > &uvec2, const RealVectorValue &dwave) const
Get the flux vector.
Definition: InternalSideFluxBase.C:55
InternalSideFluxBase::initialize
virtual void initialize() override
Definition: InternalSideFluxBase.C:31
InternalSideFluxBase::_jac1
DenseMatrix< Real > _jac1
Jacobian matrix contribution to the "left" cell.
Definition: InternalSideFluxBase.h:127
InternalSideFluxBase::InternalSideFluxBase
InternalSideFluxBase(const InputParameters &parameters)
Definition: InternalSideFluxBase.C:21
validParams< InternalSideFluxBase >
InputParameters validParams< InternalSideFluxBase >()
Definition: InternalSideFluxBase.C:14
InternalSideFluxBase::calcFlux
virtual void calcFlux(unsigned int iside, dof_id_type ielem, dof_id_type ineig, const std::vector< Real > &uvec1, const std::vector< Real > &uvec2, const RealVectorValue &dwave, std::vector< Real > &flux) const =0
Solve the Riemann problem.
InternalSideFluxBase::_jac2
DenseMatrix< Real > _jac2
Jacobian matrix contribution to the "right" cell.
Definition: InternalSideFluxBase.h:129
InternalSideFluxBase::_flux
std::vector< Real > _flux
flux vector of this side
Definition: InternalSideFluxBase.h:125
InternalSideFluxBase::_cached_jacobian_elem_id
unsigned int _cached_jacobian_elem_id
element ID of the cached Jacobian values
Definition: InternalSideFluxBase.h:120