From 20a4255b18af25567e980e12eb15177a20650f72 Mon Sep 17 00:00:00 2001
From: Koen Hillewaert <koen.hillewaert@cenaero.be>
Date: Wed, 17 Sep 2014 17:56:45 +0000
Subject: [PATCH] bug fix for pyramid refinement - function space not located
 since by default a static cast to a polynomial basis is used -> specialized
 for pyramids

---
 Post/PViewDataGModel.cpp | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/Post/PViewDataGModel.cpp b/Post/PViewDataGModel.cpp
index 5eaace718e..4860ab90b5 100644
--- a/Post/PViewDataGModel.cpp
+++ b/Post/PViewDataGModel.cpp
@@ -144,12 +144,18 @@ bool PViewDataGModel::finalize(bool computeMinMax, const std::string &interpolat
           // the mesh is curved
           MElement *e = _getOneElementOfGivenType(model, it->first);
           if(e && e->getPolynomialOrder() > 1 && e->getFunctionSpace()){
-            const polynomialBasis *fs = (polynomialBasis*) e->getFunctionSpace();
-            setInterpolationMatrices(it->first, *(it->second[0]), *(it->second[1]),
+            if (it->first == TYPE_PYR) { // KH 18/9/2014 very nasty fix since pyramids /= polynomial
+              const pyramidalBasis  *fs = (pyramidalBasis*) e->getFunctionSpace();
+              setInterpolationMatrices(it->first, *(it->second[0]), *(it->second[1]),
                                      fs->coefficients, fs->monomials);
+            }
+            else {
+              const polynomialBasis *fs = (polynomialBasis*) e->getFunctionSpace();
+              setInterpolationMatrices(it->first, *(it->second[0]), *(it->second[1]),
+                                       fs->coefficients, fs->monomials);
+            }
           }
-          else
-            setInterpolationMatrices(it->first, *(it->second[0]), *(it->second[1]));
+          else setInterpolationMatrices(it->first, *(it->second[0]), *(it->second[1]));
         }
         else if(it->second.size() == 4){
           // use provided matrices for field and geometry
-- 
GitLab