<div dir="ltr"><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, May 21, 2014 at 3:44 PM, Jed Brown <span dir="ltr"><<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="">Christophe Ortiz <<a href="mailto:christophe.ortiz@ciemat.es">christophe.ortiz@ciemat.es</a>> writes:<br>

> In some sense, yes. I create and destroy inside FormIJacobian() (my<br>
> Jacobian evaluation routine). Therefore it is called at each timestep. I<br>
> guess this takes time. But it is slower than doing the many malloc.<br>
<br>
</div>What communicator (you should use VecCreateSeq)? </blockquote><div><br></div><div>I used:</div><div>  VecCreateSeq(PETSC_COMM_SELF,dof*dof,&X);<br></div><div><br></div><div>inside FormIJacobian()</div><div><br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"> Be sure to profile a<br>
configure --with-debugging=0.<br>
<br>
How many elements do you have on each process?  How big are the<br>
elements?<br></blockquote><div><br></div><div>For the moment, dof is small (dof=4). Still doing some tests with the classes and methods. But should reach 1000-10000 in production.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div class=""><br>
> How can I create a global vector that would be passed to FormIJacobian() ?<br>
> Creating it only once instead of doing it at each timestep would save time.<br>
<br>
</div>You can/should always put this stuff in the user context (which comes in<br>
via the last argument).<br></blockquote><div><br></div><div>Ahhh...did not think about it ! This would allow to create the vector only once in the main (after dof is determined) and pass it as argument to FormIJacobian(). I will try. Thanks !</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class=""><div class="h5"><br>
> I need to use this vector (size dof*dof) with classes and methods inside<br>
> FormIJacobian() to calculate the different blocks that are passed to the<br>
> Jacobian with MatSetValuesBlocked(). However, I cannot pass it as argument<br>
> of FormIJacobian() since there is no room for it in the arguments.<br>
<br>
</div></div></blockquote></div><br></div></div>