Skip to content

Commit

Permalink
Merge pull request #12516 from joshuahansel/rdg-flux-init-fix
Browse files Browse the repository at this point in the history
Used different values for identifying caches in RDG module
  • Loading branch information
andrsd committed Nov 20, 2018
2 parents 79e0fea + 48bab0d commit ad261b9
Show file tree
Hide file tree
Showing 6 changed files with 73 additions and 35 deletions.
11 changes: 9 additions & 2 deletions modules/rdg/include/userobjects/BoundaryFluxBase.h
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -91,8 +91,15 @@ class BoundaryFluxBase : public ThreadedGeneralUserObject
DenseMatrix<Real> & jac1) const = 0; DenseMatrix<Real> & jac1) const = 0;


protected: protected:
mutable unsigned int _cached_side_id; /// element ID of the cached flux values
mutable dof_id_type _cached_elem_id; mutable unsigned int _cached_flux_elem_id;
/// side ID of the cached flux values
mutable unsigned int _cached_flux_side_id;

/// element ID of the cached Jacobian values
mutable unsigned int _cached_jacobian_elem_id;
/// side ID of the cached Jacobian values
mutable unsigned int _cached_jacobian_side_id;


/// Cached flux /// Cached flux
mutable std::vector<Real> _flux; mutable std::vector<Real> _flux;
Expand Down
11 changes: 9 additions & 2 deletions modules/rdg/include/userobjects/InternalSideFluxBase.h
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -112,8 +112,15 @@ class InternalSideFluxBase : public ThreadedGeneralUserObject
DenseMatrix<Real> & jac2) const = 0; DenseMatrix<Real> & jac2) const = 0;


protected: protected:
mutable unsigned int _cached_elem_id; /// element ID of the cached flux values
mutable unsigned int _cached_neig_id; mutable unsigned int _cached_flux_elem_id;
/// neighbor element ID of the cached flux values
mutable unsigned int _cached_flux_neig_id;

/// element ID of the cached Jacobian values
mutable unsigned int _cached_jacobian_elem_id;
/// neighbor element ID of the cached Jacobian values
mutable unsigned int _cached_jacobian_neig_id;


/// flux vector of this side /// flux vector of this side
mutable std::vector<Real> _flux; mutable std::vector<Real> _flux;
Expand Down
13 changes: 9 additions & 4 deletions modules/rdg/include/userobjects/RDGFluxBase.h
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -114,10 +114,15 @@ class RDGFluxBase : public ThreadedGeneralUserObject
DenseMatrix<Real> & jac2) const = 0; DenseMatrix<Real> & jac2) const = 0;


protected: protected:
/// element ID of the cached values /// element ID of the cached flux values
mutable unsigned int _cached_elem_id; mutable unsigned int _cached_flux_elem_id;
/// side ID of the cached values /// side ID of the cached flux values
mutable unsigned int _cached_side_id; mutable unsigned int _cached_flux_side_id;

/// element ID of the cached Jacobian values
mutable unsigned int _cached_jacobian_elem_id;
/// side ID of the cached Jacobian values
mutable unsigned int _cached_jacobian_side_id;


/// flux vector /// flux vector
mutable std::vector<Real> _flux; mutable std::vector<Real> _flux;
Expand Down
24 changes: 15 additions & 9 deletions modules/rdg/src/userobjects/BoundaryFluxBase.C
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -18,15 +18,21 @@ validParams<BoundaryFluxBase>()
} }


BoundaryFluxBase::BoundaryFluxBase(const InputParameters & parameters) BoundaryFluxBase::BoundaryFluxBase(const InputParameters & parameters)
: ThreadedGeneralUserObject(parameters) : ThreadedGeneralUserObject(parameters),
_cached_flux_elem_id(libMesh::invalid_uint),
_cached_flux_side_id(libMesh::invalid_uint),
_cached_jacobian_elem_id(libMesh::invalid_uint),
_cached_jacobian_side_id(libMesh::invalid_uint)
{ {
} }


void void
BoundaryFluxBase::initialize() BoundaryFluxBase::initialize()
{ {
_cached_elem_id = 0; _cached_flux_elem_id = libMesh::invalid_uint;
_cached_side_id = libMesh::invalid_uint; _cached_flux_side_id = libMesh::invalid_uint;
_cached_jacobian_elem_id = libMesh::invalid_uint;
_cached_jacobian_side_id = libMesh::invalid_uint;
} }


void void
Expand All @@ -50,10 +56,10 @@ BoundaryFluxBase::getFlux(unsigned int iside,
const std::vector<Real> & uvec1, const std::vector<Real> & uvec1,
const RealVectorValue & dwave) const const RealVectorValue & dwave) const
{ {
if (_cached_elem_id != ielem || _cached_side_id != iside) if (_cached_flux_elem_id != ielem || _cached_flux_side_id != iside)
{ {
_cached_elem_id = ielem; _cached_flux_elem_id = ielem;
_cached_side_id = iside; _cached_flux_side_id = iside;


calcFlux(iside, ielem, uvec1, dwave, _flux); calcFlux(iside, ielem, uvec1, dwave, _flux);
} }
Expand All @@ -66,10 +72,10 @@ BoundaryFluxBase::getJacobian(unsigned int iside,
const std::vector<Real> & uvec1, const std::vector<Real> & uvec1,
const RealVectorValue & dwave) const const RealVectorValue & dwave) const
{ {
if (_cached_elem_id != ielem || _cached_side_id != iside) if (_cached_jacobian_elem_id != ielem || _cached_jacobian_side_id != iside)
{ {
_cached_elem_id = ielem; _cached_jacobian_elem_id = ielem;
_cached_side_id = iside; _cached_jacobian_side_id = iside;


calcJacobian(iside, ielem, uvec1, dwave, _jac1); calcJacobian(iside, ielem, uvec1, dwave, _jac1);
} }
Expand Down
24 changes: 15 additions & 9 deletions modules/rdg/src/userobjects/InternalSideFluxBase.C
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -19,15 +19,21 @@ validParams<InternalSideFluxBase>()
} }


InternalSideFluxBase::InternalSideFluxBase(const InputParameters & parameters) InternalSideFluxBase::InternalSideFluxBase(const InputParameters & parameters)
: ThreadedGeneralUserObject(parameters) : ThreadedGeneralUserObject(parameters),
_cached_flux_elem_id(libMesh::invalid_uint),
_cached_flux_neig_id(libMesh::invalid_uint),
_cached_jacobian_elem_id(libMesh::invalid_uint),
_cached_jacobian_neig_id(libMesh::invalid_uint)
{ {
} }


void void
InternalSideFluxBase::initialize() InternalSideFluxBase::initialize()
{ {
_cached_elem_id = 0; _cached_flux_elem_id = libMesh::invalid_uint;
_cached_neig_id = 0; _cached_flux_neig_id = libMesh::invalid_uint;
_cached_jacobian_elem_id = libMesh::invalid_uint;
_cached_jacobian_neig_id = libMesh::invalid_uint;
} }


void void
Expand All @@ -53,10 +59,10 @@ InternalSideFluxBase::getFlux(unsigned int iside,
const std::vector<Real> & uvec2, const std::vector<Real> & uvec2,
const RealVectorValue & dwave) const const RealVectorValue & dwave) const
{ {
if (_cached_elem_id != ielem || _cached_neig_id != ineig) if (_cached_flux_elem_id != ielem || _cached_flux_neig_id != ineig)
{ {
_cached_elem_id = ielem; _cached_flux_elem_id = ielem;
_cached_neig_id = ineig; _cached_flux_neig_id = ineig;


calcFlux(iside, ielem, ineig, uvec1, uvec2, dwave, _flux); calcFlux(iside, ielem, ineig, uvec1, uvec2, dwave, _flux);
} }
Expand All @@ -72,10 +78,10 @@ InternalSideFluxBase::getJacobian(Moose::DGResidualType type,
const std::vector<Real> & uvec2, const std::vector<Real> & uvec2,
const RealVectorValue & dwave) const const RealVectorValue & dwave) const
{ {
if (_cached_elem_id != ielem || _cached_neig_id != ineig) if (_cached_jacobian_elem_id != ielem || _cached_jacobian_neig_id != ineig)
{ {
_cached_elem_id = ielem; _cached_jacobian_elem_id = ielem;
_cached_neig_id = ineig; _cached_jacobian_neig_id = ineig;


calcJacobian(iside, ielem, ineig, uvec1, uvec2, dwave, _jac1, _jac2); calcJacobian(iside, ielem, ineig, uvec1, uvec2, dwave, _jac1, _jac2);
} }
Expand Down
25 changes: 16 additions & 9 deletions modules/rdg/src/userobjects/RDGFluxBase.C
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -19,15 +19,22 @@ validParams<RDGFluxBase>()
return params; return params;
} }


RDGFluxBase::RDGFluxBase(const InputParameters & parameters) : ThreadedGeneralUserObject(parameters) RDGFluxBase::RDGFluxBase(const InputParameters & parameters)
: ThreadedGeneralUserObject(parameters),
_cached_flux_elem_id(libMesh::invalid_uint),
_cached_flux_side_id(libMesh::invalid_uint),
_cached_jacobian_elem_id(libMesh::invalid_uint),
_cached_jacobian_side_id(libMesh::invalid_uint)
{ {
} }


void void
RDGFluxBase::initialize() RDGFluxBase::initialize()
{ {
_cached_elem_id = libMesh::invalid_uint; _cached_flux_elem_id = libMesh::invalid_uint;
_cached_side_id = libMesh::invalid_uint; _cached_flux_side_id = libMesh::invalid_uint;
_cached_jacobian_elem_id = libMesh::invalid_uint;
_cached_jacobian_side_id = libMesh::invalid_uint;
} }


void void
Expand All @@ -52,10 +59,10 @@ RDGFluxBase::getFlux(const unsigned int iside,
const std::vector<Real> & uvec2, const std::vector<Real> & uvec2,
const RealVectorValue & normal) const const RealVectorValue & normal) const
{ {
if (_cached_elem_id != ielem || _cached_side_id != iside) if (_cached_flux_elem_id != ielem || _cached_flux_side_id != iside)
{ {
_cached_elem_id = ielem; _cached_flux_elem_id = ielem;
_cached_side_id = iside; _cached_flux_side_id = iside;


calcFlux(uvec1, uvec2, normal, _flux); calcFlux(uvec1, uvec2, normal, _flux);
} }
Expand All @@ -70,10 +77,10 @@ RDGFluxBase::getJacobian(const bool get_first_jacobian,
const std::vector<Real> & uvec2, const std::vector<Real> & uvec2,
const RealVectorValue & normal) const const RealVectorValue & normal) const
{ {
if (_cached_elem_id != ielem || _cached_side_id != iside) if (_cached_jacobian_elem_id != ielem || _cached_jacobian_side_id != iside)
{ {
_cached_elem_id = ielem; _cached_jacobian_elem_id = ielem;
_cached_side_id = iside; _cached_jacobian_side_id = iside;


calcJacobian(uvec1, uvec2, normal, _jac1, _jac2); calcJacobian(uvec1, uvec2, normal, _jac1, _jac2);
} }
Expand Down

0 comments on commit ad261b9

Please sign in to comment.