clean up geometry

This commit is contained in:
Joachim Schoeberl 2013-02-27 13:49:17 +00:00
parent 12ab3d7cce
commit 71f5a34c74
3 changed files with 28 additions and 111 deletions

View File

@ -69,6 +69,7 @@ namespace netgen
CSGeometry :: ~CSGeometry () CSGeometry :: ~CSGeometry ()
{ {
cout << "delete geometry" << endl;
Clean(); Clean();
} }
@ -83,16 +84,10 @@ namespace netgen
for (int i = 0; i < solids.Size(); i++) for (int i = 0; i < solids.Size(); i++)
if(!to_delete.Contains(solids[i])) if(!to_delete.Contains(solids[i]))
to_delete.Append(solids[i]); to_delete.Append(solids[i]);
for(int i = 0; i < to_delete.Size(); i++) for(int i = 0; i < to_delete.Size(); i++)
delete to_delete[i]; delete to_delete[i];
/*
for (int i = 0; i < solids.Size(); i++)
delete solids[i]->S1();
for (int i = 0; i < solids.Size(); i++)
delete solids[i];
*/
solids.DeleteAll (); solids.DeleteAll ();
for (int i = 0; i < splinecurves2d.Size(); i++) for (int i = 0; i < splinecurves2d.Size(); i++)
@ -108,7 +103,7 @@ namespace netgen
delete delete_them[i]; delete delete_them[i];
delete_them.DeleteAll(); delete_them.DeleteAll();
surfaces.DeleteAll(); surfaces.DeleteAll();
for (int i = 0; i < toplevelobjects.Size(); i++) for (int i = 0; i < toplevelobjects.Size(); i++)
delete toplevelobjects[i]; delete toplevelobjects[i];
toplevelobjects.DeleteAll (); toplevelobjects.DeleteAll ();

View File

@ -8,12 +8,6 @@
#include "../sockets/sockets.hpp" #include "../sockets/sockets.hpp"
#endif #endif
/*
#ifndef NOTCL
#include <visual.hpp>
#endif
*/
#include "nginterface.h" #include "nginterface.h"
#include "../visualization/soldata.hpp" #include "../visualization/soldata.hpp"
@ -120,11 +114,6 @@ namespace netgen
#endif #endif
#ifdef OPENGL
// extern VisualSceneSolution vssolution;
#endif
// extern CSGeometry * ParseCSG (istream & istr);
#ifdef SOCKETS #ifdef SOCKETS
extern AutoPtr<ClientSocket> clientsocket; extern AutoPtr<ClientSocket> clientsocket;
//extern Array< AutoPtr < ServerInfo > > servers; //extern Array< AutoPtr < ServerInfo > > servers;
@ -140,34 +129,25 @@ using namespace netgen;
void Ng_LoadGeometry (const char * filename) void Ng_LoadGeometry (const char * filename)
{ {
// he: if filename is empty, return
// can be used to reset geometry
if (!filename || strcmp(filename,"")==0)
{
ng_geometry.Reset (new NetgenGeometry());
return;
}
for (int i = 0; i < geometryregister.Size(); i++) for (int i = 0; i < geometryregister.Size(); i++)
{ {
NetgenGeometry * hgeom = geometryregister[i]->Load (filename); NetgenGeometry * hgeom = geometryregister[i]->Load (filename);
if (hgeom) if (hgeom)
{ {
/*
delete ng_geometry;
ng_geometry = hgeom;
*/
ng_geometry.Reset (hgeom); ng_geometry.Reset (hgeom);
mesh.Reset(); mesh.Reset();
return; return;
} }
} }
// he: if filename is empty, return
// can be used to reset geometry
if (strcmp(filename,"")==0)
{
/*
delete ng_geometry;
ng_geometry = new NetgenGeometry();
*/
ng_geometry.Reset (new NetgenGeometry());
return;
}
// if (id == 0) // if (id == 0)
cerr << "cannot load geometry '" << filename << "'" << ", id = " << id << endl; cerr << "cannot load geometry '" << filename << "'" << ", id = " << id << endl;
@ -184,10 +164,6 @@ void Ng_LoadMeshFromStream ( istream & input )
NetgenGeometry * hgeom = geometryregister[i]->LoadFromMeshFile (input); NetgenGeometry * hgeom = geometryregister[i]->LoadFromMeshFile (input);
if (hgeom) if (hgeom)
{ {
/*
delete ng_geometry;
ng_geometry = hgeom;
*/
ng_geometry.Reset (hgeom); ng_geometry.Reset (hgeom);
break; break;
} }
@ -415,21 +391,12 @@ NG_ELEMENT_TYPE Ng_GetElement (int ei, int * epi, int * np)
} }
else else
{ {
int i;
const Element2d & el = mesh->SurfaceElement (ei); const Element2d & el = mesh->SurfaceElement (ei);
for (i = 0; i < el.GetNP(); i++) for (int i = 0; i < el.GetNP(); i++)
epi[i] = el.PNum(i+1); epi[i] = el.PNum(i+1);
if (np) *np = el.GetNP(); if (np) *np = el.GetNP();
return NG_ELEMENT_TYPE (el.GetType()); return NG_ELEMENT_TYPE (el.GetType());
/*
switch (el.GetNP())
{
case 3: return NG_TRIG;
case 4: return NG_QUAD;
case 6: return NG_TRIG6;
}
*/
} }
// should not occur // should not occur
@ -823,56 +790,6 @@ void Ng_GetElementTransformation (int ei, const double * xi,
} }
#ifdef OLD
void Ng_GetBufferedElementTransformation (int ei, const double * xi,
double * x, double * dxdxi,
void * buffer, int buffervalid)
{
// buffer = 0;
// buffervalid = 0;
if (mesh->GetDimension() == 2)
{
return Ng_GetElementTransformation (ei, xi, x, dxdxi);
}
else
{
mesh->GetCurvedElements().CalcElementTransformation (reinterpret_cast<const Point<3> &> (*xi),
ei-1,
reinterpret_cast<Point<3> &> (*x),
reinterpret_cast<Mat<3,3> &> (*dxdxi),
buffer, (buffervalid != 0));
/*
Point<3> xl(xi[0], xi[1], xi[2]);
Point<3> xg;
Mat<3,3> dx;
// buffervalid = 0;
mesh->GetCurvedElements().CalcElementTransformation (xl, ei-1, xg, dx, buffer, buffervalid);
// still 1-based arrays
if (x)
{
for (int i = 0; i < 3; i++)
x[i] = xg(i);
}
if (dxdxi)
{
for (int i=0; i<3; i++)
{
dxdxi[3*i] = dx(i,0);
dxdxi[3*i+1] = dx(i,1);
dxdxi[3*i+2] = dx(i,2);
}
}
*/
}
}
#endif
void Ng_GetMultiElementTransformation (int ei, int n, void Ng_GetMultiElementTransformation (int ei, int n,

View File

@ -92,7 +92,7 @@ namespace netgen
} }
*/ */
extern NetgenGeometry * ng_geometry; extern AutoPtr<NetgenGeometry> ng_geometry;
extern AutoPtr<Mesh> mesh; extern AutoPtr<Mesh> mesh;
Tcl_Interp * tcl_interp; Tcl_Interp * tcl_interp;
@ -190,8 +190,11 @@ namespace netgen
if (strcmp (argv[1], "geom") == 0) if (strcmp (argv[1], "geom") == 0)
{ {
/*
delete ng_geometry; delete ng_geometry;
ng_geometry = new NetgenGeometry; ng_geometry = new NetgenGeometry;
*/
ng_geometry.Reset (new NetgenGeometry);
} }
return TCL_OK; return TCL_OK;
@ -219,7 +222,6 @@ namespace netgen
PrintMessage (1, "load mesh from file ", filename); PrintMessage (1, "load mesh from file ", filename);
mesh.Reset (new Mesh()); mesh.Reset (new Mesh());
try try
{ {
ifstream infile(filename.c_str()); ifstream infile(filename.c_str());
@ -235,8 +237,9 @@ namespace netgen
NetgenGeometry * hgeom = geometryregister[i]->LoadFromMeshFile (infile); NetgenGeometry * hgeom = geometryregister[i]->LoadFromMeshFile (infile);
if (hgeom) if (hgeom)
{ {
delete ng_geometry; // delete ng_geometry;
ng_geometry = hgeom; // ng_geometry = hgeom;
ng_geometry.Reset (hgeom);
break; break;
} }
} }
@ -286,8 +289,8 @@ namespace netgen
const string filename (argv[1]); const string filename (argv[1]);
PrintMessage (1, "Save mesh to file ", filename, ".... Please Wait!"); PrintMessage (1, "Save mesh to file ", filename, ".... Please Wait!");
ofstream outfile(filename.c_str()); // ofstream outfile(filename.c_str());
//ogzstream outfile( (filename+".gz").c_str()); ogzstream outfile( (filename+".gz").c_str());
mesh -> Save (outfile); mesh -> Save (outfile);
outfile << endl << endl << "endmesh" << endl << endl; outfile << endl << endl << "endmesh" << endl << endl;
@ -317,7 +320,7 @@ namespace netgen
try try
{ {
CSGeometry * geometry = dynamic_cast<CSGeometry*> (ng_geometry); CSGeometry * geometry = dynamic_cast<CSGeometry*> (ng_geometry.Ptr());
//mesh -> Merge (filename); //mesh -> Merge (filename);
ifstream infile(filename.c_str()); ifstream infile(filename.c_str());
@ -518,8 +521,9 @@ namespace netgen
NetgenGeometry * hgeom = geometryregister[i]->Load (lgfilename); NetgenGeometry * hgeom = geometryregister[i]->Load (lgfilename);
if (hgeom) if (hgeom)
{ {
delete ng_geometry; // delete ng_geometry;
ng_geometry = hgeom; // ng_geometry = hgeom;
ng_geometry.Reset (hgeom);
mesh.Reset(); mesh.Reset();
return TCL_OK; return TCL_OK;
@ -970,7 +974,7 @@ namespace netgen
if (argc >= 2) opt.minref = atoi (argv[1]); if (argc >= 2) opt.minref = atoi (argv[1]);
ZRefinement (*mesh, ng_geometry, opt); ZRefinement (*mesh, ng_geometry.Ptr(), opt);
return TCL_OK; return TCL_OK;
} }
@ -1277,7 +1281,7 @@ namespace netgen
{ {
ZRefinementOptions opt; ZRefinementOptions opt;
opt.minref = 5; opt.minref = 5;
ZRefinement (*mesh, ng_geometry, opt); ZRefinement (*mesh, ng_geometry.Ptr(), opt);
mesh -> SetNextMajorTimeStamp(); mesh -> SetNextMajorTimeStamp();
} }
@ -1801,7 +1805,7 @@ namespace netgen
{ {
for (int i = 0; i < geometryregister.Size(); i++) for (int i = 0; i < geometryregister.Size(); i++)
{ {
VisualScene * hvs = geometryregister[i]->GetVisualScene (ng_geometry); VisualScene * hvs = geometryregister[i]->GetVisualScene (ng_geometry.Ptr());
if (hvs) if (hvs)
{ {
vs = hvs; vs = hvs;
@ -3067,6 +3071,7 @@ void PlayAnimFile(const char* name, int speed, int maxcnt)
#endif #endif
mesh.Reset (NULL); mesh.Reset (NULL);
ng_geometry.Reset (NULL);
if (testout != &cout) if (testout != &cout)
delete testout; delete testout;