<div dir="ltr"><div><div><div>Dear Hong,<br><br></div><div>Thanks for your reply. In the modified mumps.c, I replaced zmumps_c.h with cmumps_c.h because I want to use a single precision complex mumps in my double-precision PETSC application. <br></div>In my PETSC application (double precision real and complex versions), I want to always call a single-precision MUMPS. My understanding is that mumps.c is designed so that a single precision PETSC application should use a single-precision MUMPS; a double-precision PETSC should use a double-precision MUMPS. <br>I am looking for a way for my double-precision PETSC application to use a single precision MUMPS. Is it possible for a user to slightly modify mumps.c and use a single-precision MUMPS in double-precision PETSC? Do I have to make extra changes beyond the definition parts in mumps.c?<br></div><div>In advance, thanks for your kind help.<br></div><div><br></div>Best,<br></div>Evan<br><div><div><br><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jun 7, 2015 at 9:55 AM, Hong <span dir="ltr"><<a href="mailto:hzhang@mcs.anl.gov" target="_blank">hzhang@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Evan,<div>The data types are defined as</div><div>s: single real</div><div>d: double real</div><div>c: single complex</div><div>z: double complex</div><div><br></div><div>see <a href="https://books.google.com/books?id=4E9PY7NT8a0C&pg=PA22&lpg=PA22&dq=SDCZ+data+type&source=bl&ots=rd44BVkxjc&sig=KGxae_a5N54KD-AbO9CBnOE53CA&hl=en&sa=X&ei=IXJ0VeG7CNX-yQSujoOQCg&ved=0CDEQ6AEwAw#v=onepage&q=SDCZ%20data%20type&f=false_" target="_blank">https://books.google.com/books?id=4E9PY7NT8a0C&pg=PA22&lpg=PA22&dq=SDCZ+data+type&source=bl&ots=rd44BVkxjc&sig=KGxae_a5N54KD-AbO9CBnOE53CA&hl=en&sa=X&ei=IXJ0VeG7CNX-yQSujoOQCg&ved=0CDEQ6AEwAw#v=onepage&q=SDCZ%20data%20type&f=false_</a></div><div><br></div><div>Our mumps interface uses these definitions.</div><div><br></div><div>I do not understand why you suggest replacing z to c for double complex:</div><div><br></div><div><div><div>#if defined(PETSC_USE_COMPLEX)</div><div>#if defined(PETSC_USE_REAL_SINGLE)</div><div>#include <cmumps_c.h></div><div>#else</div><div>//#include <zmumps_c.h> // old</div><div>#include <cmumps_c.h>   // new</div><div>#endif</div></div><div><br></div><div>and replacing d to s for double real:</div><div><div>#if defined(PETSC_USE_REAL_SINGLE)</div><div>#include <smumps_c.h></div><div>#else</div><div>//#include <dmumps_c.h>  // old</div><div>#include <smumps_c.h><span style="white-space:pre-wrap">   </span> // new</div><div>#endif</div></div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Hong</div></font></span><div><div class="h5"><div><br></div><div><br></div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 5, 2015 at 6:26 PM, Evan Um <span dir="ltr"><<a href="mailto:evanum@gmail.com" target="_blank">evanum@gmail.com</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 dir="ltr"><div>Dear Barry and PETSC users,<br><br></div><div>I am revisiting a problem about how to call a single precision MUMPS from double precision real/complex PETSC. After taking a look at mumps.c, I feel that the following changes (attached) can make it possible to always call a single precision MUMPS from PETSC. The change is basically to replace double precision MUMPS and their associated types with corresponding single ones. If someone already has some experience about this work, could you comment on the change? In advance, I appreciate your help.</div><div><br></div><div>Best,</div><div>Evan<br></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 22, 2014 at 1:36 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid"><br>
   There is no support for this. You can only call single precision MUMPS from single precision PETSc and double precision MUMPS from double precision PETSc.<br>
<br>
    You could try to hack the interface that calls MUMPS from PETSc to use the single precision version but we don’t support that. src/mat/impls/aij/mpi/mumps/mumps.c<br>
<span><font color="#888888"><br>
  Barry<br>
</font></span><div><div><br>
> On Oct 22, 2014, at 3:29 PM, Evan Um <<a href="mailto:evanum@gmail.com" target="_blank">evanum@gmail.com</a>> wrote:<br>
><br>
> Dear PETSC users,<br>
><br>
> When MUMPS is used inside PETSC, The default MUMPS driver seems to be double-precision MUMPS (i.e. DMUMPS). To reduce memory costs, I want to test a single-precision MUMPS (SMUMPS) from PETSC. Does anyone know how to switch from double to single-precision MUMPS inside PETSC? In advance, thanks for your comments.<br>
><br>
> Regards,<br>
> Evan<br>
<br>
</div></div></blockquote></div><br></div></div></div></div>
</blockquote></div><br></div></div></div></div></div>
</blockquote></div><br></div>