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

new MinMax plugin

parent 4551bc74
Branches
Tags
No related merge requests found
......@@ -20,7 +20,7 @@ set(SRC
MakeSimplex.cpp
Integrate.cpp Gradient.cpp Curl.cpp Divergence.cpp
Annotate.cpp Remove.cpp
Probe.cpp
Probe.cpp MinMax.cpp
HarmonicToTime.cpp ModulusPhase.cpp
HomologyComputation.cpp
Distance.cpp ExtractEdges.cpp
......
// Gmsh - Copyright (C) 1997-2010 C. Geuzaine, J.-F. Remacle
//
// See the LICENSE.txt file for license information. Please report all
// bugs and problems to <gmsh@geuz.org>.
#include "MinMax.h"
#include "shapeFunctions.h"
#include "PViewOptions.h"
StringXNumber MinMaxOptions_Number[] = {
{GMSH_FULLRC, "View", NULL, -1.}
};
extern "C"
{
GMSH_Plugin *GMSH_RegisterMinMaxPlugin()
{
return new GMSH_MinMaxPlugin();
}
}
std::string GMSH_MinMaxPlugin::getHelp() const
{
return "Plugin(MinMax) computes the min/max of a view.\n\n"
"If `View' < 0, the plugin is run on the current view.\n\n"
"Plugin(MinMax) creates one new view.";
}
int GMSH_MinMaxPlugin::getNbOptions() const
{
return sizeof(MinMaxOptions_Number) / sizeof(StringXNumber);
}
StringXNumber *GMSH_MinMaxPlugin::getOption(int iopt)
{
return &MinMaxOptions_Number[iopt];
}
PView *GMSH_MinMaxPlugin::execute(PView * v)
{
int iView = (int)MinMaxOptions_Number[0].def;
PView *v1 = getView(iView, v);
if(!v1) return v;
PViewData *data1 = v1->getData();
PView *vMin = new PView();
PView *vMax = new PView();
PViewDataList *dataMin = getDataList(vMin);
PViewDataList *dataMax = getDataList(vMax);
double x = data1->getBoundingBox().center().x();
double y = data1->getBoundingBox().center().y();
double z = data1->getBoundingBox().center().z();
dataMin->SP.push_back(x); dataMin->SP.push_back(y); dataMin->SP.push_back(z);
dataMax->SP.push_back(x); dataMax->SP.push_back(y); dataMax->SP.push_back(z);
for(int step = 0; step < data1->getNumTimeSteps(); step++){
dataMin->SP.push_back(data1->getMin(step));
dataMax->SP.push_back(data1->getMax(step));
}
dataMin->NbSP = 1;
dataMax->NbSP = 1;
vMin->getOptions()->intervalsType = PViewOptions::Numeric;
vMax->getOptions()->intervalsType = PViewOptions::Numeric;
for(int i = 0; i < data1->getNumTimeSteps(); i++){
double time = data1->getTime(i);
dataMin->Time.push_back(time);
dataMax->Time.push_back(time);
}
dataMin->setName(data1->getName() + "_Min");
dataMin->setFileName(data1->getName() + "_Min.pos");
dataMin->finalize();
dataMax->setName(data1->getName() + "_Max");
dataMax->setFileName(data1->getName() + "_Max.pos");
dataMax->finalize();
return 0;
}
// Gmsh - Copyright (C) 1997-2010 C. Geuzaine, J.-F. Remacle
//
// See the LICENSE.txt file for license information. Please report all
// bugs and problems to <gmsh@geuz.org>.
#ifndef _MIN_MAX_H_
#define _MIN_MAX_H_
#include "Plugin.h"
extern "C"
{
GMSH_Plugin *GMSH_RegisterMinMaxPlugin();
}
class GMSH_MinMaxPlugin : public GMSH_PostPlugin
{
public:
GMSH_MinMaxPlugin(){}
std::string getName() const { return "MinMax"; }
std::string getShortHelp() const
{
return "Get the min/max of a dataset";
}
std::string getHelp() const;
int getNbOptions() const;
StringXNumber* getOption(int iopt);
PView *execute(PView *);
};
#endif
......@@ -23,6 +23,7 @@
#include "HarmonicToTime.h"
#include "ModulusPhase.h"
#include "Integrate.h"
#include "MinMax.h"
#include "Gradient.h"
#include "Curl.h"
#include "Divergence.h"
......@@ -186,6 +187,8 @@ void PluginManager::registerDefaultPlugins()
("ModulusPhase", GMSH_RegisterModulusPhasePlugin()));
allPlugins.insert(std::pair<std::string, GMSH_Plugin*>
("Integrate", GMSH_RegisterIntegratePlugin()));
allPlugins.insert(std::pair<std::string, GMSH_Plugin*>
("MinMax", GMSH_RegisterMinMaxPlugin()));
allPlugins.insert(std::pair<std::string, GMSH_Plugin*>
("Gradient", GMSH_RegisterGradientPlugin()));
allPlugins.insert(std::pair<std::string, GMSH_Plugin*>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment