netgen/libsrc/meshing/basegeom.cpp

79 lines
1.6 KiB
C++
Raw Normal View History

2010-03-23 12:52:07 +00:00
#include <mystdlib.h>
#include "meshing.hpp"
namespace netgen
{
2013-02-06 12:55:20 +00:00
DLL_HEADER GeometryRegisterArray geometryregister;
2019-07-09 10:39:16 +02:00
//DLL_HEADER NgArray<GeometryRegister*> geometryregister;
2011-01-10 20:18:01 +00:00
GeometryRegister :: ~GeometryRegister()
{ ; }
shared_ptr<NetgenGeometry> GeometryRegisterArray :: LoadFromMeshFile (istream & ist) const
{
for (int i = 0; i < Size(); i++)
{
NetgenGeometry * hgeom = (*this)[i]->LoadFromMeshFile (ist);
if (hgeom)
return shared_ptr<NetgenGeometry>(hgeom);
}
return nullptr;
}
2011-01-10 20:18:01 +00:00
2010-03-23 12:52:07 +00:00
int NetgenGeometry :: GenerateMesh (shared_ptr<Mesh> & mesh, MeshingParameters & mparam)
2010-03-23 12:52:07 +00:00
{
if (!mesh) return 1;
if (mparam.perfstepsstart <= MESHCONST_MESHVOLUME)
2010-03-23 12:52:07 +00:00
{
multithread.task = "Volume meshing";
MESHING3_RESULT res =
MeshVolume (mparam, *mesh);
if (res != MESHING3_OK) return 1;
if (multithread.terminate) return 0;
RemoveIllegalElements (*mesh);
if (multithread.terminate) return 0;
MeshQuality3d (*mesh);
}
if (multithread.terminate || mparam.perfstepsend <= MESHCONST_MESHVOLUME)
2010-03-23 12:52:07 +00:00
return 0;
if (mparam.perfstepsstart <= MESHCONST_OPTVOLUME)
2010-03-23 12:52:07 +00:00
{
multithread.task = "Volume optimization";
OptimizeVolume (mparam, *mesh);
if (multithread.terminate) return 0;
}
return 0;
}
const Refinement & NetgenGeometry :: GetRefinement () const
{
return *new Refinement;;
}
2011-01-10 20:18:01 +00:00
void NetgenGeometry :: Save (string filename) const
{
throw NgException("Cannot save geometry - no geometry available");
}
2018-12-14 12:01:58 +01:00
static RegisterClassForArchive<NetgenGeometry> regnggeo;
2010-03-23 12:52:07 +00:00
}