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

fix for sparse time steps

parent aa73f7a3
No related branches found
No related tags found
No related merge requests found
......@@ -40,7 +40,7 @@ StringXNumber *GMSH_CurlPlugin::getOption(int iopt)
PView *GMSH_CurlPlugin::execute(PView *v)
{
int iView = (int)CurlOptions_Number[0].def;
PView *v1 = getView(iView, v);
if(!v1) return v;
......@@ -52,20 +52,21 @@ PView *GMSH_CurlPlugin::execute(PView *v)
PView *v2 = new PView();
PViewDataList *data2 = getDataList(v2);
int firstNonEmptyStep = data1->getFirstNonEmptyTimeStep();
for(int ent = 0; ent < data1->getNumEntities(0); ent++){
for(int ele = 0; ele < data1->getNumElements(0, ent); ele++){
if(data1->skipElement(0, ent, ele)) continue;
int numComp = data1->getNumComponents(0, ent, ele);
for(int ent = 0; ent < data1->getNumEntities(firstNonEmptyStep); ent++){
for(int ele = 0; ele < data1->getNumElements(firstNonEmptyStep, ent); ele++){
if(data1->skipElement(firstNonEmptyStep, ent, ele)) continue;
int numComp = data1->getNumComponents(firstNonEmptyStep, ent, ele);
if(numComp != 3) continue;
int type = data1->getType(0, ent, ele);
int type = data1->getType(firstNonEmptyStep, ent, ele);
std::vector<double> *out = data2->incrementList(3, type);
if(!out) continue;
int numNodes = data1->getNumNodes(0, ent, ele);
int numNodes = data1->getNumNodes(firstNonEmptyStep, ent, ele);
double x[8], y[8], z[8], val[8 * 3];
for(int nod = 0; nod < numNodes; nod++)
data1->getNode(0, ent, ele, nod, x[nod], y[nod], z[nod]);
int dim = data1->getDimension(0, ent, ele);
data1->getNode(firstNonEmptyStep, ent, ele, nod, x[nod], y[nod], z[nod]);
int dim = data1->getDimension(firstNonEmptyStep, ent, ele);
elementFactory factory;
element *element = factory.create(numNodes, dim, x, y, z);
if(!element) continue;
......@@ -73,6 +74,7 @@ PView *GMSH_CurlPlugin::execute(PView *v)
for(int nod = 0; nod < numNodes; nod++) out->push_back(y[nod]);
for(int nod = 0; nod < numNodes; nod++) out->push_back(z[nod]);
for(int step = 0; step < data1->getNumTimeSteps(); step++){
if(!data1->hasTimeStep(step)) continue;
for(int nod = 0; nod < numNodes; nod++)
for(int comp = 0; comp < numComp; comp++)
data1->getValue(step, ent, ele, nod, comp, val[numComp * nod + comp]);
......@@ -90,12 +92,13 @@ PView *GMSH_CurlPlugin::execute(PView *v)
}
for(int i = 0; i < data1->getNumTimeSteps(); i++){
if(!data1->hasTimeStep(i)) continue;
double time = data1->getTime(i);
data2->Time.push_back(time);
}
data2->setName(data1->getName() + "_Curl");
data2->setFileName(data1->getName() + "_Curl.pos");
data2->finalize();
return v2;
}
......@@ -40,7 +40,7 @@ StringXNumber *GMSH_DivergencePlugin::getOption(int iopt)
PView *GMSH_DivergencePlugin::execute(PView *v)
{
int iView = (int)DivergenceOptions_Number[0].def;
PView *v1 = getView(iView, v);
if(!v1) return v;
......@@ -52,20 +52,21 @@ PView *GMSH_DivergencePlugin::execute(PView *v)
PView *v2 = new PView();
PViewDataList *data2 = getDataList(v2);
int firstNonEmptyStep = data1->getFirstNonEmptyTimeStep();
for(int ent = 0; ent < data1->getNumEntities(0); ent++){
for(int ele = 0; ele < data1->getNumElements(0, ent); ele++){
if(data1->skipElement(0, ent, ele)) continue;
int numComp = data1->getNumComponents(0, ent, ele);
for(int ent = 0; ent < data1->getNumEntities(firstNonEmptyStep); ent++){
for(int ele = 0; ele < data1->getNumElements(firstNonEmptyStep, ent); ele++){
if(data1->skipElement(firstNonEmptyStep, ent, ele)) continue;
int numComp = data1->getNumComponents(firstNonEmptyStep, ent, ele);
if(numComp != 3) continue;
int type = data1->getType(0, ent, ele);
int type = data1->getType(firstNonEmptyStep, ent, ele);
std::vector<double> *out = data2->incrementList(1, type);
if(!out) continue;
int numNodes = data1->getNumNodes(0, ent, ele);
int numNodes = data1->getNumNodes(firstNonEmptyStep, ent, ele);
double x[8], y[8], z[8], val[8 * 3];
for(int nod = 0; nod < numNodes; nod++)
data1->getNode(0, ent, ele, nod, x[nod], y[nod], z[nod]);
int dim = data1->getDimension(0, ent, ele);
data1->getNode(firstNonEmptyStep, ent, ele, nod, x[nod], y[nod], z[nod]);
int dim = data1->getDimension(firstNonEmptyStep, ent, ele);
elementFactory factory;
element *element = factory.create(numNodes, dim, x, y, z);
if(!element) continue;
......@@ -73,6 +74,7 @@ PView *GMSH_DivergencePlugin::execute(PView *v)
for(int nod = 0; nod < numNodes; nod++) out->push_back(y[nod]);
for(int nod = 0; nod < numNodes; nod++) out->push_back(z[nod]);
for(int step = 0; step < data1->getNumTimeSteps(); step++){
if(!data1->hasTimeStep(step)) continue;
for(int nod = 0; nod < numNodes; nod++)
for(int comp = 0; comp < numComp; comp++)
data1->getValue(step, ent, ele, nod, comp, val[numComp * nod + comp]);
......@@ -88,6 +90,7 @@ PView *GMSH_DivergencePlugin::execute(PView *v)
}
for(int i = 0; i < data1->getNumTimeSteps(); i++){
if(!data1->hasTimeStep(i)) continue;
double time = data1->getTime(i);
data2->Time.push_back(time);
}
......
......@@ -40,7 +40,7 @@ StringXNumber *GMSH_GradientPlugin::getOption(int iopt)
PView *GMSH_GradientPlugin::execute(PView *v)
{
int iView = (int)GradientOptions_Number[0].def;
PView *v1 = getView(iView, v);
if(!v1) return v;
......@@ -52,20 +52,21 @@ PView *GMSH_GradientPlugin::execute(PView *v)
PView *v2 = new PView();
PViewDataList *data2 = getDataList(v2);
int firstNonEmptyStep = data1->getFirstNonEmptyTimeStep();
for(int ent = 0; ent < data1->getNumEntities(0); ent++){
for(int ele = 0; ele < data1->getNumElements(0, ent); ele++){
if(data1->skipElement(0, ent, ele)) continue;
int numComp = data1->getNumComponents(0, ent, ele);
for(int ent = 0; ent < data1->getNumEntities(firstNonEmptyStep); ent++){
for(int ele = 0; ele < data1->getNumElements(firstNonEmptyStep, ent); ele++){
if(data1->skipElement(firstNonEmptyStep, ent, ele)) continue;
int numComp = data1->getNumComponents(firstNonEmptyStep, ent, ele);
if(numComp != 1 && numComp != 3) continue;
int type = data1->getType(0, ent, ele);
int type = data1->getType(firstNonEmptyStep, ent, ele);
std::vector<double> *out = data2->incrementList((numComp == 1) ? 3 : 9, type);
if(!out) continue;
int numNodes = data1->getNumNodes(0, ent, ele);
int numNodes = data1->getNumNodes(firstNonEmptyStep, ent, ele);
double x[8], y[8], z[8], val[8 * 3];
for(int nod = 0; nod < numNodes; nod++)
data1->getNode(0, ent, ele, nod, x[nod], y[nod], z[nod]);
int dim = data1->getDimension(0, ent, ele);
data1->getNode(firstNonEmptyStep, ent, ele, nod, x[nod], y[nod], z[nod]);
int dim = data1->getDimension(firstNonEmptyStep, ent, ele);
elementFactory factory;
element *element = factory.create(numNodes, dim, x, y, z);
if(!element) continue;
......@@ -73,6 +74,7 @@ PView *GMSH_GradientPlugin::execute(PView *v)
for(int nod = 0; nod < numNodes; nod++) out->push_back(y[nod]);
for(int nod = 0; nod < numNodes; nod++) out->push_back(z[nod]);
for(int step = 0; step < data1->getNumTimeSteps(); step++){
if(!data1->hasTimeStep(step)) continue;
for(int nod = 0; nod < numNodes; nod++)
for(int comp = 0; comp < numComp; comp++)
data1->getValue(step, ent, ele, nod, comp, val[numComp * nod + comp]);
......@@ -92,12 +94,13 @@ PView *GMSH_GradientPlugin::execute(PView *v)
}
for(int i = 0; i < data1->getNumTimeSteps(); i++){
if(!data1->hasTimeStep(i)) continue;
double time = data1->getTime(i);
data2->Time.push_back(time);
}
data2->setName(data1->getName() + "_Gradient");
data2->setFileName(data1->getName() + "_Gradient.pos");
data2->finalize();
return v2;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment