diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp index f0e3b18e0ec5d337eb563598155b4911d8107d34..09b8c78e0c84f55ffd0424a6333290ef411fe361 100644 --- a/Common/CommandLine.cpp +++ b/Common/CommandLine.cpp @@ -1,4 +1,4 @@ -// $Id: CommandLine.cpp,v 1.99 2007-04-26 09:47:37 remacle Exp $ +// $Id: CommandLine.cpp,v 1.100 2007-05-05 02:08:57 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -83,6 +83,7 @@ void Print_Usage(char *name){ Msg(DIRECT, " -o file Specify mesh output file name"); Msg(DIRECT, " -format string Set output mesh format (msh, msh1, msh2, unv, vrml, stl, mesh,"); Msg(DIRECT, " bdf, p3d, cgns, med)"); + Msg(DIRECT, " -bin Use binary format when available"); Msg(DIRECT, " -algo string Select mesh algorithm (iso, netgen, tetgen)"); Msg(DIRECT, " -smooth int Set number of mesh smoothing steps"); Msg(DIRECT, " -optimize Optimize quality of tetrahedral elements"); @@ -425,6 +426,10 @@ void Get_Options(int argc, char *argv[]) exit(1); } } + else if(!strcmp(argv[i] + 1, "bin")) { + i++; + CTX.mesh.stl_binary = CTX.mesh.msh_binary = 1; + } else if(!strcmp(argv[i] + 1, "algo")) { i++; if(argv[i] != NULL) { diff --git a/Geo/GModelIO_Fourier.cpp b/Geo/GModelIO_Fourier.cpp index e70198ca8f5f98c673b1e763ccb05cad70bd56a9..91b4729dee5ee2a20ce6159fbfd7ded13ef68726 100644 --- a/Geo/GModelIO_Fourier.cpp +++ b/Geo/GModelIO_Fourier.cpp @@ -1,19 +1,101 @@ #include "GModel.h" -#include "fourierFace.h" +#include "GVertex.h" +#include "GEdge.h" +#include "GFace.h" #include "gmshFace.h" #include "Message.h" #include "Context.h" #include "Views.h" +#include "Range.h" +#include "model.h" +#include "meshGFace.h" extern Context_T CTX; #if defined(HAVE_FOURIER_MODEL) -#include "model.h" -#include "meshGFace.h" - static model *FM = 0; +class fourierVertex : public GVertex { + private: + MVertex *_v; + public: + fourierVertex(GModel *m, MVertex *v) : GVertex(m, v->getNum()), _v(v) + { + mesh_vertices.push_back(v); + } + virtual ~fourierVertex() {} + virtual GPoint point() const { return GPoint(_v->x(), _v->y(), _v->z(), this); } + virtual double x() const { return _v->x(); } + virtual double y() const { return _v->y(); } + virtual double z() const { return _v->z(); } + virtual double prescribedMeshSizeAtVertex() const { return 0.1; } + ModelType getNativeType() const { return FourierModel; } +}; + +class fourierEdge : public GEdge { + public: + fourierEdge(GModel *m, int num, GVertex *v1, GVertex *v2); + virtual ~fourierEdge() {} + double period() const { throw ; } + virtual bool periodic(int dim=0) const { return false; } + virtual Range<double> parBounds(int i) const { throw; } + virtual GeomType geomType() const { throw; } + virtual bool degenerate(int) const { return false; } + virtual bool continuous(int dim) const { return true; } + virtual GPoint point(double p) const { throw; } + virtual GPoint closestPoint(const SPoint3 & queryPoint) { throw; } + virtual int containsPoint(const SPoint3 &pt) const { throw; } + virtual int containsParam(double pt) const { throw; } + virtual SVector3 firstDer(double par) const { throw; } + virtual SPoint2 reparamOnFace(GFace * face, double epar, int dir) const { throw; } + virtual double parFromPoint(const SPoint3 &pt) const { throw; } + virtual int minimumMeshSegments () const { throw; } + virtual int minimumDrawSegments () const { throw; } + ModelType getNativeType() const { return FourierModel; } +}; + +class fourierFace : public GFace { + private: + // flag to know if is the face is already meshed + int _discrete; + // floag to know if the face is just a plane + int _plane; + // vertices and edges purely local to the face (not shared with the model) + GVertex *_v[4]; + GEdge *_e[4]; + public: + fourierFace(GModel *m, int num); + fourierFace(GFace *f, std::vector<MVertex*> &loop, std::vector<MVertex*> &hole); + virtual ~fourierFace(); + + void meshBoundary(); + + Range<double> parBounds(int i) const; + virtual int paramDegeneracies(int dir, double *par) { return 0; } + + virtual GPoint point(double par1, double par2) const; + virtual GPoint closestPoint(const SPoint3 & queryPoint) const ; + + virtual int containsPoint(const SPoint3 &pt) const; + virtual int containsParam(const SPoint2 &pt) const; + + virtual SVector3 normal(const SPoint2 ¶m) const; + virtual Pair<SVector3,SVector3> firstDer(const SPoint2 ¶m) const {throw;} + + virtual GEntity::GeomType geomType() const; + virtual int geomDirection() const { return 1; } + + virtual bool continuous(int dim) const { return true; } + virtual bool periodic(int dim) const { return false; } + virtual bool degenerate(int dim) const { return false; } + virtual double period(int dir) const {throw;} + ModelType getNativeType() const { return FourierModel; } + void * getNativePtr() const {throw;} + virtual bool surfPeriodic(int dim) const {throw;} + virtual SPoint2 parFromPoint(const SPoint3 &) const; +}; + void debugVertices(std::vector<MVertex*> &vertices, std::string file, bool parametric, int num=0) { diff --git a/Geo/fourierFace.h b/Geo/fourierFace.h deleted file mode 100644 index 0c56386f0ad299ffda90145982ab1524b7eff8d3..0000000000000000000000000000000000000000 --- a/Geo/fourierFace.h +++ /dev/null @@ -1,95 +0,0 @@ -#ifndef _FOURIER_MODEL_H_ -#define _FOURIER_MODEL_H_ - -#include "GModel.h" - -#if defined(HAVE_FOURIER_MODEL) - -#include "GVertex.h" -#include "GEdge.h" -#include "GFace.h" -#include "Range.h" - -class fourierVertex : public GVertex { - private: - MVertex *_v; - public: - fourierVertex(GModel *m, MVertex *v) : GVertex(m, v->getNum()), _v(v) - { - mesh_vertices.push_back(v); - } - virtual ~fourierVertex() {} - virtual GPoint point() const { return GPoint(_v->x(), _v->y(), _v->z(), this); } - virtual double x() const { return _v->x(); } - virtual double y() const { return _v->y(); } - virtual double z() const { return _v->z(); } - virtual double prescribedMeshSizeAtVertex() const { return 0.1; } - ModelType getNativeType() const { return FourierModel; } -}; - -class fourierEdge : public GEdge { - public: - fourierEdge(GModel *m, int num, GVertex *v1, GVertex *v2); - virtual ~fourierEdge() {} - double period() const { throw ; } - virtual bool periodic(int dim=0) const { return false; } - virtual Range<double> parBounds(int i) const { throw; } - virtual GeomType geomType() const { throw; } - virtual bool degenerate(int) const { return false; } - virtual bool continuous(int dim) const { return true; } - virtual GPoint point(double p) const { throw; } - virtual GPoint closestPoint(const SPoint3 & queryPoint) { throw; } - virtual int containsPoint(const SPoint3 &pt) const { throw; } - virtual int containsParam(double pt) const { throw; } - virtual SVector3 firstDer(double par) const { throw; } - virtual SPoint2 reparamOnFace(GFace * face, double epar, int dir) const { throw; } - virtual double parFromPoint(const SPoint3 &pt) const { throw; } - virtual int minimumMeshSegments () const { throw; } - virtual int minimumDrawSegments () const { throw; } - ModelType getNativeType() const { return FourierModel; } -}; - -class fourierFace : public GFace { - private: - // flag to know if is the face is already meshed - int _discrete; - // floag to know if the face is just a plane - int _plane; - // vertices and edges purely local to the face (not shared with the model) - GVertex *_v[4]; - GEdge *_e[4]; - public: - fourierFace(GModel *m, int num); - fourierFace(GFace *f, std::vector<MVertex*> &loop, std::vector<MVertex*> &hole); - virtual ~fourierFace(); - - void meshBoundary(); - - Range<double> parBounds(int i) const; - virtual int paramDegeneracies(int dir, double *par) { return 0; } - - virtual GPoint point(double par1, double par2) const; - virtual GPoint closestPoint(const SPoint3 & queryPoint) const ; - - virtual int containsPoint(const SPoint3 &pt) const; - virtual int containsParam(const SPoint2 &pt) const; - - virtual SVector3 normal(const SPoint2 ¶m) const; - virtual Pair<SVector3,SVector3> firstDer(const SPoint2 ¶m) const {throw;} - - virtual GEntity::GeomType geomType() const; - virtual int geomDirection() const { return 1; } - - virtual bool continuous(int dim) const { return true; } - virtual bool periodic(int dim) const { return false; } - virtual bool degenerate(int dim) const { return false; } - virtual double period(int dir) const {throw;} - ModelType getNativeType() const { return FourierModel; } - void * getNativePtr() const {throw;} - virtual bool surfPeriodic(int dim) const {throw;} - virtual SPoint2 parFromPoint(const SPoint3 &) const; -}; - -#endif - -#endif diff --git a/doc/texinfo/command_line.texi b/doc/texinfo/command_line.texi index a638438d0395a880a8f9390634e8552df7bf0b51..d8d5e241ea80a6e4d2d714b82493ead26ba7daf3 100644 --- a/doc/texinfo/command_line.texi +++ b/doc/texinfo/command_line.texi @@ -20,6 +20,8 @@ Save all elements (discard physical group definitions) Specify mesh output file name @item -format string Set output mesh format (msh, unv, vrml, stl, mesh, bdf, p3d, cgns, med) +@item -bin +Use binary format when available @item -algo string Select mesh algorithm (iso, netgen, tetgen) @item -smooth int