Petsc questions
Nguyen, Hung V ERDC-ITL-MS
Hung.V.Nguyen at usace.army.mil
Thu Aug 14 09:37:38 CDT 2008
Hello All,
I am new to PETSC. I have following questions about PETSC:
1. Do PETSC functions help to estimate/calculate a matrix condition number?
If yes, can I get the info how to do it?
2. A question about renumbering nodes: our CFD code uses ParMetis to compute
the original partitioning of the mesh. The global nodes are renumbered
consecutively within each Parmetis partition as npetsc which is a mapping
vector from the original global node numbering to the new numbering, see
below as a test code. My question is whether PETSC function helps to renumber
from ParMetis partition to PETSC partition or not?
Thank for your help.
Regards,
-Hung
-- code:
! Read the data.
fname = 'petsc.dat'
call parnam (fname)
open (2, file = fname, status = 'old')
! No. global nodes, local nodes, owned nodes,
! compressed columns, PEs.
read (2, '(5i10)') ng, nloc, nown, ncol, npes
if (noproc .ne. npes) then
if (myid .eq. 0) then
print*, 'Number of PEs from the data file does not match',
& ' the number from the run command.'
end if
call PetscFinalize (ierr)
stop
end if
! Local node array containing global node numbers.
allocate (nglobal(nloc))
read (2, '(8i10)') nglobal
! Find petsc numbering scheme.
allocate (nown_all(noproc))
allocate (idisp(noproc))
allocate (npetsc(nloc))
allocate (nodes1(ng))
allocate (nodes2(ng))
call MPI_ALLGATHER (nown, 1, MPI_INTEGER, nown_all, 1,
& MPI_INTEGER, PETSC_COMM_WORLD, ierr)
idisp(1) = 0
do i = 2, noproc
idisp(i) = idisp(i - 1) + nown_all(i - 1)
end do
call MPI_ALLGATHERV (nglobal, nown, MPI_INTEGER, nodes1,
& nown_all, idisp, MPI_INTEGER, PETSC_COMM_WORLD, ierr)
do i = 1, ng
ii = nodes1(i)
nodes2(ii) = i
end do
! Process the local nodes for their petsc numbers.
do i = 1, nloc
ii = nglobal(i)
npetsc(i) = nodes2(ii)
end do
More information about the petsc-users
mailing list