[petsc-users] Two ways to set Vec values?
Rob Ellis
Robert.G.Ellis at Shaw.ca
Tue Dec 22 12:04:12 CST 2009
Hi Petsc'ers
Can someone please let me know if I can set MPI vector values using either
of the following methods? I wish to set the values of 'x' from the values in
'work'. Both methods operate correctly, but I would like to know which is
more efficient, and/or recommended and why.
1. GetArray/RestoreArray Method:
call VecGetOwnershipRange(x,imin,imax,ierr)
call VecGetArray(x,x_local_v,x_local_i,ierr)
do i=imin,imax-1
x_local(i-imin)=work(i+1)
enddo
call VecRestoreArray(x,x_local_v,x_local_i,ierr)
2. SetValues/VecAssembly Method:
call VecGetOwnershipRange(x,imin,imax,ierr)
nx_local = imax-imin
do i=imin,imax-1
icol(i-imin+1)=i
enddo
call VecSetValues(x,nx_local,icol,work(imin+1),INSERT_VALUES,ierr)
call VecAssemblyBegin(x,ierr)
call VecAssemblyEnd(x,ierr)
Method 1 is more compact and does not require the auxiliary column number
vector, nor does it require the VecAssembly, however, it seems to be what is
suggested by the examples. Also, is it recommended to use VecGetArrayF90?
Thanks for your help,
Cheers,
Rob
More information about the petsc-users
mailing list