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

recode gradient for vector views

parent 51d979fa
No related branches found
No related tags found
No related merge requests found
// $Id: Gradient.cpp,v 1.16 2008-05-12 20:24:05 geuzaine Exp $ // $Id: Gradient.cpp,v 1.17 2008-06-06 19:14:35 geuzaine Exp $
// //
// Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
// //
...@@ -67,19 +67,35 @@ void GMSH_GradientPlugin::catchErrorMessage(char *errorMessage) const ...@@ -67,19 +67,35 @@ void GMSH_GradientPlugin::catchErrorMessage(char *errorMessage) const
strcpy(errorMessage, "Gradient failed..."); strcpy(errorMessage, "Gradient failed...");
} }
static List_T *incrementList(PViewDataList *data2, int numEdges) static List_T *incrementList(PViewDataList *data2, int numComp, int numEdges)
{ {
switch(numEdges){ if(numComp == 1){
case 0: data2->NbVP++; return data2->VP; switch(numEdges){
case 1: data2->NbVL++; return data2->VL; case 0: data2->NbVP++; return data2->VP;
case 3: data2->NbVT++; return data2->VT; case 1: data2->NbVL++; return data2->VL;
case 4: data2->NbVQ++; return data2->VQ; case 3: data2->NbVT++; return data2->VT;
case 6: data2->NbVS++; return data2->VS; case 4: data2->NbVQ++; return data2->VQ;
case 12: data2->NbVH++; return data2->VH; case 6: data2->NbVS++; return data2->VS;
case 9: data2->NbVI++; return data2->VI; case 12: data2->NbVH++; return data2->VH;
case 8: data2->NbVY++; return data2->VY; case 9: data2->NbVI++; return data2->VI;
default: return 0; case 8: data2->NbVY++; return data2->VY;
default: return 0;
}
}
else if(numComp == 3){
switch(numEdges){
case 0: data2->NbTP++; return data2->TP;
case 1: data2->NbTL++; return data2->TL;
case 3: data2->NbTT++; return data2->TT;
case 4: data2->NbTQ++; return data2->TQ;
case 6: data2->NbTS++; return data2->TS;
case 12: data2->NbTH++; return data2->TH;
case 9: data2->NbTI++; return data2->TI;
case 8: data2->NbTY++; return data2->TY;
default: return 0;
}
} }
return 0;
} }
PView *GMSH_GradientPlugin::execute(PView *v) PView *GMSH_GradientPlugin::execute(PView *v)
...@@ -102,9 +118,9 @@ PView *GMSH_GradientPlugin::execute(PView *v) ...@@ -102,9 +118,9 @@ PView *GMSH_GradientPlugin::execute(PView *v)
for(int ele = 0; ele < data1->getNumElements(0, ent); ele++){ for(int ele = 0; ele < data1->getNumElements(0, ent); ele++){
if(data1->skipElement(0, ent, ele)) continue; if(data1->skipElement(0, ent, ele)) continue;
int numComp = data1->getNumComponents(0, ent, ele); int numComp = data1->getNumComponents(0, ent, ele);
if(numComp != 1) continue; if(numComp != 1 && numComp != 3) continue;
int numEdges = data1->getNumEdges(0, ent, ele); int numEdges = data1->getNumEdges(0, ent, ele);
List_T *out = incrementList(data2, numEdges); List_T *out = incrementList(data2, numComp, numEdges);
if(!out) continue; if(!out) continue;
int numNodes = data1->getNumNodes(0, ent, ele); int numNodes = data1->getNumNodes(0, ent, ele);
double x[8], y[8], z[8], val[8 * 3]; double x[8], y[8], z[8], val[8 * 3];
...@@ -119,14 +135,17 @@ PView *GMSH_GradientPlugin::execute(PView *v) ...@@ -119,14 +135,17 @@ PView *GMSH_GradientPlugin::execute(PView *v)
for(int nod = 0; nod < numNodes; nod++) List_Add(out, &z[nod]); for(int nod = 0; nod < numNodes; nod++) List_Add(out, &z[nod]);
for(int step = 0; step < data1->getNumTimeSteps(); step++){ for(int step = 0; step < data1->getNumTimeSteps(); step++){
for(int nod = 0; nod < numNodes; nod++) for(int nod = 0; nod < numNodes; nod++)
data1->getValue(step, ent, ele, nod, 0, val[nod]); for(int comp = 0; comp < numComp; comp++)
data1->getValue(step, ent, ele, nod, comp, val[numComp * nod + comp]);
for(int nod = 0; nod < numNodes; nod++){ for(int nod = 0; nod < numNodes; nod++){
double u, v, w, f[3]; double u, v, w, f[3];
element->getNode(nod, u, v, w); element->getNode(nod, u, v, w);
element->interpolateGrad(val, u, v, w, f, 1); for(int comp = 0; comp < numComp; comp++){
List_Add(out, &f[0]); element->interpolateGrad(val + comp, u, v, w, f, numComp);
List_Add(out, &f[1]); List_Add(out, &f[0]);
List_Add(out, &f[2]); List_Add(out, &f[1]);
List_Add(out, &f[2]);
}
} }
} }
delete element; delete element;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment