www.mooseframework.org
RDGFluxBase.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 "RDGFluxBase.h"
11 
12 template <>
13 InputParameters
15 {
16  InputParameters params = validParams<GeneralUserObject>();
17  params.addClassDescription(
18  "Abstract base class for computing and caching internal or boundary fluxes for RDG");
19  return params;
20 }
21 
22 RDGFluxBase::RDGFluxBase(const InputParameters & parameters)
23  : ThreadedGeneralUserObject(parameters),
24  _cached_flux_elem_id(libMesh::invalid_uint),
25  _cached_flux_side_id(libMesh::invalid_uint),
26  _cached_jacobian_elem_id(libMesh::invalid_uint),
27  _cached_jacobian_side_id(libMesh::invalid_uint)
28 {
29 }
30 
31 void
33 {
34  _cached_flux_elem_id = libMesh::invalid_uint;
35  _cached_flux_side_id = libMesh::invalid_uint;
36  _cached_jacobian_elem_id = libMesh::invalid_uint;
37  _cached_jacobian_side_id = libMesh::invalid_uint;
38 }
39 
40 void
42 {
43 }
44 
45 void
47 {
48 }
49 
50 void
51 RDGFluxBase::threadJoin(const UserObject &)
52 {
53 }
54 
55 const std::vector<Real> &
56 RDGFluxBase::getFlux(const unsigned int iside,
57  const dof_id_type ielem,
58  const std::vector<Real> & uvec1,
59  const std::vector<Real> & uvec2,
60  const RealVectorValue & normal) const
61 {
62  if (_cached_flux_elem_id != ielem || _cached_flux_side_id != iside)
63  {
64  _cached_flux_elem_id = ielem;
65  _cached_flux_side_id = iside;
66 
67  calcFlux(uvec1, uvec2, normal, _flux);
68  }
69  return _flux;
70 }
71 
72 const DenseMatrix<Real> &
73 RDGFluxBase::getJacobian(const bool get_first_jacobian,
74  const unsigned int iside,
75  const dof_id_type ielem,
76  const std::vector<Real> & uvec1,
77  const std::vector<Real> & uvec2,
78  const RealVectorValue & normal) const
79 {
80  if (_cached_jacobian_elem_id != ielem || _cached_jacobian_side_id != iside)
81  {
84 
85  calcJacobian(uvec1, uvec2, normal, _jac1, _jac2);
86  }
87 
88  if (get_first_jacobian)
89  return _jac1;
90  else
91  return _jac2;
92 }
RDGFluxBase::_jac1
DenseMatrix< Real > _jac1
Jacobian matrix contribution to the "left" cell.
Definition: RDGFluxBase.h:129
RDGFluxBase::_cached_flux_elem_id
unsigned int _cached_flux_elem_id
element ID of the cached flux values
Definition: RDGFluxBase.h:117
RDGFluxBase::getJacobian
virtual const DenseMatrix< Real > & getJacobian(const bool get_first_jacobian, const unsigned int iside, const dof_id_type ielem, const std::vector< Real > &uvec1, const std::vector< Real > &uvec2, const RealVectorValue &normal) const
Gets the flux Jacobian matrix for an element/side combination.
Definition: RDGFluxBase.C:73
RDGFluxBase::initialize
virtual void initialize() override
Definition: RDGFluxBase.C:32
libMesh
Definition: RANFSNormalMechanicalContact.h:24
RDGFluxBase::_cached_jacobian_elem_id
unsigned int _cached_jacobian_elem_id
element ID of the cached Jacobian values
Definition: RDGFluxBase.h:122
RDGFluxBase::getFlux
virtual const std::vector< Real > & getFlux(const unsigned int iside, const dof_id_type ielem, const std::vector< Real > &uvec1, const std::vector< Real > &uvec2, const RealVectorValue &normal) const
Gets the flux vector for an element/side combination.
Definition: RDGFluxBase.C:56
RDGFluxBase::calcFlux
virtual void calcFlux(const std::vector< Real > &uvec1, const std::vector< Real > &uvec2, const RealVectorValue &normal, std::vector< Real > &flux) const =0
Calculates the flux vector given "left" and "right" states.
RDGFluxBase::threadJoin
virtual void threadJoin(const UserObject &) override
Definition: RDGFluxBase.C:51
RDGFluxBase::_jac2
DenseMatrix< Real > _jac2
Jacobian matrix contribution to the "right" cell.
Definition: RDGFluxBase.h:131
RDGFluxBase::_cached_jacobian_side_id
unsigned int _cached_jacobian_side_id
side ID of the cached Jacobian values
Definition: RDGFluxBase.h:124
RDGFluxBase::execute
virtual void execute() override
Definition: RDGFluxBase.C:41
RDGFluxBase::RDGFluxBase
RDGFluxBase(const InputParameters &parameters)
Definition: RDGFluxBase.C:22
RDGFluxBase::_flux
std::vector< Real > _flux
flux vector
Definition: RDGFluxBase.h:127
RDGFluxBase::finalize
virtual void finalize() override
Definition: RDGFluxBase.C:46
validParams< RDGFluxBase >
InputParameters validParams< RDGFluxBase >()
Definition: RDGFluxBase.C:14
RDGFluxBase.h
RDGFluxBase::_cached_flux_side_id
unsigned int _cached_flux_side_id
side ID of the cached flux values
Definition: RDGFluxBase.h:119
RDGFluxBase::calcJacobian
virtual void calcJacobian(const std::vector< Real > &uvec1, const std::vector< Real > &uvec2, const RealVectorValue &normal, DenseMatrix< Real > &jac1, DenseMatrix< Real > &jac2) const =0
Calculates the flux Jacobian matrices given "left" and "right" states.