mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-24 21:10:33 +05:00
closed modules
This commit is contained in:
parent
9a5261057f
commit
e2cf4ea591
@ -15,6 +15,7 @@ AC_DISABLE_STATIC
|
|||||||
|
|
||||||
AC_LANG([C++])
|
AC_LANG([C++])
|
||||||
AC_PROG_CXX
|
AC_PROG_CXX
|
||||||
|
AX_CXX_COMPILE_STDCXX_11
|
||||||
|
|
||||||
AC_OPENMP
|
AC_OPENMP
|
||||||
CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
|
CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
|
||||||
@ -147,13 +148,15 @@ AC_ARG_ENABLE([mkl],
|
|||||||
|
|
||||||
AM_PATH_PYTHON([3.2])
|
AM_PATH_PYTHON([3.2])
|
||||||
AX_PYTHON_DEVEL([>= '3.2'])
|
AX_PYTHON_DEVEL([>= '3.2'])
|
||||||
|
AX_BOOST_BASE([1.55])
|
||||||
|
AX_BOOST_PYTHON
|
||||||
|
|
||||||
pythonon=false
|
pythonon=false
|
||||||
AC_ARG_ENABLE([python],
|
AC_ARG_ENABLE([python],
|
||||||
[AS_HELP_STRING([--enable-python],[link boost python, necessary for ngsolve])],
|
[AS_HELP_STRING([--enable-python],[link boost python, necessary for ngsolve])],
|
||||||
[if test "$enableval" = yes; then pythonon=true; else pythonon=false; fi]
|
[if test "$enableval" = yes; then pythonon=true; else pythonon=false; fi]
|
||||||
[CXXFLAGS+=" $PYTHON_CPPFLAGS -DNGPYTHON"]
|
[CXXFLAGS+=" $PYTHON_CPPFLAGS -DNGPYTHON"]
|
||||||
[LDFLAGS+=" $PYTHON_LDFLAGS"]
|
[LDFLAGS+=" $PYTHON_LDFLAGS -l$BOOST_PYTHON_LIB"]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,7 +15,8 @@ libcsg_la_SOURCES = algprim.cpp brick.cpp \
|
|||||||
bspline2d.cpp csgeom.cpp csgparser.cpp curve2d.cpp edgeflw.cpp \
|
bspline2d.cpp csgeom.cpp csgparser.cpp curve2d.cpp edgeflw.cpp \
|
||||||
explicitcurve2d.cpp extrusion.cpp gencyl.cpp genmesh.cpp identify.cpp \
|
explicitcurve2d.cpp extrusion.cpp gencyl.cpp genmesh.cpp identify.cpp \
|
||||||
manifold.cpp meshsurf.cpp polyhedra.cpp revolution.cpp singularref.cpp \
|
manifold.cpp meshsurf.cpp polyhedra.cpp revolution.cpp singularref.cpp \
|
||||||
solid.cpp specpoin.cpp spline3d.cpp surface.cpp triapprox.cpp
|
solid.cpp specpoin.cpp spline3d.cpp surface.cpp triapprox.cpp zrefine.cpp \
|
||||||
|
python_csg.cpp
|
||||||
|
|
||||||
libcsg_la_LIBADD = $(top_builddir)/libsrc/meshing/libmesh.la
|
libcsg_la_LIBADD = $(top_builddir)/libsrc/meshing/libmesh.la
|
||||||
|
|
||||||
|
@ -1404,7 +1404,8 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
double Cone :: LocH (const Point<3> & p, double /* x */,
|
double Cone :: LocH (const Point<3> & p, double /* x */,
|
||||||
double /* c */, double hmax) const
|
double /* c */,
|
||||||
|
const MeshingParameters & mparam, double hmax) const
|
||||||
{
|
{
|
||||||
//double bloch = Surface::LocH (p, x, c, hmax);
|
//double bloch = Surface::LocH (p, x, c, hmax);
|
||||||
Vec<3> g;
|
Vec<3> g;
|
||||||
|
@ -341,7 +341,9 @@ namespace netgen
|
|||||||
virtual double HesseNorm () const;
|
virtual double HesseNorm () const;
|
||||||
|
|
||||||
virtual double LocH (const Point<3> & p, double x,
|
virtual double LocH (const Point<3> & p, double x,
|
||||||
double c, double hmax) const;
|
double c,
|
||||||
|
const MeshingParameters & mparam,
|
||||||
|
double hmax) const;
|
||||||
|
|
||||||
///
|
///
|
||||||
virtual Point<3> GetSurfacePoint () const;
|
virtual Point<3> GetSurfacePoint () const;
|
||||||
|
@ -511,9 +511,9 @@ namespace netgen
|
|||||||
return TCL_ERROR;
|
return TCL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
double globh = mparam.maxh;
|
// double globh = mparam.maxh;
|
||||||
for (int i = 1; i <= geometry->singedges.Size(); i++)
|
for (int i = 1; i <= geometry->singedges.Size(); i++)
|
||||||
geometry->singedges.Get(i)->SetMeshSize (*mesh, globh);
|
geometry->singedges.Get(i)->SetMeshSize (*mesh, 1e99 /* globh*/);
|
||||||
return TCL_OK;
|
return TCL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -529,9 +529,9 @@ namespace netgen
|
|||||||
return TCL_ERROR;
|
return TCL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
double globh = mparam.maxh;
|
// double globh = mparam.maxh;
|
||||||
for (int i = 1; i <= geometry->singpoints.Size(); i++)
|
for (int i = 1; i <= geometry->singpoints.Size(); i++)
|
||||||
geometry->singpoints.Get(i)->SetMeshSize (*mesh, globh);
|
geometry->singpoints.Get(i)->SetMeshSize (*mesh, 1e99 /* globh */ );
|
||||||
return TCL_OK;
|
return TCL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,8 +10,9 @@ namespace netgen
|
|||||||
|
|
||||||
EdgeCalculation ::
|
EdgeCalculation ::
|
||||||
EdgeCalculation (const CSGeometry & ageometry,
|
EdgeCalculation (const CSGeometry & ageometry,
|
||||||
Array<SpecialPoint> & aspecpoints)
|
Array<SpecialPoint> & aspecpoints,
|
||||||
: geometry(ageometry), specpoints(aspecpoints)
|
MeshingParameters & amparam)
|
||||||
|
: geometry(ageometry), specpoints(aspecpoints), mparam(amparam)
|
||||||
{
|
{
|
||||||
Box<3> bbox = geometry.BoundingBox();
|
Box<3> bbox = geometry.BoundingBox();
|
||||||
|
|
||||||
@ -698,8 +699,8 @@ namespace netgen
|
|||||||
// (*testout) << "geometry.GetSurface(s1) -> LocH (p, 3, 1, h) " << geometry.GetSurface(s1) -> LocH (p, 3, 1, h)
|
// (*testout) << "geometry.GetSurface(s1) -> LocH (p, 3, 1, h) " << geometry.GetSurface(s1) -> LocH (p, 3, 1, h)
|
||||||
// << " geometry.GetSurface(s2) -> LocH (p, 3, 1, h) " << geometry.GetSurface(s2) -> LocH (p, 3, 1, h) << endl;
|
// << " geometry.GetSurface(s2) -> LocH (p, 3, 1, h) " << geometry.GetSurface(s2) -> LocH (p, 3, 1, h) << endl;
|
||||||
|
|
||||||
loch = min2 (geometry.GetSurface(s1) -> LocH (p, 3, 1, h),
|
loch = min2 (geometry.GetSurface(s1) -> LocH (p, 3, 1, mparam, h),
|
||||||
geometry.GetSurface(s2) -> LocH (p, 3, 1, h));
|
geometry.GetSurface(s2) -> LocH (p, 3, 1, mparam, h));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -848,8 +849,8 @@ namespace netgen
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
loch = min2 (geometry.GetSurface(s1_rep) -> LocH (np, 3, 1, h),
|
loch = min2 (geometry.GetSurface(s1_rep) -> LocH (np, 3, 1, mparam, h),
|
||||||
geometry.GetSurface(s2_rep) -> LocH (np, 3, 1, h));
|
geometry.GetSurface(s2_rep) -> LocH (np, 3, 1, mparam, h));
|
||||||
loch = max2 (loch, mparam.minh);
|
loch = max2 (loch, mparam.minh);
|
||||||
|
|
||||||
if (uselocalh)
|
if (uselocalh)
|
||||||
@ -1736,7 +1737,7 @@ namespace netgen
|
|||||||
Vec<3> nv = s -> GetNormalVector (p1);
|
Vec<3> nv = s -> GetNormalVector (p1);
|
||||||
|
|
||||||
double hloc =
|
double hloc =
|
||||||
min2 (s->LocH (p1, 3, 1, h), mesh.GetH(p1));
|
min2 (s->LocH (p1, 3, 1, mparam, h), mesh.GetH(p1));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,10 +42,12 @@ namespace netgen
|
|||||||
int cntedge;
|
int cntedge;
|
||||||
|
|
||||||
double ideps;
|
double ideps;
|
||||||
|
MeshingParameters & mparam;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
EdgeCalculation (const CSGeometry & ageometry,
|
EdgeCalculation (const CSGeometry & ageometry,
|
||||||
Array<SpecialPoint> & aspecpoints);
|
Array<SpecialPoint> & aspecpoints,
|
||||||
|
MeshingParameters & amparam);
|
||||||
|
|
||||||
~EdgeCalculation();
|
~EdgeCalculation();
|
||||||
|
|
||||||
|
@ -60,9 +60,10 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void FindEdges (CSGeometry & geom, Mesh & mesh, const bool setmeshsize = false)
|
static void FindEdges (CSGeometry & geom, Mesh & mesh, MeshingParameters & mparam,
|
||||||
|
const bool setmeshsize = false)
|
||||||
{
|
{
|
||||||
EdgeCalculation ec (geom, specpoints);
|
EdgeCalculation ec (geom, specpoints, mparam);
|
||||||
ec.SetIdEps(geom.GetIdEps());
|
ec.SetIdEps(geom.GetIdEps());
|
||||||
ec.Calc (mparam.maxh, mesh);
|
ec.Calc (mparam.maxh, mesh);
|
||||||
|
|
||||||
@ -215,11 +216,11 @@ namespace netgen
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void MeshSurface (CSGeometry & geom, Mesh & mesh, MeshingParameters & mparam)
|
||||||
|
|
||||||
static void MeshSurface (CSGeometry & geom, Mesh & mesh)
|
|
||||||
{
|
{
|
||||||
const char * savetask = multithread.task;
|
const char * savetask = multithread.task;
|
||||||
multithread.task = "Surface meshing";
|
multithread.task = "Surface meshing";
|
||||||
@ -561,8 +562,7 @@ namespace netgen
|
|||||||
|
|
||||||
PrintMessage (3, (mesh.GetNSE() - oldnf), " elements, ", mesh.GetNP(), " points");
|
PrintMessage (3, (mesh.GetNSE() - oldnf), " elements, ", mesh.GetNP(), " points");
|
||||||
|
|
||||||
extern void Render();
|
mparam.Render();
|
||||||
Render();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mesh.Compress();
|
mesh.Compress();
|
||||||
@ -639,8 +639,7 @@ namespace netgen
|
|||||||
PrintMessage (3, (mesh.GetNSE() - oldnf), " elements, ", mesh.GetNP(), " points");
|
PrintMessage (3, (mesh.GetNSE() - oldnf), " elements, ", mesh.GetNP(), " points");
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void Render();
|
mparam.Render();
|
||||||
Render();
|
|
||||||
}
|
}
|
||||||
while (changed);
|
while (changed);
|
||||||
|
|
||||||
@ -709,7 +708,7 @@ namespace netgen
|
|||||||
|
|
||||||
if (perfstepsstart <= MESHCONST_MESHEDGES)
|
if (perfstepsstart <= MESHCONST_MESHEDGES)
|
||||||
{
|
{
|
||||||
FindEdges (geom, *mesh, true);
|
FindEdges (geom, *mesh, mparam, true);
|
||||||
if (multithread.terminate) return TCL_OK;
|
if (multithread.terminate) return TCL_OK;
|
||||||
#ifdef LOG_STREAM
|
#ifdef LOG_STREAM
|
||||||
(*logout) << "Edges meshed" << endl
|
(*logout) << "Edges meshed" << endl
|
||||||
@ -728,14 +727,14 @@ namespace netgen
|
|||||||
|
|
||||||
FindPoints (geom, *mesh);
|
FindPoints (geom, *mesh);
|
||||||
if (multithread.terminate) return TCL_OK;
|
if (multithread.terminate) return TCL_OK;
|
||||||
FindEdges (geom, *mesh, true);
|
FindEdges (geom, *mesh, mparam, true);
|
||||||
if (multithread.terminate) return TCL_OK;
|
if (multithread.terminate) return TCL_OK;
|
||||||
|
|
||||||
mesh->DeleteMesh();
|
mesh->DeleteMesh();
|
||||||
|
|
||||||
FindPoints (geom, *mesh);
|
FindPoints (geom, *mesh);
|
||||||
if (multithread.terminate) return TCL_OK;
|
if (multithread.terminate) return TCL_OK;
|
||||||
FindEdges (geom, *mesh);
|
FindEdges (geom, *mesh, mparam);
|
||||||
if (multithread.terminate) return TCL_OK;
|
if (multithread.terminate) return TCL_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -746,7 +745,7 @@ namespace netgen
|
|||||||
|
|
||||||
if (perfstepsstart <= MESHCONST_MESHSURFACE)
|
if (perfstepsstart <= MESHCONST_MESHSURFACE)
|
||||||
{
|
{
|
||||||
MeshSurface (geom, *mesh);
|
MeshSurface (geom, *mesh, mparam);
|
||||||
if (multithread.terminate) return TCL_OK;
|
if (multithread.terminate) return TCL_OK;
|
||||||
|
|
||||||
#ifdef LOG_STREAM
|
#ifdef LOG_STREAM
|
||||||
@ -762,10 +761,10 @@ namespace netgen
|
|||||||
|
|
||||||
FindPoints (geom, *mesh);
|
FindPoints (geom, *mesh);
|
||||||
if (multithread.terminate) return TCL_OK;
|
if (multithread.terminate) return TCL_OK;
|
||||||
FindEdges (geom, *mesh);
|
FindEdges (geom, *mesh, mparam);
|
||||||
if (multithread.terminate) return TCL_OK;
|
if (multithread.terminate) return TCL_OK;
|
||||||
|
|
||||||
MeshSurface (geom, *mesh);
|
MeshSurface (geom, *mesh, mparam);
|
||||||
if (multithread.terminate) return TCL_OK;
|
if (multithread.terminate) return TCL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ Meshing2Surfaces :: Meshing2Surfaces (const Surface & asurface)
|
|||||||
Meshing2Surfaces :: Meshing2Surfaces (const Surface & asurf,
|
Meshing2Surfaces :: Meshing2Surfaces (const Surface & asurf,
|
||||||
const MeshingParameters & mp,
|
const MeshingParameters & mp,
|
||||||
const Box<3> & abb)
|
const Box<3> & abb)
|
||||||
: Meshing2(mp, abb), surface(asurf)
|
: Meshing2(mp, abb), surface(asurf), mparam (mp)
|
||||||
{
|
{
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
@ -58,7 +58,7 @@ int Meshing2Surfaces :: TransformFromPlain (Point2d & planepoint,
|
|||||||
|
|
||||||
double Meshing2Surfaces :: CalcLocalH (const Point3d & p, double gh) const
|
double Meshing2Surfaces :: CalcLocalH (const Point3d & p, double gh) const
|
||||||
{
|
{
|
||||||
return surface.LocH (p, 3, 1, gh);
|
return surface.LocH (p, 3, 1, mparam, gh);
|
||||||
/*
|
/*
|
||||||
double loch = mesh.lochfunc->GetH(p);
|
double loch = mesh.lochfunc->GetH(p);
|
||||||
if (gh < loch) loch = gh;
|
if (gh < loch) loch = gh;
|
||||||
|
@ -9,7 +9,9 @@ namespace netgen
|
|||||||
{
|
{
|
||||||
///
|
///
|
||||||
const Surface & surface;
|
const Surface & surface;
|
||||||
|
|
||||||
|
/// should be movec to base ...
|
||||||
|
const MeshingParameters & mparam;
|
||||||
public:
|
public:
|
||||||
///
|
///
|
||||||
// Meshing2Surfaces (const Surface & asurf);
|
// Meshing2Surfaces (const Surface & asurf);
|
||||||
|
95
libsrc/csg/python_csg.cpp
Normal file
95
libsrc/csg/python_csg.cpp
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
#include <boost/python.hpp>
|
||||||
|
|
||||||
|
#include <csg.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
using namespace netgen;
|
||||||
|
namespace bp = boost::python;
|
||||||
|
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
// Lambda to function pointer conversion
|
||||||
|
template <typename Function>
|
||||||
|
struct function_traits
|
||||||
|
: public function_traits<decltype(&Function::operator())> {};
|
||||||
|
|
||||||
|
template <typename ClassType, typename ReturnType, typename... Args>
|
||||||
|
struct function_traits<ReturnType(ClassType::*)(Args...) const> {
|
||||||
|
typedef ReturnType (*pointer)(Args...);
|
||||||
|
typedef ReturnType return_type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename Function>
|
||||||
|
typename function_traits<Function>::pointer
|
||||||
|
FunctionPointer (const Function& lambda) {
|
||||||
|
return static_cast<typename function_traits<Function>::pointer>(lambda);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
inline string ToString (const T& t)
|
||||||
|
{
|
||||||
|
stringstream ss;
|
||||||
|
ss << t;
|
||||||
|
return ss.str();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
namespace netgen
|
||||||
|
{
|
||||||
|
extern CSGeometry * ParseCSG (istream & istr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExportCSG()
|
||||||
|
{
|
||||||
|
|
||||||
|
std::string nested_name = "csg";
|
||||||
|
if( bp::scope() )
|
||||||
|
nested_name = bp::extract<std::string>(bp::scope().attr("__name__") + ".csg");
|
||||||
|
|
||||||
|
bp::object module(bp::handle<>(bp::borrowed(PyImport_AddModule(nested_name.c_str()))));
|
||||||
|
|
||||||
|
cout << "exporting csg " << nested_name << endl;
|
||||||
|
bp::object parent = bp::scope() ? bp::scope() : bp::import("__main__");
|
||||||
|
parent.attr("csg") = module ;
|
||||||
|
|
||||||
|
bp::scope local_scope(module);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
bp::class_<CSGeometry, boost::noncopyable> ("CSGeometry")
|
||||||
|
.def("__init__", bp::make_constructor (FunctionPointer
|
||||||
|
([](const string & filename)
|
||||||
|
{
|
||||||
|
cout << "load geometry";
|
||||||
|
ifstream ist(filename);
|
||||||
|
shared_ptr<CSGeometry> geom(ParseCSG(ist));
|
||||||
|
geom -> FindIdenticSurfaces(1e-8 * geom->MaxSize());
|
||||||
|
return geom;
|
||||||
|
})))
|
||||||
|
.add_property ("ntlo", &CSGeometry::GetNTopLevelObjects)
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
bp::def("GenerateMesh", FunctionPointer
|
||||||
|
([](CSGeometry & geo, MeshingParameters & param)
|
||||||
|
{
|
||||||
|
Mesh * dummy = NULL;
|
||||||
|
cout << "Genrate Mesh, params = "; // << param << endl;
|
||||||
|
geo.GenerateMesh (dummy, param, 0, 6);
|
||||||
|
return shared_ptr<Mesh> (dummy);
|
||||||
|
}));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BOOST_PYTHON_MODULE(libcsg) {
|
||||||
|
ExportCSG();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
|||||||
namespace netgen
|
namespace netgen
|
||||||
{
|
{
|
||||||
|
|
||||||
extern DLL_HEADER MeshingParameters mparam;
|
// extern DLL_HEADER MeshingParameters mparam;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
@ -163,8 +163,9 @@ MaxCurvatureLoc (const Point<3> & /* c */ , double /* rad */) const
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
double Surface :: LocH (const Point<3> & p, double x,
|
double Surface :: LocH (const Point<3> & p, double x, double c,
|
||||||
double c, double hmax) const
|
const MeshingParameters & mparam,
|
||||||
|
double hmax) const
|
||||||
// finds h <= hmax, s.t. h * \kappa_x*h < c
|
// finds h <= hmax, s.t. h * \kappa_x*h < c
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -176,7 +176,9 @@ namespace netgen
|
|||||||
\[ h \times \kappa (x) \leq c \qquad \mbox{in} B(x, h), \]
|
\[ h \times \kappa (x) \leq c \qquad \mbox{in} B(x, h), \]
|
||||||
where kappa(x) is the curvature in x. */
|
where kappa(x) is the curvature in x. */
|
||||||
virtual double LocH (const Point<3> & p, double x,
|
virtual double LocH (const Point<3> & p, double x,
|
||||||
double c, double hmax) const;
|
double c,
|
||||||
|
const MeshingParameters & mparam,
|
||||||
|
double hmax) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Gets Approximation by triangles,
|
Gets Approximation by triangles,
|
||||||
|
@ -61,7 +61,12 @@ void RunParallel ( void* (*fun)(void *), void * in)
|
|||||||
#else // For #ifdef _MSC_VER
|
#else // For #ifdef _MSC_VER
|
||||||
|
|
||||||
// #include <pthread.h>
|
// #include <pthread.h>
|
||||||
|
|
||||||
|
namespace netgen
|
||||||
|
{
|
||||||
|
MeshingParameters mparam;
|
||||||
|
}
|
||||||
|
|
||||||
static pthread_t meshingthread;
|
static pthread_t meshingthread;
|
||||||
void RunParallel ( void * (*fun)(void *), void * in)
|
void RunParallel ( void * (*fun)(void *), void * in)
|
||||||
{
|
{
|
||||||
@ -99,8 +104,6 @@ namespace netgen
|
|||||||
{
|
{
|
||||||
#include "writeuser.hpp"
|
#include "writeuser.hpp"
|
||||||
|
|
||||||
MeshingParameters mparam;
|
|
||||||
|
|
||||||
// global variable mesh (should not be used in libraries)
|
// global variable mesh (should not be used in libraries)
|
||||||
AutoPtr<Mesh> mesh;
|
AutoPtr<Mesh> mesh;
|
||||||
// NetgenGeometry * ng_geometry = NULL; // new NetgenGeometry;
|
// NetgenGeometry * ng_geometry = NULL; // new NetgenGeometry;
|
||||||
|
@ -35,6 +35,8 @@ namespace netgen
|
|||||||
{
|
{
|
||||||
#include "writeuser.hpp"
|
#include "writeuser.hpp"
|
||||||
|
|
||||||
|
extern MeshingParameters & mparam;
|
||||||
|
|
||||||
// Global arrays used to maintain the owner, neighbour and face lists
|
// Global arrays used to maintain the owner, neighbour and face lists
|
||||||
// so that they are accessible across functions
|
// so that they are accessible across functions
|
||||||
static Array<int> owner_facelist;
|
static Array<int> owner_facelist;
|
||||||
|
@ -20,7 +20,7 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
void WriteDiffPackFormat (const Mesh & mesh,
|
void WriteDiffPackFormat (const Mesh & mesh,
|
||||||
const CSGeometry & geom,
|
const NetgenGeometry & geom,
|
||||||
const string & filename)
|
const string & filename)
|
||||||
{
|
{
|
||||||
// double scale = globflags.GetNumFlag ("scale", 1);
|
// double scale = globflags.GetNumFlag ("scale", 1);
|
||||||
|
@ -17,10 +17,11 @@ namespace netgen
|
|||||||
{
|
{
|
||||||
#include "writeuser.hpp"
|
#include "writeuser.hpp"
|
||||||
|
|
||||||
|
extern MeshingParameters & mparam;
|
||||||
|
|
||||||
|
|
||||||
void WriteElmerFormat (const Mesh &mesh,
|
void WriteElmerFormat (const Mesh &mesh,
|
||||||
const string &filename)
|
const string &filename)
|
||||||
{
|
{
|
||||||
cout << "write elmer mesh files" << endl;
|
cout << "write elmer mesh files" << endl;
|
||||||
int np = mesh.GetNP();
|
int np = mesh.GetNP();
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
namespace netgen
|
namespace netgen
|
||||||
{
|
{
|
||||||
|
|
||||||
|
extern MeshingParameters & mparam;
|
||||||
|
|
||||||
#include "writeuser.hpp"
|
#include "writeuser.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ namespace netgen
|
|||||||
{
|
{
|
||||||
#include "writeuser.hpp"
|
#include "writeuser.hpp"
|
||||||
|
|
||||||
|
extern MeshingParameters & mparam;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -30,8 +31,8 @@ namespace netgen
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
void WriteGmshFormat (const Mesh & mesh,
|
void WriteGmshFormat (const Mesh & mesh,
|
||||||
const CSGeometry & geom,
|
const NetgenGeometry & geom,
|
||||||
const string & filename)
|
const string & filename)
|
||||||
{
|
{
|
||||||
ofstream outfile (filename.c_str());
|
ofstream outfile (filename.c_str());
|
||||||
outfile.precision(6);
|
outfile.precision(6);
|
||||||
|
@ -25,6 +25,8 @@ namespace netgen
|
|||||||
{
|
{
|
||||||
#include "writeuser.hpp"
|
#include "writeuser.hpp"
|
||||||
|
|
||||||
|
extern MeshingParameters & mparam;
|
||||||
|
|
||||||
// Mapping of entities from Netgen definitions to GMSH definitions
|
// Mapping of entities from Netgen definitions to GMSH definitions
|
||||||
enum GMSH_ELEMENTS {GMSH_TRIG = 2, GMSH_TRIG6 = 9,
|
enum GMSH_ELEMENTS {GMSH_TRIG = 2, GMSH_TRIG6 = 9,
|
||||||
GMSH_QUAD = 3, GMSH_QUAD8 = 16,
|
GMSH_QUAD = 3, GMSH_QUAD8 = 16,
|
||||||
@ -46,7 +48,7 @@ namespace netgen
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void WriteGmsh2Format (const Mesh & mesh,
|
void WriteGmsh2Format (const Mesh & mesh,
|
||||||
const CSGeometry & geom,
|
const NetgenGeometry & geom,
|
||||||
const string & filename)
|
const string & filename)
|
||||||
{
|
{
|
||||||
ofstream outfile (filename.c_str());
|
ofstream outfile (filename.c_str());
|
||||||
|
@ -16,7 +16,7 @@ namespace netgen
|
|||||||
#include "writeuser.hpp"
|
#include "writeuser.hpp"
|
||||||
|
|
||||||
void WriteJCMFormat (const Mesh & mesh,
|
void WriteJCMFormat (const Mesh & mesh,
|
||||||
const CSGeometry & geom,
|
const NetgenGeometry & geom,
|
||||||
const string & filename)
|
const string & filename)
|
||||||
{
|
{
|
||||||
if (mesh.GetDimension() != 3)
|
if (mesh.GetDimension() != 3)
|
||||||
|
@ -14,6 +14,8 @@ namespace netgen
|
|||||||
{
|
{
|
||||||
#include "writeuser.hpp"
|
#include "writeuser.hpp"
|
||||||
|
|
||||||
|
extern MeshingParameters & mparam;
|
||||||
|
|
||||||
|
|
||||||
void RegisterUserFormats (Array<const char*> & names,
|
void RegisterUserFormats (Array<const char*> & names,
|
||||||
Array<const char*> & extensions)
|
Array<const char*> & extensions)
|
||||||
@ -157,7 +159,7 @@ bool WriteUserFormat (const string & format,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
void WriteNeutralFormat (const Mesh & mesh,
|
void WriteNeutralFormat (const Mesh & mesh,
|
||||||
const CSGeometry & geom,
|
const NetgenGeometry & geom,
|
||||||
const string & filename)
|
const string & filename)
|
||||||
{
|
{
|
||||||
cout << "write neutral, new" << endl;
|
cout << "write neutral, new" << endl;
|
||||||
@ -617,7 +619,7 @@ void WriteVRMLFormat (const Mesh & mesh,
|
|||||||
* FEPP .. a finite element package developed at University Linz, Austria
|
* FEPP .. a finite element package developed at University Linz, Austria
|
||||||
*/
|
*/
|
||||||
void WriteFEPPFormat (const Mesh & mesh,
|
void WriteFEPPFormat (const Mesh & mesh,
|
||||||
const CSGeometry & geom,
|
const NetgenGeometry & geom,
|
||||||
const string & filename)
|
const string & filename)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -708,7 +710,7 @@ void WriteFEPPFormat (const Mesh & mesh,
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
// write CSG surfaces
|
// write CSG surfaces
|
||||||
if (&geom && geom.GetNSurf() >= ns)
|
if (&geom && geom.GetNSurf() >= ns)
|
||||||
{
|
{
|
||||||
@ -717,6 +719,7 @@ void WriteFEPPFormat (const Mesh & mesh,
|
|||||||
geom.GetSurface(mesh.GetFaceDescriptor(i).SurfNr())->Print(outfile);
|
geom.GetSurface(mesh.GetFaceDescriptor(i).SurfNr())->Print(outfile);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
*/
|
||||||
outfile << "0" << endl;
|
outfile << "0" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -747,7 +750,7 @@ void WriteFEPPFormat (const Mesh & mesh,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
void WriteEdgeElementFormat (const Mesh & mesh,
|
void WriteEdgeElementFormat (const Mesh & mesh,
|
||||||
const CSGeometry & geom,
|
const NetgenGeometry & geom,
|
||||||
const string & filename)
|
const string & filename)
|
||||||
{
|
{
|
||||||
cout << "write edge element format" << endl;
|
cout << "write edge element format" << endl;
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
extern
|
extern
|
||||||
void WriteFile (int typ,
|
void WriteFile (int typ,
|
||||||
const Mesh & mesh,
|
const Mesh & mesh,
|
||||||
const CSGeometry & geom,
|
const NetgenGeometry & geom,
|
||||||
const char * filename,
|
const char * filename,
|
||||||
const char * geomfile = NULL,
|
const char * geomfile = NULL,
|
||||||
double h = 0);
|
double h = 0);
|
||||||
@ -29,7 +29,7 @@ void ReadFile (Mesh & mesh,
|
|||||||
|
|
||||||
extern
|
extern
|
||||||
void WriteNeutralFormat (const Mesh & mesh,
|
void WriteNeutralFormat (const Mesh & mesh,
|
||||||
const CSGeometry & geom,
|
const NetgenGeometry & geom,
|
||||||
const string & filename);
|
const string & filename);
|
||||||
|
|
||||||
extern
|
extern
|
||||||
@ -57,19 +57,19 @@ void WriteVRMLFormat (const Mesh & mesh,
|
|||||||
|
|
||||||
extern
|
extern
|
||||||
void WriteFEPPFormat (const Mesh & mesh,
|
void WriteFEPPFormat (const Mesh & mesh,
|
||||||
const CSGeometry & geom,
|
const NetgenGeometry & geom,
|
||||||
const string & filename);
|
const string & filename);
|
||||||
|
|
||||||
extern
|
extern
|
||||||
void WriteGmshFormat (const Mesh & mesh,
|
void WriteGmshFormat (const Mesh & mesh,
|
||||||
const CSGeometry & geom,
|
const NetgenGeometry & geom,
|
||||||
const string & filename);
|
const string & filename);
|
||||||
|
|
||||||
|
|
||||||
// Philippose - 29/01/2009
|
// Philippose - 29/01/2009
|
||||||
// Added GMSH v2.xx Mesh Export support
|
// Added GMSH v2.xx Mesh Export support
|
||||||
void WriteGmsh2Format (const Mesh & mesh,
|
void WriteGmsh2Format (const Mesh & mesh,
|
||||||
const CSGeometry & geom,
|
const NetgenGeometry & geom,
|
||||||
const string & filename);
|
const string & filename);
|
||||||
|
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ void WriteGmsh2Format (const Mesh & mesh,
|
|||||||
extern
|
extern
|
||||||
void WriteOpenFOAM15xFormat (const Mesh & mesh,
|
void WriteOpenFOAM15xFormat (const Mesh & mesh,
|
||||||
const string & casename,
|
const string & casename,
|
||||||
const bool compressed);
|
const bool compressed);
|
||||||
|
|
||||||
|
|
||||||
extern
|
extern
|
||||||
@ -87,13 +87,13 @@ void WriteUserChemnitz (const Mesh & mesh,
|
|||||||
|
|
||||||
extern
|
extern
|
||||||
void WriteJCMFormat (const Mesh & mesh,
|
void WriteJCMFormat (const Mesh & mesh,
|
||||||
const CSGeometry & geom,
|
const NetgenGeometry & geom,
|
||||||
const string & filename);
|
const string & filename);
|
||||||
|
|
||||||
|
|
||||||
extern
|
extern
|
||||||
void WriteDiffPackFormat (const Mesh & mesh,
|
void WriteDiffPackFormat (const Mesh & mesh,
|
||||||
const CSGeometry & geom,
|
const NetgenGeometry & geom,
|
||||||
const string & filename);
|
const string & filename);
|
||||||
|
|
||||||
extern
|
extern
|
||||||
@ -102,7 +102,7 @@ void WriteTochnogFormat (const Mesh & mesh,
|
|||||||
|
|
||||||
extern
|
extern
|
||||||
void WriteTecPlotFormat (const Mesh & mesh,
|
void WriteTecPlotFormat (const Mesh & mesh,
|
||||||
const CSGeometry & geom,
|
const NetgenGeometry & geom,
|
||||||
const string & filename);
|
const string & filename);
|
||||||
|
|
||||||
extern
|
extern
|
||||||
@ -128,7 +128,7 @@ void WriteElmerFormat (const Mesh & mesh,
|
|||||||
|
|
||||||
extern
|
extern
|
||||||
void WriteEdgeElementFormat (const Mesh & mesh,
|
void WriteEdgeElementFormat (const Mesh & mesh,
|
||||||
const CSGeometry & geom,
|
const NetgenGeometry & geom,
|
||||||
const string & filename);
|
const string & filename);
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,8 +27,9 @@ libmesh_la_SOURCES = adfront2.cpp adfront3.cpp bisect.cpp boundarylayer.cpp \
|
|||||||
pyramid2rls.cpp pyramidrls.cpp quadrls.cpp refine.cpp \
|
pyramid2rls.cpp pyramidrls.cpp quadrls.cpp refine.cpp \
|
||||||
ruler2.cpp ruler3.cpp secondorder.cpp smoothing2.5.cpp \
|
ruler2.cpp ruler3.cpp secondorder.cpp smoothing2.5.cpp \
|
||||||
smoothing2.cpp smoothing3.cpp specials.cpp tetrarls.cpp \
|
smoothing2.cpp smoothing3.cpp specials.cpp tetrarls.cpp \
|
||||||
topology.cpp triarls.cpp validate.cpp zrefine.cpp bcfunctions.cpp \
|
topology.cpp triarls.cpp validate.cpp bcfunctions.cpp \
|
||||||
parallelmesh.cpp paralleltop.cpp paralleltop.hpp basegeom.cpp
|
parallelmesh.cpp paralleltop.cpp paralleltop.hpp basegeom.cpp \
|
||||||
|
python_mesh.cpp
|
||||||
|
|
||||||
libmesh_la_LIBADD = $(top_builddir)/libsrc/linalg/libla.la \
|
libmesh_la_LIBADD = $(top_builddir)/libsrc/linalg/libla.la \
|
||||||
$(top_builddir)/libsrc/gprim/libgprim.la \
|
$(top_builddir)/libsrc/gprim/libgprim.la \
|
||||||
|
@ -1909,7 +1909,7 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void BisectTetsCopyMesh (Mesh & mesh, const class CSGeometry *,
|
void BisectTetsCopyMesh (Mesh & mesh, const NetgenGeometry *,
|
||||||
BisectionOptions & opt,
|
BisectionOptions & opt,
|
||||||
const Array< Array<int,PointIndex::BASE>* > & idmaps,
|
const Array< Array<int,PointIndex::BASE>* > & idmaps,
|
||||||
const string & refinfofile)
|
const string & refinfofile)
|
||||||
|
@ -23,12 +23,8 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
extern void BisectTets (Mesh &, const CSGeometry *,
|
|
||||||
BisectionOptions & opt);
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern void BisectTetsCopyMesh (Mesh &, const class CSGeometry *,
|
extern void BisectTetsCopyMesh (Mesh &, const NetgenGeometry *,
|
||||||
BisectionOptions & opt);
|
BisectionOptions & opt);
|
||||||
|
|
||||||
extern void ZRefinement (Mesh &, const class NetgenGeometry *,
|
extern void ZRefinement (Mesh &, const class NetgenGeometry *,
|
||||||
|
@ -27,6 +27,35 @@ namespace netgen
|
|||||||
|
|
||||||
string ngdir = ".";
|
string ngdir = ".";
|
||||||
|
|
||||||
|
// parallel netgen
|
||||||
|
int id = 0, ntasks = 1;
|
||||||
|
|
||||||
|
|
||||||
|
void Ng_PrintDest(const char * s)
|
||||||
|
{
|
||||||
|
if (id == 0)
|
||||||
|
(*mycout) << s << flush;
|
||||||
|
}
|
||||||
|
|
||||||
|
DLL_HEADER void MyError(const char * ch)
|
||||||
|
{
|
||||||
|
cout << ch;
|
||||||
|
(*testout) << "Error !!! " << ch << endl << flush;
|
||||||
|
}
|
||||||
|
|
||||||
|
static clock_t starttimea;
|
||||||
|
void ResetTime ()
|
||||||
|
{
|
||||||
|
starttimea = clock();
|
||||||
|
}
|
||||||
|
|
||||||
|
double GetTime ()
|
||||||
|
{
|
||||||
|
return double(clock() - starttimea) / CLOCKS_PER_SEC;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Array<int> tets_in_qualclass;
|
Array<int> tets_in_qualclass;
|
||||||
|
|
||||||
int h_argc = 0;
|
int h_argc = 0;
|
||||||
|
@ -773,12 +773,20 @@ namespace netgen
|
|||||||
|
|
||||||
void Mesh :: Load (const string & filename)
|
void Mesh :: Load (const string & filename)
|
||||||
{
|
{
|
||||||
|
cout << "filename = " << filename << endl;
|
||||||
|
istream * infile = NULL;
|
||||||
|
|
||||||
ifstream infile(filename.c_str());
|
if (filename.find(".vol.gz") != string::npos)
|
||||||
if (!infile.good())
|
infile = new igzstream (filename.c_str());
|
||||||
|
else
|
||||||
|
infile = new ifstream (filename.c_str());
|
||||||
|
|
||||||
|
// ifstream infile(filename.c_str());
|
||||||
|
if (! (infile -> good()) )
|
||||||
throw NgException ("mesh file not found");
|
throw NgException ("mesh file not found");
|
||||||
|
|
||||||
Load(infile);
|
Load(*infile);
|
||||||
|
delete infile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -786,7 +794,6 @@ namespace netgen
|
|||||||
|
|
||||||
void Mesh :: Load (istream & infile)
|
void Mesh :: Load (istream & infile)
|
||||||
{
|
{
|
||||||
|
|
||||||
char str[100];
|
char str[100];
|
||||||
int i, n;
|
int i, n;
|
||||||
|
|
||||||
@ -798,11 +805,11 @@ namespace netgen
|
|||||||
facedecoding.SetSize(0);
|
facedecoding.SetSize(0);
|
||||||
|
|
||||||
bool endmesh = false;
|
bool endmesh = false;
|
||||||
|
|
||||||
|
|
||||||
while (infile.good() && !endmesh)
|
while (infile.good() && !endmesh)
|
||||||
{
|
{
|
||||||
infile >> str;
|
infile >> str;
|
||||||
|
|
||||||
if (strcmp (str, "dimension") == 0)
|
if (strcmp (str, "dimension") == 0)
|
||||||
{
|
{
|
||||||
infile >> dimension;
|
infile >> dimension;
|
||||||
|
@ -14,7 +14,7 @@ namespace netgen
|
|||||||
{
|
{
|
||||||
// extern int printmessage_importance;
|
// extern int printmessage_importance;
|
||||||
|
|
||||||
class CSGeometry;
|
// class CSGeometry;
|
||||||
class NetgenGeometry;
|
class NetgenGeometry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -749,7 +749,7 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
void SaveVolumeMesh (const Mesh & mesh,
|
void SaveVolumeMesh (const Mesh & mesh,
|
||||||
const CSGeometry & geometry,
|
const NetgenGeometry & geometry,
|
||||||
char * filename)
|
char * filename)
|
||||||
{
|
{
|
||||||
INDEX i;
|
INDEX i;
|
||||||
|
@ -38,7 +38,7 @@ extern void SaveVolumeMesh (
|
|||||||
|
|
||||||
///
|
///
|
||||||
void SaveVolumeMesh (const Mesh & mesh,
|
void SaveVolumeMesh (const Mesh & mesh,
|
||||||
const class CSGeometry & geometry,
|
const class NetgenGeometry & geometry,
|
||||||
char * filename);
|
char * filename);
|
||||||
|
|
||||||
///
|
///
|
||||||
|
@ -1104,6 +1104,13 @@ namespace netgen
|
|||||||
void Print (ostream & ost) const;
|
void Print (ostream & ost) const;
|
||||||
|
|
||||||
void CopyFrom(const MeshingParameters & other);
|
void CopyFrom(const MeshingParameters & other);
|
||||||
|
|
||||||
|
void (*render_function)() = NULL;
|
||||||
|
void Render()
|
||||||
|
{
|
||||||
|
if (render_function)
|
||||||
|
(*render_function)();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
125
libsrc/meshing/python_mesh.cpp
Normal file
125
libsrc/meshing/python_mesh.cpp
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
#include <boost/python.hpp>
|
||||||
|
|
||||||
|
#include <mystdlib.h>
|
||||||
|
#include "meshing.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
using namespace netgen;
|
||||||
|
namespace bp = boost::python;
|
||||||
|
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
// Lambda to function pointer conversion
|
||||||
|
template <typename Function>
|
||||||
|
struct function_traits
|
||||||
|
: public function_traits<decltype(&Function::operator())> {};
|
||||||
|
|
||||||
|
template <typename ClassType, typename ReturnType, typename... Args>
|
||||||
|
struct function_traits<ReturnType(ClassType::*)(Args...) const> {
|
||||||
|
typedef ReturnType (*pointer)(Args...);
|
||||||
|
typedef ReturnType return_type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename Function>
|
||||||
|
typename function_traits<Function>::pointer
|
||||||
|
FunctionPointer (const Function& lambda) {
|
||||||
|
return static_cast<typename function_traits<Function>::pointer>(lambda);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
inline string ToString (const T& t)
|
||||||
|
{
|
||||||
|
stringstream ss;
|
||||||
|
ss << t;
|
||||||
|
return ss.str();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
void ExportArray ()
|
||||||
|
{
|
||||||
|
string name = string("Array_") + typeid(T).name();
|
||||||
|
bp::class_<Array<T>,boost::noncopyable>(name.c_str())
|
||||||
|
.def ("__len__", &Array<T>::Size)
|
||||||
|
.def ("__getitem__",
|
||||||
|
FunctionPointer ([](Array<T> & self, int i) -> T&
|
||||||
|
{
|
||||||
|
if (i < 0 || i >= self.Size())
|
||||||
|
bp::exec("raise IndexError()\n");
|
||||||
|
return self[i];
|
||||||
|
}),
|
||||||
|
bp::return_value_policy<bp::reference_existing_object>())
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void ExportNetgenMeshing()
|
||||||
|
{
|
||||||
|
|
||||||
|
std::string nested_name = "meshing";
|
||||||
|
if( bp::scope() )
|
||||||
|
nested_name = bp::extract<std::string>(bp::scope().attr("__name__") + ".meshing");
|
||||||
|
|
||||||
|
bp::object module(bp::handle<>(bp::borrowed(PyImport_AddModule(nested_name.c_str()))));
|
||||||
|
|
||||||
|
cout << "exporting meshing " << nested_name << endl;
|
||||||
|
bp::object parent = bp::scope() ? bp::scope() : bp::import("__main__");
|
||||||
|
parent.attr("meshing") = module ;
|
||||||
|
|
||||||
|
bp::scope local_scope(module);
|
||||||
|
|
||||||
|
bp::class_<PointIndex>("PointId")
|
||||||
|
.def("__repr__", &ToString<PointIndex>)
|
||||||
|
.def("__str__", &ToString<PointIndex>)
|
||||||
|
.add_property("nr", &PointIndex::operator int)
|
||||||
|
;
|
||||||
|
|
||||||
|
bp::class_<Element>("Element3D")
|
||||||
|
.add_property("vertices",
|
||||||
|
FunctionPointer ([](const Element & self) -> bp::list
|
||||||
|
{
|
||||||
|
bp::list li;
|
||||||
|
for (int i = 0; i < self.GetNV(); i++)
|
||||||
|
li.append (self[i]);
|
||||||
|
return li;
|
||||||
|
}))
|
||||||
|
;
|
||||||
|
|
||||||
|
ExportArray<Element>();
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
bp::class_<Mesh,shared_ptr<Mesh>,boost::noncopyable>("Mesh")
|
||||||
|
.def("__str__", &ToString<Mesh>)
|
||||||
|
.def("Load", static_cast<void(Mesh::*)(const string & name)>(&Mesh::Load))
|
||||||
|
.def("Save", static_cast<void(Mesh::*)(const string & name)const>(&Mesh::Save))
|
||||||
|
|
||||||
|
.def("Elements3D",
|
||||||
|
static_cast<Array<Element>&(Mesh::*)()> (& &Mesh::VolumeElements),
|
||||||
|
bp::return_value_policy<bp::reference_existing_object>())
|
||||||
|
|
||||||
|
/*
|
||||||
|
.def("Elements2D", &Mesh::SurfaceElements,
|
||||||
|
bp::return_value_policy<bp::reference_existing_object>())
|
||||||
|
*/
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
bp::class_<MeshingParameters> ("MeshingParameters")
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BOOST_PYTHON_MODULE(libmesh) {
|
||||||
|
ExportNetgenMeshing();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1172,7 +1172,7 @@ FuncDeriv (const Vector & x, const Vector & dir, double & deriv) const
|
|||||||
|
|
||||||
|
|
||||||
#ifdef SOLIDGEOMxxxx
|
#ifdef SOLIDGEOMxxxx
|
||||||
void Mesh :: ImproveMesh (const CSGeometry & geometry, OPTIMIZEGOAL goal)
|
void Mesh :: ImproveMesh (const CSG eometry & geometry, OPTIMIZEGOAL goal)
|
||||||
{
|
{
|
||||||
INDEX i, eli;
|
INDEX i, eli;
|
||||||
int j;
|
int j;
|
||||||
|
@ -11,10 +11,12 @@
|
|||||||
#include <boost/python.hpp>
|
#include <boost/python.hpp>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
namespace netgen
|
namespace netgen
|
||||||
{
|
{
|
||||||
int id = 0, ntasks = 1;
|
int id = 0, ntasks = 1;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
#ifdef PARALLEL
|
#ifdef PARALLEL
|
||||||
#include <mpi.h>
|
#include <mpi.h>
|
||||||
|
11
ng/ngpkg.cpp
11
ng/ngpkg.cpp
@ -36,6 +36,7 @@ extern bool nodisplay;
|
|||||||
|
|
||||||
namespace netgen
|
namespace netgen
|
||||||
{
|
{
|
||||||
|
extern MeshingParameters mparam;
|
||||||
#include "../libsrc/interface/writeuser.hpp"
|
#include "../libsrc/interface/writeuser.hpp"
|
||||||
#include "demoview.hpp"
|
#include "demoview.hpp"
|
||||||
}
|
}
|
||||||
@ -156,7 +157,7 @@ namespace netgen
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
DLL_HEADER void MyError(const char * ch)
|
DLL_HEADER void MyError2(const char * ch)
|
||||||
{
|
{
|
||||||
cout << ch;
|
cout << ch;
|
||||||
(*testout) << "Error !!! " << ch << endl << flush;
|
(*testout) << "Error !!! " << ch << endl << flush;
|
||||||
@ -164,13 +165,13 @@ namespace netgen
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
static clock_t starttimea;
|
static clock_t starttimea;
|
||||||
void ResetTime ()
|
void ResetTime2 ()
|
||||||
{
|
{
|
||||||
starttimea = clock();
|
starttimea = clock();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef SMALLLIB
|
#ifndef SMALLLIB
|
||||||
DLL_HEADER double GetTime ()
|
DLL_HEADER double GetTime2 ()
|
||||||
{
|
{
|
||||||
return double(clock() - starttimea) / CLOCKS_PER_SEC;
|
return double(clock() - starttimea) / CLOCKS_PER_SEC;
|
||||||
}
|
}
|
||||||
@ -1127,6 +1128,7 @@ namespace netgen
|
|||||||
{
|
{
|
||||||
mparam.maxh = atof (Tcl_GetVar (interp, "::options.meshsize", 0));
|
mparam.maxh = atof (Tcl_GetVar (interp, "::options.meshsize", 0));
|
||||||
mparam.minh = atof (Tcl_GetVar (interp, "::options.minmeshsize", 0));
|
mparam.minh = atof (Tcl_GetVar (interp, "::options.minmeshsize", 0));
|
||||||
|
|
||||||
mparam.meshsizefilename = Tcl_GetVar (interp, "::options.meshsizefilename", 0);
|
mparam.meshsizefilename = Tcl_GetVar (interp, "::options.meshsizefilename", 0);
|
||||||
if (!strlen (mparam.meshsizefilename))
|
if (!strlen (mparam.meshsizefilename))
|
||||||
mparam.meshsizefilename = NULL;
|
mparam.meshsizefilename = NULL;
|
||||||
@ -1356,6 +1358,9 @@ namespace netgen
|
|||||||
|
|
||||||
multithread.running = 1;
|
multithread.running = 1;
|
||||||
multithread.terminate = 0;
|
multithread.terminate = 0;
|
||||||
|
|
||||||
|
extern void Render();
|
||||||
|
mparam.render_function = &Render;
|
||||||
|
|
||||||
for (int i = 0; i < geometryregister.Size(); i++)
|
for (int i = 0; i < geometryregister.Size(); i++)
|
||||||
geometryregister[i] -> SetParameters (interp);
|
geometryregister[i] -> SetParameters (interp);
|
||||||
|
@ -45,11 +45,12 @@ namespace netgen
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
namespace netgen
|
namespace netgen
|
||||||
{
|
{
|
||||||
int id = 0, ntasks = 1;
|
int id = 0, ntasks = 1;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1176,7 +1177,7 @@ namespace netgen
|
|||||||
{
|
{
|
||||||
char geomfilename[255];
|
char geomfilename[255];
|
||||||
|
|
||||||
DLL_HEADER void MyError (const char * ch)
|
DLL_HEADER void MyError2 (const char * ch)
|
||||||
{
|
{
|
||||||
cerr << ch;
|
cerr << ch;
|
||||||
}
|
}
|
||||||
@ -1185,7 +1186,7 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
//Destination for messages, errors, ...
|
//Destination for messages, errors, ...
|
||||||
DLL_HEADER void Ng_PrintDest(const char * s)
|
DLL_HEADER void Ng_PrintDest2(const char * s)
|
||||||
{
|
{
|
||||||
#ifdef PARALLEL
|
#ifdef PARALLEL
|
||||||
int id = 0;
|
int id = 0;
|
||||||
@ -1196,13 +1197,12 @@ namespace netgen
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
DLL_HEADER double GetTime ()
|
DLL_HEADER double GetTime ()
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user