<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Jul 10, 2015 at 2:56 PM, Marco Zocca <span dir="ltr"><<a href="mailto:zocca.marco@gmail.com" target="_blank">zocca.marco@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thank you for the reply;<br>
<br>
  let me improve my question: in e.g. a FEM code, we need:<br>
<br>
<br>
*) a mesh table :: [element -> [face -> [edge -> [node] ] ] ]<br>
<br>
*) one or more reference elements with associated basis over elements<br>
and/or faces and Jacobians, or a quadrature rule to represent<br>
integration over the real-space elements, for each element<br>
<br>
*) one or more scalar/tensor coefficients per element<br>
<br>
<br>
Assembly (in the simplest case) of the global matrix is then a single<br>
loop over elements.<br>
<br>
<br>
I would like to use the highest-level primitives for this task (I am<br>
tackling a stochastic PDE-constrained optimization problem, so<br>
complexity control and modularity is paramount ), could you provide<br>
some hints ?<br></blockquote><div><br></div><div>I try to organize things this way in SNES ex12, but there is a lot of associated</div><div>infrastructure, so it might not be all that easy to read. However, I orthogonalize</div><div>mesh topology from data layout from element specification from form integration</div><div>from assembly from solvers, so that you can change them independently.</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thank you again and kind regards,<br>
Marco<br>
<br>
<br>
<br>
<br>
<br>
<br>
>>    I'm looking for some non-optimized PETSc code; namely, I struggle a<br>
>> bit with generalizing the provided examples. On one hand inlined<br>
>> elementary operations help keep track of the FLOPs but make for<br>
>> hard-to read code.<br>
>><br>
<br>
><br>
> You can use MatSetValuesStencil() as is done here:<br>
><br>
> <a href="http://www.mcs.anl.gov/petsc/petsc-current/src/ksp/ksp/examples/tutorials/ex50.c.html" rel="noreferrer" target="_blank">http://www.mcs.anl.gov/petsc/petsc-current/src/ksp/ksp/examples/tutorials/ex50.c.html</a><br>
><br>
> on line 162.<br>
><br>
>><br>
<br>
>> , removed comments for space) we are interested in forming a matrix A<br>
>> from the values contained in a vector x; i.e. some 'map' operation<br>
>> that sweeps x and prepares rows of A at a time according to some fixed<br>
>> stencil, with separate treatment of boundary values .<br>
>><br>
>> Isn't there an idiom to abstract out this functionality? It's one of<br>
>> the most common operations in numerical PDE codes:<br>
><br>
><br>
> Actually, this is only common is toy example. Almost no real PDEs have a<br>
> fixed stencil<br>
> because you have material coefficients, or nonlinearities, or constraints,<br>
> etc.<br>
><br>
>    Matt<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">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></div>