From c08b24db68ea6373956d8e5a2ea7ccbb1d175bc2 Mon Sep 17 00:00:00 2001 From: Knut Morten Okstad Date: Tue, 12 Jan 2016 18:27:58 +0100 Subject: [PATCH] Added: Default implementation of IntegrandBase::getNoFields(int group) returning the number of norm groups when the argument group is zero. --- src/ASM/IntegrandBase.C | 13 +++++++++++++ src/ASM/IntegrandBase.h | 4 +++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/ASM/IntegrandBase.C b/src/ASM/IntegrandBase.C index 010be248..2a62cd12 100644 --- a/src/ASM/IntegrandBase.C +++ b/src/ASM/IntegrandBase.C @@ -254,6 +254,19 @@ LocalIntegral* NormBase::getLocalIntegral (size_t, size_t iEl, bool) const } +size_t NormBase::getNoFields (int group) const +{ + if (group > 0) return 0; + + // Calculate the number of norm groups + size_t nf = 1; + for (size_t i = 0; i < prjsol.size(); i++) + if (!prjsol.empty()) nf++; + + return nf; +} + + bool NormBase::initElement (const std::vector& MNPC, const FiniteElement& fe, const Vec3& Xc, size_t nPt, diff --git a/src/ASM/IntegrandBase.h b/src/ASM/IntegrandBase.h index 4acccee9..a711f41c 100644 --- a/src/ASM/IntegrandBase.h +++ b/src/ASM/IntegrandBase.h @@ -331,7 +331,9 @@ public: virtual void addBoundaryTerms(Vectors&, double) const {} //! \brief Returns the number of norm groups or size of a specified group. - virtual size_t getNoFields(int group = 0) const { return 0; } + //! \details If \a group is zero, the number of norm groups is returned. + //! If \a group is greater than zero, the size of that groups is returned. + virtual size_t getNoFields(int group = 0) const; //! \brief Returns the name of a norm quantity. //! \param[in] i The norm group