<div dir="ltr">On Tue, Jun 25, 2013 at 4:56 PM, Ted Sariyski <span dir="ltr"><<a href="mailto:tsariysk@craft-tech.com" target="_blank">tsariysk@craft-tech.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I wrote an unstructured vector finite element electromagnetic solver, which among other modules, includes domain decomposition and (complex) GMRES solver. Now I am working on improvements and I would like to migrate the code to PETSc. I am new with PETSc. I am still working through the examples, trying to figure out a 'proper' entry point for integration. My current understanding is that domain decomposition and the assembly will remain outside PETSs. I already have the global-to-local/local-to-<u></u>global data structures built. My difficulty is to figure out how to translate them to PETSc compliant format. I'll highly appreciate if somebody points me to examples illustrating how to translate a FEM problem to PETSc.<br>

</blockquote><div><br></div><div>Let me outline some options, and give you my recommendations:</div><div><br></div><div>  a) Use PETSc linear algebra</div><div><br></div><div>This means using PETSc vectors, which is very easy, and using PETSc matrices, which is just a little harder. There is a description of this in previous tutorials in the "PETSc Integration" section. Once you use PETSc linear algebra, you have access to all Krylov solvers, and some preconditioners like ILU or Chebychev. This is a fine way to proceed, but does not integrate well with any multilevel solvers except AMG.</div>
<div><br></div><div style>  b) Create your own DMShell</div><div style><br></div><div style>The DM class is used to organize assembly and hierarchy. Our solvers take a DM (KSPSetDM, SNESSetDM, TSSetDM), and can use it to form the residual vector and Jacobian matrix. You can provide your own local-to-global mappings to the DM, so that more of the assembly organization is absorbed into the PETSc. This may simpligy your code, and also allow multilevel features in the future. Also, if you decide later to manage the grid using PETSc, this is the form it would take.</div>
<div style><br></div><div style>   Thanks,</div><div style><br></div><div style>       Matt</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thanks in advance,<br>
--Ted Sariyski<br>
Combustion Research and Flow Technology, Inc.<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>

-- Norbert Wiener
</div></div>