write_vtk Subroutine

public subroutine write_vtk(qunit, ixImin1, ixImin2, ixImin3, ixImax1, ixImax2, ixImax3, ixCmin1, ixCmin2, ixCmin3, ixCmax1, ixCmax2, ixCmax3, ixCCmin1, ixCCmin2, ixCCmin3, ixCCmax1, ixCCmax2, ixCCmax3, igrid, nc, np, nx1, nx2, nx3, nxC1, nxC2, nxC3, normconv, wnamei, xC, xCC, wC, wCC)

Uses

  • proc~~write_vtk~~UsesGraph proc~write_vtk write_vtk module~mod_global_parameters mod_global_parameters proc~write_vtk->module~mod_global_parameters module~mod_basic_types mod_basic_types module~mod_global_parameters->module~mod_basic_types module~mod_connectivity mod_connectivity module~mod_global_parameters->module~mod_connectivity module~mod_constants mod_constants module~mod_global_parameters->module~mod_constants module~mod_physicaldata mod_physicaldata module~mod_global_parameters->module~mod_physicaldata module~mod_variables mod_variables module~mod_global_parameters->module~mod_variables mpi mpi module~mod_global_parameters->mpi module~mod_variables->module~mod_basic_types

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: qunit
integer, intent(in) :: ixImin1
integer, intent(in) :: ixImin2
integer, intent(in) :: ixImin3
integer, intent(in) :: ixImax1
integer, intent(in) :: ixImax2
integer, intent(in) :: ixImax3
integer, intent(in) :: ixCmin1
integer, intent(in) :: ixCmin2
integer, intent(in) :: ixCmin3
integer, intent(in) :: ixCmax1
integer, intent(in) :: ixCmax2
integer, intent(in) :: ixCmax3
integer, intent(in) :: ixCCmin1
integer, intent(in) :: ixCCmin2
integer, intent(in) :: ixCCmin3
integer, intent(in) :: ixCCmax1
integer, intent(in) :: ixCCmax2
integer, intent(in) :: ixCCmax3
integer, intent(in) :: igrid
integer, intent(in) :: nc
integer, intent(in) :: np
integer, intent(in) :: nx1
integer, intent(in) :: nx2
integer, intent(in) :: nx3
integer, intent(in) :: nxC1
integer, intent(in) :: nxC2
integer, intent(in) :: nxC3
double precision, intent(in) :: normconv(0:nw+nwauxio)
character(len=name_len), intent(in) :: wnamei(1:nw+nwauxio)
double precision, dimension(ixMlo1-1:ixMhi1,ixMlo2-1:ixMhi2, ixMlo3-1:ixMhi3,ndim) :: xC
double precision, dimension(ixMlo1:ixMhi1,ixMlo2:ixMhi2,ixMlo3:ixMhi3, ndim) :: xCC
double precision, dimension(ixMlo1-1:ixMhi1,ixMlo2-1:ixMhi2, ixMlo3-1:ixMhi3,nw+nwauxio) :: wC
double precision, dimension(ixMlo1:ixMhi1,ixMlo2:ixMhi2,ixMlo3:ixMhi3, nw+nwauxio) :: wCC

Calls

proc~~write_vtk~~CallsGraph proc~write_vtk write_vtk proc~save_connvtk save_connvtk proc~write_vtk->proc~save_connvtk

Called by

proc~~write_vtk~~CalledByGraph proc~write_vtk write_vtk proc~punstructuredvtk_mpi punstructuredvtk_mpi proc~punstructuredvtk_mpi->proc~write_vtk proc~unstructuredvtk_mpi unstructuredvtk_mpi proc~unstructuredvtk_mpi->proc~write_vtk proc~generate_plotfile generate_plotfile proc~generate_plotfile->proc~punstructuredvtk_mpi proc~generate_plotfile->proc~unstructuredvtk_mpi proc~main main proc~main->proc~generate_plotfile proc~timeintegration timeintegration proc~main->proc~timeintegration proc~saveamrfile saveamrfile proc~saveamrfile->proc~generate_plotfile proc~timeintegration->proc~saveamrfile program~agile agile program~agile->proc~main

Source Code

  subroutine write_vtk(qunit,ixImin1,ixImin2,ixImin3,ixImax1,ixImax2,ixImax3,&
     ixCmin1,ixCmin2,ixCmin3,ixCmax1,ixCmax2,ixCmax3,ixCCmin1,ixCCmin2,&
     ixCCmin3,ixCCmax1,ixCCmax2,ixCCmax3,igrid,nc,np,nx1,nx2,nx3,nxC1,nxC2,&
     nxC3,normconv,wnamei,xC,xCC,wC,wCC)
    use mod_global_parameters

    integer, intent(in) :: qunit
    integer, intent(in) :: ixImin1,ixImin2,ixImin3,ixImax1,ixImax2,ixImax3,&
       ixCmin1,ixCmin2,ixCmin3,ixCmax1,ixCmax2,ixCmax3,ixCCmin1,ixCCmin2,&
       ixCCmin3,ixCCmax1,ixCCmax2,ixCCmax3
    integer, intent(in) :: igrid,nc,np,nx1,nx2,nx3,nxC1,nxC2,nxC3
    double precision, intent(in) :: normconv(0:nw+nwauxio)
    character(len=name_len), intent(in)::  wnamei(1:nw+nwauxio)
    double precision, dimension(ixMlo1-1:ixMhi1,ixMlo2-1:ixMhi2,&
       ixMlo3-1:ixMhi3,ndim) :: xC
    double precision, dimension(ixMlo1:ixMhi1,ixMlo2:ixMhi2,ixMlo3:ixMhi3,&
       ndim)   :: xCC
    double precision, dimension(ixMlo1-1:ixMhi1,ixMlo2-1:ixMhi2,&
       ixMlo3-1:ixMhi3,nw+nwauxio)   :: wC
    double precision, dimension(ixMlo1:ixMhi1,ixMlo2:ixMhi2,ixMlo3:ixMhi3,&
       nw+nwauxio)     :: wCC

    double precision ::  x_VTK(1:3)
    integer :: iw,ix1,ix2,ix3,icel,VTK_type

    select case(convert_type)
      case('vtumpi','pvtumpi')
           ! we write out every grid as one VTK PIECE
        write(qunit,'(a,i7,a,i7,a)') '<Piece NumberOfPoints="',np,&
           '" NumberOfCells="',nc,'">'
        write(qunit,'(a)')'<PointData>'
        do iw=1,nw+nwauxio
          if(iw<=nw) then
            if(.not.w_write(iw)) cycle
          end if
          write(qunit,'(a,a,a)')'<DataArray type="Float64" Name="',&
             TRIM(wnamei(iw)),'" format="ascii">'
          write(qunit,'(200(1pe14.6))') (((wC(ix1,ix2,ix3,iw)*normconv(iw),&
             ix1=ixCmin1,ixCmax1),ix2=ixCmin2,ixCmax2),ix3=ixCmin3,ixCmax3)
          write(qunit,'(a)')'</DataArray>'
        end do
        write(qunit,'(a)')'</PointData>'
        write(qunit,'(a)')'<Points>'
        write(qunit,'(a)'&
           )'<DataArray type="Float32" NumberOfComponents="3" format="ascii">'
           ! write cell corner coordinates in a backward dimensional loop, always 3D output
        do ix3=ixCmin3,ixCmax3
        do ix2=ixCmin2,ixCmax2
        do ix1=ixCmin1,ixCmax1
              x_VTK(1:3)=zero;
              x_VTK(1:ndim)=xC(ix1,ix2,ix3,1:ndim)*normconv(0);
              write(qunit,'(3(1pe14.6))') x_VTK
        end do
        end do
        end do
        write(qunit,'(a)')'</DataArray>'
        write(qunit,'(a)')'</Points>'

      case('vtuCCmpi','pvtuCCmpi')
        ! we write out every grid as one VTK PIECE
        write(qunit,'(a,i7,a,i7,a)') '<Piece NumberOfPoints="',np,&
           '" NumberOfCells="',nc,'">'
        write(qunit,'(a)')'<CellData>'
        do iw=1,nw+nwauxio
          if(iw<=nw) then
            if(.not.w_write(iw)) cycle
          end if
          write(qunit,'(a,a,a)')'<DataArray type="Float64" Name="',&
             TRIM(wnamei(iw)),'" format="ascii">'
          write(qunit,'(200(1pe14.6))') (((wCC(ix1,ix2,ix3,iw)*normconv(iw),&
             ix1=ixCCmin1,ixCCmax1),ix2=ixCCmin2,ixCCmax2),ix3=ixCCmin3,&
             ixCCmax3)
          write(qunit,'(a)')'</DataArray>'
        end do
        write(qunit,'(a)')'</CellData>'
        write(qunit,'(a)')'<Points>'
        write(qunit,'(a)'&
           )'<DataArray type="Float32" NumberOfComponents="3" format="ascii">'
        ! write cell corner coordinates in a backward dimensional loop, always 3D output
        do ix3=ixCmin3,ixCmax3
        do ix2=ixCmin2,ixCmax2
        do ix1=ixCmin1,ixCmax1
           x_VTK(1:3)=zero;
           x_VTK(1:ndim)=xC(ix1,ix2,ix3,1:ndim)*normconv(0);
           write(qunit,'(3(1pe14.6))') x_VTK
        end do
        end do
        end do
        write(qunit,'(a)')'</DataArray>'
        write(qunit,'(a)')'</Points>'
    end select

    write(qunit,'(a)')'<Cells>'
    ! connectivity part
    write(qunit,'(a)'&
       )'<DataArray type="Int32" Name="connectivity" format="ascii">'
    call save_connvtk(qunit,igrid)
    write(qunit,'(a)')'</DataArray>'
    ! offsets data array
    write(qunit,'(a)')'<DataArray type="Int32" Name="offsets" format="ascii">'
    do icel=1,nc
      write(qunit,'(i7)') icel*(2**3)
    end do
    write(qunit,'(a)')'</DataArray>'
    ! VTK cell type data array
    write(qunit,'(a)')'<DataArray type="Int32" Name="types" format="ascii">'
    ! VTK_LINE=3; VTK_PIXEL=8; VTK_VOXEL=11 -> vtk-syntax


     VTK_type=11
    do icel=1,nc
      write(qunit,'(i2)') VTK_type
    end do
    write(qunit,'(a)')'</DataArray>'
    write(qunit,'(a)')'</Cells>'
    write(qunit,'(a)')'</Piece>'

  end subroutine write_vtk