subroutine write_pvtu(qunit)
use mod_global_parameters
use mod_calculate_xw
integer, intent(in) :: qunit
character(len=name_len) :: wnamei(1:nw+nwauxio),&
xandwnamei(1:ndim+nw+nwauxio),outtype
character(len=1024) :: outfilehead
character(len=80) :: filename,pfilename
integer :: filenr,iw,ipe,iscalars
logical :: fileopen
select case(convert_type)
case('pvtumpi','pvtuBmpi')
outtype="PPointData"
case('pvtuCCmpi','pvtuBCCmpi')
outtype="PCellData"
end select
inquire(qunit,opened=fileopen)
if(.not.fileopen)then
! generate filename
filenr=snapshotini
if (autoconvert) filenr=snapshotnext
write(filename,'(a,i4.4,a)') TRIM(base_filename),filenr,".pvtu"
! Open the file
open(qunit,file=filename,status='unknown',form='formatted')
end if
call getheadernames(wnamei,xandwnamei,outfilehead)
! Get the default selection:
iscalars=1
do iw=nw,1, -1
if (w_write(iw)) iscalars=iw
end do
! generate xml header
write(qunit,'(a)')'<?xml version="1.0"?>'
write(qunit,'(a)',advance='no') '<VTKFile type="PUnstructuredGrid"'
write(qunit,'(a)')' version="0.1" byte_order="LittleEndian">'
write(qunit,'(a)')' <PUnstructuredGrid GhostLevel="0">'
! Either celldata or pointdata:
write(qunit,'(a,a,a,a,a)')' <',TRIM(outtype),' Scalars="',&
TRIM(wnamei(iscalars))//'">'
do iw=1,nw
if(.not.w_write(iw))cycle
write(qunit,'(a,a,a)')' <PDataArray type="Float32" Name="',&
TRIM(wnamei(iw)),'"/>'
end do
do iw=nw+1,nw+nwauxio
write(qunit,'(a,a,a)')' <PDataArray type="Float32" Name="',&
TRIM(wnamei(iw)),'"/>'
end do
write(qunit,'(a,a,a)')' </',TRIM(outtype),'>'
write(qunit,'(a)')' <PPoints>'
write(qunit,'(a)'&
)' <PDataArray type="Float32" NumberOfComponents="3"/>'
write(qunit,'(a)')' </PPoints>'
do ipe=0,npe-1
write(pfilename,'(a,i4.4,a,i4.4,a)') TRIM(base_filename(INDEX &
(base_filename, '/', BACK = .TRUE.)+1:LEN(base_filename))),filenr,"p",&
ipe,".vtu"
write(qunit,'(a,a,a)')' <Piece Source="',TRIM(pfilename),'"/>'
end do
write(qunit,'(a)')' </PUnstructuredGrid>'
write(qunit,'(a)')'</VTKFile>'
close(qunit)
end subroutine write_pvtu