subroutine sreadA3_IC(pname,X,Y1,Y2)
integer :: i,j,k,Ny1,Ny2,Ny3
character(len=*) :: pname
complex(8),dimension(:,:,:) :: Y1
complex(8),dimension(size(Y1,1),size(Y1,2),size(Y1,3)),optional :: Y2
integer,dimension(size(Y1,3)) :: X
real(8),allocatable,dimension(:,:,:,:) :: reY,imY
Ny1=size(Y1,1) ; Ny2=size(Y1,2); Ny3=size(Y1,3)
open(719,file=adjustl(trim(pname)))
if(present(Y2))then
allocate(reY(2,size(Y1,1),size(Y1,2),size(Y1,3)),&
imY(2,size(Y1,1),size(Y1,2),size(Y1,3)))
do i=1,Ny1
do j=1,Ny2
do k=1,Ny3
read(719,"(I15,4(F21.12))")X(j),imY(1,i,j,k),reY(1,i,j,k),imY(2,i,j,k),reY(2,i,j,k)
enddo
enddo
enddo
Y1=cmplx(reY(1,:,:,:),imY(1,:,:,:),8)
Y2=cmplx(reY(2,:,:,:),imY(2,:,:,:),8)
else
allocate(reY(2,size(Y1,1),size(Y1,2),size(Y1,3)))
do i=1,Ny1
do j=1,Ny2
do k=1,Ny3
read(719,*)X(j),imY(1,i,j,k),reY(1,i,j,k)
enddo
enddo
enddo
Y1=cmplx(reY(1,:,:,:),imY(1,:,:,:),8)
endif
close(719)
end subroutine sreadA3_IC