This routine finalizes the vtu file i.e closing cellData xml and creating pvtu file to combile all parallel vtu files
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(hvs_vtk_file_type), | intent(in) | :: | vtk_file |
The file descriptor to close again. |
||
type(tem_comm_env_type), | intent(in) | :: | proc |
Communicator for the parallel environment. |
subroutine hvs_vtk_close( vtk_file, proc ) !> The file descriptor to close again. type(hvs_vtk_file_type), intent(in) :: vtk_file !> Communicator for the parallel environment. type(tem_comm_env_type), intent(in) :: proc ! ----------------------------------------------------------------------! character(len=PathLen) :: headerline character :: linebreak character(len=PathLen) :: filename integer :: irank integer :: pos ! ----------------------------------------------------------------------! linebreak = new_line('x') if (vtk_file%has_celldata) then write(headerline,'(a)') ' </CellData>' write(vtk_file%outunit) trim(headerline)//linebreak write(vtk_file%outunit) linebreak if (vtk_file%write_pvtu) then write(headerline,'(a)') ' </PCellData>' write(vtk_file%punit) trim(headerline)//linebreak write(vtk_file%punit) linebreak end if end if write(headerline,'(a)') ' </Piece>' write(vtk_file%outunit) trim(headerline)//linebreak write(headerline,'(a)') ' </UnstructuredGrid>' write(vtk_file%outunit) trim(headerline)//linebreak write(headerline,'(a)') '</VTKFile>' write(vtk_file%outunit) trim(headerline)//linebreak close(vtk_file%outunit) ! write pvtu file from root process if (vtk_file%write_pvtu) then pos = INDEX(trim(vtk_file%basename), pathSep, .true.) do irank = 0, proc%comm_size-1 write(filename,'(a,i6.6)') trim(vtk_file%basename(pos+1:)) & & // '_p', irank write(filename,'(a)') trim(filename) // trim(vtk_file%timestamp) & & // '.vtu' write(headerline,'(a)') '<Piece Source="'//trim(filename)//'"/>' write(vtk_file%punit) trim(headerline)//linebreak end do write(headerline,'(a)') '</PUnstructuredGrid>' write(vtk_file%punit) trim(headerline)//linebreak write(headerline,'(a)') '</VTKFile>' write(vtk_file%punit) trim(headerline)//linebreak !close the unit close(vtk_file%punit) end if end subroutine hvs_vtk_close