> On 8 Oct 2017, at 04:35, phillip mobley <[email protected]> wrote: > > Hello all, > > I am attmepting to extract the code from the GMSH API that will be able to > create a 2D mesh. After looking through the code for a couple of days now, I > have a question about how the code is structed. > > So far, I have been commenting out the sections that deal with 3D. For > instance, removing any headers that include the SPoint3.h becuase I ma only > dealing with 2D.
I wouldn't do that. "2D" meshes in Gmsh are also generated on general (3D) surfaces. > > However, I have been getting the impression that the 2D case utilizes some of > the 3D data structures. At first, I thought that the data structures for 2D > are seperate from the 3D data structures. As in, if I wanted to mesh in 2D, > then I would only be worried about the data structures related to 2D meshing > (such as SPoint2.h). After examining the code for a bit though, I am worried > that this may not be the case. I am starting to get the feeling that the data > structures for the 3D (ex. SPoint3.h and SVector3.h) are also used in the 2D > meshing execpt, the z value is set to 0 (or another constant number if the > surface that the created mesh is on is an extruded surface). > > My question to the community or whoso ever may be able to answer is, does > GMSH utilize the data structures for 3D in a 2D meshing case? Even if the > mesh will always be in the x-y plane? Yes. As a general rule, with the current version of Gmsh I would only advise to use it as a library if you really need to, as there is no documented API. A stable API for programmers will be made available in the future (our goal is Gmsh 4.0); and this API will not expose any of the internal C++ classes that the algorithms use. Christophe > Or, does a 3D mesh exclusively use the 3D data structures (ex. SPoint3.h) and > a 2D mesh exclusivly uses the 2D data structures (ex. SPoint2)? > > Let me give another example to hopefully explain what I am asking. If you > look at the SOrientedBoundingBox.h (and corresponding .cpp file), there is a > class called SOrientedBoundingBox. The constructor for this class takes the > SVector3 class. In the GEntity class, there is an instance of the > SOrientedBoundaingBox. The constructor for the GEntity class even calls the > contructor of the SOrientedBoundingBox object. Since the SOrientedBoundingBox > class uses the SVector3 data type, I conclude that this class is used when > you need to create a 3D mesh. However, I am creating a 2D mesh. Will there > every be a case that the 2D mesher calls or utilizes the > SOrientedBoundingBox. Or, would the 2D mesher utilize the > SOrientedBoundingRectangle class? > > Also, as a bonus question, what is the purpose of the > SOrientedBoundingRectangle/SOrientedBoundingBox? Is this used for meshing or > is this mainly used in the GUI? How are these classes and what are their > purpose? I > > I will give a third example, in the GEdge class, there is a variable called > _normals. This is a mutable map of MVertex *and SVector3. Will the 2D meshing > case every need access to this data type? Or will this only be used in the 3D > meshing case? > > I hope that my explanation clearly explains the issue that I am having. If > not, please let me know. I would very much to make sure that I am clearly > explaining the issue that I am having. > > Thank you all for your time and I look forward to who so ever replies. > > > _______________________________________________ > gmsh mailing list > [email protected] > http://onelab.info/mailman/listinfo/gmsh -- Prof. Christophe Geuzaine University of Liege, Electrical Engineering and Computer Science http://www.montefiore.ulg.ac.be/~geuzaine Free software: http://gmsh.info | http://getdp.info | http://onelab.info _______________________________________________ gmsh mailing list [email protected] http://onelab.info/mailman/listinfo/gmsh
