Skip to content
Snippets Groups Projects
Commit 47921b8f authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

fix
parent 7f110855
No related branches found
No related tags found
No related merge requests found
// $Id: Smooth.cpp,v 1.28 2007-09-11 15:29:02 geuzaine Exp $ // $Id: Smooth.cpp,v 1.29 2007-09-15 15:47:05 geuzaine Exp $
// //
// Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
// //
...@@ -80,6 +80,7 @@ PView *GMSH_SmoothPlugin::execute(PView *v) ...@@ -80,6 +80,7 @@ PView *GMSH_SmoothPlugin::execute(PView *v)
if(!v1) return v; if(!v1) return v;
v1->getData()->smooth(); v1->getData()->smooth();
v1->setChanged(true);
return v1; return v1;
} }
// $Id: PViewDataList.cpp,v 1.8 2007-09-11 22:53:35 geuzaine Exp $ // $Id: PViewDataList.cpp,v 1.9 2007-09-15 15:47:05 geuzaine Exp $
// //
// Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
// //
...@@ -548,9 +548,8 @@ void PViewDataList::_splitCurvedElements() ...@@ -548,9 +548,8 @@ void PViewDataList::_splitCurvedElements()
splitCurvedElement(&TY2, &NbTY2, TS, &NbTS, 14,4, 9, 4, pyr2); splitCurvedElement(&TY2, &NbTY2, TS, &NbTS, 14,4, 9, 4, pyr2);
} }
static void generateConnectivities(List_T *list, int nbList, static void generateConnectivities(List_T *list, int nbList, int nbTimeStep,
int nbTimeStep, int nbVert, int nbVert, smooth_data &data)
smooth_data &data)
{ {
if(!nbList) return; if(!nbList) return;
double *vals = new double[nbTimeStep]; double *vals = new double[nbTimeStep];
...@@ -569,9 +568,8 @@ static void generateConnectivities(List_T *list, int nbList, ...@@ -569,9 +568,8 @@ static void generateConnectivities(List_T *list, int nbList,
delete [] vals; delete [] vals;
} }
static void smoothList(List_T *list, int nbList, double &min, double &max, static void smoothList(List_T *list, int nbList, int nbTimeStep,
std::vector<double> &tsmin, std::vector<double> &tsmax, int nbVert, smooth_data &data)
int nbTimeStep, int nbVert, smooth_data &data)
{ {
if(!nbList) return; if(!nbList) return;
double *vals = new double[nbTimeStep]; double *vals = new double[nbTimeStep];
...@@ -583,14 +581,8 @@ static void smoothList(List_T *list, int nbList, double &min, double &max, ...@@ -583,14 +581,8 @@ static void smoothList(List_T *list, int nbList, double &min, double &max,
double *v = (double *)List_Pointer_Fast(list, i + 3 * nbVert); double *v = (double *)List_Pointer_Fast(list, i + 3 * nbVert);
for(int j = 0; j < nbVert; j++) { for(int j = 0; j < nbVert; j++) {
if(data.get(x[j], y[j], z[j], nbTimeStep, vals)){ if(data.get(x[j], y[j], z[j], nbTimeStep, vals)){
for(int k = 0; k < nbTimeStep; k++) { for(int k = 0; k < nbTimeStep; k++)
double dd = vals[k]; v[j + k * nbVert] = vals[k];
v[j + k * nbVert] = dd;
min = std::min(min, dd);
max = std::max(max, dd);
tsmin[k] = std::min(tsmin[k], dd);
tsmax[k] = std::max(tsmax[k], dd);
}
} }
} }
} }
...@@ -601,34 +593,23 @@ void PViewDataList::smooth() ...@@ -601,34 +593,23 @@ void PViewDataList::smooth()
{ {
double old_eps = xyzv::eps; double old_eps = xyzv::eps;
xyzv::eps = CTX.lc * 1.e-8; xyzv::eps = CTX.lc * 1.e-8;
smooth_data data;
if(NbSL || NbST || NbSQ || NbSS || NbSH || NbSI || NbSY) { generateConnectivities(SL, NbSL, NbTimeStep, 2, data);
Min = VAL_INF; generateConnectivities(ST, NbST, NbTimeStep, 3, data);
Max = -VAL_INF; generateConnectivities(SQ, NbSQ, NbTimeStep, 4, data);
TimeStepMin.clear(); generateConnectivities(SS, NbSS, NbTimeStep, 4, data);
TimeStepMax.clear(); generateConnectivities(SH, NbSH, NbTimeStep, 8, data);
for(int j = 0; j < NbTimeStep; j++){ generateConnectivities(SI, NbSI, NbTimeStep, 6, data);
TimeStepMin.push_back(VAL_INF); generateConnectivities(SY, NbSY, NbTimeStep, 5, data);
TimeStepMax.push_back(-VAL_INF); smoothList(SL, NbSL, NbTimeStep, 2, data);
} smoothList(ST, NbST, NbTimeStep, 3, data);
smooth_data data; smoothList(SQ, NbSQ, NbTimeStep, 4, data);
generateConnectivities(SL, NbSL, NbTimeStep, 2, data); smoothList(SS, NbSS, NbTimeStep, 4, data);
generateConnectivities(ST, NbST, NbTimeStep, 3, data); smoothList(SH, NbSH, NbTimeStep, 8, data);
generateConnectivities(SQ, NbSQ, NbTimeStep, 4, data); smoothList(SI, NbSI, NbTimeStep, 6, data);
generateConnectivities(SS, NbSS, NbTimeStep, 4, data); smoothList(SY, NbSY, NbTimeStep, 5, data);
generateConnectivities(SH, NbSH, NbTimeStep, 8, data); xyzv::eps = old_eps;
generateConnectivities(SI, NbSI, NbTimeStep, 6, data); finalize();
generateConnectivities(SY, NbSY, NbTimeStep, 5, data);
smoothList(SL, NbSL, Min, Max, TimeStepMin, TimeStepMax, NbTimeStep, 2, data);
smoothList(ST, NbST, Min, Max, TimeStepMin, TimeStepMax, NbTimeStep, 3, data);
smoothList(SQ, NbSQ, Min, Max, TimeStepMin, TimeStepMax, NbTimeStep, 4, data);
smoothList(SS, NbSS, Min, Max, TimeStepMin, TimeStepMax, NbTimeStep, 4, data);
smoothList(SH, NbSH, Min, Max, TimeStepMin, TimeStepMax, NbTimeStep, 8, data);
smoothList(SI, NbSI, Min, Max, TimeStepMin, TimeStepMax, NbTimeStep, 6, data);
smoothList(SY, NbSY, Min, Max, TimeStepMin, TimeStepMax, NbTimeStep, 5, data);
}
xyzv::eps = old_eps;
} }
bool PViewDataList::combineSpace(nameData &nd) bool PViewDataList::combineSpace(nameData &nd)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment