[petsc-users] maintaining application compatibility with 3.1 and 3.2

Matthew Knepley knepley at gmail.com
Thu Apr 18 07:13:20 CDT 2013


On Thu, Apr 18, 2013 at 8:08 AM, Alexei Matveev <
alexei.matveev+petsc at gmail.com> wrote:

>
>
> Hi, All,
>
> Thanks for your comments.
>
> On 17 April 2013 23:35, Barry Smith <bsmith at mcs.anl.gov> wrote:
>
>>
>>        It is our intention that PETSc be easy enough for anyone to
>> install that rather than making your application work with different
>> versions one simply install the PETSc version one needs. In addition we
>> recommend updating applications to work with the latest release within a
>> couple of months after each release.
>>
>
> I understand that. With rapid development it is unavoidable to break
> API occasionally.
>
> I managed to compile and run the code with the quick hack below and
> somewhat
> more. Thanks, Kirk! Need yet to find out why the tests fail.
>
> Do I understand it correctly that there is no way currently to load a
> distributed
> Vec from the file without knowing and setting its dimensions first?
>

I am not sure what you mean here. The point is that prescribing the layout
of a Vec
in a file is clearly wrong. We would like to be able to save from one
parallel configuration
and load on another (maybe serial). Thus, the loader prescribes the layout.

   Matt


> Like I was doing here:
>
> +# if PETSC_VERSION < 30200
>    VecLoad (viewer, VECMPI, &vec); /* creates it */
> +#else
> +  /* FIXME: how to make it distributed? */
> +  VecCreate (PETSC_COMM_WORLD, &vec);
> +  VecLoad (vec, viewer);
> +#endif
>
> BTW, I found myself calling (DM)DAGetInfo() on the array descriptor DM/DA
> quite often to get the shape of the 3d grid. I noticed that now that the
> signature
> of the *GetInfo() changed. Is there an official way to get that shape info
> by enquiring
> the Vec itself?
>
> Alexei
>
> -#include "petscda.h"            /* Vec, Mat, DA, ... */
> +#include "petscdmda.h"          /* Vec, Mat, DA, ... */
>  #include "petscdmmg.h"          /* KSP, ... */
>
> +#define PETSC_VERSION (PETSC_VERSION_MAJOR * 10000 + PETSC_VERSION_MINOR
> * 100)
> +
> +/* FIXME: PETSC 3.2 */
> +#if PETSC_VERSION >= 30200
> +typedef DM DA;
> +typedef PetscBool PetscTruth;
> +#  define VecDestroy(x)         (VecDestroy)(&(x))
> +#  define VecScatterDestroy(x)  (VecScatterDestroy)(&(x))
> +#  define MatDestroy(x)         (MatDestroy)(&(x))
> +#  define ISDestroy(x)          (ISDestroy)(&(x))
> +#  define KSPDestroy(x)         (KSPDestroy)(&(x))
> +#  define SNESDestroy(x)        (SNESDestroy)(&(x))
> +#  define PetscViewerDestroy(x) (PetscViewerDestroy)(&(x))
> +#  define PCDestroy(x)          (PCDestroy)(&(x))
> +#  define DADestroy(x)          (DMDestroy)(&(x))
> +#  define DAGetCorners          DMDAGetCorners
> +#  define DACreate3d            DMDACreate3d
> +#  define DACreateGlobalVector  DMCreateGlobalVector
> +#  define DAGetGlobalVector     DMGetGlobalVector
> +#  define DAGetInfo             DMDAGetInfo
> +#  define DAGetMatrix           DMGetMatrix
> +#  define DARestoreGlobalVector DMRestoreGlobalVector
> +#  define DAVecGetArray         DMDAVecGetArray
> +#  define DAVecRestoreArray     DMDAVecRestoreArray
> +#  define VecLoadIntoVector(viewer, vec) VecLoad (vec, viewer)
> +#  define DA_STENCIL_STAR       DMDA_STENCIL_STAR
> +#  define DA_XYZPERIODIC        DMDA_XYZPERIODIC
> +#endif
>



-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20130418/c3c65582/attachment.html>


More information about the petsc-users mailing list