www.mooseframework.org
InternalSideFluxBase.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 
15 
16 template <>
17 InputParameters validParams<InternalSideFluxBase>();
18 
32 class InternalSideFluxBase : public ThreadedGeneralUserObject
33 {
34 public:
35  InternalSideFluxBase(const InputParameters & parameters);
36 
37  virtual void execute() override;
38  virtual void initialize() override;
39  virtual void finalize() override;
40  virtual void threadJoin(const UserObject &) override;
41 
51  virtual const std::vector<Real> & getFlux(unsigned int iside,
52  dof_id_type ielem,
53  dof_id_type ineig,
54  const std::vector<Real> & uvec1,
55  const std::vector<Real> & uvec2,
56  const RealVectorValue & dwave) const;
57 
68  virtual void calcFlux(unsigned int iside,
69  dof_id_type ielem,
70  dof_id_type ineig,
71  const std::vector<Real> & uvec1,
72  const std::vector<Real> & uvec2,
73  const RealVectorValue & dwave,
74  std::vector<Real> & flux) const = 0;
75 
85  virtual const DenseMatrix<Real> & getJacobian(Moose::DGResidualType type,
86  unsigned int iside,
87  dof_id_type ielem,
88  dof_id_type ineig,
89  const std::vector<Real> & uvec1,
90  const std::vector<Real> & uvec2,
91  const RealVectorValue & dwave) const;
92 
104  virtual void calcJacobian(unsigned int iside,
105  dof_id_type ielem,
106  dof_id_type ineig,
107  const std::vector<Real> & uvec1,
108  const std::vector<Real> & uvec2,
109  const RealVectorValue & dwave,
110  DenseMatrix<Real> & jac1,
111  DenseMatrix<Real> & jac2) const = 0;
112 
113 protected:
115  mutable unsigned int _cached_flux_elem_id;
117  mutable unsigned int _cached_flux_neig_id;
118 
120  mutable unsigned int _cached_jacobian_elem_id;
122  mutable unsigned int _cached_jacobian_neig_id;
123 
125  mutable std::vector<Real> _flux;
127  mutable DenseMatrix<Real> _jac1;
129  mutable DenseMatrix<Real> _jac2;
130 };
131 
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
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
A base class for computing and caching internal side flux.
Definition: InternalSideFluxBase.h:32
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
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
validParams< InternalSideFluxBase >
InputParameters validParams< InternalSideFluxBase >()
Definition: InternalSideFluxBase.C:14