Hi all,<br><br>I'm partially refactoring BDDC code I contributed to petsc-dev, trying to limit the extent of hand-written code and to exploit already existing PETSc code. I want to know if there are DM objects in PETSc suitable to store informations related to the local to global map of MATIS objects which I can use to manage communications between different levels (through DMCoarsen, DMGetInterpolation and DMGetMatrix). DMMesh can do the job?<br>

<br>Regards,<br>Stefano<br><br><div class="gmail_quote"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><br><div class="gmail_quote">2012/1/24 Jed Brown <span dir="ltr"><<a href="mailto:jedbrown@mcs.anl.gov" target="_blank">jedbrown@mcs.anl.gov</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="gmail_quote"><div>On Tue, Jan 24, 2012 at 09:35, Stefano Zampini <span dir="ltr"><<a href="mailto:stefano.zampini@gmail.com" target="_blank">stefano.zampini@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div>I recently added support for non-costrant block size matrices (e.g for Q_2-Q_0 decompositions or similar). I've almost finished implementing BDDC code which uses NearNullSpace as you suggested. Thus, Stokes and elasticity in mixed formulation are next to come.<br>



</div></blockquote><div><br></div></div><div>Great.</div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
<br>I need to use lapack DGESVD (or SGESVD) functions for SVD. How should I call them within PETSc code? something like LAPACKdgesvd_ ?<br></div></blockquote><div><br></div></div><div>LAPACKgesvd_, see calls from src/ksp/ksp/impls/gmres/gmreig.c</div>



<div><br></div><div><div>  /* compute Singular Values */</div><div>#if !defined(PETSC_USE_COMPLEX)</div><div>  LAPACKgesvd_("N","N",&bn,&bn,R,&bN,realpart,&sdummy,&idummy,&sdummy,&idummy,work,&lwork,&lierr);</div>



<div>#else</div><div>  LAPACKgesvd_("N","N",&bn,&bn,R,&bN,realpart,&sdummy,&idummy,&sdummy,&idummy,work,&lwork,realpart+N,&lierr);</div><div>#endif</div><div>  if (lierr) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_LIB,"Error in SVD Lapack routine %d",(int)lierr);</div>



</div><div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br>When I finished, I will remove coarse enums and use MatPartitioning interface.</div>



</blockquote></div></div><br><div>Great.</div>
</blockquote></div><br><br clear="all"><br></div></div><span><font color="#888888">-- <br>Stefano<br>
</font></span></blockquote><br></div><br><br clear="all"><br>-- <br>Stefano<br>