From b2ab39d09d5ecf555a0a2f41bda6016a13a4f436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Gl=C3=A4ser?= <dennis.glaeser@iws.uni-stuttgart.de> Date: Thu, 22 Nov 2018 13:43:42 +0100 Subject: [PATCH] [mpfa][localassemblerbase] add function to reconstruct face unknowns --- .../cellcentered/mpfa/localassemblerbase.hh | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/dumux/discretization/cellcentered/mpfa/localassemblerbase.hh b/dumux/discretization/cellcentered/mpfa/localassemblerbase.hh index b182e9d9e3..9d0d8516e5 100644 --- a/dumux/discretization/cellcentered/mpfa/localassemblerbase.hh +++ b/dumux/discretization/cellcentered/mpfa/localassemblerbase.hh @@ -138,6 +138,29 @@ class InteractionVolumeAssemblerBase DUNE_THROW(Dune::NotImplemented, "Implementation does not provide a assemble() function for the cell/Dirichlet unknowns"); } + /*! + * \brief Assembles the vector of face unknowns within an interaction volume. + * \note This requires the data handle to be fully assembled already. + * + * \param handle The data handle in which the vector is stored + * \param iv The interaction volume + */ + template< class DataHandle, class IV > + static typename IV::Traits::MatVecTraits::FaceVector + assembleFaceUnkowns(const DataHandle& handle, const IV& iv) + { + typename IV::Traits::MatVecTraits::FaceVector u; + resizeVector_(u, iv.numFaces()); + + handle.AB().mv(handle.uj(), u); + + // maybe add gravity terms + if (handle.deltaG().size() == iv.numUnknowns()) + handle.AB().umv(handle.deltaG(), u); + + return u; + } + /*! * \brief Assembles the gravitational flux contributions on the scvfs within an * interaction volume. -- GitLab