tamestoy
parent
51cfa1cbd4
commit
4acab9dfec
@ -1,38 +0,0 @@
|
||||
subroutine adj_read (a,filename,desc_a,info)
|
||||
|
||||
type(psb_dspmat_type), intent (out) :: a
|
||||
character(len=20) :: filename
|
||||
type(psb_desc_type):: desc_a
|
||||
integer (psb_ipk_) :: info
|
||||
implicit none
|
||||
|
||||
integer :: i,j,nnzero,nbCol
|
||||
integer :: unitFile, iError,line
|
||||
integer(psb_ipk_), allocatable :: fileContent(:,:),ia(:),ja(:)
|
||||
real (psb_dpk_), allocatable :: val(:)
|
||||
integer(psb_ipk_), allocatable :: size_mat(:)
|
||||
|
||||
nbCol = 2
|
||||
allocate (size_mat(nbCol))
|
||||
unitFile = 1
|
||||
open(UNIT=unitFile, FILE=filename, FORM="FORMATTED", STATUS="OLD",
|
||||
ACTION="READ")
|
||||
|
||||
nnzero = size_mat(2)
|
||||
allocate (fileContent(nnzeros,nbCol))
|
||||
|
||||
do line = 1,nnzero
|
||||
read(unitFile, *) fileContent(line,1:nbCol)
|
||||
end do saveNodes
|
||||
close(UNIT=unitFile)
|
||||
|
||||
allocate(ia(nnzero),ja(nnzero),val(nnzero))
|
||||
do i=1,nnzero
|
||||
ia(i)=fileContent(i,1)
|
||||
ja(i)=filecontent(i,2)
|
||||
val(i)=1.0
|
||||
end do
|
||||
|
||||
call psb_spins(nnzero, ia, ja, val, a, desc_a, info)
|
||||
|
||||
end subroutine adj_read
|
@ -0,0 +1,35 @@
|
||||
program adj_to_mm
|
||||
use psb_base_mod
|
||||
|
||||
! reads a file containing the coordinate description of an adjacence
|
||||
! sparse matrix (values are always 1) and stores it into 'a'
|
||||
!
|
||||
! on entry :
|
||||
! file_adj : file containing the description of the adjacency matrix
|
||||
! file_mm : destination MM format file containing the same matrix
|
||||
! begin : integer specifying the first index of rows and columns in the
|
||||
! file_adj (usually 1 or 0)
|
||||
|
||||
character(len=40) :: file_adj,file_mm
|
||||
integer(psb_ipk_) :: i,j,k,nnzero,nrows,begin
|
||||
type(psb_d_coo_sparse_mat) :: acoo
|
||||
|
||||
read(psb_inp_unit,*)file_adj
|
||||
read(psb_inp_unit,*)file_mm
|
||||
read(psb_inp_unit,*)begin
|
||||
|
||||
open(15, FILE=file_adj, STATUS="OLD", ACTION="READ")
|
||||
open(14, FILE=file_mm, ACTION="WRITE")
|
||||
read(15, *) nrows,nnzero
|
||||
write(14,'(i20,i20,i20)') nrows,nrows,nnzero
|
||||
|
||||
do k = 1,nnzero
|
||||
read(15, *) i,j
|
||||
j=j+(1-begin)
|
||||
i=i+(1-begin)
|
||||
write(14,'(i20,i20,F20.3)')i,j,1.0
|
||||
end do
|
||||
close(UNIT=15)
|
||||
close(UNIT=14)
|
||||
end program adj_to_mm
|
||||
|
@ -1,43 +0,0 @@
|
||||
program analyse
|
||||
use psb_base_mod
|
||||
use psb_util_mod
|
||||
implicit none
|
||||
|
||||
character(len=30) :: given_file,res_file,analyse_file,mat_file
|
||||
integer (psb_ipk_) :: i,nb_mat, n
|
||||
real(psb_dpk_) :: tab(7),eig
|
||||
|
||||
read(psb_inp_unit,*) given_file
|
||||
read(psb_inp_unit,*) res_file
|
||||
read(psb_inp_unit,*) analyse_file
|
||||
read(psb_inp_unit,*) nb_mat
|
||||
|
||||
|
||||
open(15,FILE=given_file,action="read")
|
||||
open(14,file=res_file,action="read")
|
||||
|
||||
do i=1,22
|
||||
read(15,*)
|
||||
end do
|
||||
|
||||
open (16, file=analyse_file,position="append",action="write")
|
||||
n=0
|
||||
do i=1,nb_mat
|
||||
read(15,*)tab(1:7)
|
||||
read(14,*)mat_file,eig
|
||||
|
||||
if(tab(4)-eig==0)then
|
||||
write(psb_out_unit,'("on a gagne !")')
|
||||
n=n+1
|
||||
else
|
||||
write(psb_out_unit,'("perdu")')
|
||||
write(16,'(F20.2,F20.2)')tab(2),tab(3)
|
||||
write(16,'(F20.7,F20.7)')tab(4),eig
|
||||
end if
|
||||
end do
|
||||
write(psb_out_unit,'(i20)')n
|
||||
close(14)
|
||||
close(15)
|
||||
close(16)
|
||||
|
||||
end program analyse
|
@ -1,344 +0,0 @@
|
||||
!!$
|
||||
!!$ Parallel Sparse BLAS version 3.1
|
||||
!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013
|
||||
!!$ Salvatore Filippone University of Rome Tor Vergata
|
||||
!!$ Alfredo Buttari CNRS-IRIT, Toulouse
|
||||
!!$
|
||||
!!$ Redistribution and use in source and binary forms, with or without
|
||||
!!$ modification, are permitted provided that the following conditions
|
||||
!!$ are met:
|
||||
!!$ 1. Redistributions of source code must retain the above copyright
|
||||
!!$ notice, this list of conditions and the following disclaimer.
|
||||
!!$ 2. Redistributions in binary form must reproduce the above copyright
|
||||
!!$ notice, this list of conditions, and the following disclaimer in the
|
||||
!!$ documentation and/or other materials provided with the distribution.
|
||||
!!$ 3. The name of the PSBLAS group or the names of its contributors may
|
||||
!!$ not be used to endorse or promote products derived from this
|
||||
!!$ software without specific written permission.
|
||||
!!$
|
||||
!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS
|
||||
!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
!!$ POSSIBILITY OF SUCH DAMAGE.
|
||||
!!$
|
||||
!!$
|
||||
program arnoldi_file
|
||||
use psb_base_mod
|
||||
use psb_util_mod
|
||||
implicit none
|
||||
|
||||
! input parameters
|
||||
character(len=40) :: kmethd, ptype, mtrx_file, rhs_file
|
||||
|
||||
! sparse matrices
|
||||
type(psb_zspmat_type) :: a, aux_a
|
||||
|
||||
! dense matrices
|
||||
complex(psb_dpk_), allocatable, target :: aux_b(:,:), d(:)
|
||||
complex(psb_dpk_), allocatable , save :: x_col_glob(:), r_col_glob(:)
|
||||
complex(psb_dpk_), allocatable, target :: H(:,:),eig(:),work(:),Z(:,:)
|
||||
integer, allocatable :: indexes(:)
|
||||
type(psb_z_vect_type), allocatable, target :: V(:)
|
||||
complex(psb_dpk_), pointer :: b_col_glob(:)
|
||||
type(psb_z_vect_type) :: b_col, x_col, r_col
|
||||
|
||||
|
||||
! communications data structure
|
||||
type(psb_desc_type):: desc_a
|
||||
|
||||
integer(psb_ipk_) :: ictxt, iam, np
|
||||
|
||||
! solver paramters
|
||||
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode, ipart,&
|
||||
& methd, istopc, irst, nr
|
||||
integer(psb_long_int_k_) :: amatsize, descsize, annz, nbytes
|
||||
real(psb_dpk_) :: err, eps,cond
|
||||
|
||||
character(len=5) :: afmt
|
||||
character(len=20) :: name
|
||||
character(len=2) :: filefmt
|
||||
integer(psb_ipk_), parameter :: iunit=12
|
||||
integer(psb_ipk_) :: times=0
|
||||
integer(psb_ipk_) :: iparm(20)
|
||||
|
||||
! other variables
|
||||
integer(psb_ipk_) :: i,info,j,m_problem
|
||||
integer(psb_ipk_) :: internal, m,ii,nnzero, dim_H, alloc_stat
|
||||
real(psb_dpk_) :: t1, t2, r_amax, b_amax,&
|
||||
&scale,resmx,resmxp, flops, bdwdth
|
||||
real(psb_dpk_) :: tt1, tt2, tflops
|
||||
real (psb_dpk_) :: norm
|
||||
complex (psb_dpk_) :: dotprod
|
||||
integer(psb_ipk_) :: nrhs, nrow, n_row, nv, ne
|
||||
integer(psb_ipk_), allocatable :: ivg(:), ipv(:)
|
||||
|
||||
|
||||
call psb_init(ictxt)
|
||||
call psb_info(ictxt,iam,np)
|
||||
|
||||
if (iam < 0) then
|
||||
! This should not happen, but just in case
|
||||
call psb_exit(ictxt)
|
||||
stop
|
||||
endif
|
||||
|
||||
|
||||
name='arnoldi_file'
|
||||
if(psb_get_errstatus() /= 0) goto 9999
|
||||
info=psb_success_
|
||||
call psb_set_errverbosity(2)
|
||||
!
|
||||
! Hello world
|
||||
!
|
||||
if (iam == psb_root_) then
|
||||
write(*,*) 'Welcome to PSBLAS version: ',psb_version_string_
|
||||
write(*,*) 'This is the ',trim(name),' sample program'
|
||||
read(psb_inp_unit,*) mtrx_file
|
||||
read(psb_inp_unit,*) filefmt
|
||||
read(psb_inp_unit,*) ipart
|
||||
read(psb_inp_unit,*) dim_H
|
||||
write (psb_out_unit, '("Hessenberg matrix dim is ",i20)') dim_H
|
||||
end if
|
||||
call psb_bcast(ictxt,mtrx_file)
|
||||
call psb_bcast(ictxt,filefmt)
|
||||
call psb_bcast(ictxt,ipart)
|
||||
call psb_bcast(ictxt,dim_H)
|
||||
rhs_file = 'NONE'
|
||||
afmt = 'CSR'
|
||||
call psb_barrier(ictxt)
|
||||
t1 = psb_wtime()
|
||||
! read the input matrix to be processed and (possibly) the rhs
|
||||
nrhs = 1
|
||||
|
||||
if (iam==psb_root_) then
|
||||
select case(psb_toupper(filefmt))
|
||||
case('MM')
|
||||
! For Matrix Market we have an input file for the matrix
|
||||
! and an (optional) second file for the RHS.
|
||||
call mm_mat_read(aux_a,info,iunit=iunit,filename=mtrx_file)
|
||||
if (info == psb_success_) then
|
||||
if (rhs_file /= 'NONE') then
|
||||
call mm_array_read(aux_b,info,iunit=iunit,filename=rhs_file)
|
||||
end if
|
||||
end if
|
||||
|
||||
case ('HB')
|
||||
! For Harwell-Boeig we have a single file which may or may not
|
||||
! contain an RHS.
|
||||
call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file)
|
||||
|
||||
case default
|
||||
info = -1
|
||||
write(psb_err_unit,*) 'Wrong choice for fileformat ', filefmt
|
||||
end select
|
||||
if (info /= psb_success_) then
|
||||
write(psb_err_unit,*) 'Error while reading input matrix '
|
||||
call psb_abort(ictxt)
|
||||
end if
|
||||
|
||||
m_problem = aux_a%get_nrows()
|
||||
call psb_bcast(ictxt,m_problem)
|
||||
|
||||
! At this point aux_b may still be unallocated
|
||||
if (psb_size(aux_b,dim=1)==m_problem) then
|
||||
! if any rhs were present, broadcast the first one
|
||||
write(psb_err_unit,'("Ok, got an rhs ")')
|
||||
b_col_glob =>aux_b(:,1)
|
||||
else
|
||||
write(psb_out_unit,'("Generating an rhs...")')
|
||||
write(psb_out_unit,'(" ")')
|
||||
call psb_realloc(m_problem,1,aux_b,ircode)
|
||||
if (ircode /= 0) then
|
||||
call psb_errpush(psb_err_alloc_dealloc_,name)
|
||||
goto 9999
|
||||
endif
|
||||
|
||||
b_col_glob => aux_b(:,1)
|
||||
do i=1, m_problem
|
||||
b_col_glob(i) = 1.d0
|
||||
enddo
|
||||
endif
|
||||
call psb_bcast(ictxt,b_col_glob(1:m_problem))
|
||||
|
||||
else
|
||||
|
||||
call psb_bcast(ictxt,m_problem)
|
||||
call psb_realloc(m_problem,1,aux_b,ircode)
|
||||
if (ircode /= 0) then
|
||||
call psb_errpush(psb_err_alloc_dealloc_,name)
|
||||
goto 9999
|
||||
endif
|
||||
b_col_glob =>aux_b(:,1)
|
||||
call psb_bcast(ictxt,b_col_glob(1:m_problem))
|
||||
|
||||
end if
|
||||
|
||||
! switch over different partition types
|
||||
if (ipart == 0) then
|
||||
call psb_barrier(ictxt)
|
||||
if (iam==psb_root_) write(psb_out_unit,'("Partition type: block")')
|
||||
allocate(ivg(m_problem),ipv(np))
|
||||
do i=1,m_problem
|
||||
call part_block(i,m_problem,np,ipv,nv)
|
||||
ivg(i) = ipv(1)
|
||||
enddo
|
||||
call psb_matdist(aux_a, a,ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
|
||||
|
||||
else if (ipart == 2) then
|
||||
if (iam==psb_root_) then
|
||||
write(psb_out_unit,'("Partition type: graph")')
|
||||
write(psb_out_unit,'(" ")')
|
||||
! write(psb_err_unit,'("Build type: graph")')
|
||||
call build_mtpart(aux_a,np)
|
||||
|
||||
endif
|
||||
call psb_barrier(ictxt)
|
||||
call distr_mtpart(psb_root_,ictxt)
|
||||
call getv_mtpart(ivg)
|
||||
call psb_matdist(aux_a, a, ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
|
||||
|
||||
else
|
||||
if (iam==psb_root_) write(psb_out_unit,'("Partition type: block")')
|
||||
call psb_matdist(aux_a, a, ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,parts=part_block)
|
||||
end if
|
||||
|
||||
allocate(H(dim_H,dim_H),stat = alloc_stat)
|
||||
do i=1,dim_h
|
||||
do j=1,dim_H
|
||||
H(i,j)=zzero
|
||||
enddo
|
||||
enddo
|
||||
allocate(V(dim_H+1),stat = alloc_stat)
|
||||
do i=1,dim_H+1
|
||||
call psb_geall(V(i),desc_a,info)
|
||||
call psb_geasb(V(i),desc_a,info)
|
||||
enddo
|
||||
|
||||
call V(1)%set(zone)
|
||||
t2 = psb_wtime() - t1
|
||||
call psb_amx(ictxt, t2)
|
||||
|
||||
if (iam==psb_root_) then
|
||||
write(psb_out_unit,'(" ")')
|
||||
write(psb_out_unit,'("Time to read and partition matrix : ",es12.5)')t2
|
||||
write(psb_out_unit,'(" ")')
|
||||
end if
|
||||
|
||||
|
||||
call psb_barrier(ictxt)
|
||||
t1 = psb_wtime()
|
||||
|
||||
norm = psb_genrm2(V(1),desc_a,info)
|
||||
if (iam==psb_root_) write(psb_out_unit,'("norma iniziale :"F20.3)')norm
|
||||
! H(2,1)=dcmplx(norm,0.0)
|
||||
H(2,1)=norm*zone
|
||||
norm = 1/norm
|
||||
!normalisation of V(1)
|
||||
call psb_geaxpby(zzero,V(1),norm*zone,V(1),desc_a, info)
|
||||
do i=2,dim_H+1
|
||||
call psb_spmm(zone,a,V(i-1),zzero,V(i),desc_a,info,'n') !we do V(i)=a*V(i-1)
|
||||
! Gram-Schmitt's reorthogonalisation
|
||||
do j=1,i-1
|
||||
dotprod= psb_gedot(V(i),V(j),desc_a,info) ! dotprod = (V(i) dot V(j))
|
||||
call psb_geaxpby(-dotprod,V(j),zone,V(i),desc_a, info) !V(i)=V(i)-V(j)*dotprod
|
||||
if(iam==psb_root_) write(*,'("dotprod : "i5, g20.4,g20.4)') i,real(dotprod),aimag(dotprod)
|
||||
H(j,i-1)=dotprod
|
||||
end do
|
||||
norm = psb_genrm2(V(i),desc_a,info)
|
||||
if (iam==psb_root_) then
|
||||
write(psb_out_unit,'("norma finale :"i20,F20.3)')i,norm
|
||||
write(psb_out_unit,'("")')
|
||||
end if
|
||||
if (i .ne. dim_H+1) then
|
||||
H(i,i-1)=cmplx(norm,0.0)
|
||||
!H(i,i-1)=norm*zone
|
||||
endif
|
||||
norm=1/norm
|
||||
call psb_geaxpby(zzero,V(i),norm*zone,V(i),desc_a, info)
|
||||
enddo
|
||||
do i=2,dim_H
|
||||
if (iam==psb_root_) write(*,'("basse diagonale de H : "i5, g20.4,g20.4)') i,real(H(i,i-1)),aimag(H(i,i-1))
|
||||
enddo
|
||||
|
||||
write(psb_out_unit,'("")')
|
||||
|
||||
allocate(eig(dim_H),work(dim_h),stat = info)
|
||||
allocate(Z(dim_H,dim_H),stat = alloc_stat)
|
||||
call ZHSEQR('E','N',dim_H,1,dim_H,H,dim_H,eig,Z,dim_H,work,3*dim_H,info)
|
||||
|
||||
!sort H's eigenvalues
|
||||
allocate(indexes(1:dim_H))
|
||||
call psb_qsort(eig,indexes,psb_alsort_up_,psb_sort_ovw_idx_)
|
||||
|
||||
call psb_barrier(ictxt)
|
||||
t2 = psb_wtime() - t1
|
||||
call psb_amx(ictxt,t2)
|
||||
|
||||
nr = desc_a%get_global_rows()
|
||||
annz = a%get_nzeros()
|
||||
amatsize = psb_sizeof(a)
|
||||
descsize = psb_sizeof(desc_a)
|
||||
call psb_sum(ictxt,annz)
|
||||
call psb_sum(ictxt,amatsize)
|
||||
call psb_sum(ictxt,descsize)
|
||||
|
||||
if (iam==psb_root_) then
|
||||
flops = 2.d0*times*annz
|
||||
tflops=flops
|
||||
write(psb_out_unit,'("Matrix: ",a)') mtrx_file
|
||||
write(psb_out_unit,'("Test on : ",i20," processors")') np
|
||||
write(psb_out_unit,'("Size of matrix : ",i20," ")') nr
|
||||
write(psb_out_unit,'("Number of nonzeros : ",i20," ")') annz
|
||||
|
||||
write(*,'("valeurs propres de H : ")')
|
||||
OPEN(unit=10, file=mtrx_file(1:3)//'.txt')
|
||||
do i=dim_H/3,dim_H
|
||||
write(psb_out_unit,'(g20.4,g20.4)')real(eig(i)),aimag(eig(i))
|
||||
write(10,'(g20.4,g20.4)')real(eig(i)),aimag(eig(i))
|
||||
enddo
|
||||
CLOSE(10)
|
||||
|
||||
tflops = tflops / (tt2)
|
||||
!
|
||||
! This computation is valid for CSR
|
||||
!
|
||||
nbytes = nr*(2*psb_sizeof_sp + psb_sizeof_int)+ &
|
||||
& annz*(psb_sizeof_sp + psb_sizeof_int)
|
||||
bdwdth = times*nbytes/(t2*1.d6)
|
||||
bdwdth = times*nbytes/(tt2*1.d6)
|
||||
|
||||
end if
|
||||
|
||||
call psb_gefree(b_col, desc_a,info)
|
||||
call psb_gefree(x_col, desc_a,info)
|
||||
call psb_spfree(a, desc_a,info)
|
||||
call psb_cdfree(desc_a,info)
|
||||
do i=1,dim_H
|
||||
call psb_gefree(V(i),desc_a,info)
|
||||
end do
|
||||
DEALLOCATE (H)
|
||||
DEALLOCATE (eig,V)
|
||||
DEALLOCATE (work)
|
||||
DEALLOCATE (Z)
|
||||
9999 continue
|
||||
if(info /= 0) then
|
||||
call psb_error(ictxt)
|
||||
end if
|
||||
call psb_exit(ictxt)
|
||||
stop
|
||||
|
||||
end program arnoldi_file
|
||||
|
||||
|
||||
|
||||
|
@ -1,409 +0,0 @@
|
||||
!!$
|
||||
!!$ Parallel Sparse BLAS version 3.1
|
||||
!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013
|
||||
!!$ Salvatore Filippone University of Rome Tor Vergata
|
||||
!!$ Alfredo Buttari CNRS-IRIT, Toulouse
|
||||
!!$
|
||||
!!$ Redistribution and use in source and binary forms, with or without
|
||||
!!$ modification, are permitted provided that the following conditions
|
||||
!!$ are met:
|
||||
!!$ 1. Redistributions of source code must retain the above copyright
|
||||
!!$ notice, this list of conditions and the following disclaimer.
|
||||
!!$ 2. Redistributions in binary form must reproduce the above copyright
|
||||
!!$ notice, this list of conditions, and the following disclaimer in the
|
||||
!!$ documentation and/or other materials provided with the distribution.
|
||||
!!$ 3. The name of the PSBLAS group or the names of its contributors may
|
||||
!!$ not be used to endorse or promote products derived from this
|
||||
!!$ software without specific written permission.
|
||||
!!$
|
||||
!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS
|
||||
!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
!!$ POSSIBILITY OF SUCH DAMAGE.
|
||||
!!$
|
||||
!!$
|
||||
program arnoldi_file
|
||||
use psb_base_mod
|
||||
use psb_util_mod
|
||||
implicit none
|
||||
|
||||
! input parameters
|
||||
character(len=40) :: kmethd, ptype, mtrx_file, rhs_file
|
||||
|
||||
! sparse matrices
|
||||
type(psb_dspmat_type) :: a, b, aux_a
|
||||
|
||||
! dense matrices
|
||||
real(psb_dpk_), allocatable, target :: aux_b(:,:), d(:)
|
||||
real(psb_dpk_), allocatable , save :: x_col_glob(:), r_col_glob(:)
|
||||
complex(psb_dpk_), allocatable, target :: H(:,:),eig(:),work(:),Z(:,:)
|
||||
integer, allocatable :: indexes(:)
|
||||
type(psb_d_vect_type), allocatable, target :: V(:)
|
||||
real(psb_dpk_), pointer :: b_col_glob(:)
|
||||
type(psb_d_vect_type) :: b_col, x_col, r_col
|
||||
|
||||
|
||||
! communications data structure
|
||||
type(psb_desc_type):: desc_a
|
||||
|
||||
integer(psb_ipk_) :: ictxt, iam, np
|
||||
|
||||
! solver paramters
|
||||
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode, ipart,&
|
||||
& methd, istopc, irst, nr
|
||||
integer(psb_long_int_k_) :: amatsize, descsize, annz, nbytes
|
||||
real(psb_dpk_) :: err, eps,cond
|
||||
|
||||
character(len=5) :: afmt
|
||||
character(len=20) :: name
|
||||
character(len=2) :: filefmt
|
||||
integer(psb_ipk_), parameter :: iunit=12
|
||||
integer(psb_ipk_) :: times=0
|
||||
integer(psb_ipk_) :: iparm(20)
|
||||
|
||||
! other variables
|
||||
integer(psb_ipk_) :: i,info,j,m_problem
|
||||
integer(psb_ipk_) :: internal, m,ii,nnzero, dim_H, alloc_stat
|
||||
real(psb_dpk_) :: t1, t2, r_amax, b_amax,&
|
||||
&scale,resmx,resmxp, flops, bdwdth
|
||||
real(psb_dpk_) :: tt1, tt2, tflops
|
||||
real (psb_dpk_) :: norm
|
||||
real (psb_dpk_) :: dotprod
|
||||
integer(psb_ipk_) :: nrhs, nrow, n_row, nv, ne
|
||||
integer(psb_ipk_), allocatable :: ivg(:), ipv(:)
|
||||
|
||||
|
||||
call psb_init(ictxt)
|
||||
call psb_info(ictxt,iam,np)
|
||||
|
||||
if (iam < 0) then
|
||||
! This should not happen, but just in case
|
||||
call psb_exit(ictxt)
|
||||
stop
|
||||
endif
|
||||
|
||||
|
||||
name='arnoldi_file'
|
||||
if(psb_get_errstatus() /= 0) goto 9999
|
||||
info=psb_success_
|
||||
call psb_set_errverbosity(2)
|
||||
!
|
||||
! Hello world
|
||||
!
|
||||
if (iam == psb_root_) then
|
||||
!write(*,*) 'Welcome to PSBLAS version: ',psb_version_string_
|
||||
!write(*,*) 'This is the ',trim(name),' sample program'
|
||||
read(psb_inp_unit,*) mtrx_file
|
||||
read(psb_inp_unit,*) filefmt
|
||||
read(psb_inp_unit,*) ipart
|
||||
read(psb_inp_unit,*) dim_H
|
||||
end if
|
||||
call psb_bcast(ictxt,mtrx_file)
|
||||
call psb_bcast(ictxt,filefmt)
|
||||
call psb_bcast(ictxt,ipart)
|
||||
call psb_bcast(ictxt,dim_H)
|
||||
rhs_file = 'NONE'
|
||||
afmt = 'CSR'
|
||||
call psb_barrier(ictxt)
|
||||
t1 = psb_wtime()
|
||||
! read the input matrix to be processed and (possibly) the rhs
|
||||
nrhs = 1
|
||||
|
||||
if (iam==psb_root_) then
|
||||
select case(psb_toupper(filefmt))
|
||||
case('MM')
|
||||
! For Matrix Market we have an input file for the matrix
|
||||
! and an (optional) second file for the RHS.
|
||||
call mm_mat_read(aux_a,info,iunit=iunit,filename=mtrx_file)
|
||||
if (info == psb_success_) then
|
||||
if (rhs_file /= 'NONE') then
|
||||
call mm_array_read(aux_b,info,iunit=iunit,filename=rhs_file)
|
||||
end if
|
||||
end if
|
||||
|
||||
case ('HB')
|
||||
! For Harwell-Boeig we have a single file which may or may not
|
||||
! contain an RHS.
|
||||
call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file)
|
||||
|
||||
case ('AD')
|
||||
call adj_read(aux_a,mtrx_file,iunit,desc_a,info)
|
||||
|
||||
case default
|
||||
info = -1
|
||||
write(psb_err_unit,*) 'Wrong choice for fileformat ', filefmt
|
||||
end select
|
||||
if (info /= psb_success_) then
|
||||
write(psb_err_unit,*) 'Error while reading input matrix '
|
||||
call psb_abort(ictxt)
|
||||
end if
|
||||
|
||||
m_problem = aux_a%get_nrows()
|
||||
call psb_bcast(ictxt,m_problem)
|
||||
|
||||
! At this point aux_b may still be unallocated
|
||||
if (psb_size(aux_b,dim=1)==m_problem) then
|
||||
! if any rhs were present, broadcast the first one
|
||||
write(psb_err_unit,'("Ok, got an rhs ")')
|
||||
b_col_glob =>aux_b(:,1)
|
||||
else
|
||||
! write(psb_out_unit,'("Generating an rhs...")')
|
||||
! write(psb_out_unit,'(" ")')
|
||||
call psb_realloc(m_problem,1,aux_b,ircode)
|
||||
if (ircode /= 0) then
|
||||
call psb_errpush(psb_err_alloc_dealloc_,name)
|
||||
goto 9999
|
||||
endif
|
||||
|
||||
b_col_glob => aux_b(:,1)
|
||||
do i=1, m_problem
|
||||
b_col_glob(i) = 1.d0
|
||||
enddo
|
||||
endif
|
||||
call psb_bcast(ictxt,b_col_glob(1:m_problem))
|
||||
|
||||
else
|
||||
|
||||
call psb_bcast(ictxt,m_problem)
|
||||
call psb_realloc(m_problem,1,aux_b,ircode)
|
||||
if (ircode /= 0) then
|
||||
call psb_errpush(psb_err_alloc_dealloc_,name)
|
||||
goto 9999
|
||||
endif
|
||||
b_col_glob =>aux_b(:,1)
|
||||
call psb_bcast(ictxt,b_col_glob(1:m_problem))
|
||||
|
||||
end if
|
||||
|
||||
! switch over different partition types
|
||||
if (ipart == 0) then
|
||||
call psb_barrier(ictxt)
|
||||
if (iam==psb_root_) write(psb_out_unit,'("Partition type: block")')
|
||||
allocate(ivg(m_problem),ipv(np))
|
||||
do i=1,m_problem
|
||||
call part_block(i,m_problem,np,ipv,nv)
|
||||
ivg(i) = ipv(1)
|
||||
enddo
|
||||
call psb_matdist(aux_a, a,ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
|
||||
|
||||
else if (ipart == 2) then
|
||||
if (iam==psb_root_) then
|
||||
!write(psb_out_unit,'("Partition type: graph")')
|
||||
!write(psb_out_unit,'(" ")')
|
||||
! write(psb_err_unit,'("Build type: graph")')
|
||||
call build_mtpart(aux_a,np)
|
||||
|
||||
endif
|
||||
call psb_barrier(ictxt)
|
||||
call distr_mtpart(psb_root_,ictxt)
|
||||
call getv_mtpart(ivg)
|
||||
call psb_matdist(aux_a, a, ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
|
||||
|
||||
else
|
||||
!if (iam==psb_root_) write(psb_out_unit,'("Partition type: block")')
|
||||
call psb_matdist(aux_a, a, ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,parts=part_block)
|
||||
end if
|
||||
|
||||
call lapl(a,b)
|
||||
|
||||
allocate(H(dim_H,dim_H),stat = alloc_stat)
|
||||
do i=1,dim_h
|
||||
do j=1,dim_H
|
||||
H(i,j)=zzero
|
||||
enddo
|
||||
enddo
|
||||
allocate(V(dim_H+1),stat = alloc_stat)
|
||||
do i=1,dim_H+1
|
||||
call psb_geall(V(i),desc_a,info)
|
||||
call psb_geasb(V(i),desc_a,info)
|
||||
enddo
|
||||
call V(1)%set(done)
|
||||
t2 = psb_wtime() - t1
|
||||
call psb_amx(ictxt, t2)
|
||||
|
||||
! if (iam==psb_root_) then
|
||||
!write(psb_out_unit,'(" ")')
|
||||
!write(psb_out_unit,'("Time to read and partition matrix : ",es12.5)')t2
|
||||
!write(psb_out_unit,'(" ")')
|
||||
!end if
|
||||
|
||||
call psb_barrier(ictxt)
|
||||
|
||||
norm = psb_norm2(V(1),desc_a,info)
|
||||
H(2,1)=cmplx(norm,0.0)
|
||||
norm = 1/norm
|
||||
!normalisation of V(1)
|
||||
call psb_geaxpby(dzero,V(1),norm,V(1),desc_a, info)
|
||||
do i=2,dim_H+1
|
||||
call psb_spmm(done,b,V(i-1),dzero,V(i),desc_a,info,'n') !we do V(i)=b*V(i-1)
|
||||
! Gram-Schmitt's reorthogonalisation
|
||||
do j=1,i-1
|
||||
dotprod= psb_gedot(V(i),V(j),desc_a,info) ! dotprod = (V(i) dot V(j))
|
||||
call psb_geaxpby(-dotprod,V(j),done,V(i),desc_a, info) !V(i)=V(i)-V(j)*dotprod
|
||||
H(j,i-1)=cmplx(dotprod,0.0)
|
||||
end do
|
||||
norm = psb_norm2(V(i),desc_a,info)
|
||||
! write(psb_out_unit,'("norma finale :"i20,F20.3)')i,norm
|
||||
! write(psb_out_unit,'("")')
|
||||
if (i .ne. dim_H+1) then
|
||||
H(i,i-1)=cmplx(norm,0.0)
|
||||
endif
|
||||
norm=1/norm
|
||||
call psb_geaxpby(dzero,V(i),norm,V(i),desc_a, info)
|
||||
enddo
|
||||
|
||||
write(psb_out_unit,'("")')
|
||||
|
||||
if (iam==psb_root_) then
|
||||
allocate(eig(dim_H),work(dim_h),Z(dim_H,dim_H),stat = info)
|
||||
call ZHSEQR('E','N',dim_H,1,dim_H,H,dim_H,eig,Z,dim_H,work,dim_H,info)
|
||||
|
||||
!sort H's eigenvalues
|
||||
allocate(indexes(1:dim_H))
|
||||
call psb_qsort(eig,indexes,psb_alsort_up_,psb_sort_ovw_idx_)
|
||||
end if
|
||||
|
||||
call psb_barrier(ictxt)
|
||||
t2 = psb_wtime() - t1
|
||||
call psb_amx(ictxt,t2)
|
||||
|
||||
nr = desc_a%get_global_rows()
|
||||
annz = a%get_nzeros()
|
||||
amatsize = psb_sizeof(a)
|
||||
descsize = psb_sizeof(desc_a)
|
||||
call psb_sum(ictxt,annz)
|
||||
call psb_sum(ictxt,amatsize)
|
||||
call psb_sum(ictxt,descsize)
|
||||
|
||||
if (iam==psb_root_) then
|
||||
flops = 2.d0*times*annz
|
||||
tflops=flops
|
||||
! write(psb_out_unit,'("Matrix: ",a)') mtrx_file
|
||||
! write(psb_out_unit,'("Test on : ",i20," processors")') np
|
||||
! write(psb_out_unit,'("Size of matrix : ",i20," ")') nr
|
||||
! write(psb_out_unit,'("Number of nonzeros : ",i20," ")') annz
|
||||
|
||||
open(15, FILE="resultats.dat", position = 'append',ACTION="WRITE")
|
||||
write (15, '(a,F20.6,F20.6,F20.4)')mtrx_file,real(eig(dim_H)),real(eig(dim_H-1)),t2
|
||||
close(15)
|
||||
DEALLOCATE (work,eig,Z)
|
||||
|
||||
!write(*,'("valeurs propres de H : ")')
|
||||
!do i=dim_H/3,dim_H
|
||||
! write(psb_out_unit,'(g20.4,g20.4)')real(eig(i)),aimag(eig(i))
|
||||
!enddo
|
||||
|
||||
tflops = tflops / (tt2)
|
||||
!
|
||||
! This computation is valid for CSR
|
||||
!
|
||||
nbytes = nr*(2*psb_sizeof_sp + psb_sizeof_int)+ &
|
||||
& annz*(psb_sizeof_sp + psb_sizeof_int)
|
||||
bdwdth = times*nbytes/(t2*1.d6)
|
||||
bdwdth = times*nbytes/(tt2*1.d6)
|
||||
|
||||
end if
|
||||
|
||||
call psb_gefree(b_col, desc_a,info)
|
||||
call psb_gefree(x_col, desc_a,info)
|
||||
call psb_spfree(a, desc_a,info)
|
||||
call psb_cdfree(desc_a,info)
|
||||
do i=1,dim_H
|
||||
call psb_gefree(V(i), desc_a,info)
|
||||
enddo
|
||||
DEALLOCATE (H)
|
||||
DEALLOCATE (V)
|
||||
9999 continue
|
||||
if(info /= 0) then
|
||||
call psb_error(ictxt)
|
||||
end if
|
||||
call psb_exit(ictxt)
|
||||
stop
|
||||
|
||||
contains
|
||||
|
||||
subroutine adj_read (a,filename,iunit,desc_a,info)
|
||||
type(psb_dspmat_type), intent (inout) :: a
|
||||
character(len=40) :: filename
|
||||
integer (psb_ipk_) :: iunit
|
||||
type(psb_desc_type):: desc_a
|
||||
integer (psb_ipk_) :: info
|
||||
|
||||
integer(psb_ipk_) :: i,nnzero,nrows
|
||||
integer (psb_ipk_) :: iError
|
||||
type(psb_d_coo_sparse_mat) :: acoo
|
||||
|
||||
open(iunit, FILE=filename, STATUS="OLD", ACTION="READ")
|
||||
read(iunit, *) nrows , nnzero
|
||||
|
||||
call acoo%allocate(nrows,nrows,nnzero)
|
||||
do i = 1,nnzero
|
||||
read(iunit, *) acoo%ia(i),acoo%ja(i)
|
||||
acoo%ia(i)=acoo%ia(i)+1
|
||||
acoo%ja(i)=acoo%ja(i)+1
|
||||
acoo%val(i)=1.0
|
||||
end do
|
||||
close(UNIT=iunit)
|
||||
!call psb_spall(a,desc_a,info,nnzero)
|
||||
!call psb_spins(nnzero, ia, ja, val, a, desc_a, info)
|
||||
call acoo%set_nzeros(nnzero)
|
||||
call acoo%fix(info)
|
||||
call a%mv_from(acoo)
|
||||
call a%cscnv(info,type='csr')
|
||||
end subroutine adj_read
|
||||
|
||||
|
||||
subroutine lapl(a,b)
|
||||
type(psb_dspmat_type),intent(in)::a
|
||||
type(psb_dspmat_type),intent(out)::b
|
||||
|
||||
type(psb_d_coo_sparse_mat) :: acoo
|
||||
integer(psb_ipk_) :: nz,n,info,i
|
||||
real(psb_dpk_), allocatable :: K(:)
|
||||
|
||||
call a%cp_to(acoo)
|
||||
nz=acoo%get_nzeros()
|
||||
n=a%get_nrows()
|
||||
allocate(K(n))
|
||||
do i=1,n
|
||||
K(i)=0
|
||||
enddo
|
||||
do i=1,nz
|
||||
K(acoo%ia(i))=K(acoo%ia(i))+acoo%val(i)
|
||||
acoo%val(i)=-acoo%val(i)
|
||||
enddo
|
||||
call acoo%reallocate(nz+n)
|
||||
do i=1,n
|
||||
acoo%val(nz+i)=K(i)
|
||||
acoo%ia(nz+i)= i
|
||||
acoo%ja(nz+i)= i
|
||||
enddo
|
||||
call acoo%set_nzeros(nz+n)
|
||||
call acoo%fix(info)
|
||||
call b%mv_from(acoo)
|
||||
!if(iam==psb_root_) then
|
||||
! write(psb_out_unit,'("nz, n",i10,i10," 1")') nz,n
|
||||
! write(psb_out_unit,'("b%get_nzeros ?",i10, " 1")') b%get_nzeros()
|
||||
!else
|
||||
! write(psb_out_unit,'("nz,n",i10,i10," 2")') nz,n
|
||||
! write(psb_out_unit,'("b%get_nzeros ?",i10, " 2")')b%get_nzeros()
|
||||
!end if
|
||||
call b%cscnv(info,'CSR')
|
||||
deallocate (K)
|
||||
end subroutine lapl
|
||||
|
||||
end program arnoldi_file
|
||||
|
||||
|
||||
|
||||
|
@ -1,308 +0,0 @@
|
||||
!!$
|
||||
!!$ Parallel Sparse BLAS version 2.3.1
|
||||
!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012
|
||||
!!$ Salvatore Filippone University of Rome Tor Vergata
|
||||
!!$ Alfredo Buttari CNRS-IRIT, Toulouse
|
||||
!!$
|
||||
!!$ Redistribution and use in source and binary forms, with or without
|
||||
!!$ modification, are permitted provided that the following conditions
|
||||
!!$ are met:
|
||||
!!$ 1. Redistributions of source code must retain the above copyright
|
||||
!!$ notice, this list of conditions and the following disclaimer.
|
||||
!!$ 2. Redistributions in binary form must reproduce the above copyright
|
||||
!!$ notice, this list of conditions, and the following disclaimer in the
|
||||
!!$ documentation and/or other materials provided with the distribution.
|
||||
!!$ 3. The name of the PSBLAS group or the names of its contributors may
|
||||
!!$ not be used to endorse or promote products derived from this
|
||||
!!$ software without specific written permission.
|
||||
!!$
|
||||
!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS
|
||||
!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
!!$ POSSIBILITY OF SUCH DAMAGE.
|
||||
!!$
|
||||
!!$
|
||||
! File: ppde.f90
|
||||
!
|
||||
program pdgenspmv
|
||||
use psb_base_mod
|
||||
use psb_util_mod
|
||||
implicit none
|
||||
|
||||
! input parameters
|
||||
character(len=20) :: kmethd, ptype
|
||||
character(len=5) :: afmt
|
||||
integer(psb_ipk_) :: idim
|
||||
|
||||
! miscellaneous
|
||||
real(psb_dpk_), parameter :: one = 1.d0
|
||||
real(psb_dpk_) :: t1, t2, tprec, flops, tflops, tt1, tt2, bdwdth
|
||||
|
||||
! sparse matrix and preconditioner
|
||||
type(psb_dspmat_type) :: a
|
||||
! descriptor
|
||||
type(psb_desc_type) :: desc_a
|
||||
! dense matrices
|
||||
type(psb_d_vect_type) :: xv,bv, vtst
|
||||
real(psb_dpk_), allocatable :: tst(:)
|
||||
! blacs parameters
|
||||
integer(psb_ipk_) :: ictxt, iam, np
|
||||
|
||||
! solver parameters
|
||||
integer(psb_ipk_) :: iter, itmax,itrace, istopc, irst, nr
|
||||
integer(psb_long_int_k_) :: amatsize, precsize, descsize, d2size, annz, nbytes
|
||||
real(psb_dpk_) :: err, eps
|
||||
integer(psb_ipk_), parameter :: times=10
|
||||
|
||||
! other variables
|
||||
integer(psb_ipk_) :: info, i
|
||||
character(len=20) :: name,ch_err
|
||||
character(len=40) :: fname
|
||||
|
||||
info=psb_success_
|
||||
|
||||
|
||||
call psb_init(ictxt)
|
||||
call psb_info(ictxt,iam,np)
|
||||
|
||||
if (iam < 0) then
|
||||
! This should not happen, but just in case
|
||||
call psb_exit(ictxt)
|
||||
stop
|
||||
endif
|
||||
if(psb_get_errstatus() /= 0) goto 9999
|
||||
name='pde90'
|
||||
call psb_set_errverbosity(itwo)
|
||||
!
|
||||
! Hello world
|
||||
!
|
||||
if (iam == psb_root_) then
|
||||
write(*,*) 'Welcome to PSBLAS version: ',psb_version_string_
|
||||
write(*,*) 'This is the ',trim(name),' sample program'
|
||||
end if
|
||||
!
|
||||
! get parameters
|
||||
!
|
||||
call get_parms(ictxt,afmt,idim)
|
||||
|
||||
!
|
||||
! allocate and fill in the coefficient matrix, rhs and initial guess
|
||||
!
|
||||
call psb_barrier(ictxt)
|
||||
t1 = psb_wtime()
|
||||
call psb_gen_pde3d(ictxt,idim,a,bv,xv,desc_a,afmt,&
|
||||
& a1,a2,a3,b1,b2,b3,c,g,info)
|
||||
call psb_barrier(ictxt)
|
||||
t2 = psb_wtime() - t1
|
||||
if(info /= psb_success_) then
|
||||
info=psb_err_from_subroutine_
|
||||
ch_err='psb_gen_pde3d'
|
||||
call psb_errpush(info,name,a_err=ch_err)
|
||||
goto 9999
|
||||
end if
|
||||
if (iam == psb_root_) write(psb_out_unit,'("Overall matrix creation time : ",es12.5)')t2
|
||||
if (iam == psb_root_) write(psb_out_unit,'(" ")')
|
||||
|
||||
call xv%set(done)
|
||||
|
||||
call psb_barrier(ictxt)
|
||||
t1 = psb_wtime()
|
||||
|
||||
do i=1,times
|
||||
call psb_spmm(done,a,xv,dzero,bv,desc_a,info,'n')
|
||||
end do
|
||||
|
||||
call psb_barrier(ictxt)
|
||||
t2 = psb_wtime() - t1
|
||||
call psb_amx(ictxt,t2)
|
||||
|
||||
! FIXME: cache flush needed here
|
||||
call psb_barrier(ictxt)
|
||||
tt1 = psb_wtime()
|
||||
do i=1,times
|
||||
call psb_spmm(done,a,xv,dzero,bv,desc_a,info,'t')
|
||||
end do
|
||||
call psb_barrier(ictxt)
|
||||
tt2 = psb_wtime() - tt1
|
||||
call psb_amx(ictxt,tt2)
|
||||
|
||||
call psb_amx(ictxt,t2)
|
||||
nr = desc_a%get_global_rows()
|
||||
annz = a%get_nzeros()
|
||||
amatsize = a%sizeof()
|
||||
descsize = psb_sizeof(desc_a)
|
||||
call psb_sum(ictxt,annz)
|
||||
call psb_sum(ictxt,amatsize)
|
||||
call psb_sum(ictxt,descsize)
|
||||
|
||||
if (iam == psb_root_) then
|
||||
flops = 2.d0*times*annz
|
||||
tflops=flops
|
||||
write(psb_out_unit,'("Matrix: ell1 ",i0)') idim
|
||||
write(psb_out_unit,'("Test on : ",i20," processors")') np
|
||||
write(psb_out_unit,'("Size of matrix : ",i20," ")') nr
|
||||
write(psb_out_unit,'("Number of nonzeros : ",i20," ")') annz
|
||||
write(psb_out_unit,'("Memory occupation : ",i20," ")') amatsize
|
||||
write(psb_out_unit,'("Number of flops (",i0," prod) : ",F20.0," ")') times,flops
|
||||
flops = flops / (t2)
|
||||
tflops = tflops / (tt2)
|
||||
write(psb_out_unit,'("Time for ",i0," products (s) : ",F20.3)')times, t2
|
||||
write(psb_out_unit,'("Time per product (ms) : ",F20.3)') t2*1.d3/(1.d0*times)
|
||||
write(psb_out_unit,'("MFLOPS : ",F20.3)') flops/1.d6
|
||||
|
||||
write(psb_out_unit,'("Time for ",i0," products (s) (trans.): ",F20.3)') times,tt2
|
||||
write(psb_out_unit,'("Time per product (ms) (trans.): ",F20.3)') tt2*1.d3/(1.d0*times)
|
||||
write(psb_out_unit,'("MFLOPS (trans.): ",F20.3)') tflops/1.d6
|
||||
|
||||
!
|
||||
! This computation is valid for CSR
|
||||
!
|
||||
nbytes = nr*(2*psb_sizeof_dp + psb_sizeof_int)+&
|
||||
& annz*(psb_sizeof_dp + psb_sizeof_int)
|
||||
bdwdth = times*nbytes/(t2*1.d6)
|
||||
write(psb_out_unit,*)
|
||||
write(psb_out_unit,'("MBYTES/S : ",F20.3)') bdwdth
|
||||
bdwdth = times*nbytes/(tt2*1.d6)
|
||||
write(psb_out_unit,'("MBYTES/S (trans): ",F20.3)') bdwdth
|
||||
write(psb_out_unit,'("Storage type for DESC_A: ",a)') desc_a%get_fmt()
|
||||
write(psb_out_unit,'("Total memory occupation for DESC_A: ",i12)')descsize
|
||||
|
||||
end if
|
||||
|
||||
|
||||
!
|
||||
! cleanup storage and exit
|
||||
!
|
||||
call psb_gefree(bv,desc_a,info)
|
||||
call psb_gefree(xv,desc_a,info)
|
||||
call psb_spfree(a,desc_a,info)
|
||||
call psb_cdfree(desc_a,info)
|
||||
if(info /= psb_success_) then
|
||||
info=psb_err_from_subroutine_
|
||||
ch_err='free routine'
|
||||
call psb_errpush(info,name,a_err=ch_err)
|
||||
goto 9999
|
||||
end if
|
||||
|
||||
9999 continue
|
||||
if(info /= psb_success_) then
|
||||
call psb_error(ictxt)
|
||||
end if
|
||||
call psb_exit(ictxt)
|
||||
stop
|
||||
|
||||
contains
|
||||
!
|
||||
! get iteration parameters from standard input
|
||||
!
|
||||
subroutine get_parms(ictxt,afmt,idim)
|
||||
integer(psb_ipk_) :: ictxt
|
||||
character(len=*) :: afmt
|
||||
integer(psb_ipk_) :: idim
|
||||
integer(psb_ipk_) :: np, iam
|
||||
integer(psb_ipk_) :: intbuf(10), ip
|
||||
|
||||
call psb_info(ictxt, iam, np)
|
||||
|
||||
if (iam == 0) then
|
||||
read(psb_inp_unit,*) afmt
|
||||
read(psb_inp_unit,*) idim
|
||||
endif
|
||||
call psb_bcast(ictxt,afmt)
|
||||
call psb_bcast(ictxt,idim)
|
||||
|
||||
if (iam == 0) then
|
||||
write(psb_out_unit,'("Testing matrix : ell1")')
|
||||
write(psb_out_unit,'("Grid dimensions : ",i4,"x",i4,"x",i4)')idim,idim,idim
|
||||
write(psb_out_unit,'("Number of processors : ",i0)')np
|
||||
write(psb_out_unit,'("Data distribution : BLOCK")')
|
||||
write(psb_out_unit,'(" ")')
|
||||
end if
|
||||
return
|
||||
|
||||
end subroutine get_parms
|
||||
!
|
||||
! print an error message
|
||||
!
|
||||
subroutine pr_usage(iout)
|
||||
integer(psb_ipk_) :: iout
|
||||
write(iout,*)'incorrect parameter(s) found'
|
||||
write(iout,*)' usage: pde90 methd prec dim &
|
||||
&[istop itmax itrace]'
|
||||
write(iout,*)' where:'
|
||||
write(iout,*)' methd: cgstab cgs rgmres bicgstabl'
|
||||
write(iout,*)' prec : bjac diag none'
|
||||
write(iout,*)' dim number of points along each axis'
|
||||
write(iout,*)' the size of the resulting linear '
|
||||
write(iout,*)' system is dim**3'
|
||||
write(iout,*)' istop stopping criterion 1, 2 '
|
||||
write(iout,*)' itmax maximum number of iterations [500] '
|
||||
write(iout,*)' itrace <=0 (no tracing, default) or '
|
||||
write(iout,*)' >= 1 do tracing every itrace'
|
||||
write(iout,*)' iterations '
|
||||
end subroutine pr_usage
|
||||
|
||||
!
|
||||
! functions parametrizing the differential equation
|
||||
!
|
||||
function b1(x,y,z)
|
||||
use psb_base_mod, only : psb_dpk_
|
||||
real(psb_dpk_) :: b1
|
||||
real(psb_dpk_), intent(in) :: x,y,z
|
||||
b1=1.d0/sqrt(3.d0)
|
||||
end function b1
|
||||
function b2(x,y,z)
|
||||
use psb_base_mod, only : psb_dpk_
|
||||
real(psb_dpk_) :: b2
|
||||
real(psb_dpk_), intent(in) :: x,y,z
|
||||
b2=1.d0/sqrt(3.d0)
|
||||
end function b2
|
||||
function b3(x,y,z)
|
||||
use psb_base_mod, only : psb_dpk_
|
||||
real(psb_dpk_) :: b3
|
||||
real(psb_dpk_), intent(in) :: x,y,z
|
||||
b3=1.d0/sqrt(3.d0)
|
||||
end function b3
|
||||
function c(x,y,z)
|
||||
use psb_base_mod, only : psb_dpk_
|
||||
real(psb_dpk_) :: c
|
||||
real(psb_dpk_), intent(in) :: x,y,z
|
||||
c=0.d0
|
||||
end function c
|
||||
function a1(x,y,z)
|
||||
use psb_base_mod, only : psb_dpk_
|
||||
real(psb_dpk_) :: a1
|
||||
real(psb_dpk_), intent(in) :: x,y,z
|
||||
a1=1.d0/80
|
||||
end function a1
|
||||
function a2(x,y,z)
|
||||
use psb_base_mod, only : psb_dpk_
|
||||
real(psb_dpk_) :: a2
|
||||
real(psb_dpk_), intent(in) :: x,y,z
|
||||
a2=1.d0/80
|
||||
end function a2
|
||||
function a3(x,y,z)
|
||||
use psb_base_mod, only : psb_dpk_
|
||||
real(psb_dpk_) :: a3
|
||||
real(psb_dpk_), intent(in) :: x,y,z
|
||||
a3=1.d0/80
|
||||
end function a3
|
||||
function g(x,y,z)
|
||||
use psb_base_mod, only : psb_dpk_, done
|
||||
real(psb_dpk_) :: g
|
||||
real(psb_dpk_), intent(in) :: x,y,z
|
||||
g = dzero
|
||||
if (x == done) then
|
||||
g = done
|
||||
else if (x == dzero) then
|
||||
g = exp(y**2-z**2)
|
||||
end if
|
||||
end function g
|
||||
end program pdgenspmv
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,8 @@
|
||||
SD.BA3.R+0.04.N16000.034.edg
|
||||
AD
|
||||
0
|
||||
1.d-22
|
||||
40
|
||||
1.d-6
|
||||
DIAG
|
||||
CG
|
@ -0,0 +1,8 @@
|
||||
SD.BA3.R-0.08.N02800.069.edg
|
||||
AD
|
||||
0
|
||||
1.d-22
|
||||
50
|
||||
1.d-6
|
||||
DIAG
|
||||
CG
|
Binary file not shown.
@ -0,0 +1,3 @@
|
||||
SD.BA3.R+0.04.N16000.034.edg
|
||||
SD.BA3.R+0.04.N16000.034.mm
|
||||
0
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,24 @@
|
||||
SD.BA3.R-0.08.N02800.069.edg 15.786965 83 0.0285
|
||||
143.134036 129.053083 0.0109
|
||||
2.510859 7.561911 0.1639
|
||||
SD.BA3.R-0.08.N02800.069.edg 15.786965 83 0.0286
|
||||
143.134036 129.053083 0.0110
|
||||
2.510859 7.561911 0.1644
|
||||
SD.BA3.R-0.08.N02800.069.edg 15.786965 83 0.0285
|
||||
143.134036 129.053083 0.0108
|
||||
2.510859 7.561911 0.1628
|
||||
SD.BA3.R-0.08.N02800.069.edg 15.786965 83 0.0286
|
||||
143.134036 129.053083 0.0109
|
||||
0.000000 1.259813 0.1624
|
||||
SD.BA3.R-0.08.N02800.069.edg 15.786965 83 0.0288
|
||||
143.134036 129.053083 0.0218
|
||||
0.000000 1.258736 0.2702
|
||||
SD.BA3.R+0.04.N16000.034.edg 28.440679 68 0.1576
|
||||
442.050403 279.115048 0.0506
|
||||
0.000000 0.242873 1.7951
|
||||
SD.BA3.R-0.08.N02800.069.edg 15.786965 83 0.1194
|
||||
143.134036 129.053083 0.0970
|
||||
0.000000 1.258736 0.2805
|
||||
SD.BA3.R-0.08.N02800.069.edg 15.786965 68 0.0290
|
||||
143.134036 129.053083 0.0190
|
||||
0.000000 1.258736 0.2424
|
@ -1,298 +0,0 @@
|
||||
!$
|
||||
!!$ Parallel Sparse BLAS version 3.1
|
||||
!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013
|
||||
!!$ Salvatore Filippone University of Rome Tor Vergata
|
||||
!!$ Alfredo Buttari CNRS-IRIT, Toulouse
|
||||
!!$
|
||||
!!$ Redistribution and use in source and binary forms, with or without
|
||||
!!$ modification, are permitted provided that the following conditions
|
||||
!!$ are met:
|
||||
!!$ 1. Redistributions of source code must retain the above copyright
|
||||
!!$ notice, this list of conditions and the following disclaimer.
|
||||
!!$ 2. Redistributions in binary form must reproduce the above copyright
|
||||
!!$ notice, this list of conditions, and the following disclaimer in the
|
||||
!!$ documentation and/or other materials provided with the distribution.
|
||||
!!$ 3. The name of the PSBLAS group or the names of its contributors may
|
||||
!!$ not be used to endorse or promote products derived from this
|
||||
!!$ software without specific written permission.
|
||||
!!$
|
||||
!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS
|
||||
!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
!!$ POSSIBILITY OF SUCH DAMAGE.
|
||||
!!$
|
||||
!!$
|
||||
program s_file_spmv
|
||||
use psb_base_mod
|
||||
use psb_util_mod
|
||||
implicit none
|
||||
|
||||
! input parameters
|
||||
character(len=40) :: kmethd, ptype, mtrx_file, rhs_file
|
||||
|
||||
! sparse matrices
|
||||
type(psb_sspmat_type) :: a, aux_a
|
||||
|
||||
! dense matrices
|
||||
real(psb_spk_), allocatable, target :: aux_b(:,:), d(:)
|
||||
real(psb_spk_), allocatable , save :: x_col_glob(:), r_col_glob(:)
|
||||
real(psb_spk_), pointer :: b_col_glob(:)
|
||||
type(psb_s_vect_type) :: b_col, x_col, r_col
|
||||
|
||||
|
||||
! communications data structure
|
||||
type(psb_desc_type):: desc_a
|
||||
|
||||
integer(psb_ipk_) :: ictxt, iam, np
|
||||
|
||||
! solver paramters
|
||||
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode, ipart,&
|
||||
& methd, istopc, irst, nr
|
||||
integer(psb_long_int_k_) :: amatsize, descsize, annz, nbytes
|
||||
real(psb_spk_) :: err, eps,cond
|
||||
|
||||
character(len=5) :: afmt
|
||||
character(len=20) :: name
|
||||
character(len=2) :: filefmt
|
||||
integer(psb_ipk_), parameter :: iunit=12
|
||||
integer(psb_ipk_), parameter :: times=10
|
||||
integer(psb_ipk_) :: iparm(20)
|
||||
|
||||
! other variables
|
||||
integer(psb_ipk_) :: i,info,j,m_problem
|
||||
integer(psb_ipk_) :: internal, m,ii,nnzero
|
||||
real(psb_dpk_) :: t1, t2, r_amax, b_amax,&
|
||||
&scale,resmx,resmxp, flops, bdwdth
|
||||
real(psb_dpk_) :: tt1, tt2, tflops
|
||||
integer(psb_ipk_) :: nrhs, nrow, n_row, dim, nv, ne
|
||||
integer(psb_ipk_), allocatable :: ivg(:), ipv(:)
|
||||
|
||||
|
||||
call psb_init(ictxt)
|
||||
call psb_info(ictxt,iam,np)
|
||||
|
||||
if (iam < 0) then
|
||||
! This should not happen, but just in case
|
||||
call psb_exit(ictxt)
|
||||
stop
|
||||
endif
|
||||
|
||||
|
||||
name='s_file_spmv'
|
||||
if(psb_get_errstatus() /= 0) goto 9999
|
||||
info=psb_success_
|
||||
call psb_set_errverbosity(2)
|
||||
!
|
||||
! Hello world
|
||||
!
|
||||
if (iam == psb_root_) then
|
||||
write(*,*) 'Welcome to PSBLAS version: ',psb_version_string_
|
||||
write(*,*) 'This is the ',trim(name),' sample program'
|
||||
read(psb_inp_unit,*) mtrx_file
|
||||
read(psb_inp_unit,*) filefmt
|
||||
read(psb_inp_unit,*) ipart
|
||||
end if
|
||||
call psb_bcast(ictxt,mtrx_file)
|
||||
call psb_bcast(ictxt,filefmt)
|
||||
call psb_bcast(ictxt,ipart)
|
||||
rhs_file = 'NONE'
|
||||
afmt = 'CSR'
|
||||
call psb_barrier(ictxt)
|
||||
t1 = psb_wtime()
|
||||
! read the input matrix to be processed and (possibly) the rhs
|
||||
nrhs = 1
|
||||
|
||||
if (iam==psb_root_) then
|
||||
select case(psb_toupper(filefmt))
|
||||
case('MM')
|
||||
! For Matrix Market we have an input file for the matrix
|
||||
! and an (optional) second file for the RHS.
|
||||
call mm_mat_read(aux_a,info,iunit=iunit,filename=mtrx_file)
|
||||
if (info == psb_success_) then
|
||||
if (rhs_file /= 'NONE') then
|
||||
call mm_array_read(aux_b,info,iunit=iunit,filename=rhs_file)
|
||||
end if
|
||||
end if
|
||||
|
||||
case ('HB')
|
||||
! For Harwell-Boeing we have a single file which may or may not
|
||||
! contain an RHS.
|
||||
call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file)
|
||||
|
||||
case default
|
||||
info = -1
|
||||
write(psb_err_unit,*) 'Wrong choice for fileformat ', filefmt
|
||||
end select
|
||||
if (info /= psb_success_) then
|
||||
write(psb_err_unit,*) 'Error while reading input matrix '
|
||||
call psb_abort(ictxt)
|
||||
end if
|
||||
|
||||
m_problem = aux_a%get_nrows()
|
||||
call psb_bcast(ictxt,m_problem)
|
||||
|
||||
! At this point aux_b may still be unallocated
|
||||
if (psb_size(aux_b,dim=1)==m_problem) then
|
||||
! if any rhs were present, broadcast the first one
|
||||
write(psb_err_unit,'("Ok, got an rhs ")')
|
||||
b_col_glob =>aux_b(:,1)
|
||||
else
|
||||
write(psb_out_unit,'("Generating an rhs...")')
|
||||
write(psb_out_unit,'(" ")')
|
||||
call psb_realloc(m_problem,1,aux_b,ircode)
|
||||
if (ircode /= 0) then
|
||||
call psb_errpush(psb_err_alloc_dealloc_,name)
|
||||
goto 9999
|
||||
endif
|
||||
|
||||
b_col_glob => aux_b(:,1)
|
||||
do i=1, m_problem
|
||||
b_col_glob(i) = 1.d0
|
||||
enddo
|
||||
endif
|
||||
call psb_bcast(ictxt,b_col_glob(1:m_problem))
|
||||
|
||||
else
|
||||
|
||||
call psb_bcast(ictxt,m_problem)
|
||||
call psb_realloc(m_problem,1,aux_b,ircode)
|
||||
if (ircode /= 0) then
|
||||
call psb_errpush(psb_err_alloc_dealloc_,name)
|
||||
goto 9999
|
||||
endif
|
||||
b_col_glob =>aux_b(:,1)
|
||||
call psb_bcast(ictxt,b_col_glob(1:m_problem))
|
||||
|
||||
end if
|
||||
|
||||
! switch over different partition types
|
||||
if (ipart == 0) then
|
||||
call psb_barrier(ictxt)
|
||||
if (iam==psb_root_) write(psb_out_unit,'("Partition type: block")')
|
||||
allocate(ivg(m_problem),ipv(np))
|
||||
do i=1,m_problem
|
||||
call part_block(i,m_problem,np,ipv,nv)
|
||||
ivg(i) = ipv(1)
|
||||
enddo
|
||||
call psb_matdist(aux_a, a, ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
|
||||
|
||||
else if (ipart == 2) then
|
||||
if (iam==psb_root_) then
|
||||
write(psb_out_unit,'("Partition type: graph")')
|
||||
write(psb_out_unit,'(" ")')
|
||||
! write(psb_err_unit,'("Build type: graph")')
|
||||
call build_mtpart(aux_a,np)
|
||||
|
||||
endif
|
||||
call psb_barrier(ictxt)
|
||||
call distr_mtpart(psb_root_,ictxt)
|
||||
call getv_mtpart(ivg)
|
||||
call psb_matdist(aux_a, a, ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
|
||||
|
||||
else
|
||||
if (iam==psb_root_) write(psb_out_unit,'("Partition type: block")')
|
||||
call psb_matdist(aux_a, a, ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,parts=part_block)
|
||||
end if
|
||||
|
||||
call psb_geall(x_col,desc_a,info)
|
||||
call x_col%set(sone)
|
||||
call psb_geasb(x_col,desc_a,info)
|
||||
t2 = psb_wtime() - t1
|
||||
|
||||
|
||||
call psb_amx(ictxt, t2)
|
||||
|
||||
if (iam==psb_root_) then
|
||||
write(psb_out_unit,'(" ")')
|
||||
write(psb_out_unit,'("Time to read and partition matrix : ",es12.5)')t2
|
||||
write(psb_out_unit,'(" ")')
|
||||
end if
|
||||
|
||||
|
||||
call psb_barrier(ictxt)
|
||||
t1 = psb_wtime()
|
||||
do i=1,times
|
||||
call psb_spmm(sone,a,x_col,szero,b_col,desc_a,info,'n')
|
||||
end do
|
||||
call psb_barrier(ictxt)
|
||||
t2 = psb_wtime() - t1
|
||||
call psb_amx(ictxt,t2)
|
||||
|
||||
! FIXME: cache flush needed here
|
||||
call psb_barrier(ictxt)
|
||||
tt1 = psb_wtime()
|
||||
do i=1,times
|
||||
call psb_spmm(sone,a,x_col,szero,b_col,desc_a,info,'t')
|
||||
end do
|
||||
call psb_barrier(ictxt)
|
||||
tt2 = psb_wtime() - tt1
|
||||
call psb_amx(ictxt,tt2)
|
||||
|
||||
nr = desc_a%get_global_rows()
|
||||
annz = a%get_nzeros()
|
||||
amatsize = psb_sizeof(a)
|
||||
descsize = psb_sizeof(desc_a)
|
||||
call psb_sum(ictxt,annz)
|
||||
call psb_sum(ictxt,amatsize)
|
||||
call psb_sum(ictxt,descsize)
|
||||
|
||||
if (iam==psb_root_) then
|
||||
flops = 2.d0*times*annz
|
||||
tflops=flops
|
||||
write(psb_out_unit,'("Matrix: ",a)') mtrx_file
|
||||
write(psb_out_unit,'("Test on : ",i20," processors")') np
|
||||
write(psb_out_unit,'("Size of matrix : ",i20," ")') nr
|
||||
write(psb_out_unit,'("Number of nonzeros : ",i20," ")') annz
|
||||
write(psb_out_unit,'("Memory occupation : ",i20," ")') amatsize
|
||||
write(psb_out_unit,'("Number of flops (",i0," prod) : ",F20.0," ")') times,flops
|
||||
flops = flops / (t2)
|
||||
tflops = tflops / (tt2)
|
||||
write(psb_out_unit,'("Time for ",i0," products (s) : ",F20.3)')times, t2
|
||||
write(psb_out_unit,'("Time per product (ms) : ",F20.3)') t2*1.d3/(1.d0*times)
|
||||
write(psb_out_unit,'("MFLOPS : ",F20.3)') flops/1.d6
|
||||
|
||||
write(psb_out_unit,'("Time for ",i0," products (s) (trans.): ",F20.3)') times,tt2
|
||||
write(psb_out_unit,'("Time per product (ms) (trans.): ",F20.3)') tt2*1.d3/(1.d0*times)
|
||||
write(psb_out_unit,'("MFLOPS (trans.): ",F20.3)') tflops/1.d6
|
||||
|
||||
!
|
||||
! This computation is valid for CSR
|
||||
!
|
||||
nbytes = nr*(2*psb_sizeof_sp + psb_sizeof_int)+ &
|
||||
& annz*(psb_sizeof_sp + psb_sizeof_int)
|
||||
bdwdth = times*nbytes/(t2*1.d6)
|
||||
write(psb_out_unit,*)
|
||||
write(psb_out_unit,'("MBYTES/S : ",F20.3)') bdwdth
|
||||
bdwdth = times*nbytes/(tt2*1.d6)
|
||||
write(psb_out_unit,'("MBYTES/S (trans): ",F20.3)') bdwdth
|
||||
|
||||
end if
|
||||
|
||||
call psb_gefree(b_col, desc_a,info)
|
||||
call psb_gefree(x_col, desc_a,info)
|
||||
call psb_spfree(a, desc_a,info)
|
||||
call psb_cdfree(desc_a,info)
|
||||
|
||||
9999 continue
|
||||
if(info /= 0) then
|
||||
call psb_error(ictxt)
|
||||
end if
|
||||
call psb_exit(ictxt)
|
||||
stop
|
||||
|
||||
end program s_file_spmv
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,471 +0,0 @@
|
||||
!!$
|
||||
!!$ Parallel Sparse BLAS version 3.1
|
||||
!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013
|
||||
!!$ Salvatore Filippone University of Rome Tor Vergata
|
||||
!!$ Alfredo Buttari CNRS-IRIT, Toulouse
|
||||
!!$
|
||||
!!$ Redistribution and use in source and binary forms, with or without
|
||||
!!$ modification, are permitted provided that the following conditions
|
||||
!!$ are met:
|
||||
!!$ 1. Redistributions of source code must retain the above copyright
|
||||
!!$ notice, this list of conditions and the following disclaimer.
|
||||
!!$ 2. Redistributions in binary form must reproduce the above copyright
|
||||
!!$ notice, this list of conditions, and the following disclaimer in the
|
||||
!!$ documentation and/or other materials provided with the distribution.
|
||||
!!$ 3. The name of the PSBLAS group or the names of its contributors may
|
||||
!!$ not be used to endorse or promote products derived from this
|
||||
!!$ software without specific written permission.
|
||||
!!$
|
||||
!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS
|
||||
!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
!!$ POSSIBILITY OF SUCH DAMAGE.
|
||||
!!$
|
||||
!!$
|
||||
program shift_invert
|
||||
use psb_base_mod
|
||||
use psb_prec_mod
|
||||
use psb_krylov_mod
|
||||
use psb_util_mod
|
||||
implicit none
|
||||
|
||||
! input parameters
|
||||
character(len=40) :: kmethd, ptype, mtrx_file, rhs_file
|
||||
|
||||
! sparse matrices and preconditioner
|
||||
type(psb_dspmat_type) :: a, aux_a, id, a2, b
|
||||
type(psb_d_csr_sparse_mat)::acsr, icsr
|
||||
type(psb_dprec_type) :: prec
|
||||
|
||||
! dense matrices
|
||||
real(psb_dpk_), allocatable, target :: aux_b(:,:), d(:)
|
||||
complex(psb_dpk_), allocatable, target :: H(:,:),eig(:),work(:),Z(:,:)
|
||||
|
||||
real(psb_dpk_), allocatable , save :: x_col_glob(:), r_col_glob(:)
|
||||
real(psb_dpk_), pointer :: b_col_glob(:)
|
||||
type(psb_d_vect_type) :: b_col, x_col, r_col
|
||||
type (psb_d_vect_type), allocatable, target :: V(:)
|
||||
integer(psb_ipk_), allocatable , save :: indexes(:)
|
||||
|
||||
|
||||
! communications data structure
|
||||
type(psb_desc_type):: desc_a
|
||||
integer(psb_ipk_) :: ictxt, iam, np
|
||||
|
||||
! solver paramters
|
||||
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode, ipart,&
|
||||
& methd, istopc, irst, nr, sort, annz
|
||||
integer(psb_long_int_k_) :: amatsize, descsize, nbytes
|
||||
real(psb_dpk_) :: err, eps,cond
|
||||
|
||||
character(len=5) :: afmt
|
||||
character(len=20) :: name, ch_err
|
||||
character(len=2) :: filefmt
|
||||
integer(psb_ipk_), parameter :: iunit=12
|
||||
integer(psb_ipk_) :: times=0
|
||||
integer(psb_ipk_) :: iparm(20)
|
||||
|
||||
! other variables
|
||||
integer(psb_ipk_) :: i,info,j,m_problem
|
||||
integer(psb_ipk_) :: internal, m,ii,nnzero,ji
|
||||
real(psb_dpk_) :: t1, t2, r_amax, b_amax,&
|
||||
&scale,resmx,resmxp, flops, bdwdth
|
||||
real(psb_dpk_) :: tt1, tt2, tflops, tprec, sigma,dotprod,norm
|
||||
integer(psb_ipk_) :: nrhs, nrow, n_row, dim, nv, ne,dim_H
|
||||
integer(psb_ipk_), allocatable :: ivg(:), ipv(:)
|
||||
|
||||
|
||||
call psb_init(ictxt)
|
||||
call psb_info(ictxt,iam,np)
|
||||
|
||||
if (iam < 0) then
|
||||
! This should not happen, but just in case
|
||||
call psb_exit(ictxt)
|
||||
stop
|
||||
endif
|
||||
|
||||
|
||||
name='shift_invert_real'
|
||||
if(psb_get_errstatus() /= 0) goto 9999
|
||||
info=psb_success_
|
||||
call psb_set_errverbosity(2)
|
||||
!
|
||||
! Hello world
|
||||
!
|
||||
if (iam == psb_root_) then
|
||||
write(*,*) 'Welcome to PSBLAS version: ',psb_version_string_
|
||||
write(*,*) 'This is the ',trim(name),' sample program'
|
||||
read(psb_inp_unit,*) mtrx_file
|
||||
read(psb_inp_unit,*) filefmt
|
||||
read(psb_inp_unit,*) ipart
|
||||
read(psb_inp_unit,*) ptype
|
||||
read(psb_inp_unit,*) kmethd
|
||||
read(psb_inp_unit,*) dim_H
|
||||
read(psb_inp_unit,*) sigma
|
||||
read(psb_inp_unit,*) eps
|
||||
end if
|
||||
call psb_bcast(ictxt,mtrx_file)
|
||||
call psb_bcast(ictxt,filefmt)
|
||||
call psb_bcast(ictxt,ipart)
|
||||
call psb_bcast(ictxt,dim_H)
|
||||
call psb_bcast(ictxt,kmethd)
|
||||
call psb_bcast(ictxt,ptype)
|
||||
call psb_bcast(ictxt,sigma)
|
||||
call psb_bcast(ictxt,eps)
|
||||
rhs_file = 'NONE'
|
||||
afmt = 'CSR'
|
||||
call psb_barrier(ictxt)
|
||||
t1 = psb_wtime()
|
||||
! read the input matrix to be processed and (possibly) the rhs
|
||||
nrhs = 1
|
||||
|
||||
if (iam==psb_root_) then
|
||||
select case(psb_toupper(filefmt))
|
||||
case('MM')
|
||||
! For Matrix Market we have an input file for the matrix
|
||||
! and an (optional) second file for the RHS.
|
||||
call mm_mat_read(aux_a,info,iunit=iunit,filename=mtrx_file)
|
||||
if (info == psb_success_) then
|
||||
if (rhs_file /= 'NONE') then
|
||||
call mm_array_read(aux_b,info,iunit=iunit,filename=rhs_file)
|
||||
end if
|
||||
end if
|
||||
|
||||
case ('HB')
|
||||
! For Harwell-Boeig we have a single file which may or may not
|
||||
! contain an RHS.
|
||||
call hb_read(aux_a,info,iunit=iunit,b=aux_b,filename=mtrx_file)
|
||||
|
||||
case ('AD')
|
||||
call adj_read(aux_a,mtrx_file,iunit,desc_a,info)
|
||||
|
||||
case default
|
||||
info = -1
|
||||
write(psb_err_unit,*) 'Wrong choice for fileformat ', filefmt
|
||||
end select
|
||||
if (info /= psb_success_) then
|
||||
write(psb_err_unit,*) 'Error while reading input matrix '
|
||||
call psb_abort(ictxt)
|
||||
end if
|
||||
|
||||
m_problem = aux_a%get_nrows()
|
||||
annz=aux_a%get_nzeros()
|
||||
call psb_bcast(ictxt,m_problem)
|
||||
|
||||
! At this point aux_b may still be unallocated
|
||||
if (psb_size(aux_b,dim=1)==m_problem) then
|
||||
! if any rhs were present, broadcast the first one
|
||||
write(psb_err_unit,'("Ok, got an rhs ")')
|
||||
b_col_glob =>aux_b(:,1)
|
||||
else
|
||||
! write(psb_out_unit,'("Generating an rhs...")')
|
||||
! write(psb_out_unit,'(" ")')
|
||||
call psb_realloc(m_problem,1,aux_b,ircode)
|
||||
if (ircode /= 0) then
|
||||
call psb_errpush(psb_err_alloc_dealloc_,name)
|
||||
goto 9999
|
||||
endif
|
||||
|
||||
b_col_glob => aux_b(:,1)
|
||||
do i=1, m_problem
|
||||
b_col_glob(i) = 1.d0
|
||||
enddo
|
||||
endif
|
||||
call psb_bcast(ictxt,b_col_glob(1:m_problem))
|
||||
|
||||
else
|
||||
|
||||
call psb_bcast(ictxt,m_problem)
|
||||
call psb_realloc(m_problem,1,aux_b,ircode)
|
||||
if (ircode /= 0) then
|
||||
call psb_errpush(psb_err_alloc_dealloc_,name)
|
||||
goto 9999
|
||||
endif
|
||||
b_col_glob =>aux_b(:,1)
|
||||
call psb_bcast(ictxt,b_col_glob(1:m_problem))
|
||||
|
||||
end if
|
||||
|
||||
! switch over different partition types
|
||||
if (ipart == 0) then
|
||||
call psb_barrier(ictxt)
|
||||
if (iam==psb_root_) write(psb_out_unit,'("Partition type: block")')
|
||||
allocate(ivg(m_problem),ipv(np))
|
||||
do i=1,m_problem
|
||||
call part_block(i,m_problem,np,ipv,nv)
|
||||
ivg(i) = ipv(1)
|
||||
enddo
|
||||
call psb_matdist(aux_a, a,ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
|
||||
|
||||
else if (ipart == 2) then
|
||||
if (iam==psb_root_) then
|
||||
!write(psb_out_unit,'("Partition type: graph")')
|
||||
!write(psb_out_unit,'(" ")')
|
||||
! write(psb_err_unit,'("Build type: graph")')
|
||||
call build_mtpart(aux_a,np)
|
||||
|
||||
endif
|
||||
call psb_barrier(ictxt)
|
||||
call distr_mtpart(psb_root_,ictxt)
|
||||
call getv_mtpart(ivg)
|
||||
call psb_matdist(aux_a, a, ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
|
||||
|
||||
else
|
||||
if (iam==psb_root_) write(psb_out_unit,'("Partition type: block")')
|
||||
call psb_matdist(aux_a, a, ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,parts=part_block)
|
||||
end if
|
||||
|
||||
call lapl(a,b)
|
||||
|
||||
!
|
||||
!a2=a-sigma*id
|
||||
!
|
||||
!sigma = 100
|
||||
call csshift(b,a2,sigma,ictxt)
|
||||
|
||||
!
|
||||
! prepare the preconditioner.
|
||||
!
|
||||
!if(iam == psb_root_) write(psb_out_unit,'("Setting preconditioner to : ", a) ') ptype
|
||||
call psb_precinit(prec,ptype,info)
|
||||
|
||||
call psb_barrier(ictxt)
|
||||
!t1 = psb_wtime()
|
||||
call psb_precbld(a2,desc_a,prec,info)
|
||||
if(info /= psb_success_) then
|
||||
info=psb_err_from_subroutine_
|
||||
ch_err='psb_precbld'
|
||||
call psb_errpush(info,name,a_err=ch_err)
|
||||
goto 9999
|
||||
end if
|
||||
|
||||
tprec = psb_wtime()-t1
|
||||
if (iam == psb_root_) write(psb_out_unit,'("Preconditioner time : ",es12.5)')tprec
|
||||
|
||||
allocate(H(dim_H,dim_H))
|
||||
allocate (V(dim_H+1))
|
||||
do i=1,dim_H+1
|
||||
call psb_geall(V(i),desc_a,info)
|
||||
call psb_geasb(V(i),desc_a,info)
|
||||
enddo
|
||||
call V(1)%set(done)
|
||||
call psb_amx(ictxt, t2)
|
||||
|
||||
!if (iam==psb_root_) then
|
||||
! write(psb_out_unit,'(" ")')
|
||||
! write(psb_out_unit,'("Time to read and partition matrix : ",es12.5)')t2
|
||||
! write(psb_out_unit,'(" ")')
|
||||
!end if
|
||||
|
||||
call psb_barrier(ictxt)
|
||||
t2 = psb_wtime()-t1-tprec
|
||||
if (iam == psb_root_) write(psb_out_unit,'("Preconditioner time : ",es12.5)')t2
|
||||
|
||||
|
||||
norm = psb_norm2(V(1),desc_a, info)
|
||||
H(2,1)=cmplx(norm,0.0)
|
||||
norm = 1/norm
|
||||
call psb_geaxpby(dzero,V(1),norm,V(1),desc_a,info)
|
||||
do i=2,dim_H+1
|
||||
!A*V(i)=V(i-1)
|
||||
call psb_krylov(kmethd,a2,prec,V(i-1),V(i),eps,desc_a,info,&
|
||||
& itmax=1000,iter=iter,err=err,itrace=-1,istop=2,irst=002)
|
||||
!if (iam==psb_root_) write(*,'("iter : "i20)') iter
|
||||
! Gram-Schmitt's reorthogonalisation
|
||||
do j=1,i-1
|
||||
dotprod= psb_gedot(V(i),V(j),desc_a,info) ! dotprod = (V(i) dot V(j))
|
||||
call psb_geaxpby(-dotprod,V(j),done,V(i),desc_a, info)!V(i)=V(i)-V(j)*dotprod
|
||||
H(j,i-1)=cmplx(dotprod,0.0)
|
||||
end do
|
||||
norm = psb_norm2(V(i),desc_a,info)
|
||||
if (i .ne. dim_H+1) then
|
||||
H(i,i-1)=cmplx(norm,0.0)
|
||||
endif
|
||||
norm=1/norm
|
||||
call psb_geaxpby(dzero,V(i),norm,V(i),desc_a, info)
|
||||
enddo
|
||||
|
||||
t2=psb_wtime()-t1-tprec
|
||||
if (iam==psb_root_) write (psb_out_unit,'("temps de arnoldi : " ,es12.5 )') t2
|
||||
if(iam==psb_root_) then
|
||||
allocate(eig(dim_H),work(dim_h),Z(dim_H,dim_H),stat = info)
|
||||
call ZHSEQR('E','N',dim_H,1,dim_H,H,dim_H,eig,Z,dim_H,work,dim_H,info)
|
||||
|
||||
!sort H's eigenvalues
|
||||
allocate(indexes(1:dim_H))
|
||||
call psb_qsort(eig,indexes,psb_alsort_up_,psb_sort_ovw_idx_)
|
||||
do i=1,dim_H
|
||||
eig (i) = cmplx(sigma,0.0)+1/eig(i)
|
||||
!write(psb_out_unit, '("eig(i), i", g20.4, i10)')real(eig(i)),i
|
||||
enddo
|
||||
end if
|
||||
|
||||
call psb_barrier(ictxt)
|
||||
t2 = psb_wtime() - t1
|
||||
call psb_amx(ictxt,t2)
|
||||
|
||||
nr = desc_a%get_global_rows()
|
||||
amatsize = psb_sizeof(a)
|
||||
descsize = psb_sizeof(desc_a)
|
||||
call psb_sum(ictxt,annz)
|
||||
call psb_sum(ictxt,amatsize)
|
||||
call psb_sum(ictxt,descsize)
|
||||
|
||||
if (iam==psb_root_) then
|
||||
flops = 2.d0*times*annz
|
||||
tflops=flops
|
||||
!write(psb_out_unit,'("Matrix: ",a)') mtrx_file
|
||||
!write(psb_out_unit,'("Test on : ",i20," processors")') np
|
||||
!write(psb_out_unit,'("Size of matrix : ",i20," ")') nr
|
||||
!write(psb_out_unit,'("Number of nonzeros : ",i20," ")') annz
|
||||
!write(psb_out_unit,'("Memory occupation : ",i20," ")') amatsize
|
||||
!write(psb_out_unit,'("Number of flops (",i0," iters) : ",F20.0," ")') times,flops
|
||||
|
||||
!write(*,'("eigenvalues near from ", g20.4," : ")') sigma
|
||||
!do i=dim_H/3,dim_H
|
||||
! write(psb_out_unit,'(g20.4,g20.4)')real(eig(i)),aimag(eig(i))
|
||||
!enddo
|
||||
open(15, FILE="resultats.dat", position = 'append',ACTION="WRITE")
|
||||
write (15,'(F20.6,F20.6,F20.4)')real(eig(dim_H-1)),real(eig(dim_H)),t2
|
||||
close(15)
|
||||
DEALLOCATE (work,eig,Z)
|
||||
end if
|
||||
|
||||
call psb_gefree(b_col, desc_a,info)
|
||||
call psb_gefree(x_col, desc_a,info)
|
||||
call psb_spfree(a, desc_a,info)
|
||||
call psb_spfree(a2, desc_a,info)
|
||||
call psb_spfree(b, desc_a,info)
|
||||
call psb_cdfree(desc_a,info)
|
||||
do i=1,dim_H
|
||||
call psb_gefree(V(i), desc_a,info)
|
||||
enddo
|
||||
DEALLOCATE (H)
|
||||
DEALLOCATE (V)
|
||||
|
||||
9999 continue
|
||||
if(info /= 0) then
|
||||
call psb_error(ictxt)
|
||||
end if
|
||||
call psb_exit(ictxt)
|
||||
stop
|
||||
|
||||
|
||||
contains
|
||||
|
||||
subroutine csshift(a,b,sigma,ictx)
|
||||
type(psb_dspmat_type), intent(in) :: a
|
||||
type(psb_dspmat_type), intent(out) :: b
|
||||
real(psb_dpk_) :: sigma
|
||||
integer(psb_ipk_)::ictx
|
||||
|
||||
type(psb_d_coo_sparse_mat) :: acoo
|
||||
integer(psb_ipk_) :: nz,n,info,i
|
||||
|
||||
call a%cp_to(acoo)
|
||||
if (sigma/=0.0) then
|
||||
nz=acoo%get_nzeros()
|
||||
n=a%get_nrows()
|
||||
call acoo%reallocate(nz+n)
|
||||
call acoo%set_dupl(psb_dupl_add_)
|
||||
do i=1,n
|
||||
acoo%val(nz+i)=-sigma
|
||||
acoo%ia(nz+i)= i
|
||||
acoo%ja(nz+i)= i
|
||||
enddo
|
||||
call acoo%set_nzeros(nz+n)
|
||||
call acoo%fix(info)
|
||||
! do i=1,nz
|
||||
! if(acoo%ja(i)==acoo%ia(i)) then
|
||||
! write(psb_out_unit,'(i10,i10,g20.4)')acoo%ja(i),i, acoo%val(i)
|
||||
! end if
|
||||
! enddo
|
||||
!write(psb_out_unit,'("autant de nzeros apres fix ?",i10)') acoo%get_nzeros()-nz
|
||||
end if
|
||||
call b%mv_from(acoo)
|
||||
call b%cscnv(info,'CSR')
|
||||
end subroutine csshift
|
||||
|
||||
subroutine adj_read (a,filename,iunit,desc_a,info)
|
||||
type(psb_dspmat_type), intent (inout) :: a
|
||||
character(len=40) :: filename
|
||||
integer (psb_ipk_) :: iunit
|
||||
type(psb_desc_type):: desc_a
|
||||
integer (psb_ipk_) :: info
|
||||
|
||||
integer(psb_ipk_) :: i,nnzero,nrows
|
||||
integer (psb_ipk_) :: iError
|
||||
type(psb_d_coo_sparse_mat) :: acoo
|
||||
|
||||
open(iunit, FILE=filename, STATUS="OLD", ACTION="READ")
|
||||
read(iunit, *) nrows , nnzero
|
||||
|
||||
call acoo%allocate(nrows,nrows,nnzero)
|
||||
do i = 1,nnzero
|
||||
read(iunit, *) acoo%ia(i),acoo%ja(i)
|
||||
acoo%ia(i)=acoo%ia(i)+1
|
||||
acoo%ja(i)=acoo%ja(i)+1
|
||||
acoo%val(i)=1.0
|
||||
end do
|
||||
close(UNIT=iunit)
|
||||
!call psb_spall(a,desc_a,info,nnzero)
|
||||
!call psb_spins(nnzero, ia, ja, val, a, desc_a, info)
|
||||
call acoo%set_nzeros(nnzero)
|
||||
call acoo%fix(info)
|
||||
call a%mv_from(acoo)
|
||||
call a%cscnv(info,type='csr')
|
||||
end subroutine adj_read
|
||||
|
||||
subroutine lapl(a,b)
|
||||
type(psb_dspmat_type),intent(in)::a
|
||||
type(psb_dspmat_type),intent(out)::b
|
||||
|
||||
type(psb_d_coo_sparse_mat) :: acoo
|
||||
integer(psb_ipk_) :: nz,n,info,i
|
||||
real(psb_dpk_), allocatable :: K(:)
|
||||
|
||||
call a%cp_to(acoo)
|
||||
nz=acoo%get_nzeros()
|
||||
n=a%get_nrows()
|
||||
allocate(K(n))
|
||||
do i=1,n
|
||||
K(i)=0
|
||||
enddo
|
||||
do i=1,nz
|
||||
K(acoo%ia(i))=K(acoo%ia(i))+acoo%val(i)
|
||||
acoo%val(i)=-acoo%val(i)
|
||||
enddo
|
||||
call acoo%reallocate(nz+n)
|
||||
call acoo%set_dupl(psb_dupl_add_)
|
||||
do i=1,n
|
||||
acoo%val(nz+i)=K(i)
|
||||
acoo%ia(nz+i)= i
|
||||
acoo%ja(nz+i)= i
|
||||
enddo
|
||||
call acoo%set_nzeros(nz+n)
|
||||
call acoo%fix(info)
|
||||
do i=1,nz
|
||||
! if(acoo%ja(i)==acoo%ia(i)) then
|
||||
! write(psb_out_unit,'(i10,i10,g20.4)')acoo%ia(i),acoo%ja(i),acoo%val(i)
|
||||
! end if
|
||||
enddo
|
||||
call b%mv_from(acoo)
|
||||
call b%cscnv(info,'CSR')
|
||||
deallocate (K)
|
||||
end subroutine lapl
|
||||
|
||||
end program shift_invert
|
||||
|
||||
|
||||
|
||||
|
@ -1,20 +0,0 @@
|
||||
program test_chseqr
|
||||
|
||||
complex , dimension (1:3,1:3) :: H,Z,Vr
|
||||
complex , dimension (1:6,1:6) :: Rwork
|
||||
complex, dimension (1:3) :: eing,work
|
||||
integer :: info, N
|
||||
N=3
|
||||
H = reshape((/ (1.0,0),(0,0), (2,0), (2,0) , (3,0) , (-4,0) , (0,0) , (0,0) , (2,0) /), shape(H))
|
||||
do i=1,N
|
||||
do j=1,N
|
||||
write(*,'("H : "i5,i5,2x,g20.4,g20.4)')i,j,real(H(i,j)),aimag(H(i,j))
|
||||
end do
|
||||
end do
|
||||
call CHSEQR('E','N',N,1,N,H,N,eing,Z,N,work,N,info)
|
||||
!call CGEEV('N','N',N,H,N,eing,Z,N,Vr,N,work,3*N,Rwork,info)
|
||||
do i=1,N
|
||||
write(*,'("valeur propre de H : "i5, i5, g20.4,g20.4)')info, i,real(eing(i)),aimag(eing(i))
|
||||
enddo
|
||||
|
||||
end program test_chseqr
|
@ -0,0 +1,8 @@
|
||||
Real10BA10000RLSext01new
|
||||
AD
|
||||
0
|
||||
1.d-22
|
||||
50
|
||||
1.d-6
|
||||
DIAG
|
||||
CG
|
@ -0,0 +1,9 @@
|
||||
5699880
|
||||
Real10BA10000RLSext01
|
||||
AD
|
||||
0
|
||||
1.d-22
|
||||
50
|
||||
1.d-6
|
||||
DIAG
|
||||
CG
|
Binary file not shown.
@ -0,0 +1,514 @@
|
||||
599880 22.280849 412.034730 334.059758 0.000000 7.3341
|
||||
609880 22.283897 412.034989 334.059926 0.066754 12.9601
|
||||
619880 22.286317 412.035210 334.060226 0.136119 12.3839
|
||||
629880 22.289185 412.035469 334.060500 0.207638 12.4973
|
||||
599880 22.280849 412.034730 334.059758 0.000000 7.3747
|
||||
609880 22.283897 412.034989 334.059926 0.066754 12.9525
|
||||
619880 22.286317 412.035210 334.060226 0.136119 12.4758
|
||||
629880 22.289185 412.035469 334.060500 0.207638 12.3720
|
||||
639880 22.291470 412.035697 334.060924 0.276237 12.7866
|
||||
649880 22.293578 412.035905 334.061310 0.345216 13.1720
|
||||
659880 22.297185 412.036202 334.061639 0.413057 13.4491
|
||||
669880 22.301392 412.036430 334.061904 0.481690 13.3403
|
||||
679878 22.304242 412.036678 334.062190 0.550060 13.4195
|
||||
689878 22.309115 412.036979 334.062508 0.618186 13.9244
|
||||
699878 22.313725 412.037298 334.062875 0.686089 14.0469
|
||||
709878 22.316885 412.037545 334.063227 0.751790 14.4470
|
||||
719878 22.320308 412.037787 334.063615 0.818350 14.4879
|
||||
729878 22.323288 412.037995 334.063891 0.885914 14.8316
|
||||
739878 22.326378 412.038221 335.063482 0.955399 15.1621
|
||||
749878 22.331498 412.038530 335.063872 1.024458 15.0778
|
||||
759878 22.335437 412.038741 335.064154 1.090905 15.2194
|
||||
769876 22.338829 412.038986 335.064645 1.154286 15.2606
|
||||
779876 22.342413 412.039247 335.064987 1.219053 15.9022
|
||||
789876 22.348762 412.039551 335.065340 1.281288 15.8190
|
||||
799876 22.353287 412.039787 335.065748 1.347410 16.1712
|
||||
809876 22.356657 412.040005 335.066113 1.410404 16.3639
|
||||
819874 22.360493 412.040254 335.066868 1.477553 16.2262
|
||||
829874 22.364791 412.040527 335.067168 1.539684 16.3787
|
||||
839874 22.369015 412.040707 335.067482 1.598971 16.4739
|
||||
849874 22.375641 412.040939 335.067985 1.656912 16.7519
|
||||
859874 22.380918 412.041193 335.068581 1.715046 16.6065
|
||||
869874 22.387483 412.041505 335.068912 1.755545 17.1003
|
||||
879874 22.408862 413.041646 335.069225 1.786060 17.1942
|
||||
889874 22.414055 413.041874 335.069403 1.790095 17.2551
|
||||
899874 22.419776 413.042179 335.069701 1.874591 17.3167
|
||||
909874 22.426828 413.042426 335.069913 1.879797 17.4846
|
||||
919874 22.434166 413.042694 335.070308 1.898253 17.5954
|
||||
929874 22.441119 413.042948 335.070566 1.922765 17.6845
|
||||
939872 22.447904 413.043140 335.070926 1.925938 18.0563
|
||||
949872 22.455455 413.043471 335.071285 1.929619 17.8733
|
||||
959872 22.463212 413.043688 335.071579 1.930716 18.2561
|
||||
969872 22.471481 413.043957 335.071959 1.973006 17.9314
|
||||
979872 22.495218 414.044145 335.072306 1.974280 17.8594
|
||||
989870 22.504406 414.044380 335.072681 2.009216 17.9090
|
||||
999870 22.513752 414.044681 335.073040 2.010267 18.1734
|
||||
1009870 22.523005 414.044924 336.073574 2.012036 18.2442
|
||||
1019870 22.535356 414.045244 336.073919 2.013290 18.4018
|
||||
1029870 22.548691 414.045548 336.074223 2.014340 18.4366
|
||||
1039868 22.559913 414.045797 337.073753 2.031749 18.3329
|
||||
1049868 22.572916 414.046113 337.074086 2.033588 18.4874
|
||||
1059868 22.588356 414.046478 337.074516 2.035190 18.8495
|
||||
1069868 22.602470 414.046744 337.074846 2.036562 18.9872
|
||||
1079868 22.616332 414.047022 337.075246 2.038851 19.1930
|
||||
1089868 22.633394 414.047384 337.075573 2.040584 19.3031
|
||||
1099868 22.647075 414.047613 337.075914 2.186090 19.3162
|
||||
1109868 22.675986 415.047662 338.075613 2.187964 19.3963
|
||||
1119866 22.692139 415.047961 338.076018 2.264627 19.3024
|
||||
1129866 22.711234 415.048326 338.076739 2.265741 19.6045
|
||||
1139866 22.742661 416.048407 339.076380 2.268247 19.6979
|
||||
1149864 22.760834 416.048698 339.076782 2.291696 19.2621
|
||||
1159860 22.791919 417.048730 339.077048 2.293625 19.4463
|
||||
1169860 22.811605 417.048961 339.077363 2.294004 19.5279
|
||||
1179858 22.833702 417.049242 339.077686 2.294249 19.6345
|
||||
1189858 22.857769 417.049520 339.078043 2.294951 19.7480
|
||||
1199858 22.879599 417.049792 339.078450 2.387649 19.8208
|
||||
1209858 22.902783 417.050121 339.078726 2.388011 19.7962
|
||||
1219858 22.927410 417.050402 339.079049 2.388610 19.8331
|
||||
1229858 22.951282 417.050649 339.079504 2.395586 19.7860
|
||||
1239858 22.994739 419.050517 339.079766 2.407824 19.7728
|
||||
1249854 23.021423 419.050800 339.080062 2.408325 19.7020
|
||||
1259854 23.055661 420.050825 339.080389 2.438144 19.8017
|
||||
1269854 23.082930 420.051080 339.080797 2.440255 19.7034
|
||||
1279854 23.113232 420.051364 340.080499 2.440890 19.6644
|
||||
1289852 23.140905 420.051640 340.080796 2.441020 19.6409
|
||||
1299850 23.169995 420.051944 340.081083 2.461648 19.6145
|
||||
1309848 23.201186 420.052241 340.081368 2.505790 19.7392
|
||||
1319848 23.230740 420.052420 340.081690 2.523986 19.7534
|
||||
1329848 23.263363 420.052689 340.082030 2.524276 19.8169
|
||||
1339848 23.295956 420.052950 340.082439 2.527708 19.5561
|
||||
1349848 23.331128 420.053203 340.082931 2.528309 19.8323
|
||||
1359848 23.364556 420.053455 340.083618 2.528876 19.8550
|
||||
1369848 23.409707 421.053630 340.083926 2.544925 19.9364
|
||||
1379846 23.443272 421.053883 340.084342 2.564153 20.0213
|
||||
1389846 23.480361 421.054145 340.084639 2.582365 19.9981
|
||||
1399846 23.519104 421.054401 340.084980 2.582994 20.0002
|
||||
1409842 23.555796 421.054689 340.085270 2.583122 20.2150
|
||||
1419840 23.593922 421.054923 340.085591 2.674416 20.3962
|
||||
1429838 23.633796 421.055219 340.085876 2.674645 19.9592
|
||||
1439838 23.674019 421.055508 340.086235 2.719118 19.9505
|
||||
1449838 23.711995 421.055771 340.086568 2.719964 19.9876
|
||||
1459838 23.752227 421.055929 340.087368 2.722152 20.3041
|
||||
1469836 23.797593 422.055921 340.087832 2.722335 20.2348
|
||||
1479836 23.838135 422.056244 340.088146 2.775366 20.3697
|
||||
1489832 23.881308 422.056527 340.088464 2.775410 20.1571
|
||||
1499830 23.922222 422.056805 340.088840 2.775670 20.3967
|
||||
1509830 23.969074 423.056882 340.089169 2.776133 20.4462
|
||||
1519826 24.012328 423.057093 340.089403 2.776342 20.5032
|
||||
1529820 24.056633 423.057333 340.089733 2.776930 20.4972
|
||||
1539818 24.101310 423.057623 340.090127 2.777172 20.1194
|
||||
1549818 24.145668 423.057883 340.090477 2.777525 20.3315
|
||||
1559818 24.188138 423.058127 340.090759 2.777873 20.0905
|
||||
1569816 24.233222 423.058443 340.091199 2.778380 20.3641
|
||||
1579816 24.279640 423.058720 340.091551 2.778573 20.1063
|
||||
1589816 24.328204 423.059010 340.092701 2.778767 20.3297
|
||||
1599814 24.374459 423.059188 340.093064 2.779011 20.4091
|
||||
1609812 24.422859 423.059476 340.093357 2.854738 20.2252
|
||||
1619812 24.470074 423.059672 340.093590 2.856557 20.3911
|
||||
1629812 24.518209 423.059875 341.093105 2.856620 20.3614
|
||||
1639812 24.567210 423.060143 341.093504 2.857508 20.4881
|
||||
1649812 24.620523 423.060496 342.093149 2.857608 20.4232
|
||||
1659802 24.671559 423.060790 343.092817 2.857842 20.7873
|
||||
1669802 24.724300 423.061105 344.092435 2.857980 20.2366
|
||||
1679800 24.776756 423.061379 345.091973 2.858056 20.2997
|
||||
1689800 24.830024 423.061753 345.092344 2.862483 20.3361
|
||||
1699798 24.883325 423.062046 345.092662 2.862547 20.1967
|
||||
1709790 24.935581 423.062341 345.093129 2.862614 20.7402
|
||||
1719790 24.989511 423.062650 345.093751 2.862674 20.6929
|
||||
1729788 25.041520 423.062869 345.093979 2.862769 20.7296
|
||||
1739788 25.096026 424.062817 346.093475 2.862971 21.0566
|
||||
1749788 25.150825 424.063090 346.093802 2.863075 21.0250
|
||||
1759786 25.205660 424.063378 346.094128 2.863122 20.9640
|
||||
1769784 25.259794 424.063596 346.094372 2.863173 20.8985
|
||||
1779782 25.314356 424.063926 346.094798 2.863282 21.4909
|
||||
1789782 25.373210 425.064025 346.095178 2.863372 21.0100
|
||||
1799780 25.429238 425.064210 346.095507 2.863406 20.9695
|
||||
1809780 25.483806 425.064498 346.095768 3.603074 20.5313
|
||||
1819780 25.545082 425.064771 346.096057 3.607187 20.9247
|
||||
1829776 25.604321 425.065036 346.096410 3.627798 20.8183
|
||||
1839774 25.663172 425.065278 347.096314 3.628118 20.6746
|
||||
1849770 25.720526 425.065555 347.096747 3.628345 20.8617
|
||||
1859768 25.781309 425.065809 347.097069 3.637776 20.7435
|
||||
1869766 25.839673 425.066094 348.096664 3.643067 20.8285
|
||||
1879766 25.902007 425.066415 348.097339 3.643296 20.8433
|
||||
1889760 25.961658 425.066702 348.098006 3.643599 21.2226
|
||||
1899758 26.020861 425.066959 348.098282 3.643907 21.0110
|
||||
1909754 26.081258 425.067265 348.098651 3.644170 21.0230
|
||||
1919754 26.141047 425.067576 348.099023 3.644321 20.8805
|
||||
1929754 26.201916 425.067890 348.099369 3.644575 21.3060
|
||||
1939752 26.263743 425.068158 348.099787 3.644863 21.0380
|
||||
1949752 26.326408 425.068402 348.100098 3.645078 21.2750
|
||||
1959750 26.388772 425.068631 348.100508 3.649935 20.9805
|
||||
1969750 26.453365 425.068920 348.100891 3.650075 21.2374
|
||||
1979748 26.516725 425.069225 348.101236 3.657931 20.7239
|
||||
1989748 26.578761 425.069530 348.101630 3.658047 20.8286
|
||||
1999744 26.643096 425.069831 348.102015 3.658476 20.8971
|
||||
2009740 26.710869 425.070138 348.102405 4.536354 20.8364
|
||||
2019738 26.774139 425.070393 348.102730 4.536568 20.8530
|
||||
2029734 26.838004 425.070607 348.103419 4.536836 20.9150
|
||||
2039732 26.901992 425.070885 348.103701 4.540499 20.9849
|
||||
2049732 26.967733 425.071155 348.104170 4.540723 21.0056
|
||||
2059728 27.032527 425.071454 348.104676 4.541104 21.1952
|
||||
2069724 27.099021 426.071440 348.105018 4.541357 21.1514
|
||||
2079724 27.163736 426.071639 348.105277 4.541564 21.1527
|
||||
2089720 27.230522 426.071985 348.105536 4.541848 21.2171
|
||||
2099714 27.295699 426.072191 348.105871 4.542241 21.2397
|
||||
2109712 27.364938 426.072472 348.106226 4.542641 21.4639
|
||||
2119708 27.433047 426.072753 348.106597 4.542772 21.5006
|
||||
2129708 27.500346 426.073077 348.106885 4.542953 21.5295
|
||||
2139704 27.567326 426.073432 348.107214 4.543295 21.4808
|
||||
2149702 27.635746 426.073769 348.107522 4.543649 21.4151
|
||||
2159694 27.703893 426.074022 348.107910 4.547995 21.7526
|
||||
2169692 27.771575 426.074317 348.108175 4.548302 21.9624
|
||||
2179690 27.841925 426.074625 348.108477 4.686357 21.6358
|
||||
2189690 27.910168 426.074922 348.108835 4.688025 21.7742
|
||||
2199688 27.980651 426.075135 348.109146 4.694364 21.7088
|
||||
2209684 28.051400 426.075440 348.109460 4.694606 21.5484
|
||||
2219684 28.124075 427.075463 348.109815 4.698672 21.5477
|
||||
2229674 28.196389 428.075455 349.109278 4.698977 21.9741
|
||||
2239672 28.266798 428.075699 349.109624 5.454830 21.4397
|
||||
2249668 28.338641 428.076004 349.109871 5.480259 21.7898
|
||||
2259668 28.409693 428.076257 349.110594 5.554180 21.5045
|
||||
2269666 28.480109 428.076497 349.110875 5.560842 21.6678
|
||||
2279662 28.552291 428.076725 349.111271 5.562882 21.8899
|
||||
2289658 28.623975 428.077037 349.111655 5.563061 22.2255
|
||||
2299656 28.698136 428.077402 349.112042 5.563226 21.7392
|
||||
2309652 28.771795 428.077678 350.111782 5.563584 21.8535
|
||||
2319648 28.846186 428.077904 350.112214 5.563764 22.0583
|
||||
2329642 28.920675 428.078208 351.111756 6.459382 22.0110
|
||||
2339640 28.994733 428.078527 351.112399 6.455159 21.9050
|
||||
2349640 29.070192 428.078796 351.112797 6.455745 21.9964
|
||||
2359636 29.142792 428.079073 351.113182 6.459677 22.0075
|
||||
2369634 29.216921 428.079318 351.113512 6.460169 22.0281
|
||||
2379634 29.291362 428.079591 351.113893 6.461312 22.1924
|
||||
2389632 29.366009 428.079848 351.114175 6.462056 22.4472
|
||||
2399632 29.443274 428.080064 351.114617 6.464707 22.3692
|
||||
2409630 29.519818 428.080283 351.114930 6.465635 22.5182
|
||||
2419630 29.595385 429.080256 351.115231 6.466388 22.2701
|
||||
2429630 29.672326 429.080591 351.115642 6.505684 22.5417
|
||||
2439630 29.748362 429.080870 351.115853 6.505963 22.5291
|
||||
2449624 29.824307 429.081223 351.116216 6.506260 22.7832
|
||||
2459622 29.899547 429.081472 351.116528 6.506558 22.4982
|
||||
2469622 29.975563 429.081684 351.116868 6.513720 22.6113
|
||||
2479616 30.053364 429.082006 351.117093 6.514220 22.9253
|
||||
2489614 30.129129 430.081997 351.117441 6.534784 22.5982
|
||||
2499610 30.205771 430.082312 351.117774 6.535100 22.7252
|
||||
2509606 30.282868 430.082650 351.118036 6.535358 22.8817
|
||||
2519606 30.362454 431.082684 351.118815 6.541772 22.5671
|
||||
2529606 30.441168 431.083027 351.119258 6.542237 22.5128
|
||||
2539602 30.518058 431.083313 351.119594 6.546694 22.5882
|
||||
2549596 30.595680 431.083537 351.119887 6.548344 22.8867
|
||||
2559592 30.673660 432.083461 351.120232 6.551979 23.1209
|
||||
2569588 30.751165 432.083769 351.120714 6.614303 23.7308
|
||||
2579580 30.830803 432.084079 351.121158 6.614515 23.9344
|
||||
2589580 30.910286 432.084367 351.121596 6.614637 23.9384
|
||||
2599580 30.990653 432.084693 351.121932 6.615288 23.8732
|
||||
2609576 31.070335 432.084981 351.122205 7.450167 23.8313
|
||||
2619576 31.151264 432.085264 351.122537 7.507775 23.7809
|
||||
2629572 31.230213 432.085508 351.122927 7.508138 23.9583
|
||||
2639570 31.309966 433.085488 351.123243 7.508313 26.1486
|
||||
2649568 31.390546 433.085755 351.123998 7.514952 28.4993
|
||||
2659568 31.470417 433.085992 351.124245 7.515399 23.5978
|
||||
2669564 31.550747 433.086265 351.124714 7.524466 24.0494
|
||||
2679558 31.631553 433.086545 351.125174 7.524611 24.2295
|
||||
2689558 31.711927 433.086785 351.125964 7.529772 24.4152
|
||||
2699550 31.790663 433.087089 351.126328 7.531576 24.9210
|
||||
2709548 31.870199 433.087326 351.126582 7.531849 25.9833
|
||||
2719546 31.951919 433.087675 351.127051 7.532035 25.6829
|
||||
2729546 32.033019 433.087964 351.127369 8.429035 25.6278
|
||||
2739546 32.115188 433.088208 351.127719 8.429323 24.6286
|
||||
2749544 32.197775 433.088450 351.128219 8.433652 24.9886
|
||||
2759540 32.280407 433.088684 351.128560 8.437927 24.9456
|
||||
2769538 32.362838 433.088881 351.129032 8.504499 24.7320
|
||||
2779536 32.445498 433.089156 351.129467 8.506412 24.8769
|
||||
2789532 32.525589 433.089417 351.129712 8.592880 25.1325
|
||||
2799528 32.608428 433.089768 351.130040 9.322086 25.4071
|
||||
2809528 32.690151 433.090031 351.130496 9.326931 25.2132
|
||||
2819528 32.773457 433.090321 351.131348 9.417582 25.1364
|
||||
2829526 32.856968 433.090637 351.131696 9.417862 25.1292
|
||||
2839518 32.940131 433.090864 351.132033 9.425989 25.1420
|
||||
2849516 33.023614 433.091181 351.132447 9.426341 24.7974
|
||||
2859512 33.107356 433.091475 351.132776 9.426743 24.5333
|
||||
2869508 33.191953 433.091728 351.133692 9.430699 24.7602
|
||||
2879502 33.275589 433.092145 352.133061 9.439476 24.4783
|
||||
2889500 33.360117 433.092470 352.133561 9.443061 24.1054
|
||||
2899496 33.443579 433.092724 353.133521 9.468212 24.0897
|
||||
2909490 33.528254 433.093042 353.134445 9.470125 24.0189
|
||||
2919488 33.613954 433.093423 353.134803 9.470472 24.4279
|
||||
2929486 33.697768 433.093762 353.135623 9.472461 24.4039
|
||||
2939480 33.780367 433.093956 353.135957 9.473391 24.2357
|
||||
2949476 33.865983 433.094213 353.136304 9.473690 24.4941
|
||||
2959476 33.951345 433.094480 353.136714 9.526262 24.5102
|
||||
2969474 34.036615 433.094832 353.137104 9.526457 24.3277
|
||||
2979472 34.120720 433.095054 353.137479 9.526785 24.5829
|
||||
2989470 34.206276 433.095306 353.138374 9.529251 25.2444
|
||||
2999468 34.291645 434.095365 353.138691 9.529372 24.8111
|
||||
3009468 34.378425 434.095651 353.139106 9.530083 24.6731
|
||||
3019468 34.463685 434.095868 353.139442 9.536002 24.7163
|
||||
3029462 34.548905 434.096173 354.138705 9.537328 24.4700
|
||||
3039454 34.634624 434.096429 354.139070 9.540493 24.4963
|
||||
3049448 34.720086 434.096686 354.139413 10.371709 24.5865
|
||||
3059444 34.804464 434.096995 354.139752 10.374231 24.5776
|
||||
3069442 34.892261 434.097272 355.139242 10.376922 24.6810
|
||||
3079434 34.979837 434.097623 355.139649 10.402667 25.7200
|
||||
3089434 35.066506 434.097925 355.139944 10.404422 25.5791
|
||||
3099426 35.154331 434.098219 355.140288 10.404719 25.7116
|
||||
3109424 35.240910 434.098486 355.140775 10.405178 24.9826
|
||||
3119418 35.329755 435.098545 355.141186 10.405414 24.8192
|
||||
3129414 35.416997 435.098868 355.141532 10.408858 24.6063
|
||||
3139412 35.503945 435.099179 355.141915 10.409115 24.6453
|
||||
3149412 35.588977 435.099428 355.142275 10.411117 24.6251
|
||||
3159412 35.676745 435.099728 355.142598 11.164705 24.7210
|
||||
3169406 35.762831 435.100010 355.142932 11.172172 25.0758
|
||||
3179398 35.850036 435.100325 355.143219 11.201369 24.7245
|
||||
3189398 35.937290 435.100588 355.143546 11.211599 24.9502
|
||||
3199392 36.024048 435.100822 355.143842 11.243317 24.8846
|
||||
3209390 36.112219 435.101179 355.144197 11.260947 24.9037
|
||||
3219390 36.199039 435.101466 355.144472 11.265969 25.4336
|
||||
3229390 36.286466 435.101718 355.144844 11.266534 25.0333
|
||||
3239382 36.374866 435.102054 355.145166 11.269385 25.0435
|
||||
3249378 36.463129 435.102339 355.145594 11.320113 25.1641
|
||||
3259374 36.551646 435.102659 355.145901 11.331282 25.1178
|
||||
3269364 36.640764 435.102952 355.154744 11.335345 25.1506
|
||||
3279360 36.729447 435.103173 356.145632 11.335658 25.2329
|
||||
3289354 36.817827 436.103066 356.146527 11.335968 25.5249
|
||||
3299346 36.905719 436.103340 356.146898 11.336390 25.6082
|
||||
3309338 36.995260 436.103667 356.147342 11.337363 25.5780
|
||||
3319334 37.083679 436.103927 356.147779 11.341790 25.5581
|
||||
3329330 37.173361 436.104161 357.147239 11.344678 25.7095
|
||||
3339328 37.263545 436.104492 357.147676 11.350644 25.7390
|
||||
3349326 37.352440 436.104812 357.148091 11.354273 25.6186
|
||||
3359322 37.442030 436.105081 357.148538 11.354654 25.9716
|
||||
3369322 37.532049 436.105321 358.154498 11.354855 26.1072
|
||||
3379316 37.622806 436.105587 359.154513 11.369232 25.9858
|
||||
3389308 37.712589 436.105932 359.155731 11.369534 25.7763
|
||||
3399308 37.803368 436.106212 359.156075 11.385234 26.1840
|
||||
3409306 37.892948 436.106554 359.156578 11.387075 26.2020
|
||||
3419304 37.981979 436.106834 359.156996 11.392222 26.4650
|
||||
3429300 38.071208 436.107112 359.157423 11.398265 26.2704
|
||||
3439300 38.160584 436.107345 359.158559 12.287406 25.8967
|
||||
3449294 38.250609 436.107637 359.158867 12.287831 26.0353
|
||||
3459290 38.339933 436.107922 359.160000 12.332726 26.3316
|
||||
3469288 38.429428 436.108148 359.162121 12.333039 26.5120
|
||||
3479284 38.520457 436.108544 360.161144 12.334616 26.5976
|
||||
3489280 38.608856 436.108813 360.161515 13.161098 26.8693
|
||||
3499274 38.697829 436.109071 360.161874 13.176350 27.5114
|
||||
3509270 38.788221 436.109367 360.162196 13.199030 28.3989
|
||||
3519262 38.880212 437.109387 360.162537 13.199588 28.2104
|
||||
3529258 38.970288 437.109733 360.162879 13.285885 28.3830
|
||||
3539258 39.058954 437.109979 360.163263 13.287404 28.8421
|
||||
3549252 39.149253 437.110258 360.163651 13.288787 28.5401
|
||||
3559248 39.239981 437.110485 360.163905 13.293470 28.2771
|
||||
3569242 39.331067 438.110334 360.164252 13.307013 27.8936
|
||||
3579240 39.422070 438.110652 360.164739 13.326934 28.0506
|
||||
3589228 39.511916 438.110950 360.165004 13.328484 28.1696
|
||||
3599224 39.603145 438.111212 360.165455 13.332649 27.9731
|
||||
3609220 39.693433 438.111463 360.165868 13.368016 28.2618
|
||||
3619214 39.784783 438.111755 361.164760 13.382009 27.7011
|
||||
3629214 39.877107 438.112082 361.165071 13.393375 27.7348
|
||||
3639208 39.969485 438.112425 361.165444 13.395292 27.7485
|
||||
3649202 40.060164 438.112665 361.165850 13.395489 33.7875
|
||||
3659196 40.150249 438.112892 361.166161 13.395734 28.2489
|
||||
3669192 40.241355 438.113224 361.166497 13.399765 28.0215
|
||||
3679188 40.332038 438.113518 361.166847 13.400113 33.9922
|
||||
3689184 40.423596 438.113838 361.167229 13.402630 28.2015
|
||||
3699180 40.513940 438.114187 361.167516 13.405326 28.2238
|
||||
3709180 40.605451 438.114439 361.167884 13.410127 28.4061
|
||||
3719176 40.696470 438.114748 362.166806 13.414732 28.2674
|
||||
3729174 40.787676 438.114962 362.167152 13.415011 34.0347
|
||||
3739164 40.878118 438.115283 362.167488 13.418244 28.1159
|
||||
3749158 40.969542 438.115592 362.167711 13.418452 28.1973
|
||||
3759156 41.059953 438.115799 362.168114 13.423296 28.1565
|
||||
3769154 41.151033 438.116082 362.168465 13.425709 28.3094
|
||||
3779152 41.242961 438.116298 362.168862 13.430188 28.3977
|
||||
3789144 41.338056 438.116744 363.167912 14.289915 28.3006
|
||||
3799140 41.431035 438.117054 363.168389 14.292410 28.2404
|
||||
3809134 41.523181 438.117273 363.168801 14.293392 28.1584
|
||||
3819128 41.615239 438.117534 363.169858 14.298315 28.1932
|
||||
3829124 41.707639 438.117835 363.170109 14.305533 28.0305
|
||||
3839124 41.797931 438.118146 363.170472 14.310562 28.3717
|
||||
3849122 41.890527 438.118422 363.170666 14.313124 28.6568
|
||||
3859110 41.981864 438.118711 363.171057 14.313470 28.5928
|
||||
3869102 42.072677 438.118951 363.171452 14.316146 28.3369
|
||||
3879100 42.165102 438.119344 363.171866 14.318245 28.5589
|
||||
3889096 42.256299 438.119641 363.172127 14.323110 28.7959
|
||||
3899090 42.348646 438.119961 363.172487 14.330762 28.8194
|
||||
3909080 42.440528 439.119844 363.172878 14.332090 29.1250
|
||||
3919072 42.532833 439.120110 363.173308 14.337187 28.3598
|
||||
3929064 42.624981 439.120335 363.173655 14.337440 28.3735
|
||||
3939058 42.716285 440.120325 363.173956 14.339801 28.8558
|
||||
3949056 42.807728 440.120604 363.175054 14.340073 28.3545
|
||||
3959048 42.900556 440.120884 363.175419 14.345478 28.8545
|
||||
3969042 42.993799 440.121084 363.175893 14.347791 28.3543
|
||||
3979040 43.085243 440.121335 363.176191 14.349918 28.4231
|
||||
3989034 43.177498 440.121693 363.176452 14.351738 28.4839
|
||||
3999020 43.270857 440.121966 363.176831 14.353992 28.2880
|
||||
4009018 43.362496 440.122223 363.177080 14.354322 28.3967
|
||||
4019014 43.454588 440.122615 363.177528 14.359220 28.5447
|
||||
4029014 43.548056 440.122938 363.177805 14.363034 28.3627
|
||||
4039010 43.640978 440.123145 363.178082 14.365079 28.3653
|
||||
4049006 43.733755 440.123408 363.178511 14.367811 28.4085
|
||||
4059000 43.826688 440.123708 363.179678 14.371576 28.3682
|
||||
4068996 43.920051 440.124001 363.180019 15.338316 28.7496
|
||||
4078992 44.014578 440.124284 363.180332 15.338527 29.1520
|
||||
4088992 44.107368 440.124581 363.180707 15.346673 28.8160
|
||||
4098988 44.201517 440.124836 363.181055 15.349872 28.3654
|
||||
4108984 44.295023 440.125057 363.182437 15.352200 28.5995
|
||||
4118982 44.389050 440.125331 363.182840 15.355528 28.9272
|
||||
4128978 44.482395 440.125673 363.183254 15.362934 29.5561
|
||||
4138970 44.575790 440.125876 363.183632 15.363158 36.8206
|
||||
4148968 44.669164 440.126139 363.184187 15.365102 29.8945
|
||||
4158964 44.762274 440.126423 364.183078 15.365339 30.2155
|
||||
4168962 44.856019 440.126752 364.183623 16.228004 32.0506
|
||||
4178956 44.949194 440.127039 364.183968 16.229614 33.8423
|
||||
4188950 45.042276 440.127323 364.185239 16.229912 32.8718
|
||||
4198944 45.135127 440.127628 364.185597 16.234533 33.3469
|
||||
4208940 45.228255 440.127859 365.184389 16.244443 34.1534
|
||||
4218936 45.321542 440.128156 366.184275 16.248568 35.0744
|
||||
4228932 45.416409 440.128450 367.183204 16.249932 40.6543
|
||||
4238932 45.509816 440.128704 367.183607 16.251557 36.1599
|
||||
4248924 45.603039 440.128933 367.184018 16.251851 37.1550
|
||||
4258914 45.696437 440.129255 367.184280 16.257476 39.6732
|
||||
4268914 45.790180 440.129537 368.183233 16.259714 40.7486
|
||||
4278898 45.883387 440.129854 368.183563 16.261243 40.0376
|
||||
4288894 45.976753 440.130109 369.182618 16.263315 38.4608
|
||||
4298892 46.071396 440.130433 370.181672 16.338573 40.2063
|
||||
4308882 46.164424 440.130713 370.181909 16.345332 39.4220
|
||||
4318872 46.258685 440.131023 370.182309 16.348353 40.6785
|
||||
4328868 46.352827 440.131310 370.182660 16.351258 41.7450
|
||||
4338862 46.447031 440.131667 370.183081 16.356227 43.1082
|
||||
4348860 46.542828 441.131421 371.182210 16.357220 39.7470
|
||||
4358854 46.636661 442.131239 371.182615 16.359578 39.1021
|
||||
4368846 46.730919 442.131566 372.181594 16.360552 39.0791
|
||||
4378840 46.824797 442.131895 372.181976 17.294375 41.0473
|
||||
4388828 46.919511 442.132173 372.182459 17.301260 41.5678
|
||||
4398826 47.013306 442.132502 373.181627 17.305519 41.0648
|
||||
4408826 47.107741 444.132040 373.182041 18.098797 43.6211
|
||||
4418818 47.201475 444.132282 373.182538 18.099155 43.3617
|
||||
4428812 47.295355 444.132624 373.182891 18.106148 42.2639
|
||||
4438804 47.389572 444.132859 373.183356 18.114786 44.0588
|
||||
4448798 47.483226 444.133170 373.183745 18.118569 46.3983
|
||||
4458794 47.576781 444.133402 373.184169 18.124937 46.0453
|
||||
4468786 47.672501 444.133800 373.184697 19.166021 48.6311
|
||||
4478778 47.766797 444.134144 373.185026 19.167251 48.6618
|
||||
4488766 47.860530 444.134444 373.185354 19.169031 46.7380
|
||||
4498760 47.955680 445.134314 373.185799 19.169356 46.7290
|
||||
4508750 48.049603 445.134641 373.186094 19.178119 45.0338
|
||||
4518746 48.144505 445.134999 374.185089 19.966721 46.2680
|
||||
4528734 48.239614 445.135276 374.185545 19.986094 44.2171
|
||||
4538724 48.334315 445.135582 374.186010 19.988180 49.2290
|
||||
4548722 48.428193 445.135842 374.186356 19.995851 46.7047
|
||||
4558718 48.521853 445.136121 374.186634 20.000392 46.3803
|
||||
4568714 48.616743 445.136436 374.186999 20.006237 49.8261
|
||||
4578706 48.711536 445.136800 374.187357 20.012429 50.6037
|
||||
4588700 48.806233 445.137062 374.187614 20.027018 51.1475
|
||||
4598688 48.901489 446.137019 374.187989 20.032552 49.3120
|
||||
4608684 48.996387 446.137358 374.188470 20.032927 51.1503
|
||||
4618672 49.091170 446.137676 374.188872 20.091263 48.0656
|
||||
4628666 49.185561 446.137976 374.189194 20.093761 46.5679
|
||||
4638662 49.280391 446.138350 374.189626 20.096303 47.0291
|
||||
4648660 49.375712 446.138684 374.189926 20.098457 44.2226
|
||||
4658654 49.470994 447.138475 374.190374 20.164201 42.6688
|
||||
4668650 49.565495 447.138728 374.190699 20.985027 45.6925
|
||||
4678646 49.660295 447.139000 374.191038 21.004204 48.5017
|
||||
4688642 49.755425 447.139342 374.191386 21.005233 47.1224
|
||||
4698638 49.851078 447.139688 374.191782 21.008940 48.3053
|
||||
4708630 49.945879 447.139984 374.192218 21.011815 44.3788
|
||||
4718624 50.040614 447.140213 374.192580 21.012336 47.9388
|
||||
4728614 50.136006 447.140612 374.192932 21.036468 47.2523
|
||||
4738602 50.231404 448.140440 374.193277 21.039753 51.1286
|
||||
4748592 50.327688 448.140709 374.193660 21.042525 45.1769
|
||||
4758584 50.422852 449.140650 374.194127 21.045991 44.9788
|
||||
4768572 50.518604 449.140952 374.194526 21.059850 49.1169
|
||||
4778568 50.613319 449.141210 374.194915 21.060540 46.2774
|
||||
4788568 50.709016 449.141507 374.195173 21.067018 46.3789
|
||||
4798558 50.804040 449.141837 374.195511 21.075222 49.1527
|
||||
4808550 50.898738 449.142135 374.195789 21.079905 45.8911
|
||||
4818542 50.993530 449.142432 374.196154 21.082176 48.6072
|
||||
4828540 51.089638 450.142343 374.196598 21.083590 49.2288
|
||||
4838538 51.185708 450.142623 374.197513 21.084458 46.0854
|
||||
4848532 51.280780 450.142944 374.197803 21.089498 49.6811
|
||||
4858520 51.375898 450.143259 374.198245 21.092401 48.3380
|
||||
4868510 51.470963 450.143449 374.198675 21.094408 47.2799
|
||||
4878500 51.565863 451.143321 374.198950 21.098397 52.4908
|
||||
4888500 51.660931 451.143535 374.199356 21.101707 48.2024
|
||||
4898492 51.757037 451.143853 374.199782 21.107517 48.5453
|
||||
4908482 51.851942 451.144094 374.200196 21.110170 49.6470
|
||||
4918472 51.946575 451.144402 374.200558 22.033824 45.4184
|
||||
4928466 52.042734 451.144688 374.200972 22.042868 32.6752
|
||||
4938464 52.138484 451.145003 374.201220 22.045469 32.2585
|
||||
4948460 52.234504 451.145327 375.200328 22.073212 32.1771
|
||||
4958450 52.329318 451.145564 375.200709 22.073554 32.4845
|
||||
4968444 52.424264 451.145877 375.201061 22.078167 32.6703
|
||||
4978434 52.519594 451.146195 375.201556 22.079192 32.5019
|
||||
4988434 52.615028 451.146489 375.201931 22.086489 32.5933
|
||||
4998424 52.710896 451.146794 375.202276 22.098001 32.7183
|
||||
5008414 52.806022 451.147086 375.202687 22.100301 32.6272
|
||||
5018406 52.901418 451.147387 375.203095 22.100574 33.5045
|
||||
5028400 52.998402 451.147629 375.203563 22.100872 32.4457
|
||||
5038398 53.093924 451.147858 375.204017 22.102664 32.8180
|
||||
5048392 53.190550 451.148185 375.204324 22.110741 33.0223
|
||||
5058390 53.286950 451.148516 375.204576 22.111075 33.1004
|
||||
5068386 53.383623 451.148745 375.204887 22.115498 32.5486
|
||||
5078382 53.479343 451.149042 375.205252 22.115815 32.8521
|
||||
5088370 53.575135 451.149371 375.205687 22.119640 32.7439
|
||||
5098368 53.671302 451.149638 375.206080 22.122595 33.2954
|
||||
5108360 53.766915 451.149924 375.206443 22.124718 33.1216
|
||||
5118346 53.862921 451.150239 375.206799 22.127300 33.0741
|
||||
5128338 53.958706 451.150629 375.207205 22.128951 33.1913
|
||||
5138326 54.054573 451.150914 375.207596 23.061902 33.5505
|
||||
5148322 54.150169 451.151151 375.208082 23.064300 33.4103
|
||||
5158318 54.246399 451.151431 375.208544 23.069128 33.2471
|
||||
5168304 54.342388 451.151571 376.207561 23.073943 33.8107
|
||||
5178292 54.438771 451.151829 376.207856 23.075703 33.4303
|
||||
5188278 54.535266 451.152078 377.207609 23.077165 33.5442
|
||||
5198266 54.631719 451.152361 377.207976 23.102356 33.9675
|
||||
5208260 54.727939 451.152589 377.208384 23.104314 33.7569
|
||||
5218252 54.824379 451.152855 377.208760 23.105598 33.4776
|
||||
5228246 54.920655 451.153201 377.209176 23.109020 34.1528
|
||||
5238236 55.016603 451.153434 377.209596 23.118938 34.1578
|
||||
5248230 55.112813 451.153669 377.210035 23.124194 34.2976
|
||||
5258226 55.209257 451.153989 377.210478 24.036406 33.9031
|
||||
5268212 55.305750 451.154407 377.210860 24.039152 33.7472
|
||||
5278208 55.402695 451.154717 378.210056 24.040930 33.9950
|
||||
5288202 55.498102 451.154959 378.210395 24.041303 34.1169
|
||||
5298190 55.594228 451.155234 378.210676 24.043018 34.2368
|
||||
5308186 55.690556 451.155548 378.211597 24.050006 34.2696
|
||||
5318176 55.786609 451.155791 379.210752 24.053464 34.1992
|
||||
5328164 55.883094 451.156164 379.211122 24.058696 33.9738
|
||||
5338148 55.979403 451.156488 379.211560 24.059049 34.3147
|
||||
5348140 56.076405 451.156794 380.210726 24.072726 42.1451
|
||||
5358138 56.172358 452.156574 380.211138 24.074229 34.7517
|
||||
5368134 56.268822 452.156781 380.211505 24.077650 34.3117
|
||||
5378128 56.365147 452.157099 380.211810 24.089799 34.3894
|
||||
5388126 56.461028 452.157455 380.212128 24.090933 34.4576
|
||||
5398120 56.557776 452.157811 380.212519 24.103035 35.3457
|
||||
5408112 56.654286 452.158087 381.211634 24.991335 35.3126
|
||||
5418106 56.751008 452.158435 381.211927 24.999806 34.9326
|
||||
5428102 56.847372 452.158742 381.212326 25.006819 34.7918
|
||||
5438094 56.944205 452.158999 381.212730 25.010324 34.7648
|
||||
5448088 57.039897 452.159388 381.213083 25.942279 34.5757
|
||||
5458082 57.136935 452.159641 381.213469 25.941283 34.4297
|
||||
5468062 57.232572 452.159944 381.213857 25.943150 34.7522
|
||||
5478054 57.329013 452.160309 381.214224 25.952893 34.6585
|
||||
5488050 57.425441 452.160533 381.214525 25.955520 34.9891
|
||||
5498044 57.520971 453.160293 381.214902 25.987841 35.4893
|
||||
5508040 57.618394 454.159982 382.213960 25.991968 35.3141
|
||||
5518036 57.714461 454.160241 382.214321 25.994833 35.5823
|
||||
5528028 57.810935 454.160649 382.214641 25.995189 35.2076
|
||||
5538022 57.907021 454.160940 383.213711 26.000459 35.0961
|
||||
5548016 58.003198 454.161234 383.214158 26.004831 35.3220
|
||||
5558006 58.100084 454.161564 383.214550 26.008851 35.0524
|
||||
5567998 58.195865 454.161789 383.215302 26.013097 43.1741
|
||||
5577986 58.292802 455.161650 383.215744 26.873691 35.2801
|
||||
5587980 58.389801 455.162001 383.216132 26.913942 35.8558
|
||||
5597976 58.485933 455.162361 383.216472 26.922359 43.4759
|
||||
5607970 58.582601 455.162726 383.216775 26.924878 35.5519
|
||||
5617962 58.679450 455.163007 384.215992 26.930826 43.2554
|
||||
5627952 58.775976 455.163348 384.216511 26.935092 36.2820
|
||||
5637946 58.872696 455.163620 385.215589 27.593719 35.5612
|
||||
5647932 58.969555 455.163958 386.214647 27.603805 36.6560
|
||||
5657924 59.065943 455.164267 386.215403 27.730978 35.9267
|
||||
5667912 59.162878 455.164622 386.216202 27.741454 36.1709
|
||||
5677900 59.259945 457.164040 386.216969 27.746202 35.7967
|
||||
5687894 59.356538 457.164299 386.217324 27.751070 35.9764
|
@ -0,0 +1,514 @@
|
||||
599880 22.280849 412.034730 334.059758 0.000000 7.3341
|
||||
609880 22.283897 412.034989 334.059926 0.066754 12.9601
|
||||
619880 22.286317 412.035210 334.060226 0.136119 12.3839
|
||||
629880 22.289185 412.035469 334.060500 0.207638 12.4973
|
||||
599880 22.280849 412.034730 334.059758 0.000000 7.3747
|
||||
609880 22.283897 412.034989 334.059926 0.066754 12.9525
|
||||
619880 22.286317 412.035210 334.060226 0.136119 12.4758
|
||||
629880 22.289185 412.035469 334.060500 0.207638 12.3720
|
||||
639880 22.291470 412.035697 334.060924 0.276237 12.7866
|
||||
649880 22.293578 412.035905 334.061310 0.345216 13.1720
|
||||
659880 22.297185 412.036202 334.061639 0.413057 13.4491
|
||||
669880 22.301392 412.036430 334.061904 0.481690 13.3403
|
||||
679878 22.304242 412.036678 334.062190 0.550060 13.4195
|
||||
689878 22.309115 412.036979 334.062508 0.618186 13.9244
|
||||
699878 22.313725 412.037298 334.062875 0.686089 14.0469
|
||||
709878 22.316885 412.037545 334.063227 0.751790 14.4470
|
||||
719878 22.320308 412.037787 334.063615 0.818350 14.4879
|
||||
729878 22.323288 412.037995 334.063891 0.885914 14.8316
|
||||
739878 22.326378 412.038221 335.063482 0.955399 15.1621
|
||||
749878 22.331498 412.038530 335.063872 1.024458 15.0778
|
||||
759878 22.335437 412.038741 335.064154 1.090905 15.2194
|
||||
769876 22.338829 412.038986 335.064645 1.154286 15.2606
|
||||
779876 22.342413 412.039247 335.064987 1.219053 15.9022
|
||||
789876 22.348762 412.039551 335.065340 1.281288 15.8190
|
||||
799876 22.353287 412.039787 335.065748 1.347410 16.1712
|
||||
809876 22.356657 412.040005 335.066113 1.410404 16.3639
|
||||
819874 22.360493 412.040254 335.066868 1.477553 16.2262
|
||||
829874 22.364791 412.040527 335.067168 1.539684 16.3787
|
||||
839874 22.369015 412.040707 335.067482 1.598971 16.4739
|
||||
849874 22.375641 412.040939 335.067985 1.656912 16.7519
|
||||
859874 22.380918 412.041193 335.068581 1.715046 16.6065
|
||||
869874 22.387483 412.041505 335.068912 1.755545 17.1003
|
||||
879874 22.408862 413.041646 335.069225 1.786060 17.1942
|
||||
889874 22.414055 413.041874 335.069403 1.790095 17.2551
|
||||
899874 22.419776 413.042179 335.069701 1.874591 17.3167
|
||||
909874 22.426828 413.042426 335.069913 1.879797 17.4846
|
||||
919874 22.434166 413.042694 335.070308 1.898253 17.5954
|
||||
929874 22.441119 413.042948 335.070566 1.922765 17.6845
|
||||
939872 22.447904 413.043140 335.070926 1.925938 18.0563
|
||||
949872 22.455455 413.043471 335.071285 1.929619 17.8733
|
||||
959872 22.463212 413.043688 335.071579 1.930716 18.2561
|
||||
969872 22.471481 413.043957 335.071959 1.973006 17.9314
|
||||
979872 22.495218 414.044145 335.072306 1.974280 17.8594
|
||||
989870 22.504406 414.044380 335.072681 2.009216 17.9090
|
||||
999870 22.513752 414.044681 335.073040 2.010267 18.1734
|
||||
1009870 22.523005 414.044924 336.073574 2.012036 18.2442
|
||||
1019870 22.535356 414.045244 336.073919 2.013290 18.4018
|
||||
1029870 22.548691 414.045548 336.074223 2.014340 18.4366
|
||||
1039868 22.559913 414.045797 337.073753 2.031749 18.3329
|
||||
1049868 22.572916 414.046113 337.074086 2.033588 18.4874
|
||||
1059868 22.588356 414.046478 337.074516 2.035190 18.8495
|
||||
1069868 22.602470 414.046744 337.074846 2.036562 18.9872
|
||||
1079868 22.616332 414.047022 337.075246 2.038851 19.1930
|
||||
1089868 22.633394 414.047384 337.075573 2.040584 19.3031
|
||||
1099868 22.647075 414.047613 337.075914 2.186090 19.3162
|
||||
1109868 22.675986 415.047662 338.075613 2.187964 19.3963
|
||||
1119866 22.692139 415.047961 338.076018 2.264627 19.3024
|
||||
1129866 22.711234 415.048326 338.076739 2.265741 19.6045
|
||||
1139866 22.742661 416.048407 339.076380 2.268247 19.6979
|
||||
1149864 22.760834 416.048698 339.076782 2.291696 19.2621
|
||||
1159860 22.791919 417.048730 339.077048 2.293625 19.4463
|
||||
1169860 22.811605 417.048961 339.077363 2.294004 19.5279
|
||||
1179858 22.833702 417.049242 339.077686 2.294249 19.6345
|
||||
1189858 22.857769 417.049520 339.078043 2.294951 19.7480
|
||||
1199858 22.879599 417.049792 339.078450 2.387649 19.8208
|
||||
1209858 22.902783 417.050121 339.078726 2.388011 19.7962
|
||||
1219858 22.927410 417.050402 339.079049 2.388610 19.8331
|
||||
1229858 22.951282 417.050649 339.079504 2.395586 19.7860
|
||||
1239858 22.994739 419.050517 339.079766 2.407824 19.7728
|
||||
1249854 23.021423 419.050800 339.080062 2.408325 19.7020
|
||||
1259854 23.055661 420.050825 339.080389 2.438144 19.8017
|
||||
1269854 23.082930 420.051080 339.080797 2.440255 19.7034
|
||||
1279854 23.113232 420.051364 340.080499 2.440890 19.6644
|
||||
1289852 23.140905 420.051640 340.080796 2.441020 19.6409
|
||||
1299850 23.169995 420.051944 340.081083 2.461648 19.6145
|
||||
1309848 23.201186 420.052241 340.081368 2.505790 19.7392
|
||||
1319848 23.230740 420.052420 340.081690 2.523986 19.7534
|
||||
1329848 23.263363 420.052689 340.082030 2.524276 19.8169
|
||||
1339848 23.295956 420.052950 340.082439 2.527708 19.5561
|
||||
1349848 23.331128 420.053203 340.082931 2.528309 19.8323
|
||||
1359848 23.364556 420.053455 340.083618 2.528876 19.8550
|
||||
1369848 23.409707 421.053630 340.083926 2.544925 19.9364
|
||||
1379846 23.443272 421.053883 340.084342 2.564153 20.0213
|
||||
1389846 23.480361 421.054145 340.084639 2.582365 19.9981
|
||||
1399846 23.519104 421.054401 340.084980 2.582994 20.0002
|
||||
1409842 23.555796 421.054689 340.085270 2.583122 20.2150
|
||||
1419840 23.593922 421.054923 340.085591 2.674416 20.3962
|
||||
1429838 23.633796 421.055219 340.085876 2.674645 19.9592
|
||||
1439838 23.674019 421.055508 340.086235 2.719118 19.9505
|
||||
1449838 23.711995 421.055771 340.086568 2.719964 19.9876
|
||||
1459838 23.752227 421.055929 340.087368 2.722152 20.3041
|
||||
1469836 23.797593 422.055921 340.087832 2.722335 20.2348
|
||||
1479836 23.838135 422.056244 340.088146 2.775366 20.3697
|
||||
1489832 23.881308 422.056527 340.088464 2.775410 20.1571
|
||||
1499830 23.922222 422.056805 340.088840 2.775670 20.3967
|
||||
1509830 23.969074 423.056882 340.089169 2.776133 20.4462
|
||||
1519826 24.012328 423.057093 340.089403 2.776342 20.5032
|
||||
1529820 24.056633 423.057333 340.089733 2.776930 20.4972
|
||||
1539818 24.101310 423.057623 340.090127 2.777172 20.1194
|
||||
1549818 24.145668 423.057883 340.090477 2.777525 20.3315
|
||||
1559818 24.188138 423.058127 340.090759 2.777873 20.0905
|
||||
1569816 24.233222 423.058443 340.091199 2.778380 20.3641
|
||||
1579816 24.279640 423.058720 340.091551 2.778573 20.1063
|
||||
1589816 24.328204 423.059010 340.092701 2.778767 20.3297
|
||||
1599814 24.374459 423.059188 340.093064 2.779011 20.4091
|
||||
1609812 24.422859 423.059476 340.093357 2.854738 20.2252
|
||||
1619812 24.470074 423.059672 340.093590 2.856557 20.3911
|
||||
1629812 24.518209 423.059875 341.093105 2.856620 20.3614
|
||||
1639812 24.567210 423.060143 341.093504 2.857508 20.4881
|
||||
1649812 24.620523 423.060496 342.093149 2.857608 20.4232
|
||||
1659802 24.671559 423.060790 343.092817 2.857842 20.7873
|
||||
1669802 24.724300 423.061105 344.092435 2.857980 20.2366
|
||||
1679800 24.776756 423.061379 345.091973 2.858056 20.2997
|
||||
1689800 24.830024 423.061753 345.092344 2.862483 20.3361
|
||||
1699798 24.883325 423.062046 345.092662 2.862547 20.1967
|
||||
1709790 24.935581 423.062341 345.093129 2.862614 20.7402
|
||||
1719790 24.989511 423.062650 345.093751 2.862674 20.6929
|
||||
1729788 25.041520 423.062869 345.093979 2.862769 20.7296
|
||||
1739788 25.096026 424.062817 346.093475 2.862971 21.0566
|
||||
1749788 25.150825 424.063090 346.093802 2.863075 21.0250
|
||||
1759786 25.205660 424.063378 346.094128 2.863122 20.9640
|
||||
1769784 25.259794 424.063596 346.094372 2.863173 20.8985
|
||||
1779782 25.314356 424.063926 346.094798 2.863282 21.4909
|
||||
1789782 25.373210 425.064025 346.095178 2.863372 21.0100
|
||||
1799780 25.429238 425.064210 346.095507 2.863406 20.9695
|
||||
1809780 25.483806 425.064498 346.095768 3.603074 20.5313
|
||||
1819780 25.545082 425.064771 346.096057 3.607187 20.9247
|
||||
1829776 25.604321 425.065036 346.096410 3.627798 20.8183
|
||||
1839774 25.663172 425.065278 347.096314 3.628118 20.6746
|
||||
1849770 25.720526 425.065555 347.096747 3.628345 20.8617
|
||||
1859768 25.781309 425.065809 347.097069 3.637776 20.7435
|
||||
1869766 25.839673 425.066094 348.096664 3.643067 20.8285
|
||||
1879766 25.902007 425.066415 348.097339 3.643296 20.8433
|
||||
1889760 25.961658 425.066702 348.098006 3.643599 21.2226
|
||||
1899758 26.020861 425.066959 348.098282 3.643907 21.0110
|
||||
1909754 26.081258 425.067265 348.098651 3.644170 21.0230
|
||||
1919754 26.141047 425.067576 348.099023 3.644321 20.8805
|
||||
1929754 26.201916 425.067890 348.099369 3.644575 21.3060
|
||||
1939752 26.263743 425.068158 348.099787 3.644863 21.0380
|
||||
1949752 26.326408 425.068402 348.100098 3.645078 21.2750
|
||||
1959750 26.388772 425.068631 348.100508 3.649935 20.9805
|
||||
1969750 26.453365 425.068920 348.100891 3.650075 21.2374
|
||||
1979748 26.516725 425.069225 348.101236 3.657931 20.7239
|
||||
1989748 26.578761 425.069530 348.101630 3.658047 20.8286
|
||||
1999744 26.643096 425.069831 348.102015 3.658476 20.8971
|
||||
2009740 26.710869 425.070138 348.102405 4.536354 20.8364
|
||||
2019738 26.774139 425.070393 348.102730 4.536568 20.8530
|
||||
2029734 26.838004 425.070607 348.103419 4.536836 20.9150
|
||||
2039732 26.901992 425.070885 348.103701 4.540499 20.9849
|
||||
2049732 26.967733 425.071155 348.104170 4.540723 21.0056
|
||||
2059728 27.032527 425.071454 348.104676 4.541104 21.1952
|
||||
2069724 27.099021 426.071440 348.105018 4.541357 21.1514
|
||||
2079724 27.163736 426.071639 348.105277 4.541564 21.1527
|
||||
2089720 27.230522 426.071985 348.105536 4.541848 21.2171
|
||||
2099714 27.295699 426.072191 348.105871 4.542241 21.2397
|
||||
2109712 27.364938 426.072472 348.106226 4.542641 21.4639
|
||||
2119708 27.433047 426.072753 348.106597 4.542772 21.5006
|
||||
2129708 27.500346 426.073077 348.106885 4.542953 21.5295
|
||||
2139704 27.567326 426.073432 348.107214 4.543295 21.4808
|
||||
2149702 27.635746 426.073769 348.107522 4.543649 21.4151
|
||||
2159694 27.703893 426.074022 348.107910 4.547995 21.7526
|
||||
2169692 27.771575 426.074317 348.108175 4.548302 21.9624
|
||||
2179690 27.841925 426.074625 348.108477 4.686357 21.6358
|
||||
2189690 27.910168 426.074922 348.108835 4.688025 21.7742
|
||||
2199688 27.980651 426.075135 348.109146 4.694364 21.7088
|
||||
2209684 28.051400 426.075440 348.109460 4.694606 21.5484
|
||||
2219684 28.124075 427.075463 348.109815 4.698672 21.5477
|
||||
2229674 28.196389 428.075455 349.109278 4.698977 21.9741
|
||||
2239672 28.266798 428.075699 349.109624 5.454830 21.4397
|
||||
2249668 28.338641 428.076004 349.109871 5.480259 21.7898
|
||||
2259668 28.409693 428.076257 349.110594 5.554180 21.5045
|
||||
2269666 28.480109 428.076497 349.110875 5.560842 21.6678
|
||||
2279662 28.552291 428.076725 349.111271 5.562882 21.8899
|
||||
2289658 28.623975 428.077037 349.111655 5.563061 22.2255
|
||||
2299656 28.698136 428.077402 349.112042 5.563226 21.7392
|
||||
2309652 28.771795 428.077678 350.111782 5.563584 21.8535
|
||||
2319648 28.846186 428.077904 350.112214 5.563764 22.0583
|
||||
2329642 28.920675 428.078208 351.111756 6.459382 22.0110
|
||||
2339640 28.994733 428.078527 351.112399 6.455159 21.9050
|
||||
2349640 29.070192 428.078796 351.112797 6.455745 21.9964
|
||||
2359636 29.142792 428.079073 351.113182 6.459677 22.0075
|
||||
2369634 29.216921 428.079318 351.113512 6.460169 22.0281
|
||||
2379634 29.291362 428.079591 351.113893 6.461312 22.1924
|
||||
2389632 29.366009 428.079848 351.114175 6.462056 22.4472
|
||||
2399632 29.443274 428.080064 351.114617 6.464707 22.3692
|
||||
2409630 29.519818 428.080283 351.114930 6.465635 22.5182
|
||||
2419630 29.595385 429.080256 351.115231 6.466388 22.2701
|
||||
2429630 29.672326 429.080591 351.115642 6.505684 22.5417
|
||||
2439630 29.748362 429.080870 351.115853 6.505963 22.5291
|
||||
2449624 29.824307 429.081223 351.116216 6.506260 22.7832
|
||||
2459622 29.899547 429.081472 351.116528 6.506558 22.4982
|
||||
2469622 29.975563 429.081684 351.116868 6.513720 22.6113
|
||||
2479616 30.053364 429.082006 351.117093 6.514220 22.9253
|
||||
2489614 30.129129 430.081997 351.117441 6.534784 22.5982
|
||||
2499610 30.205771 430.082312 351.117774 6.535100 22.7252
|
||||
2509606 30.282868 430.082650 351.118036 6.535358 22.8817
|
||||
2519606 30.362454 431.082684 351.118815 6.541772 22.5671
|
||||
2529606 30.441168 431.083027 351.119258 6.542237 22.5128
|
||||
2539602 30.518058 431.083313 351.119594 6.546694 22.5882
|
||||
2549596 30.595680 431.083537 351.119887 6.548344 22.8867
|
||||
2559592 30.673660 432.083461 351.120232 6.551979 23.1209
|
||||
2569588 30.751165 432.083769 351.120714 6.614303 23.7308
|
||||
2579580 30.830803 432.084079 351.121158 6.614515 23.9344
|
||||
2589580 30.910286 432.084367 351.121596 6.614637 23.9384
|
||||
2599580 30.990653 432.084693 351.121932 6.615288 23.8732
|
||||
2609576 31.070335 432.084981 351.122205 7.450167 23.8313
|
||||
2619576 31.151264 432.085264 351.122537 7.507775 23.7809
|
||||
2629572 31.230213 432.085508 351.122927 7.508138 23.9583
|
||||
2639570 31.309966 433.085488 351.123243 7.508313 26.1486
|
||||
2649568 31.390546 433.085755 351.123998 7.514952 28.4993
|
||||
2659568 31.470417 433.085992 351.124245 7.515399 23.5978
|
||||
2669564 31.550747 433.086265 351.124714 7.524466 24.0494
|
||||
2679558 31.631553 433.086545 351.125174 7.524611 24.2295
|
||||
2689558 31.711927 433.086785 351.125964 7.529772 24.4152
|
||||
2699550 31.790663 433.087089 351.126328 7.531576 24.9210
|
||||
2709548 31.870199 433.087326 351.126582 7.531849 25.9833
|
||||
2719546 31.951919 433.087675 351.127051 7.532035 25.6829
|
||||
2729546 32.033019 433.087964 351.127369 8.429035 25.6278
|
||||
2739546 32.115188 433.088208 351.127719 8.429323 24.6286
|
||||
2749544 32.197775 433.088450 351.128219 8.433652 24.9886
|
||||
2759540 32.280407 433.088684 351.128560 8.437927 24.9456
|
||||
2769538 32.362838 433.088881 351.129032 8.504499 24.7320
|
||||
2779536 32.445498 433.089156 351.129467 8.506412 24.8769
|
||||
2789532 32.525589 433.089417 351.129712 8.592880 25.1325
|
||||
2799528 32.608428 433.089768 351.130040 9.322086 25.4071
|
||||
2809528 32.690151 433.090031 351.130496 9.326931 25.2132
|
||||
2819528 32.773457 433.090321 351.131348 9.417582 25.1364
|
||||
2829526 32.856968 433.090637 351.131696 9.417862 25.1292
|
||||
2839518 32.940131 433.090864 351.132033 9.425989 25.1420
|
||||
2849516 33.023614 433.091181 351.132447 9.426341 24.7974
|
||||
2859512 33.107356 433.091475 351.132776 9.426743 24.5333
|
||||
2869508 33.191953 433.091728 351.133692 9.430699 24.7602
|
||||
2879502 33.275589 433.092145 352.133061 9.439476 24.4783
|
||||
2889500 33.360117 433.092470 352.133561 9.443061 24.1054
|
||||
2899496 33.443579 433.092724 353.133521 9.468212 24.0897
|
||||
2909490 33.528254 433.093042 353.134445 9.470125 24.0189
|
||||
2919488 33.613954 433.093423 353.134803 9.470472 24.4279
|
||||
2929486 33.697768 433.093762 353.135623 9.472461 24.4039
|
||||
2939480 33.780367 433.093956 353.135957 9.473391 24.2357
|
||||
2949476 33.865983 433.094213 353.136304 9.473690 24.4941
|
||||
2959476 33.951345 433.094480 353.136714 9.526262 24.5102
|
||||
2969474 34.036615 433.094832 353.137104 9.526457 24.3277
|
||||
2979472 34.120720 433.095054 353.137479 9.526785 24.5829
|
||||
2989470 34.206276 433.095306 353.138374 9.529251 25.2444
|
||||
2999468 34.291645 434.095365 353.138691 9.529372 24.8111
|
||||
3009468 34.378425 434.095651 353.139106 9.530083 24.6731
|
||||
3019468 34.463685 434.095868 353.139442 9.536002 24.7163
|
||||
3029462 34.548905 434.096173 354.138705 9.537328 24.4700
|
||||
3039454 34.634624 434.096429 354.139070 9.540493 24.4963
|
||||
3049448 34.720086 434.096686 354.139413 10.371709 24.5865
|
||||
3059444 34.804464 434.096995 354.139752 10.374231 24.5776
|
||||
3069442 34.892261 434.097272 355.139242 10.376922 24.6810
|
||||
3079434 34.979837 434.097623 355.139649 10.402667 25.7200
|
||||
3089434 35.066506 434.097925 355.139944 10.404422 25.5791
|
||||
3099426 35.154331 434.098219 355.140288 10.404719 25.7116
|
||||
3109424 35.240910 434.098486 355.140775 10.405178 24.9826
|
||||
3119418 35.329755 435.098545 355.141186 10.405414 24.8192
|
||||
3129414 35.416997 435.098868 355.141532 10.408858 24.6063
|
||||
3139412 35.503945 435.099179 355.141915 10.409115 24.6453
|
||||
3149412 35.588977 435.099428 355.142275 10.411117 24.6251
|
||||
3159412 35.676745 435.099728 355.142598 11.164705 24.7210
|
||||
3169406 35.762831 435.100010 355.142932 11.172172 25.0758
|
||||
3179398 35.850036 435.100325 355.143219 11.201369 24.7245
|
||||
3189398 35.937290 435.100588 355.143546 11.211599 24.9502
|
||||
3199392 36.024048 435.100822 355.143842 11.243317 24.8846
|
||||
3209390 36.112219 435.101179 355.144197 11.260947 24.9037
|
||||
3219390 36.199039 435.101466 355.144472 11.265969 25.4336
|
||||
3229390 36.286466 435.101718 355.144844 11.266534 25.0333
|
||||
3239382 36.374866 435.102054 355.145166 11.269385 25.0435
|
||||
3249378 36.463129 435.102339 355.145594 11.320113 25.1641
|
||||
3259374 36.551646 435.102659 355.145901 11.331282 25.1178
|
||||
3269364 36.640764 435.102952 355.154744 11.335345 25.1506
|
||||
3279360 36.729447 435.103173 356.145632 11.335658 25.2329
|
||||
3289354 36.817827 436.103066 356.146527 11.335968 25.5249
|
||||
3299346 36.905719 436.103340 356.146898 11.336390 25.6082
|
||||
3309338 36.995260 436.103667 356.147342 11.337363 25.5780
|
||||
3319334 37.083679 436.103927 356.147779 11.341790 25.5581
|
||||
3329330 37.173361 436.104161 357.147239 11.344678 25.7095
|
||||
3339328 37.263545 436.104492 357.147676 11.350644 25.7390
|
||||
3349326 37.352440 436.104812 357.148091 11.354273 25.6186
|
||||
3359322 37.442030 436.105081 357.148538 11.354654 25.9716
|
||||
3369322 37.532049 436.105321 358.154498 11.354855 26.1072
|
||||
3379316 37.622806 436.105587 359.154513 11.369232 25.9858
|
||||
3389308 37.712589 436.105932 359.155731 11.369534 25.7763
|
||||
3399308 37.803368 436.106212 359.156075 11.385234 26.1840
|
||||
3409306 37.892948 436.106554 359.156578 11.387075 26.2020
|
||||
3419304 37.981979 436.106834 359.156996 11.392222 26.4650
|
||||
3429300 38.071208 436.107112 359.157423 11.398265 26.2704
|
||||
3439300 38.160584 436.107345 359.158559 12.287406 25.8967
|
||||
3449294 38.250609 436.107637 359.158867 12.287831 26.0353
|
||||
3459290 38.339933 436.107922 359.160000 12.332726 26.3316
|
||||
3469288 38.429428 436.108148 359.162121 12.333039 26.5120
|
||||
3479284 38.520457 436.108544 360.161144 12.334616 26.5976
|
||||
3489280 38.608856 436.108813 360.161515 13.161098 26.8693
|
||||
3499274 38.697829 436.109071 360.161874 13.176350 27.5114
|
||||
3509270 38.788221 436.109367 360.162196 13.199030 28.3989
|
||||
3519262 38.880212 437.109387 360.162537 13.199588 28.2104
|
||||
3529258 38.970288 437.109733 360.162879 13.285885 28.3830
|
||||
3539258 39.058954 437.109979 360.163263 13.287404 28.8421
|
||||
3549252 39.149253 437.110258 360.163651 13.288787 28.5401
|
||||
3559248 39.239981 437.110485 360.163905 13.293470 28.2771
|
||||
3569242 39.331067 438.110334 360.164252 13.307013 27.8936
|
||||
3579240 39.422070 438.110652 360.164739 13.326934 28.0506
|
||||
3589228 39.511916 438.110950 360.165004 13.328484 28.1696
|
||||
3599224 39.603145 438.111212 360.165455 13.332649 27.9731
|
||||
3609220 39.693433 438.111463 360.165868 13.368016 28.2618
|
||||
3619214 39.784783 438.111755 361.164760 13.382009 27.7011
|
||||
3629214 39.877107 438.112082 361.165071 13.393375 27.7348
|
||||
3639208 39.969485 438.112425 361.165444 13.395292 27.7485
|
||||
3649202 40.060164 438.112665 361.165850 13.395489 33.7875
|
||||
3659196 40.150249 438.112892 361.166161 13.395734 28.2489
|
||||
3669192 40.241355 438.113224 361.166497 13.399765 28.0215
|
||||
3679188 40.332038 438.113518 361.166847 13.400113 33.9922
|
||||
3689184 40.423596 438.113838 361.167229 13.402630 28.2015
|
||||
3699180 40.513940 438.114187 361.167516 13.405326 28.2238
|
||||
3709180 40.605451 438.114439 361.167884 13.410127 28.4061
|
||||
3719176 40.696470 438.114748 362.166806 13.414732 28.2674
|
||||
3729174 40.787676 438.114962 362.167152 13.415011 34.0347
|
||||
3739164 40.878118 438.115283 362.167488 13.418244 28.1159
|
||||
3749158 40.969542 438.115592 362.167711 13.418452 28.1973
|
||||
3759156 41.059953 438.115799 362.168114 13.423296 28.1565
|
||||
3769154 41.151033 438.116082 362.168465 13.425709 28.3094
|
||||
3779152 41.242961 438.116298 362.168862 13.430188 28.3977
|
||||
3789144 41.338056 438.116744 363.167912 14.289915 28.3006
|
||||
3799140 41.431035 438.117054 363.168389 14.292410 28.2404
|
||||
3809134 41.523181 438.117273 363.168801 14.293392 28.1584
|
||||
3819128 41.615239 438.117534 363.169858 14.298315 28.1932
|
||||
3829124 41.707639 438.117835 363.170109 14.305533 28.0305
|
||||
3839124 41.797931 438.118146 363.170472 14.310562 28.3717
|
||||
3849122 41.890527 438.118422 363.170666 14.313124 28.6568
|
||||
3859110 41.981864 438.118711 363.171057 14.313470 28.5928
|
||||
3869102 42.072677 438.118951 363.171452 14.316146 28.3369
|
||||
3879100 42.165102 438.119344 363.171866 14.318245 28.5589
|
||||
3889096 42.256299 438.119641 363.172127 14.323110 28.7959
|
||||
3899090 42.348646 438.119961 363.172487 14.330762 28.8194
|
||||
3909080 42.440528 439.119844 363.172878 14.332090 29.1250
|
||||
3919072 42.532833 439.120110 363.173308 14.337187 28.3598
|
||||
3929064 42.624981 439.120335 363.173655 14.337440 28.3735
|
||||
3939058 42.716285 440.120325 363.173956 14.339801 28.8558
|
||||
3949056 42.807728 440.120604 363.175054 14.340073 28.3545
|
||||
3959048 42.900556 440.120884 363.175419 14.345478 28.8545
|
||||
3969042 42.993799 440.121084 363.175893 14.347791 28.3543
|
||||
3979040 43.085243 440.121335 363.176191 14.349918 28.4231
|
||||
3989034 43.177498 440.121693 363.176452 14.351738 28.4839
|
||||
3999020 43.270857 440.121966 363.176831 14.353992 28.2880
|
||||
4009018 43.362496 440.122223 363.177080 14.354322 28.3967
|
||||
4019014 43.454588 440.122615 363.177528 14.359220 28.5447
|
||||
4029014 43.548056 440.122938 363.177805 14.363034 28.3627
|
||||
4039010 43.640978 440.123145 363.178082 14.365079 28.3653
|
||||
4049006 43.733755 440.123408 363.178511 14.367811 28.4085
|
||||
4059000 43.826688 440.123708 363.179678 14.371576 28.3682
|
||||
4068996 43.920051 440.124001 363.180019 15.338316 28.7496
|
||||
4078992 44.014578 440.124284 363.180332 15.338527 29.1520
|
||||
4088992 44.107368 440.124581 363.180707 15.346673 28.8160
|
||||
4098988 44.201517 440.124836 363.181055 15.349872 28.3654
|
||||
4108984 44.295023 440.125057 363.182437 15.352200 28.5995
|
||||
4118982 44.389050 440.125331 363.182840 15.355528 28.9272
|
||||
4128978 44.482395 440.125673 363.183254 15.362934 29.5561
|
||||
4138970 44.575790 440.125876 363.183632 15.363158 36.8206
|
||||
4148968 44.669164 440.126139 363.184187 15.365102 29.8945
|
||||
4158964 44.762274 440.126423 364.183078 15.365339 30.2155
|
||||
4168962 44.856019 440.126752 364.183623 16.228004 32.0506
|
||||
4178956 44.949194 440.127039 364.183968 16.229614 33.8423
|
||||
4188950 45.042276 440.127323 364.185239 16.229912 32.8718
|
||||
4198944 45.135127 440.127628 364.185597 16.234533 33.3469
|
||||
4208940 45.228255 440.127859 365.184389 16.244443 34.1534
|
||||
4218936 45.321542 440.128156 366.184275 16.248568 35.0744
|
||||
4228932 45.416409 440.128450 367.183204 16.249932 40.6543
|
||||
4238932 45.509816 440.128704 367.183607 16.251557 36.1599
|
||||
4248924 45.603039 440.128933 367.184018 16.251851 37.1550
|
||||
4258914 45.696437 440.129255 367.184280 16.257476 39.6732
|
||||
4268914 45.790180 440.129537 368.183233 16.259714 40.7486
|
||||
4278898 45.883387 440.129854 368.183563 16.261243 40.0376
|
||||
4288894 45.976753 440.130109 369.182618 16.263315 38.4608
|
||||
4298892 46.071396 440.130433 370.181672 16.338573 40.2063
|
||||
4308882 46.164424 440.130713 370.181909 16.345332 39.4220
|
||||
4318872 46.258685 440.131023 370.182309 16.348353 40.6785
|
||||
4328868 46.352827 440.131310 370.182660 16.351258 41.7450
|
||||
4338862 46.447031 440.131667 370.183081 16.356227 43.1082
|
||||
4348860 46.542828 441.131421 371.182210 16.357220 39.7470
|
||||
4358854 46.636661 442.131239 371.182615 16.359578 39.1021
|
||||
4368846 46.730919 442.131566 372.181594 16.360552 39.0791
|
||||
4378840 46.824797 442.131895 372.181976 17.294375 41.0473
|
||||
4388828 46.919511 442.132173 372.182459 17.301260 41.5678
|
||||
4398826 47.013306 442.132502 373.181627 17.305519 41.0648
|
||||
4408826 47.107741 444.132040 373.182041 18.098797 43.6211
|
||||
4418818 47.201475 444.132282 373.182538 18.099155 43.3617
|
||||
4428812 47.295355 444.132624 373.182891 18.106148 42.2639
|
||||
4438804 47.389572 444.132859 373.183356 18.114786 44.0588
|
||||
4448798 47.483226 444.133170 373.183745 18.118569 46.3983
|
||||
4458794 47.576781 444.133402 373.184169 18.124937 46.0453
|
||||
4468786 47.672501 444.133800 373.184697 19.166021 48.6311
|
||||
4478778 47.766797 444.134144 373.185026 19.167251 48.6618
|
||||
4488766 47.860530 444.134444 373.185354 19.169031 46.7380
|
||||
4498760 47.955680 445.134314 373.185799 19.169356 46.7290
|
||||
4508750 48.049603 445.134641 373.186094 19.178119 45.0338
|
||||
4518746 48.144505 445.134999 374.185089 19.966721 46.2680
|
||||
4528734 48.239614 445.135276 374.185545 19.986094 44.2171
|
||||
4538724 48.334315 445.135582 374.186010 19.988180 49.2290
|
||||
4548722 48.428193 445.135842 374.186356 19.995851 46.7047
|
||||
4558718 48.521853 445.136121 374.186634 20.000392 46.3803
|
||||
4568714 48.616743 445.136436 374.186999 20.006237 49.8261
|
||||
4578706 48.711536 445.136800 374.187357 20.012429 50.6037
|
||||
4588700 48.806233 445.137062 374.187614 20.027018 51.1475
|
||||
4598688 48.901489 446.137019 374.187989 20.032552 49.3120
|
||||
4608684 48.996387 446.137358 374.188470 20.032927 51.1503
|
||||
4618672 49.091170 446.137676 374.188872 20.091263 48.0656
|
||||
4628666 49.185561 446.137976 374.189194 20.093761 46.5679
|
||||
4638662 49.280391 446.138350 374.189626 20.096303 47.0291
|
||||
4648660 49.375712 446.138684 374.189926 20.098457 44.2226
|
||||
4658654 49.470994 447.138475 374.190374 20.164201 42.6688
|
||||
4668650 49.565495 447.138728 374.190699 20.985027 45.6925
|
||||
4678646 49.660295 447.139000 374.191038 21.004204 48.5017
|
||||
4688642 49.755425 447.139342 374.191386 21.005233 47.1224
|
||||
4698638 49.851078 447.139688 374.191782 21.008940 48.3053
|
||||
4708630 49.945879 447.139984 374.192218 21.011815 44.3788
|
||||
4718624 50.040614 447.140213 374.192580 21.012336 47.9388
|
||||
4728614 50.136006 447.140612 374.192932 21.036468 47.2523
|
||||
4738602 50.231404 448.140440 374.193277 21.039753 51.1286
|
||||
4748592 50.327688 448.140709 374.193660 21.042525 45.1769
|
||||
4758584 50.422852 449.140650 374.194127 21.045991 44.9788
|
||||
4768572 50.518604 449.140952 374.194526 21.059850 49.1169
|
||||
4778568 50.613319 449.141210 374.194915 21.060540 46.2774
|
||||
4788568 50.709016 449.141507 374.195173 21.067018 46.3789
|
||||
4798558 50.804040 449.141837 374.195511 21.075222 49.1527
|
||||
4808550 50.898738 449.142135 374.195789 21.079905 45.8911
|
||||
4818542 50.993530 449.142432 374.196154 21.082176 48.6072
|
||||
4828540 51.089638 450.142343 374.196598 21.083590 49.2288
|
||||
4838538 51.185708 450.142623 374.197513 21.084458 46.0854
|
||||
4848532 51.280780 450.142944 374.197803 21.089498 49.6811
|
||||
4858520 51.375898 450.143259 374.198245 21.092401 48.3380
|
||||
4868510 51.470963 450.143449 374.198675 21.094408 47.2799
|
||||
4878500 51.565863 451.143321 374.198950 21.098397 52.4908
|
||||
4888500 51.660931 451.143535 374.199356 21.101707 48.2024
|
||||
4898492 51.757037 451.143853 374.199782 21.107517 48.5453
|
||||
4908482 51.851942 451.144094 374.200196 21.110170 49.6470
|
||||
4918472 51.946575 451.144402 374.200558 22.033824 45.4184
|
||||
4928466 52.042734 451.144688 374.200972 22.042868 32.6752
|
||||
4938464 52.138484 451.145003 374.201220 22.045469 32.2585
|
||||
4948460 52.234504 451.145327 375.200328 22.073212 32.1771
|
||||
4958450 52.329318 451.145564 375.200709 22.073554 32.4845
|
||||
4968444 52.424264 451.145877 375.201061 22.078167 32.6703
|
||||
4978434 52.519594 451.146195 375.201556 22.079192 32.5019
|
||||
4988434 52.615028 451.146489 375.201931 22.086489 32.5933
|
||||
4998424 52.710896 451.146794 375.202276 22.098001 32.7183
|
||||
5008414 52.806022 451.147086 375.202687 22.100301 32.6272
|
||||
5018406 52.901418 451.147387 375.203095 22.100574 33.5045
|
||||
5028400 52.998402 451.147629 375.203563 22.100872 32.4457
|
||||
5038398 53.093924 451.147858 375.204017 22.102664 32.8180
|
||||
5048392 53.190550 451.148185 375.204324 22.110741 33.0223
|
||||
5058390 53.286950 451.148516 375.204576 22.111075 33.1004
|
||||
5068386 53.383623 451.148745 375.204887 22.115498 32.5486
|
||||
5078382 53.479343 451.149042 375.205252 22.115815 32.8521
|
||||
5088370 53.575135 451.149371 375.205687 22.119640 32.7439
|
||||
5098368 53.671302 451.149638 375.206080 22.122595 33.2954
|
||||
5108360 53.766915 451.149924 375.206443 22.124718 33.1216
|
||||
5118346 53.862921 451.150239 375.206799 22.127300 33.0741
|
||||
5128338 53.958706 451.150629 375.207205 22.128951 33.1913
|
||||
5138326 54.054573 451.150914 375.207596 23.061902 33.5505
|
||||
5148322 54.150169 451.151151 375.208082 23.064300 33.4103
|
||||
5158318 54.246399 451.151431 375.208544 23.069128 33.2471
|
||||
5168304 54.342388 451.151571 376.207561 23.073943 33.8107
|
||||
5178292 54.438771 451.151829 376.207856 23.075703 33.4303
|
||||
5188278 54.535266 451.152078 377.207609 23.077165 33.5442
|
||||
5198266 54.631719 451.152361 377.207976 23.102356 33.9675
|
||||
5208260 54.727939 451.152589 377.208384 23.104314 33.7569
|
||||
5218252 54.824379 451.152855 377.208760 23.105598 33.4776
|
||||
5228246 54.920655 451.153201 377.209176 23.109020 34.1528
|
||||
5238236 55.016603 451.153434 377.209596 23.118938 34.1578
|
||||
5248230 55.112813 451.153669 377.210035 23.124194 34.2976
|
||||
5258226 55.209257 451.153989 377.210478 24.036406 33.9031
|
||||
5268212 55.305750 451.154407 377.210860 24.039152 33.7472
|
||||
5278208 55.402695 451.154717 378.210056 24.040930 33.9950
|
||||
5288202 55.498102 451.154959 378.210395 24.041303 34.1169
|
||||
5298190 55.594228 451.155234 378.210676 24.043018 34.2368
|
||||
5308186 55.690556 451.155548 378.211597 24.050006 34.2696
|
||||
5318176 55.786609 451.155791 379.210752 24.053464 34.1992
|
||||
5328164 55.883094 451.156164 379.211122 24.058696 33.9738
|
||||
5338148 55.979403 451.156488 379.211560 24.059049 34.3147
|
||||
5348140 56.076405 451.156794 380.210726 24.072726 42.1451
|
||||
5358138 56.172358 452.156574 380.211138 24.074229 34.7517
|
||||
5368134 56.268822 452.156781 380.211505 24.077650 34.3117
|
||||
5378128 56.365147 452.157099 380.211810 24.089799 34.3894
|
||||
5388126 56.461028 452.157455 380.212128 24.090933 34.4576
|
||||
5398120 56.557776 452.157811 380.212519 24.103035 35.3457
|
||||
5408112 56.654286 452.158087 381.211634 24.991335 35.3126
|
||||
5418106 56.751008 452.158435 381.211927 24.999806 34.9326
|
||||
5428102 56.847372 452.158742 381.212326 25.006819 34.7918
|
||||
5438094 56.944205 452.158999 381.212730 25.010324 34.7648
|
||||
5448088 57.039897 452.159388 381.213083 25.942279 34.5757
|
||||
5458082 57.136935 452.159641 381.213469 25.941283 34.4297
|
||||
5468062 57.232572 452.159944 381.213857 25.943150 34.7522
|
||||
5478054 57.329013 452.160309 381.214224 25.952893 34.6585
|
||||
5488050 57.425441 452.160533 381.214525 25.955520 34.9891
|
||||
5498044 57.520971 453.160293 381.214902 25.987841 35.4893
|
||||
5508040 57.618394 454.159982 382.213960 25.991968 35.3141
|
||||
5518036 57.714461 454.160241 382.214321 25.994833 35.5823
|
||||
5528028 57.810935 454.160649 382.214641 25.995189 35.2076
|
||||
5538022 57.907021 454.160940 383.213711 26.000459 35.0961
|
||||
5548016 58.003198 454.161234 383.214158 26.004831 35.3220
|
||||
5558006 58.100084 454.161564 383.214550 26.008851 35.0524
|
||||
5567998 58.195865 454.161789 383.215302 26.013097 43.1741
|
||||
5577986 58.292802 455.161650 383.215744 26.873691 35.2801
|
||||
5587980 58.389801 455.162001 383.216132 26.913942 35.8558
|
||||
5597976 58.485933 455.162361 383.216472 26.922359 43.4759
|
||||
5607970 58.582601 455.162726 383.216775 26.924878 35.5519
|
||||
5617962 58.679450 455.163007 384.215992 26.930826 43.2554
|
||||
5627952 58.775976 455.163348 384.216511 26.935092 36.2820
|
||||
5637946 58.872696 455.163620 385.215589 27.593719 35.5612
|
||||
5647932 58.969555 455.163958 386.214647 27.603805 36.6560
|
||||
5657924 59.065943 455.164267 386.215403 27.730978 35.9267
|
||||
5667912 59.162878 455.164622 386.216202 27.741454 36.1709
|
||||
5677900 59.259945 457.164040 386.216969 27.746202 35.7967
|
||||
5687894 59.356538 457.164299 386.217324 27.751070 35.9764
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,12 @@
|
||||
Real10BA10000RLSext01 79.985558 16 14.8310
|
||||
471.222460 401.291029 1.8745
|
||||
0.000000 41.603605 29.6421
|
||||
Real10BA10000RLSext01new 27.840665 70 4.6212
|
||||
426.074624 348.108483 0.9028
|
||||
0.000000 4.686342 16.4999
|
||||
Real10BA10000RLSext01new 27.770619 68 4.5441
|
||||
426.074316 348.108174 0.9021
|
||||
0.000000 4.548301 16.4157
|
||||
Real10BA10000RLSext01new 27.770613 71 4.6210
|
||||
426.074316 348.108172 0.9144
|
||||
0.000000 4.548301 16.3512
|
@ -0,0 +1,42 @@
|
||||
#!/bin/sh
|
||||
|
||||
usage(){
|
||||
cat << EOF
|
||||
|
||||
ERROR
|
||||
|
||||
usage : ./step_test.sh np start input
|
||||
|
||||
np : number of processors used
|
||||
start : number of node of the matrix to start with
|
||||
input : file containing the entry of test_realnet
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
if test $# -ne 3; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
file=$3
|
||||
start=$2
|
||||
np=$1
|
||||
|
||||
#newfile="$file"new
|
||||
#sed -i 1d enea.inp
|
||||
#sed -i '1i'$newfile $n enea.inp
|
||||
|
||||
#cp $file $newfile
|
||||
n=`expr $start`
|
||||
sed -i 1d $file
|
||||
sed -i '1i'$n $file
|
||||
echo "on rentre dans la boucle"
|
||||
while [ $n -le 7799880 ] ;do
|
||||
sed -i 1d $file
|
||||
sed -i '1i'$n $file
|
||||
echo "fichier modifié"
|
||||
echo $n
|
||||
echo
|
||||
mpirun -np $np ./test_realnet < $file
|
||||
n=$(($n+10000))
|
||||
done
|
Binary file not shown.
Binary file not shown.
@ -0,0 +1,370 @@
|
||||
!!$
|
||||
!!$ Parallel Sparse BLAS version 3.1
|
||||
!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013
|
||||
!!$ Salvatore Filippone University of Rome Tor Vergata
|
||||
!!$ Alfredo Buttari CNRS-IRIT, Toulouse
|
||||
!!$
|
||||
!!$ Redistribution and use in source and binary forms, with or without
|
||||
!!$ modification, are permitted provided that the following conditions
|
||||
!!$ are met:
|
||||
!!$ 1. Redistributions of source code must retain the above copyright
|
||||
!!$ notice, this list of conditions and the following disclaimer.
|
||||
!!$ 2. Redistributions in binary form must reproduce the above copyright
|
||||
!!$ notice, this list of conditions, and the following disclaimer in the
|
||||
!!$ documentation and/or other materials provided with the distribution.
|
||||
!!$ 3. The name of the PSBLAS group or the names of its contributors may
|
||||
!!$ not be used to endorse or promote products derived from this
|
||||
!!$ software without specific written permission.
|
||||
!!$
|
||||
!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS
|
||||
!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
!!$ POSSIBILITY OF SUCH DAMAGE.
|
||||
!!$
|
||||
!!$
|
||||
program maxA_and_lapl_extremums
|
||||
use psb_base_mod
|
||||
use psb_util_mod
|
||||
use psb_eigen_mod
|
||||
implicit none
|
||||
|
||||
! input parameters
|
||||
character(len=100) :: mtrx_file, rhs_file
|
||||
character(len=40) :: kmethd, ptype
|
||||
real (psb_dpk_) :: precisione,sigma
|
||||
integer(psb_ipk_) :: dim_H,start,step
|
||||
|
||||
! sparse matrices
|
||||
type(psb_dspmat_type) :: a, b, aux_a
|
||||
type(psb_d_coo_sparse_mat) :: acoo
|
||||
|
||||
! dense matrices
|
||||
real(psb_dpk_), allocatable, target :: aux_b(:,:), d(:)
|
||||
real(psb_dpk_), allocatable , save :: x_col_glob(:), r_col_glob(:)
|
||||
real(psb_dpk_), pointer :: b_col_glob(:)
|
||||
type(psb_d_vect_type) :: b_col, x_col, r_col
|
||||
complex(psb_dpk_),allocatable :: eig(:),eigmin(:)
|
||||
|
||||
|
||||
! communications data structure
|
||||
type(psb_desc_type):: desc_a
|
||||
integer(psb_ipk_) :: ictxt, iam, np
|
||||
|
||||
! solver paramters
|
||||
integer(psb_ipk_) :: iter, itmax, ierr, itrace, ircode, ipart,&
|
||||
& methd, istopc, irst, nr
|
||||
integer(psb_long_int_k_) :: amatsize, descsize, annz, nbytes
|
||||
real(psb_dpk_) :: err, eps,cond
|
||||
|
||||
character(len=5) :: afmt
|
||||
character(len=20) :: name
|
||||
character(len=2) :: filefmt
|
||||
integer(psb_ipk_), parameter :: iunit=12
|
||||
integer(psb_ipk_) :: times=0
|
||||
integer(psb_ipk_) :: iparm(20)
|
||||
|
||||
! other variables
|
||||
integer(psb_ipk_) :: nnzero,nrows,nnz,m_problem
|
||||
integer(psb_ipk_) :: i,info,j
|
||||
real(psb_dpk_) :: t1, t2, t3, t4
|
||||
real(psb_dpk_) :: lambda, lambda2, norm
|
||||
integer(psb_ipk_) :: nrhs, n_row, dim, nv, ne
|
||||
integer(psb_ipk_), allocatable :: ivg(:), ipv(:)
|
||||
|
||||
|
||||
call psb_init(ictxt)
|
||||
call psb_info(ictxt,iam,np)
|
||||
|
||||
if (iam < 0) then
|
||||
! This should not happen, but just in case
|
||||
call psb_exit(ictxt)
|
||||
stop
|
||||
endif
|
||||
|
||||
|
||||
name='power_file'
|
||||
if(psb_get_errstatus() /= 0) goto 9999
|
||||
info=psb_success_
|
||||
call psb_set_errverbosity(2)
|
||||
!
|
||||
! Hello world
|
||||
!
|
||||
if (iam == psb_root_) then
|
||||
write(*,*) 'This is the ',trim(name),' sample program'
|
||||
read(psb_inp_unit,*) mtrx_file
|
||||
read(psb_inp_unit,*) filefmt
|
||||
read(psb_inp_unit,*) ipart
|
||||
read(psb_inp_unit,*) precisione
|
||||
read(psb_inp_unit,*) dim_H
|
||||
read(psb_inp_unit,*) sigma
|
||||
read(psb_inp_unit,*) ptype
|
||||
read(psb_inp_unit,*) kmethd
|
||||
read(psb_inp_unit,*) start
|
||||
read(psb_inp_unit,*) step
|
||||
end if
|
||||
call psb_bcast(ictxt,mtrx_file)
|
||||
call psb_bcast(ictxt,filefmt)
|
||||
call psb_bcast(ictxt,ipart)
|
||||
call psb_bcast(ictxt,precisione)
|
||||
call psb_bcast(ictxt,dim_H)
|
||||
call psb_bcast(ictxt,sigma)
|
||||
call psb_bcast(ictxt,ptype)
|
||||
call psb_bcast(ictxt,kmethd)
|
||||
call psb_bcast(ictxt,start)
|
||||
call psb_bcast(ictxt,step)
|
||||
rhs_file = 'NONE'
|
||||
afmt = 'CSR'
|
||||
call psb_barrier(ictxt)
|
||||
! read the input matrix to be processed and (possibly) the rhs
|
||||
nrhs = 1
|
||||
|
||||
if (iam==psb_root_) then
|
||||
select case(psb_toupper(filefmt))
|
||||
case ('AD')
|
||||
! call psb_d_adj_read(aux_a,mtrx_file,iunit,info)
|
||||
open(iunit, FILE=mtrx_file, STATUS="OLD", ACTION="READ")
|
||||
read(iunit, *) nrows , nnzero
|
||||
t1 = psb_wtime()
|
||||
call acoo%allocate(nrows,nrows,start)
|
||||
do i = 1,start
|
||||
read(iunit, *) acoo%ia(i),acoo%ja(i)
|
||||
acoo%val(i)=1.0
|
||||
end do
|
||||
call acoo%set_nzeros(start)
|
||||
call acoo%fix(info)
|
||||
call aux_a%cp_from(acoo)
|
||||
call aux_a%cscnv(info,type='csr')
|
||||
|
||||
case default
|
||||
info = -1
|
||||
write(psb_err_unit,*) 'Wrong choice for fileformat ', filefmt
|
||||
end select
|
||||
if (info /= psb_success_) then
|
||||
write(psb_err_unit,*) 'Error while reading input matrix '
|
||||
call psb_abort(ictxt)
|
||||
end if
|
||||
|
||||
m_problem = aux_a%get_nrows()
|
||||
call psb_bcast(ictxt,m_problem)
|
||||
|
||||
! At this point aux_b may still be unallocated
|
||||
if (psb_size(aux_b,dim=1)==m_problem) then
|
||||
! if any rhs were present, broadcast the first one
|
||||
write(psb_err_unit,'("Ok, got an rhs ")')
|
||||
b_col_glob =>aux_b(:,1)
|
||||
else
|
||||
call psb_realloc(m_problem,1,aux_b,ircode)
|
||||
! write(psb_err_unit,*) 'Error realloc 1 passed '
|
||||
if (ircode /= 0) then
|
||||
call psb_errpush(psb_err_alloc_dealloc_,name)
|
||||
goto 9999
|
||||
endif
|
||||
b_col_glob => aux_b(:,1)
|
||||
do i=1, m_problem
|
||||
b_col_glob(i) = 1.d0
|
||||
enddo
|
||||
endif
|
||||
call psb_bcast(ictxt,b_col_glob(1:m_problem))
|
||||
|
||||
else
|
||||
!write(psb_err_unit,*) 'avant realloc passed '
|
||||
call psb_bcast(ictxt,m_problem)
|
||||
call psb_realloc(m_problem,1,aux_b,ircode)
|
||||
!write(psb_err_unit,*) 'Error realloc passed '
|
||||
if (ircode /= 0) then
|
||||
call psb_errpush(psb_err_alloc_dealloc_,name)
|
||||
goto 9999
|
||||
endif
|
||||
b_col_glob =>aux_b(:,1)
|
||||
call psb_bcast(ictxt,b_col_glob(1:m_problem))
|
||||
end if
|
||||
|
||||
! switch over different partition types
|
||||
if (ipart == 0) then
|
||||
call psb_barrier(ictxt)
|
||||
allocate(ivg(m_problem),ipv(np))
|
||||
do i=1,m_problem
|
||||
call part_block(i,m_problem,np,ipv,nv)
|
||||
ivg(i) = ipv(1)
|
||||
enddo
|
||||
|
||||
call psb_matdist(aux_a, a,ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
|
||||
!write(psb_out_unit,*) 'OK matdist 1 '
|
||||
!write(psb_out_unit,'("nb zeros de a apres dist 1, num proc",i10," , ",i10)')a%get_nzeros(),iam
|
||||
|
||||
else if (ipart == 2) then
|
||||
if (iam==psb_root_) then
|
||||
call build_mtpart(aux_a,np)
|
||||
endif
|
||||
call psb_barrier(ictxt)
|
||||
call distr_mtpart(psb_root_,ictxt)
|
||||
call getv_mtpart(ivg)
|
||||
call psb_matdist(aux_a, a, ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
|
||||
|
||||
else
|
||||
call psb_matdist(aux_a, a, ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,parts=part_block)
|
||||
end if
|
||||
|
||||
call psb_barrier(ictxt)
|
||||
call psb_d_power_vect(a,x_col,lambda,precisione,iter,500,desc_a,info)
|
||||
|
||||
t2 = psb_wtime() - t1
|
||||
t1 = psb_wtime()
|
||||
call psb_d_laplacian(a,b)
|
||||
! write(psb_out_unit,'("nb zeros de B apres lapl, num proc",i10," , ",i10)')b%get_nzeros(),iam
|
||||
call psb_d_arnoldi(b,dim_H,eig,desc_a,ictxt,info)
|
||||
|
||||
t3 = psb_wtime()-t1
|
||||
t1 = psb_wtime()
|
||||
call psb_d_shift_invert(b,dim_H,sigma,eigmin,ptype,kmethd,desc_a,ictxt,iam,info)
|
||||
|
||||
call psb_barrier(ictxt)
|
||||
t4 = psb_wtime() - t1
|
||||
|
||||
if (iam==psb_root_) then
|
||||
open (15, FILE="resultats.dat", position = 'append',ACTION="WRITE")
|
||||
write (15,'(i20,F20.6,F20.4)')start,lambda,t2
|
||||
write (15,'(F20.6,F20.6,F20.4)')real(eig(dim_H)),real(eig(dim_H-1)),t3
|
||||
write (15,'(F20.6,F20.6,F20.4)')real(eigmin(dim_H)),real(eigmin(dim_H-1)),t4
|
||||
close(15)
|
||||
end if
|
||||
call psb_spfree(a, desc_a,info)
|
||||
call psb_spfree(aux_a, desc_a,info)
|
||||
call psb_spfree(b, desc_a,info)
|
||||
call psb_cdfree(desc_a,info)
|
||||
|
||||
nnz=start
|
||||
do while (nnz+step <= nnzero)
|
||||
! new acoo is the old one plus 'step' new links of the file
|
||||
if (iam==psb_root_) then
|
||||
t1 = psb_wtime()
|
||||
call acoo%reallocate(nnz+step)
|
||||
do j = 1,step
|
||||
read(iunit, *) acoo%ia(nnz+j),acoo%ja(nnz+j)
|
||||
acoo%val(i)=1.0
|
||||
end do
|
||||
call acoo%set_nzeros(nnz+step)
|
||||
call acoo%fix(info)
|
||||
call aux_a%cp_from(acoo)
|
||||
call aux_a%cscnv(info,type='csr')
|
||||
write(psb_out_unit,'(i10)')aux_a%get_nzeros()
|
||||
nnz=nnz+step
|
||||
|
||||
!m_problem = aux_a%get_nrows()
|
||||
!call psb_bcast(ictxt,m_problem)
|
||||
|
||||
! At this point aux_b may still be unallocated
|
||||
!if (psb_size(aux_b,dim=1)==m_problem) then
|
||||
! if any rhs were present, broadcast the first one
|
||||
! write(psb_err_unit,'("Ok, got an rhs ")')
|
||||
! b_col_glob =>aux_b(:,1)
|
||||
! else
|
||||
!call psb_realloc(m_problem,1,aux_b,ircode)
|
||||
! write(psb_err_unit,*) 'Error realloc 1 passed '
|
||||
!if (ircode /= 0) then
|
||||
! call psb_errpush(psb_err_alloc_dealloc_,name)
|
||||
! goto 9999
|
||||
!endif
|
||||
!b_col_glob => aux_b(:,1)
|
||||
!do j=1, m_problem
|
||||
! b_col_glob(j) = 1.d0
|
||||
! enddo
|
||||
!endif
|
||||
! call psb_bcast(ictxt,b_col_glob(1:m_problem))
|
||||
|
||||
!else
|
||||
!write(psb_err_unit,*) 'avant realloc passed '
|
||||
!call psb_bcast(ictxt,m_problem)
|
||||
!call psb_realloc(m_problem,1,aux_b,ircode)
|
||||
!write(psb_err_unit,*) 'Error realloc passed '
|
||||
!if (ircode /= 0) then
|
||||
!call psb_errpush(psb_err_alloc_dealloc_,name)
|
||||
!goto 9999
|
||||
!endif
|
||||
! b_col_glob =>aux_b(:,1)
|
||||
! call psb_bcast(ictxt,b_col_glob(1:m_problem))
|
||||
end if
|
||||
|
||||
! switch over different partition types
|
||||
if (ipart == 0) then
|
||||
write(psb_out_unit,'("on est dans le if",i10)')iam
|
||||
call psb_barrier(ictxt)
|
||||
write(psb_out_unit,*)"barriere passée"
|
||||
do j=1,m_problem
|
||||
call part_block(i,m_problem,np,ipv,nv)
|
||||
ivg(i) = ipv(1)
|
||||
enddo
|
||||
call psb_matdist(aux_a, a,ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
|
||||
! write(psb_out_unit,*) 'OK matdist 2 '
|
||||
! write(psb_out_unit,'("nb zeros de a apres dist, num proc",i10," , ",i10)')a%get_nzeros(),iam
|
||||
|
||||
else if (ipart == 2) then
|
||||
if (iam==psb_root_) then
|
||||
call build_mtpart(aux_a,np)
|
||||
endif
|
||||
call psb_barrier(ictxt)
|
||||
call distr_mtpart(psb_root_,ictxt)
|
||||
call getv_mtpart(ivg)
|
||||
call psb_matdist(aux_a, a, ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,v=ivg)
|
||||
|
||||
else
|
||||
call psb_matdist(aux_a, a, ictxt, &
|
||||
& desc_a,b_col_glob,b_col,info,fmt=afmt,parts=part_block)
|
||||
end if
|
||||
|
||||
call psb_barrier(ictxt)
|
||||
call psb_d_power_vect(a,x_col,lambda,precisione,iter,500,desc_a,info)
|
||||
|
||||
t2 = psb_wtime() - t1
|
||||
t1 = psb_wtime()
|
||||
call psb_d_laplacian(a,b)
|
||||
call psb_d_arnoldi(b,dim_H,eig,desc_a,ictxt,info)
|
||||
|
||||
t3 = psb_wtime()-t1
|
||||
t1 = psb_wtime()
|
||||
call psb_d_shift_invert(b,dim_H,sigma,eigmin,ptype,kmethd,desc_a,ictxt,iam,info)
|
||||
|
||||
call psb_barrier(ictxt)
|
||||
t4 = psb_wtime() - t1
|
||||
|
||||
if (iam==psb_root_) then
|
||||
open (15, FILE="resultats.dat", position = 'append',ACTION="WRITE")
|
||||
write (15,'(i20,F20.6,F20.4)')nnz,lambda,t2
|
||||
write (15,'(F20.6,F20.6,F20.4)')real(eig(dim_H)),real(eig(dim_H-1)),t3
|
||||
write (15,'(F20.6,F20.6,F20.4)')real(eigmin(dim_H)),real(eigmin(dim_H-1)),t4
|
||||
close(15)
|
||||
end if
|
||||
call psb_spfree(a, desc_a,info)
|
||||
call psb_spfree(aux_a, desc_a,info)
|
||||
call psb_spfree(b, desc_a,info)
|
||||
call psb_cdfree(desc_a,info)
|
||||
enddo
|
||||
|
||||
close(iunit)
|
||||
call psb_gefree(b_col, desc_a,info)
|
||||
call psb_gefree(x_col, desc_a,info)
|
||||
|
||||
9999 continue
|
||||
if(info /= 0) then
|
||||
call psb_error(ictxt)
|
||||
end if
|
||||
call psb_exit(ictxt)
|
||||
stop
|
||||
|
||||
end program maxA_and_lapl_extremums
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue