<div dir="ltr"><div><div><div><div><div><div><div>Hello Christophe,<br><br></div>thank you for taking the time to send a response.<br><br></div>My suspicion was correct then. As much as I would like to use GMSH as a library, I am not so sure it is the best idea for a user experience. I am creating this project as open source and I would like anyone to be able to compile and install the program with ease. I am not sure the skill level of the users who will use my program. For all I know, they could exclusively be familiar with GUI based simulators. Additional libraries to compile could be challenging to them. <br><br></div>With that in mind, I do not think that using GMSH as a library is the better option. Including the sources in with the main program though would be better.<br><br></div>Could you explain a little bit by what you mean that the " API will not expose any of the internal C++ classes that the algorithms use"? I am confused by this statement. The source would need to expose all of the classes that the program/algorithm uses or how would someone be able to compile the source?<br><br></div>I don't need to add in everything since I am dealing with only 2D meshes. Specifically quads. I am commenting out the functionality for the 3D meshes and ignoring those cases. For example, in some functions there are case-switch statements that are deal with 3D meshes. I am commenting those out as I do not need them.<br><br></div>Once I get something built and working, I would step through the code line by line in order to further refine what I don't need.<br><br></div>I do hope though that the documentation of the source will come sooner rather then later.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 10, 2017 at 11:25 AM, Christophe Geuzaine <span dir="ltr"><<a href="mailto:cgeuzaine@ulg.ac.be" target="_blank">cgeuzaine@ulg.ac.be</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
<br>
> On 8 Oct 2017, at 04:35, phillip mobley <<a href="mailto:phillipmobley2@gmail.com">phillipmobley2@gmail.com</a>> wrote:<br>
><br>
> Hello all,<br>
><br>
> 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.<br>
><br>
> 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.<br>
<br>
</span>I wouldn't do that. "2D" meshes in Gmsh are also generated on general (3D) surfaces.<br>
<span class=""><br>
><br>
> 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).<br>
><br>
> 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?<br>
<br>
</span>Yes.<br>
<br>
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.<br>
<br>
Christophe<br>
<span class=""><br>
<br>
> 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)?<br>
><br>
> 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?<br>
><br>
> Also, as a bonus question, what is the purpose of the SOrientedBoundingRectangle/<wbr>SOrientedBoundingBox? Is this used for meshing or is this mainly used in the GUI? How are these classes and what are their purpose? I<br>
><br>
> 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?<br>
><br>
> 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.<br>
><br>
> Thank you all for your time and I look forward to who so ever replies.<br>
><br>
><br>
</span>> ______________________________<wbr>_________________<br>
> gmsh mailing list<br>
> <a href="mailto:gmsh@onelab.info">gmsh@onelab.info</a><br>
> <a href="http://onelab.info/mailman/listinfo/gmsh" rel="noreferrer" target="_blank">http://onelab.info/mailman/<wbr>listinfo/gmsh</a><br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
--<br>
Prof. Christophe Geuzaine<br>
University of Liege, Electrical Engineering and Computer Science<br>
<a href="http://www.montefiore.ulg.ac.be/~geuzaine" rel="noreferrer" target="_blank">http://www.montefiore.ulg.ac.<wbr>be/~geuzaine</a><br>
<br>
Free software: <a href="http://gmsh.info" rel="noreferrer" target="_blank">http://gmsh.info</a> | <a href="http://getdp.info" rel="noreferrer" target="_blank">http://getdp.info</a> | <a href="http://onelab.info" rel="noreferrer" target="_blank">http://onelab.info</a><br>
<br>
</font></span></blockquote></div><br></div>