sreadA3_IC Subroutine

subroutine sreadA3_IC(pname, X, Y1, Y2)

Arguments

Type IntentOptional Attributes Name
character(len=*) :: pname
integer, dimension(size(Y1,3)) :: X
complex(kind=8), dimension(:,:,:) :: Y1
complex(kind=8), optional, dimension(size(Y1,1),size(Y1,2),size(Y1,3)) :: Y2

Source Code

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