Vec: types, sizes, and block sizes...
Barry Smith
bsmith at mcs.anl.gov
Wed Jul 22 16:53:56 CDT 2009
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
More information about the petsc-dev
mailing list