sreadV_RC Subroutine

subroutine sreadV_RC(pname, X, Y1, Y2, Y3, Y4)

Arguments

Type IntentOptional Attributes Name
character(len=*) :: pname
real(kind=8), dimension(:) :: X
complex(kind=8), dimension(size(X)) :: Y1
complex(kind=8), optional, dimension(size(X)) :: Y2
complex(kind=8), optional, dimension(size(X)) :: Y3
complex(kind=8), optional, dimension(size(X)) :: Y4

Source Code

subroutine sreadV_RC(pname,X,Y1,Y2,Y3,Y4)
  integer                                :: i,Np
  character(len=*)                       :: pname
  real(8),dimension(:)                   :: X
  complex(8),dimension(size(X))          :: Y1
  complex(8),dimension(size(X)),optional :: Y2,Y3,Y4
  real(8),allocatable,dimension(:,:)     :: reY,imY

  Np=size(X)
  open(719,file=trim(adjustl(trim(pname))))
  if(present(Y4))then
     allocate(reY(4,size(X)),imY(4,size(X)))
     do i=1,Np
        read(719,"(F21.12,8(F21.12))")X(i),imY(1,i),reY(1,i),imY(2,i),reY(2,i),imY(3,i),reY(3,i),imY(4,i),reY(4,i)
     enddo
     Y1=cmplx(reY(1,:),imY(1,:),8)
     Y2=cmplx(reY(2,:),imY(2,:),8)
     Y3=cmplx(reY(3,:),imY(3,:),8)
     Y4=cmplx(reY(4,:),imY(4,:),8)
  elseif(present(Y3))then
     allocate(reY(3,size(X)),imY(3,size(X)))
     do i=1,Np
        read(719,"(F21.12,6(F21.12))")X(i),imY(1,i),reY(1,i),imY(2,i),reY(2,i),imY(3,i),reY(3,i)
     enddo
     Y1=cmplx(reY(1,:),imY(1,:),8)
     Y2=cmplx(reY(2,:),imY(2,:),8)
     Y3=cmplx(reY(3,:),imY(3,:),8)
  elseif(present(Y2))then
     allocate(reY(2,size(X)),imY(2,size(X)))
     do i=1,Np
        read(719,"(F21.12,4(F21.12))")X(i),imY(1,i),reY(1,i),imY(2,i),reY(2,i)
     enddo
     Y1=cmplx(reY(1,:),imY(1,:),8)
     Y2=cmplx(reY(2,:),imY(2,:),8)
  else
     allocate(reY(1,size(X)),imY(1,size(X)))
     do i=1,Np
        read(719,*)X(i),imY(1,i),reY(1,i)
     enddo
     Y1=cmplx(reY(1,:),imY(1,:),8)
  endif
  close(719)
end subroutine sreadV_RC