test.F90

Path: SolverClass/test.F90
Last Update: Wed Jan 18 16:14:50 +0900 2012
dot/f_2.png

Required files

Methods

test  

Included Modules

lattice_class solver_class

Public Instance methods

Main Program :

[Source]

program test
  use lattice_class
  use solver_class
  implicit none
  integer, parameter :: NN=2
  complex(DP) :: AA(NN,NN),b(NN),x(NN)
  type(cg_alg) :: solver
  integer :: istat
  AA(1,1)=Z1
  AA(1,2)=3*Z1 - Zi
  AA(2,1)=3*Z1 + Zi
  AA(2,2)=3*Z1

  b(1) = Z1+Zi
  b(2) = 2*Z1-2*Zi

  x(1) = Z0
  x(2) = Z0

  write(*,'("b=",4E24.15)')b
  write(*,'("x=",4E24.15)')x

  call new(solver,NSITE=2,max_iter=2,guess=1,tol=1.E-10_DP)
  solver%src_vec(:) = b(:)
  solver%dst_vec(:) = x(:)
  do 
    call solve(solver)

    istat = get_status(solver)
    select case(get_status(solver))
    case (OP_NOP)
      cycle
    case (OP_DO_MATVEC)
      solver%dst_vec(:) = MATMUL(AA(:,:),solver%src_vec(:))
    case (OP_CONVERGED)
      write(*,'(I3,E24.15)')get_current_iteration(solver),get_residual_norm(solver)
      exit
    case (OP_PRINT_STATUS)
      write(*,'(I3,E24.15)')get_current_iteration(solver),get_residual_norm(solver)
    end select
  enddo
  x(:) = solver%dst_vec(:)
  write(*,'("x=",4E24.15)')x
  call delete(solver)
  stop
end program