<div dir="ltr">Aron,<div><br></div><div>Thanks for the quick reply. It&#39;s really great that PETSc has such an awesome community.</div><div><br></div><div>Anyway, I am working on adaptive Cartesian grids for which I use Octree/Quadtree data structures. Naturally, then, I have components like cells, nodes, neighbors, child/parent, etc and my whole domain is consisted of arrays of these types. That is, if I happen to have 100 cells and 200 nodes, for example, I create an array for the whole domain by calling,</div>

<div><br></div><div>Array&lt;Cell&gt; *CellArray = new Array&lt;Cell&gt; [100];</div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div>Array&lt;Node&gt; *NodeArray = new Array&lt;Node&gt; [200];</div>

<div><br></div><div>Now the problem is I want to be able to distribute this in parallel and have an array of cells or nodes. I understand that one of doing this is to change my data structure such that is consistent with PETSc only accepting double. I was hoping I could prevent that by using a package that allow for templates. That being said, I am not an expert on PETSc by any measure! As a result I highly appreciate any ideas and comments if you think this is possible to do with PETSc.</div>

<div><br></div><div>All the best,</div><div>Mohammad<br><br><div class="gmail_quote">On Fri, Oct 29, 2010 at 10:44 PM, Aron Ahmadia <span dir="ltr">&lt;<a href="mailto:aron.ahmadia@kaust.edu.sa">aron.ahmadia@kaust.edu.sa</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Dear Mohammad,<br>
<br>
As a user of PETSc for the last 8 years, since my days as an<br>
undergraduate, and now as a professional staff scientist at a<br>
supercomputing center, I can say with some confidence that there are<br>
no codes like PETSc in C++ or any other language in terms of quality<br>
of implementation, documentation, and support.  Can you tell us a<br>
little more about your current implementation?  It is true that PETSc<br>
does not support multiple types in the same build, but you do get your<br>
choice of floating-point values and real or complex types.  Also,<br>
PETSc has several C++ components within it, and one of the supported<br>
ways of building it is in &#39;C++&#39; mode, see -c-language in the configure<br>
options.<br>
<br>
If you insist on departing us (we&#39;ll miss you), I suggest you look at<br>
Sandia&#39;s Trilinos package: <a href="http://trilinos.sandia.gov/" target="_blank">http://trilinos.sandia.gov/</a><br>
<br>
Good Luck,<br>
<font color="#888888">Aron<br>
</font><div><div></div><div class="h5"><br>
On Sat, Oct 30, 2010 at 7:54 AM, Mohammad Mirzadeh<br>
&lt;<a href="mailto:m.mirzadeh@engineering.ucsb.edu">m.mirzadeh@engineering.ucsb.edu</a>&gt; wrote:<br>
&gt; Dear all,<br>
&gt; I was wondering if anyone can refer me to a package similar to PETSc but<br>
&gt; that is written in c++? Right now I have a large code written in c++ for<br>
&gt; doing CFD simulations that I need to transform from serial to parallel.<br>
&gt; Initially I was thinking of PETSc and tried using it but found that PETSc is<br>
&gt; written in C and thus does not allow to have arrays (in parallel) of<br>
&gt; arbitrary type. I have a big data structure and it is much easier for me to<br>
&gt; retain the current structure and form of the code. As a result I was<br>
&gt; wondering if you guys know of any similar package in C++ ?(in the sense that<br>
&gt; it can provide with efficient linear solvers in parallel while hiding most<br>
&gt; of MPI from the user)<br>
&gt; I could think of HYPRE but then again I am not sure it is written in C++.<br>
&gt; Thanks,<br>
&gt; Mohammad<br>
</div></div></blockquote></div><br></div></div>