ASC_WRITE Subroutine

subroutine ASC_WRITE(nout)

Uses

  • proc~~asc_write~~UsesGraph proc~asc_write ASC_WRITE module~basicmod basicmod proc~asc_write->module~basicmod module~mpimod mpimod proc~asc_write->module~mpimod module~config config module~basicmod->module~config module~mpimod->module~config mpi mpi module~mpimod->mpi

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nout

Calls

proc~~asc_write~~CallsGraph proc~asc_write ASC_WRITE makedirs makedirs proc~asc_write->makedirs

Source Code

subroutine ASC_WRITE(nout)
  use mpimod
  use basicmod
  implicit none
  integer,intent(in):: nout
  integer:: i,j,k,n
  integer:: unitasc
  character(len=10),parameter :: dirname="ascdata/"
  character(40)::filename
  character(len=256):: header
  logical,save :: is_inited
  data is_inited / .false. /
  
  if (.not. is_inited) then
     call makedirs(dirname)
     is_inited =.true.
  endif
    
  write(filename,'(a4,i3.3,a1,i5.5,a4)')"snap",myid_w,"-",nout,".csv"
  filename = trim(dirname)//filename
    
  k=ks
  open(newunit=unitasc,file=filename,status='replace',form='formatted')
  write(unitasc,'((a1,1x),2(E12.3,1x))') "#",time,dt
  write(unitasc,'((a1,1x),i5)') "#",ie-is+1
  write(unitasc,'((a1,1x),i5)') "#",je-js+1
  write(unitasc,'((a1,1x),(i5,1x),E13.3)') "#",k,x3b(k)
  header = "# x y d vx vy p phi"
  do n=1,ncomp
     header = trim(header)//" X"//trim(adjustl(to_str(n)))
  enddo
  write(unitasc,'(A)') header 
  do j=js,je
     do i=is,ie
        write(unitasc,"(*(E13.3,1x))")x1b(i),x2b(j),d(i,j,k),v1(i,j,k),v2(i,j,k),p(i,j,k),gp(i,j,k),(Xcomp(n,i,j,k),n=1,ncomp)
     enddo
     write(unitasc,*) ""
  enddo
  close(unitasc)
    
  return
contains
  
  pure function to_str(i) result(s)
    implicit none
    integer, intent(in) :: i
    character(len=32) :: s
    write(s,'(i0)') i
  end function to_str

end subroutine ASC_WRITE