static char help[] = "Demonstrates VecStrideNorm().\n\n"; #include #include "petsclog.h" #undef __FUNCT__ #define __FUNCT__ "main" int main(int argc,char **argv) { Vec x; /* vectors */ PetscReal norm; PetscInt n=10;//(argc==1)?20:((argc==2)?atoi(argv[1]):atoi(argv[2])); PetscErrorCode ierr; PetscScalar two = 2.0; PetscLogStage stagenum0, stagenum1, stagenum2, stagenum3, stagenum4, stagenum5; //Inizializzazione di PETSC e MPI ierr = PetscInitialize(&argc,&argv,(char*)0,help);CHKERRQ(ierr); ierr = PetscOptionsGetInt(PETSC_NULL,"-n",&n,PETSC_NULL);CHKERRQ(ierr); ierr = VecCreate(PETSC_COMM_WORLD,&x);CHKERRQ(ierr); PetscLogStageRegister("Stage 0 of Code",&stagenum0); ierr = VecSetSizes(x,PETSC_DECIDE,n);CHKERRQ(ierr); PetscLogStagePush(stagenum0); PetscLogStagePop(); PetscLogStageRegister("Stage 1 of Code",&stagenum1); ierr = VecSetBlockSize(x,2);CHKERRQ(ierr); PetscLogStagePush(stagenum1); PetscLogStagePop(); PetscLogStageRegister("Stage 2 of Code",&stagenum2); ierr = VecSetFromOptions(x);CHKERRQ(ierr); PetscLogStagePush(stagenum2); PetscLogStagePop(); PetscLogStageRegister("Stage 3 of Code",&stagenum3); ierr = VecSet(x,two);CHKERRQ(ierr); PetscLogStagePush(stagenum3); PetscLogStagePop(); PetscLogStageRegister("Stage 4 of Code",&stagenum4); ierr = VecNorm(x,NORM_1,&norm);CHKERRQ(ierr); PetscLogStagePush(stagenum4); PetscLogStagePop(); PetscLogStageRegister("Stage 5 of Code",&stagenum5); ierr = PetscPrintf(PETSC_COMM_WORLD,"Norm 1 of entire vector %G\n",norm);CHKERRQ(ierr); PetscLogStagePush(stagenum5); PetscLogStagePop(); ierr = VecDestroy(&x);CHKERRQ(ierr); ierr = PetscFinalize(); return 0; }