VecCreate()
     VecSetXXX
     VecSetYYY
     VecSetBlockSize()
     VecSetUp()   (called also automatically as needed by later vector  
routines, like PCSetUp()/KSPSetUp()/SNESSetUp()/TSSetUp() are called)
       use the beast

     To make this universal we need to fix Mat to have the  
MatXXXSetPreallocation() to just stash the preallocation information  
not do the allocation on the spot, but wait until the MatSetUp().


    Barry


On Jul 22, 2009, at 1:47 PM, Lisandro Dalcin wrote:

> Starting a new thread ...
>
> Here you have simple example about creating Vec's. PETSc let me set
> first the type, or first the size and block size... However...
> setting FIRST the TYPE is currently broken...
>
> Anything we are going to do to fix this will require to handle the
> case above... At first, the only way I can imagine of doing that is by
> using a macro VecPreallocated() (more or less like in Mat), in charge
> of checking and setting-up the sizes&blocksizes and the allocated
> array. But then this macro have to be called on almost all Vec
> interface calls...
>
> Note: the code below have to be run in 2(two) processes to show the
> problems (at second block, when creating vector "y")...
>
> #include "petscvec.h"
>
> #undef __FUNCT__
> #define __FUNCT__ "main"
> int main(int argc,char **argv)
> {
>  PetscErrorCode ierr;
>  ierr = PetscInitialize(&argc,&argv,0,0);CHKERRQ(ierr);
>  if (1) {
>    Vec x;
>    ierr = VecCreate(PETSC_COMM_WORLD, &x);CHKERRQ(ierr);
>    ierr = VecSetSizes(x, PETSC_DECIDE, 9);CHKERRQ(ierr);
>    ierr = VecSetBlockSize(x, 3);CHKERRQ(ierr);
>    ierr = VecSetType(x, VECMPI);CHKERRQ(ierr);
>    ierr = VecDestroy(x);CHKERRQ(ierr);
>  }
>  if (1) {
>    Vec y;
>    ierr = VecCreate(PETSC_COMM_WORLD, &y);CHKERRQ(ierr);
>    ierr = VecSetType(y, VECMPI);CHKERRQ(ierr);
>    ierr = VecSetSizes(y, PETSC_DECIDE, 9);CHKERRQ(ierr);
>    ierr = VecSetBlockSize(y, 3);CHKERRQ(ierr);
>    ierr = VecDestroy(y);CHKERRQ(ierr);
>  }
>  ierr = PetscFinalize();CHKERRQ(ierr);
>  return 0;
> }
>
>
>
> -- 
> Lisandro Dalc?n
> ---------------
> Centro Internacional de M?todos Computacionales en Ingenier?a (CIMEC)
> Instituto de Desarrollo Tecnol?gico para la Industria Qu?mica (INTEC)
> Consejo Nacional de Investigaciones Cient?ficas y T?cnicas (CONICET)
> PTLC - G?emes 3450, (3000) Santa Fe, Argentina
> Tel/Fax: +54-(0)342-451.1594


Reply via email to