www.mooseframework.org
RDGFluxBase.h
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 #pragma once
11 
12 #include "ThreadedGeneralUserObject.h"
13 
14 class RDGFluxBase;
15 
16 template <>
17 InputParameters validParams<RDGFluxBase>();
18 
26 class RDGFluxBase : public ThreadedGeneralUserObject
27 {
28 public:
29  RDGFluxBase(const InputParameters & parameters);
30 
31  virtual void execute() override;
32  virtual void initialize() override;
33  virtual void finalize() override;
34  virtual void threadJoin(const UserObject &) override;
35 
50  virtual const std::vector<Real> & getFlux(const unsigned int iside,
51  const dof_id_type ielem,
52  const std::vector<Real> & uvec1,
53  const std::vector<Real> & uvec2,
54  const RealVectorValue & normal) const;
55 
76  virtual const DenseMatrix<Real> & getJacobian(const bool get_first_jacobian,
77  const unsigned int iside,
78  const dof_id_type ielem,
79  const std::vector<Real> & uvec1,
80  const std::vector<Real> & uvec2,
81  const RealVectorValue & normal) const;
82 
93  virtual void calcFlux(const std::vector<Real> & uvec1,
94  const std::vector<Real> & uvec2,
95  const RealVectorValue & normal,
96  std::vector<Real> & flux) const = 0;
97 
109  virtual void calcJacobian(const std::vector<Real> & uvec1,
110  const std::vector<Real> & uvec2,
111  const RealVectorValue & normal,
112  DenseMatrix<Real> & jac1,
113  DenseMatrix<Real> & jac2) const = 0;
114 
115 protected:
117  mutable unsigned int _cached_flux_elem_id;
119  mutable unsigned int _cached_flux_side_id;
120 
122  mutable unsigned int _cached_jacobian_elem_id;
124  mutable unsigned int _cached_jacobian_side_id;
125 
127  mutable std::vector<Real> _flux;
129  mutable DenseMatrix<Real> _jac1;
131  mutable DenseMatrix<Real> _jac2;
132 };
133 
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
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
Abstract base class for computing and caching internal or boundary fluxes for RDG.
Definition: RDGFluxBase.h:26
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::_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.