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

levelset from postview !
parent 0e7846b7
No related branches found
No related tags found
No related merge requests found
......@@ -14,6 +14,8 @@
#include "DILevelset.h"
#include "mathEvaluator.h"
#include "PView.h"
#include "OctreePost.h"
class gLevelsetMathEval: public gLevelsetPrimitive
{
......@@ -36,7 +38,34 @@ public:
values[1] = y;
values[2] = z;
if(_expr->eval(values, res)) return res[0];
return 0.;
return 1.;
}
int type() const { return UNKNOWN; }
};
class gLevelsetPostView : public gLevelsetPrimitive
{
int _viewIndex;
OctreePost *_octree;
public:
gLevelsetPostView(int index, int &tag) : _viewIndex(index), gLevelsetPrimitive(tag)
{
if(_viewIndex >= 0 && _viewIndex < PView::list.size()){
PView *view = PView::list[_viewIndex];
_octree = new OctreePost(view);
}
else{
Msg::Error("Unknown View[%d] in PostView levelset", _viewIndex);
_octree = 0;
}
}
~gLevelsetPostView(){ if(_octree) delete _octree; }
virtual double operator () (const double &x, const double &y, const double &z) const
{
if(!_octree) return 1.;
double val = 1.;
_octree->searchScalar(x, y, z, &val, 0);
return val;
}
int type() const { return UNKNOWN; }
};
......
This diff is collapsed.
......@@ -1880,6 +1880,20 @@ LevelSet :
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
else if(!strcmp($2, "PostView")){
int t = (int)$4;
if(FindLevelSet(t)){
yymsg(0, "Levelset %d already exists", t);
}
else {
if(List_Nbr($7) > 0){
double d; List_Read($7, 0, &d);
gLevelset *ls = new gLevelsetPostView((int)d, t);
LevelSet *l = Create_LevelSet(ls->getTag(), ls);
Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l);
}
}
}
else
yymsg(0, "Wrong levelset definition (%d)", $4);
Free($2);
......
......@@ -27,13 +27,16 @@ Physical Line(400) = {4};
Mesh 2;
Merge "level.med";
Levelset Plane (1) = {0,-1,0,0.22};
Levelset Plane (2) = {-1,0,0,0.5};
Levelset Sphere (3) = {{0,0,0},0.75};
Levelset Ellipsoid (4) = { {0,0,0}, {1,0,0}, 0.55, 0.55, 0.75 };
Levelset Intersection (10) = {1,3};
Levelset PostView (11) = 0;
Levelset CutMesh {10};
Levelset CutMesh {11};
Physical Surface(1000) = {6};
Physical Surface(2000) = {7};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment