From 4c7726476b3b99587a4bc14f41db8742aa0f91af Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Fri, 23 Jul 2010 18:32:22 +0000 Subject: [PATCH] fix combineTime for old high-order datasets --- Post/PViewDataList.cpp | 75 +++++++++++++++++++++++------------------- Post/PViewDataList.h | 2 +- 2 files changed, 42 insertions(+), 35 deletions(-) diff --git a/Post/PViewDataList.cpp b/Post/PViewDataList.cpp index 53a68f5ca2..a5f5924dfa 100644 --- a/Post/PViewDataList.cpp +++ b/Post/PViewDataList.cpp @@ -491,12 +491,12 @@ void PViewDataList::smooth() std::vector<double> *list = 0; int *nbe = 0, nbc, nbn; for(int i = 0; i < 24; i++){ - getRawData(i, &list, &nbe, &nbc, &nbn); + _getRawData(i, &list, &nbe, &nbc, &nbn); if(nbn > 1) generateConnectivities(*list, *nbe, NbTimeStep, nbn, nbc, data); } for(int i = 0; i < 24; i++){ - getRawData(i, &list, &nbe, &nbc, &nbn); + _getRawData(i, &list, &nbe, &nbc, &nbn); if(nbn > 1) smoothList(*list, *nbe, NbTimeStep, nbn, nbc, data); } @@ -618,8 +618,8 @@ bool PViewDataList::combineTime(nameData &nd) // use the first data set as the reference for(int i = 0; i < 24; i++){ - getRawData(i, &list, &nbe, &nbc, &nbn); - data[0]->getRawData(i, &list2, &nbe2, &nbc2, &nbn2); + _getRawData(i, &list, &nbe, &nbc, &nbn); + data[0]->_getRawData(i, &list2, &nbe2, &nbc2, &nbn2); *nbe = *nbe2; } NbT2 = data[0]->NbT2; @@ -632,10 +632,10 @@ bool PViewDataList::combineTime(nameData &nd) // merge values for all element types for(int i = 0; i < 24; i++){ - getRawData(i, &list, &nbe, &nbc, &nbn); + _getRawData(i, &list, &nbe, &nbc, &nbn); for(int j = 0; j < *nbe; j++){ for(unsigned int k = 0; k < data.size(); k++){ - data[k]->getRawData(i, &list2, &nbe2, &nbc2, &nbn2); + data[k]->_getRawData(i, &list2, &nbe2, &nbc2, &nbn2); if(*nbe && *nbe == *nbe2){ int nb2 = list2->size() / *nbe2; if(!k){ @@ -740,36 +740,43 @@ bool PViewDataList::combineTime(nameData &nd) return finalize(); } -void PViewDataList::getRawData(int type, std::vector<double> **l, int **ne, - int *nc, int *nn) -{ - switch(type){ - case 0 : *l = &SP; *ne = &NbSP; *nc = 1; *nn = 1; break; - case 1 : *l = &VP; *ne = &NbVP; *nc = 3; *nn = 1; break; - case 2 : *l = &TP; *ne = &NbTP; *nc = 9; *nn = 1; break; - case 3 : *l = &SL; *ne = &NbSL; *nc = 1; *nn = 2; break; - case 4 : *l = &VL; *ne = &NbVL; *nc = 3; *nn = 2; break; - case 5 : *l = &TL; *ne = &NbTL; *nc = 9; *nn = 2; break; - case 6 : *l = &ST; *ne = &NbST; *nc = 1; *nn = 3; break; - case 7 : *l = &VT; *ne = &NbVT; *nc = 3; *nn = 3; break; - case 8 : *l = &TT; *ne = &NbTT; *nc = 9; *nn = 3; break; - case 9 : *l = &SQ; *ne = &NbSQ; *nc = 1; *nn = 4; break; - case 10: *l = &VQ; *ne = &NbVQ; *nc = 3; *nn = 4; break; - case 11: *l = &TQ; *ne = &NbTQ; *nc = 9; *nn = 4; break; - case 12: *l = &SS; *ne = &NbSS; *nc = 1; *nn = 4; break; - case 13: *l = &VS; *ne = &NbVS; *nc = 3; *nn = 4; break; - case 14: *l = &TS; *ne = &NbTS; *nc = 9; *nn = 4; break; - case 15: *l = &SH; *ne = &NbSH; *nc = 1; *nn = 8; break; - case 16: *l = &VH; *ne = &NbVH; *nc = 3; *nn = 8; break; - case 17: *l = &TH; *ne = &NbTH; *nc = 9; *nn = 8; break; - case 18: *l = &SI; *ne = &NbSI; *nc = 1; *nn = 6; break; - case 19: *l = &VI; *ne = &NbVI; *nc = 3; *nn = 6; break; - case 20: *l = &TI; *ne = &NbTI; *nc = 9; *nn = 6; break; - case 21: *l = &SY; *ne = &NbSY; *nc = 1; *nn = 5; break; - case 22: *l = &VY; *ne = &NbVY; *nc = 3; *nn = 5; break; - case 23: *l = &TY; *ne = &NbTY; *nc = 9; *nn = 5; break; +void PViewDataList::_getRawData(int idxtype, std::vector<double> **l, int **ne, + int *nc, int *nn) +{ + int type = 0; + switch(idxtype){ + case 0 : *l = &SP; *ne = &NbSP; *nc = 1; *nn = 1; type = TYPE_PNT; break; + case 1 : *l = &VP; *ne = &NbVP; *nc = 3; *nn = 1; type = TYPE_PNT; break; + case 2 : *l = &TP; *ne = &NbTP; *nc = 9; *nn = 1; type = TYPE_PNT; break; + case 3 : *l = &SL; *ne = &NbSL; *nc = 1; *nn = 2; type = TYPE_LIN; break; + case 4 : *l = &VL; *ne = &NbVL; *nc = 3; *nn = 2; type = TYPE_LIN; break; + case 5 : *l = &TL; *ne = &NbTL; *nc = 9; *nn = 2; type = TYPE_LIN; break; + case 6 : *l = &ST; *ne = &NbST; *nc = 1; *nn = 3; type = TYPE_TRI; break; + case 7 : *l = &VT; *ne = &NbVT; *nc = 3; *nn = 3; type = TYPE_TRI; break; + case 8 : *l = &TT; *ne = &NbTT; *nc = 9; *nn = 3; type = TYPE_TRI; break; + case 9 : *l = &SQ; *ne = &NbSQ; *nc = 1; *nn = 4; type = TYPE_QUA; break; + case 10: *l = &VQ; *ne = &NbVQ; *nc = 3; *nn = 4; type = TYPE_QUA; break; + case 11: *l = &TQ; *ne = &NbTQ; *nc = 9; *nn = 4; type = TYPE_QUA; break; + case 12: *l = &SS; *ne = &NbSS; *nc = 1; *nn = 4; type = TYPE_TET; break; + case 13: *l = &VS; *ne = &NbVS; *nc = 3; *nn = 4; type = TYPE_TET; break; + case 14: *l = &TS; *ne = &NbTS; *nc = 9; *nn = 4; type = TYPE_TET; break; + case 15: *l = &SH; *ne = &NbSH; *nc = 1; *nn = 8; type = TYPE_HEX; break; + case 16: *l = &VH; *ne = &NbVH; *nc = 3; *nn = 8; type = TYPE_HEX; break; + case 17: *l = &TH; *ne = &NbTH; *nc = 9; *nn = 8; type = TYPE_HEX; break; + case 18: *l = &SI; *ne = &NbSI; *nc = 1; *nn = 6; type = TYPE_PRI; break; + case 19: *l = &VI; *ne = &NbVI; *nc = 3; *nn = 6; type = TYPE_PRI; break; + case 20: *l = &TI; *ne = &NbTI; *nc = 9; *nn = 6; type = TYPE_PRI; break; + case 21: *l = &SY; *ne = &NbSY; *nc = 1; *nn = 5; type = TYPE_PYR; break; + case 22: *l = &VY; *ne = &NbVY; *nc = 3; *nn = 5; type = TYPE_PYR; break; + case 23: *l = &TY; *ne = &NbTY; *nc = 9; *nn = 5; type = TYPE_PYR; break; default: Msg::Error("Wrong type in PViewDataList"); break; } + + if(haveInterpolationMatrices()){ + std::vector<fullMatrix<double>*> im; + int nim = getInterpolationMatrices(type, im); + if(nim == 4) *nn = im[2]->size1(); + } } void PViewDataList::setOrder2(int type) diff --git a/Post/PViewDataList.h b/Post/PViewDataList.h index ef0bdbfd46..ff55893f34 100644 --- a/Post/PViewDataList.h +++ b/Post/PViewDataList.h @@ -54,6 +54,7 @@ class PViewDataList : public PViewData { std::vector<double> &list, int nblist); void _getString(int dim, int i, int timestep, std::string &str, double &x, double &y, double &z, double &style); + void _getRawData(int idxtype, std::vector<double> **l, int **ne, int *nc, int *nn); public: PViewDataList(); ~PViewDataList(){} @@ -102,7 +103,6 @@ class PViewDataList : public PViewData { bool combineSpace(nameData &nd); // specific to list-based data sets - void getRawData(int type, std::vector<double> **l, int **ne, int *nc, int *nn); void setOrder2(int type); std::vector<double> *incrementList(int numComp, int type); -- GitLab