www.mooseframework.org
BoundaryFluxBase.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 BoundaryFluxBase;
15 
16 template <>
17 InputParameters validParams<BoundaryFluxBase>();
18 
30 class BoundaryFluxBase : public ThreadedGeneralUserObject
31 {
32 public:
33  BoundaryFluxBase(const InputParameters & parameters);
34 
35  virtual void execute() override;
36  virtual void initialize() override;
37  virtual void finalize() override;
38  virtual void threadJoin(const UserObject &) override;
39 
47  virtual const std::vector<Real> & getFlux(unsigned int iside,
48  dof_id_type ielem,
49  const std::vector<Real> & uvec1,
50  const RealVectorValue & dwave) const;
51 
60  virtual void calcFlux(unsigned int iside,
61  dof_id_type ielem,
62  const std::vector<Real> & uvec1,
63  const RealVectorValue & dwave,
64  std::vector<Real> & flux) const = 0;
65 
73  virtual const DenseMatrix<Real> & getJacobian(unsigned int iside,
74  dof_id_type ielem,
75  const std::vector<Real> & uvec1,
76  const RealVectorValue & dwave) const;
77 
86  virtual void calcJacobian(unsigned int iside,
87  dof_id_type ielem,
88  const std::vector<Real> & uvec1,
89  const RealVectorValue & dwave,
90  DenseMatrix<Real> & jac1) const = 0;
91 
92 protected:
94  mutable unsigned int _cached_flux_elem_id;
96  mutable unsigned int _cached_flux_side_id;
97 
99  mutable unsigned int _cached_jacobian_elem_id;
101  mutable unsigned int _cached_jacobian_side_id;
102 
104  mutable std::vector<Real> _flux;
105 
107  mutable DenseMatrix<Real> _jac1;
108 };
109 
BoundaryFluxBase::_jac1
DenseMatrix< Real > _jac1
Cached flux Jacobian.
Definition: BoundaryFluxBase.h:107
BoundaryFluxBase::_cached_flux_side_id
unsigned int _cached_flux_side_id
side ID of the cached flux values
Definition: BoundaryFluxBase.h:96
BoundaryFluxBase::_cached_jacobian_side_id
unsigned int _cached_jacobian_side_id
side ID of the cached Jacobian values
Definition: BoundaryFluxBase.h:101
BoundaryFluxBase
A base class for computing/caching fluxes at boundaries.
Definition: BoundaryFluxBase.h:30
BoundaryFluxBase::getJacobian
virtual const DenseMatrix< Real > & getJacobian(unsigned int iside, dof_id_type ielem, const std::vector< Real > &uvec1, const RealVectorValue &dwave) const
Get the boundary Jacobian matrix.
Definition: BoundaryFluxBase.C:70
BoundaryFluxBase::_flux
std::vector< Real > _flux
Cached flux.
Definition: BoundaryFluxBase.h:104
BoundaryFluxBase::calcFlux
virtual void calcFlux(unsigned int iside, dof_id_type ielem, const std::vector< Real > &uvec1, const RealVectorValue &dwave, std::vector< Real > &flux) const =0
Solve the Riemann problem on the boundary face.
BoundaryFluxBase::_cached_jacobian_elem_id
unsigned int _cached_jacobian_elem_id
element ID of the cached Jacobian values
Definition: BoundaryFluxBase.h:99
BoundaryFluxBase::finalize
virtual void finalize() override
Definition: BoundaryFluxBase.C:44
BoundaryFluxBase::BoundaryFluxBase
BoundaryFluxBase(const InputParameters &parameters)
Definition: BoundaryFluxBase.C:20
BoundaryFluxBase::calcJacobian
virtual void calcJacobian(unsigned int iside, dof_id_type ielem, const std::vector< Real > &uvec1, const RealVectorValue &dwave, DenseMatrix< Real > &jac1) const =0
Compute the Jacobian matrix on the boundary face.
BoundaryFluxBase::_cached_flux_elem_id
unsigned int _cached_flux_elem_id
element ID of the cached flux values
Definition: BoundaryFluxBase.h:94
BoundaryFluxBase::threadJoin
virtual void threadJoin(const UserObject &) override
Definition: BoundaryFluxBase.C:49
BoundaryFluxBase::execute
virtual void execute() override
Definition: BoundaryFluxBase.C:39
validParams< BoundaryFluxBase >
InputParameters validParams< BoundaryFluxBase >()
Definition: BoundaryFluxBase.C:14
BoundaryFluxBase::getFlux
virtual const std::vector< Real > & getFlux(unsigned int iside, dof_id_type ielem, const std::vector< Real > &uvec1, const RealVectorValue &dwave) const
Get the boundary flux vector.
Definition: BoundaryFluxBase.C:54
BoundaryFluxBase::initialize
virtual void initialize() override
Definition: BoundaryFluxBase.C:30