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