<div dir="ltr"><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Michaël Sghaïer</b> <span dir="ltr"><<a href="mailto:sghaier.michael@gmail.com">sghaier.michael@gmail.com</a>></span><br>Date: 2016-04-04 22:20 GMT-04:00<br>Subject: Re: [Dune-devel] [GSoC2016] Wrapper for the FieldMatrix class<br>To: Andreas Dedner <<a href="mailto:a.s.dedner@warwick.ac.uk">a.s.dedner@warwick.ac.uk</a>><br><br><br><div dir="ltr">Hi Andreas,<div><br></div><div>sorry for the delay, because of the university, I hadn't so much time this week...<br><div class="gmail_extra"><br></div><div class="gmail_extra">However, I took the time to read all the Boost.Python tutorial and thus, I learned some interesting things.</div></div><div class="gmail_extra"><br><div class="gmail_quote"><span class="">2016-03-27 5:56 GMT-04:00 Andreas Dedner <span dir="ltr"><<a href="mailto:a.s.dedner@warwick.ac.uk" target="_blank">a.s.dedner@warwick.ac.uk</a>></span>:</span><span class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I agree that we will have to think carefully about these details during<br>
the course of this project. Perhaps starting out with distinguishing<br>
different places where the FieldMatrix/Vectors are used. For example<br>
they are important for the grid geometry classes (used for the<br>
jacobianInverseTranspose method for example). Here the most important<br>
cases are n x n and then perhaps 1xn, nx1 and 2xn,nx2. If we can cover<br>
the most important cases that would already be helpful.<br>
<br>
Btw: I just came across this<br>
<br>
<a href="http://www.boost.org/doc/libs/1_57_0/libs/python/doc/v2/indexing.html#vector_indexing_suite" rel="noreferrer" target="_blank">http://www.boost.org/doc/libs/1_57_0/libs/python/doc/v2/indexing.html#vector_indexing_suite</a><br>
<br>
which might be of interest. I think FieldVector/Matrix do not quite<br>
satisfy the std::vector interface at the moment (I know for example that<br>
difference_t is missing) but perhaps we can add the missing items to the<br>
classes. This might provide quite a nice approach for the wrapping.<br></blockquote><div><br></div></span><div>I played a little with vector_indexing_suite and I am not sure if it is really worth. Indeed, to use it, you must have a class that basically derives from std::vector and thus, implements methods like erase, insert or push_back. That makes no sense because these methods modify the size of their vector and FieldVector/FieldMatrix have constant size defined at compile time.</div><div><br></div><div>But I agree with the need of "pythonic" wrappers and I gave some thoughts about it. I realized that Python generates a default iterator when a class implements the __getitem__ method. So that makes possible to iterate through a FieldVector like this:</div><div><br></div><div>>>> v = FieldVector3(3.14)</div><div>>>> from x in v:</div><div>...            print(x)</div><div>...</div><div>3.14</div><div>3.14</div><div>3.14</div><div>>>></div><div><br></div><div>Moreover, I think it would be nice to allow the user to initialize/modify a FieldVector (or a FieldMatrix) from a Python list of values. I am going to work on that to extend my previous junior jobs, that should be interesting.</div><div><br></div><div>Best,</div><div>Michaël</div></div></div></div></div></div>