c_splot3D Subroutine

subroutine c_splot3D(pname, X1, X2, Y, xmin, xmax, ymin, ymax, nosurface, wlines, nlines)

Arguments

Type IntentOptional Attributes Name
character(len=*) :: pname
real(kind=8), dimension(:) :: X1
real(kind=8), dimension(:) :: X2
complex(kind=8), dimension(size(X1),size(X2)) :: Y
real(kind=8), optional :: xmin
real(kind=8), optional :: xmax
real(kind=8), optional :: ymin
real(kind=8), optional :: ymax
logical, optional :: nosurface
logical, optional :: wlines
integer, optional :: nlines

Calls

proc~~c_splot3d~~CallsGraph proc~c_splot3d c_splot3D dimag dimag proc~c_splot3d->dimag get_filename get_filename proc~c_splot3d->get_filename get_filepath get_filepath proc~c_splot3d->get_filepath

Source Code

subroutine c_splot3D(pname,X1,X2,Y,xmin,xmax,ymin,ymax,nosurface,wlines,nlines)
  integer                                 :: i,j,Nx1,Nx2,count,Nl
  character(len=*)                        :: pname
  real(8),dimension(:)                    :: X1
  real(8),dimension(:)                    :: X2
  complex(8),dimension(size(X1),size(X2)) :: Y
  real(8),optional                        :: xmin,xmax,ymin,ymax
  integer,optional                        :: nlines
  logical,optional                        :: wlines,nosurface
  real(8)                                 :: X1min,X1max
  real(8)                                 :: X2min,X2max
  character(len=12)                       :: minx,miny,maxx,maxy
  character(len=256)                      :: fname,dname
  fname=get_filename(pname)
  dname=get_filepath(pname)
  Nx1=size(X1) ; Nx2=size(X2)
  Nl=5; if(present(nlines))Nl=nlines

  open(619,file=adjustl(trim(dname))//"re_"//adjustl(trim(fname)))
  open(719,file=adjustl(trim(dname))//"im_"//adjustl(trim(fname)))
  if(present(wlines))then
     open(620,file=adjustl(trim(dname))//"re_"//adjustl(trim(fname))//"_withlines")
     open(720,file=adjustl(trim(dname))//"im_"//adjustl(trim(fname))//"_withlines")
  endif
  do i=1,Nx1
     count=mod(i,Nl)
     do j=1,Nx2
        write(619,*)X1(i),X2(j),dreal(Y(i,j))
        write(719,*)X1(i),X2(j),dimag(Y(i,j))
        if(present(wlines).AND.count==0)write(620,*)X1(i),X2(j),real(Y(i,j),8)
        if(present(wlines).AND.count==0)write(720,*)X1(i),X2(j),aimag(Y(i,j))
     enddo
     write(619,*)""
     write(719,*)""
     if(present(wlines))then
        write(620,*)""
        write(620,*)""
        write(720,*)""
        write(720,*)""
     endif
  enddo
  close(619)
  close(719)
  X1min=minval(X1);if(present(xmin))X1min=xmin
  X1max=maxval(X1);if(present(xmax))X1max=xmax
  X2min=minval(X2);if(present(ymin))X2min=ymin
  X2max=maxval(X2);if(present(ymax))X2max=ymax
  write(minx,"(f12.4)")X1min
  write(maxx,"(f12.4)")X1max
  write(miny,"(f12.4)")X2min
  write(maxy,"(f12.4)")X2max
  if(present(wlines))then
     close(620)
     close(720)
  endif


  !Re:
  open(10,file=adjustl(trim(pname))//"_re_map.gp")
  write(10,*)"set term wxt"
  write(10,*)"set title 'Re_"//trim(fname)//"'"
  write(10,*)"set pm3d map"
  write(10,*)"set size square"
  write(10,*)"set xrange ["//trim(adjustl(trim(minx)))//":"//trim(adjustl(trim(maxx)))//"]"
  write(10,*)"set yrange ["//trim(adjustl(trim(miny)))//":"//trim(adjustl(trim(maxy)))//"]"
  write(10,*)"splot 're_"//trim(fname)//"'"
  write(10,*)"#set term png size 1920,1280"
  write(10,*)"#set out 're_"//adjustl(trim(fname))//".png'"
  write(10,*)"#rep"
  close(10)
  !Im
  open(10,file=adjustl(trim(pname))//"_im_map.gp")
  write(10,*)"set term wxt"
  write(10,*)"set title 'Im_"//trim(fname)//"'"
  write(10,*)"set pm3d map"
  write(10,*)"set size square"
  write(10,*)"set xrange ["//trim(adjustl(trim(minx)))//":"//trim(adjustl(trim(maxx)))//"]"
  write(10,*)"set yrange ["//trim(adjustl(trim(miny)))//":"//trim(adjustl(trim(maxy)))//"]"
  write(10,*)"splot 'im_"//trim(fname)//"'"
  write(10,*)"#set term png size 1920,1280"
  write(10,*)"#set out 'im_"//adjustl(trim(fname))//".png'"
  write(10,*)"#rep"
  close(10)
  if(present(nosurface).AND.nosurface)return
  !Re
  open(10,file=adjustl(trim(pname))//"_re_surface.gp")
  write(10,*)"set term wxt"
  write(10,*)"set title 'Re_"//trim(fname)//"'"
  write(10,*)"set nokey"
  write(10,*)"set grid"
  write(10,*)"set view 50,10,1,1"
  write(10,*)"splot 're_"//trim(fname)//"' with pm3d"
  if(present(wlines))write(10,*)"rep 're_"//trim(pname)//"_withlines' with lines"
  write(10,*)"#set term png size 1920,1280"
  write(10,*)"#set out 're_"//adjustl(trim(fname))//".png'"
  write(10,*)"#rep"
  close(10)
  !Im
  open(10,file=adjustl(trim(pname))//"_im_surface.gp")
  write(10,*)"set term wxt"
  write(10,*)"set title 'Im_"//trim(fname)//"'"
  write(10,*)"set nokey"
  write(10,*)"set grid"
  write(10,*)"set view 50,10,1,1"
  write(10,*)"splot 'im_"//trim(fname)//"' with pm3d"
  if(present(wlines))write(10,*)"rep 'im_"//trim(pname)//"_withlines' with lines"
  write(10,*)"#set term png size 1920,1280"
  write(10,*)"#set out 'im_"//adjustl(trim(fname))//".png'"
  write(10,*)"#rep"
  close(10)
end subroutine c_splot3D