29
29
<a name="line19"> 19: </a> #include <A href="../../../../include/petscvec.h.html">petscvec.h</A>
31
<a name="line21"> 21: </a><strong><font color="#4169E1"><a name="main"></a>int main(int argc,char **argv)</font></strong>
32
<a name="line22"> 22: </a>{
33
<a name="line23"> 23: </a> <A href="../../../../docs/manualpages/Vec/Vec.html#Vec">Vec</A> x,y;
34
<a name="line24"> 24: </a> int n = 20,ierr,i,row;
35
<a name="line25"> 25: </a> <A href="../../../../docs/manualpages/Sys/PetscScalar.html#PetscScalar">PetscScalar</A> value;
37
<a name="line27"> 27: </a> <A href="../../../../docs/manualpages/Sys/PetscInitialize.html#PetscInitialize">PetscInitialize</A>(&argc,&argv,(char*)0,help);
38
<a name="line28"> 28: </a> <A href="../../../../docs/manualpages/Sys/PetscOptionsGetInt.html#PetscOptionsGetInt">PetscOptionsGetInt</A>(PETSC_NULL,<font color="#666666">"-n"</font>,&n,PETSC_NULL);
40
<a name="line30"> 30: </a> <font color="#B22222">/* </font>
41
<a name="line31"> 31: </a><font color="#B22222"> Create a vector, specifying only its global dimension.</font>
42
<a name="line32"> 32: </a><font color="#B22222"> When using <A href="../../../../docs/manualpages/Vec/VecCreate.html#VecCreate">VecCreate</A>(), <A href="../../../../docs/manualpages/Vec/VecSetSizes.html#VecSetSizes">VecSetSizes</A>() and <A href="../../../../docs/manualpages/Vec/VecSetFromOptions.html#VecSetFromOptions">VecSetFromOptions</A>(), </font>
43
<a name="line33"> 33: </a><font color="#B22222"> the vector format (currently parallel,</font>
44
<a name="line34"> 34: </a><font color="#B22222"> shared, or sequential) is determined at runtime. Also, the parallel</font>
45
<a name="line35"> 35: </a><font color="#B22222"> partitioning of the vector is determined by PETSc at runtime.</font>
47
<a name="line37"> 37: </a><font color="#B22222"> Routines for creating particular vector types directly are:</font>
48
<a name="line38"> 38: </a><font color="#B22222"> <A href="../../../../docs/manualpages/Vec/VecCreateSeq.html#VecCreateSeq">VecCreateSeq</A>() - uniprocessor vector</font>
49
<a name="line39"> 39: </a><font color="#B22222"> <A href="../../../../docs/manualpages/Vec/VecCreateMPI.html#VecCreateMPI">VecCreateMPI</A>() - distributed vector, where the user can</font>
50
<a name="line40"> 40: </a><font color="#B22222"> determine the parallel partitioning</font>
51
<a name="line41"> 41: </a><font color="#B22222"> <A href="../../../../docs/manualpages/Vec/VecCreateShared.html#VecCreateShared">VecCreateShared</A>() - parallel vector that uses shared memory</font>
52
<a name="line42"> 42: </a><font color="#B22222"> (available only on the SGI); otherwise,</font>
53
<a name="line43"> 43: </a><font color="#B22222"> is the same as <A href="../../../../docs/manualpages/Vec/VecCreateMPI.html#VecCreateMPI">VecCreateMPI</A>()</font>
55
<a name="line45"> 45: </a><font color="#B22222"> With <A href="../../../../docs/manualpages/Vec/VecCreate.html#VecCreate">VecCreate</A>(), <A href="../../../../docs/manualpages/Vec/VecSetSizes.html#VecSetSizes">VecSetSizes</A>() and <A href="../../../../docs/manualpages/Vec/VecSetFromOptions.html#VecSetFromOptions">VecSetFromOptions</A>() the option </font>
56
<a name="line46"> 46: </a><font color="#B22222"> -vec_type mpi or -vec_type shared causes the </font>
57
<a name="line47"> 47: </a><font color="#B22222"> particular type of vector to be formed.</font>
59
<a name="line49"> 49: </a><font color="#B22222"> */</font>
60
<a name="line50"> 50: </a> <A href="../../../../docs/manualpages/Vec/VecCreate.html#VecCreate">VecCreate</A>(PETSC_COMM_WORLD,&x);
61
<a name="line51"> 51: </a> <A href="../../../../docs/manualpages/Vec/VecSetSizes.html#VecSetSizes">VecSetSizes</A>(x,PETSC_DECIDE,n);
62
<a name="line52"> 52: </a> <A href="../../../../docs/manualpages/Vec/VecSetFromOptions.html#VecSetFromOptions">VecSetFromOptions</A>(x);
64
<a name="line54"> 54: </a> <font color="#B22222">/*</font>
65
<a name="line55"> 55: </a><font color="#B22222"> Duplicate some work vector (of the same format and</font>
66
<a name="line56"> 56: </a><font color="#B22222"> partitioning as the initial vector).</font>
67
<a name="line57"> 57: </a><font color="#B22222"> */</font>
68
<a name="line58"> 58: </a> <A href="../../../../docs/manualpages/Vec/VecDuplicate.html#VecDuplicate">VecDuplicate</A>(x,&y);
70
<a name="line60"> 60: </a> <A href="../../../../docs/manualpages/Sys/PetscObjectPublish.html#PetscObjectPublish">PetscObjectPublish</A>((<A href="../../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A>)x);
72
<a name="line62"> 62: </a> <font color="#4169E1">for</font> (i=0; i<1000; i++) {
74
<a name="line64"> 64: </a> <font color="#B22222">/*</font>
75
<a name="line65"> 65: </a><font color="#B22222"> Set the vectors to entries to a constant value.</font>
76
<a name="line66"> 66: </a><font color="#B22222"> */</font>
77
<a name="line67"> 67: </a> value = 1;
78
<a name="line68"> 68: </a> row = i % n;
79
<a name="line69"> 69: </a> <A href="../../../../docs/manualpages/Vec/VecSetValues.html#VecSetValues">VecSetValues</A>(x,1,&row,&value,ADD_VALUES);
80
<a name="line70"> 70: </a> <A href="../../../../docs/manualpages/Vec/VecAssemblyBegin.html#VecAssemblyBegin">VecAssemblyBegin</A>(x);
81
<a name="line71"> 71: </a> <A href="../../../../docs/manualpages/Vec/VecAssemblyEnd.html#VecAssemblyEnd">VecAssemblyEnd</A>(x);
84
<a name="line74"> 74: </a> <A href="../../../../docs/manualpages/Sys/PetscSleep.html#PetscSleep">PetscSleep</A>(5);
85
<a name="line75"> 75: </a> }
88
<a name="line78"> 78: </a> <font color="#B22222">/* </font>
89
<a name="line79"> 79: </a><font color="#B22222"> Free work space. All PETSc objects should be destroyed when they</font>
90
<a name="line80"> 80: </a><font color="#B22222"> are no longer needed.</font>
91
<a name="line81"> 81: </a><font color="#B22222"> */</font>
92
<a name="line82"> 82: </a> <A href="../../../../docs/manualpages/Vec/VecDestroy.html#VecDestroy">VecDestroy</A>(x);
93
<a name="line83"> 83: </a> <A href="../../../../docs/manualpages/Vec/VecDestroy.html#VecDestroy">VecDestroy</A>(y);
94
<a name="line84"> 84: </a> <A href="../../../../docs/manualpages/Sys/PetscFinalize.html#PetscFinalize">PetscFinalize</A>();
95
<a name="line85"> 85: </a> <font color="#4169E1">return</font> 0;
96
<a name="line86"> 86: </a>}
97
<a name="line87"> 87: </a>
31
<a name="line23"> 23: </a><strong><font color="#4169E1"><a name="main"></a>int main(int argc,char **argv)</font></strong>
32
<a name="line24"> 24: </a>{
33
<a name="line25"> 25: </a> <A href="../../../../docs/manualpages/Vec/Vec.html#Vec">Vec</A> x,y;
34
<a name="line26"> 26: </a> int n = 20,ierr,i,row;
35
<a name="line27"> 27: </a> <A href="../../../../docs/manualpages/Sys/PetscScalar.html#PetscScalar">PetscScalar</A> value;
37
<a name="line29"> 29: </a> <A href="../../../../docs/manualpages/Sys/PetscInitialize.html#PetscInitialize">PetscInitialize</A>(&argc,&argv,(char*)0,help);
38
<a name="line30"> 30: </a> <A href="../../../../docs/manualpages/Sys/PetscOptionsGetInt.html#PetscOptionsGetInt">PetscOptionsGetInt</A>(<A href="../../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>,<font color="#666666">"-n"</font>,&n,<A href="../../../../docs/manualpages/Sys/PETSC_NULL.html#PETSC_NULL">PETSC_NULL</A>);
40
<a name="line32"> 32: </a> <font color="#B22222">/* </font>
41
<a name="line33"> 33: </a><font color="#B22222"> Create a vector, specifying only its global dimension.</font>
42
<a name="line34"> 34: </a><font color="#B22222"> When using <A href="../../../../docs/manualpages/Vec/VecCreate.html#VecCreate">VecCreate</A>(), <A href="../../../../docs/manualpages/Vec/VecSetSizes.html#VecSetSizes">VecSetSizes</A>() and <A href="../../../../docs/manualpages/Vec/VecSetFromOptions.html#VecSetFromOptions">VecSetFromOptions</A>(), </font>
43
<a name="line35"> 35: </a><font color="#B22222"> the vector format (currently parallel,</font>
44
<a name="line36"> 36: </a><font color="#B22222"> shared, or sequential) is determined at runtime. Also, the parallel</font>
45
<a name="line37"> 37: </a><font color="#B22222"> partitioning of the vector is determined by PETSc at runtime.</font>
47
<a name="line39"> 39: </a><font color="#B22222"> Routines for creating particular vector types directly are:</font>
48
<a name="line40"> 40: </a><font color="#B22222"> <A href="../../../../docs/manualpages/Vec/VecCreateSeq.html#VecCreateSeq">VecCreateSeq</A>() - uniprocessor vector</font>
49
<a name="line41"> 41: </a><font color="#B22222"> <A href="../../../../docs/manualpages/Vec/VecCreateMPI.html#VecCreateMPI">VecCreateMPI</A>() - distributed vector, where the user can</font>
50
<a name="line42"> 42: </a><font color="#B22222"> determine the parallel partitioning</font>
51
<a name="line43"> 43: </a><font color="#B22222"> <A href="../../../../docs/manualpages/Vec/VecCreateShared.html#VecCreateShared">VecCreateShared</A>() - parallel vector that uses shared memory</font>
52
<a name="line44"> 44: </a><font color="#B22222"> (available only on the SGI); otherwise,</font>
53
<a name="line45"> 45: </a><font color="#B22222"> is the same as <A href="../../../../docs/manualpages/Vec/VecCreateMPI.html#VecCreateMPI">VecCreateMPI</A>()</font>
55
<a name="line47"> 47: </a><font color="#B22222"> With <A href="../../../../docs/manualpages/Vec/VecCreate.html#VecCreate">VecCreate</A>(), <A href="../../../../docs/manualpages/Vec/VecSetSizes.html#VecSetSizes">VecSetSizes</A>() and <A href="../../../../docs/manualpages/Vec/VecSetFromOptions.html#VecSetFromOptions">VecSetFromOptions</A>() the option </font>
56
<a name="line48"> 48: </a><font color="#B22222"> -vec_type mpi or -vec_type shared causes the </font>
57
<a name="line49"> 49: </a><font color="#B22222"> particular type of vector to be formed.</font>
59
<a name="line51"> 51: </a><font color="#B22222"> */</font>
60
<a name="line52"> 52: </a> <A href="../../../../docs/manualpages/Vec/VecCreate.html#VecCreate">VecCreate</A>(<A href="../../../../docs/manualpages/Sys/PETSC_COMM_WORLD.html#PETSC_COMM_WORLD">PETSC_COMM_WORLD</A>,&x);
61
<a name="line53"> 53: </a> <A href="../../../../docs/manualpages/Vec/VecSetSizes.html#VecSetSizes">VecSetSizes</A>(x,<A href="../../../../docs/manualpages/Sys/PETSC_DECIDE.html#PETSC_DECIDE">PETSC_DECIDE</A>,n);
62
<a name="line54"> 54: </a> <A href="../../../../docs/manualpages/Vec/VecSetFromOptions.html#VecSetFromOptions">VecSetFromOptions</A>(x);
64
<a name="line56"> 56: </a> <font color="#B22222">/*</font>
65
<a name="line57"> 57: </a><font color="#B22222"> Duplicate some work vector (of the same format and</font>
66
<a name="line58"> 58: </a><font color="#B22222"> partitioning as the initial vector).</font>
67
<a name="line59"> 59: </a><font color="#B22222"> */</font>
68
<a name="line60"> 60: </a> <A href="../../../../docs/manualpages/Vec/VecDuplicate.html#VecDuplicate">VecDuplicate</A>(x,&y);
70
<a name="line62"> 62: </a> <A href="../../../../docs/manualpages/Sys/PetscObjectPublish.html#PetscObjectPublish">PetscObjectPublish</A>((<A href="../../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A>)x);
72
<a name="line64"> 64: </a> <font color="#4169E1">for</font> (i=0; i<1000; i++) {
74
<a name="line66"> 66: </a> <font color="#B22222">/*</font>
75
<a name="line67"> 67: </a><font color="#B22222"> Set the vectors to entries to a constant value.</font>
76
<a name="line68"> 68: </a><font color="#B22222"> */</font>
77
<a name="line69"> 69: </a> value = 1;
78
<a name="line70"> 70: </a> row = i % n;
79
<a name="line71"> 71: </a> <A href="../../../../docs/manualpages/Vec/VecSetValues.html#VecSetValues">VecSetValues</A>(x,1,&row,&value,ADD_VALUES);
80
<a name="line72"> 72: </a> <A href="../../../../docs/manualpages/Vec/VecAssemblyBegin.html#VecAssemblyBegin">VecAssemblyBegin</A>(x);
81
<a name="line73"> 73: </a> <A href="../../../../docs/manualpages/Vec/VecAssemblyEnd.html#VecAssemblyEnd">VecAssemblyEnd</A>(x);
84
<a name="line76"> 76: </a> <A href="../../../../docs/manualpages/Sys/PetscSleep.html#PetscSleep">PetscSleep</A>(5);
85
<a name="line77"> 77: </a> }
88
<a name="line80"> 80: </a> <font color="#B22222">/* </font>
89
<a name="line81"> 81: </a><font color="#B22222"> Free work space. All PETSc objects should be destroyed when they</font>
90
<a name="line82"> 82: </a><font color="#B22222"> are no longer needed.</font>
91
<a name="line83"> 83: </a><font color="#B22222"> */</font>
92
<a name="line84"> 84: </a> <A href="../../../../docs/manualpages/Vec/VecDestroy.html#VecDestroy">VecDestroy</A>(x);
93
<a name="line85"> 85: </a> <A href="../../../../docs/manualpages/Vec/VecDestroy.html#VecDestroy">VecDestroy</A>(y);
94
<a name="line86"> 86: </a> <A href="../../../../docs/manualpages/Sys/PetscFinalize.html#PetscFinalize">PetscFinalize</A>();
95
<a name="line87"> 87: </a> <font color="#4169E1">return</font> 0;
96
<a name="line88"> 88: </a>}
97
<a name="line89"> 89: </a>