hi

On 16/10/15 16:54, Matthew Knepley wrote:

No, that should work. This is how we do it in PyLith. There must be some setup problem. When you look at the HDF5 file. Does
it have a dimension for timestep?

No, it doesn't.

Is there any extra setup I might need to do to get it to work? I've attached a minimal example code, mesh and output.

Cheers, Adrian

--
Dr Adrian Croucher
Senior Research Fellow
Department of Engineering Science
University of Auckland, New Zealand
email: [email protected]
tel: +64 (0)9 923 84611

program testview

  implicit none

#include <petsc/finclude/petsc.h90>

  MPI_Comm :: comm
  PetscViewer :: viewer
  PetscInt :: i, dim
  PetscInt, parameter :: dof = 1
  PetscInt, parameter :: nt = 3
  PetscErrorCode :: ierr
  character(40), parameter :: filename = "column.exo"
  DM :: dm
  Vec :: X
  PetscFV :: fvm
  PetscDS :: ds

  call PetscInitialize(PETSC_NULL_CHARACTER, ierr); CHKERRQ(ierr)
  comm = PETSC_COMM_WORLD

  call DMPlexCreateExodusFromFile(comm, filename, PETSC_TRUE, dm, &
       ierr); CHKERRQ(ierr)

  call DMPlexSetAdjacencyUseCone(dm, PETSC_TRUE, ierr)
  CHKERRQ(ierr)
  call DMPlexSetAdjacencyUseClosure(dm, PETSC_FALSE, ierr)
  CHKERRQ(ierr)

  call PetscFVCreate(comm, fvm, ierr); CHKERRQ(ierr)
  call PetscFVSetNumComponents(fvm, dof, ierr); CHKERRQ(ierr)
  call DMGetDimension(dm, dim, ierr); CHKERRQ(ierr)
  call PetscFVSetSpatialDimension(fvm, dim, ierr); CHKERRQ(ierr)
  call DMGetDS(dm, ds, ierr); CHKERRQ(ierr)
  call PetscDSAddDiscretization(ds, fvm, ierr); CHKERRQ(ierr)

  call DMCreateGlobalVector(dm, X, ierr); CHKERRQ(ierr)
  call PetscObjectSetName(X, "vec", ierr); CHKERRQ(ierr)

  call PetscViewerHDF5Open(comm, "view.h5", FILE_MODE_WRITE, viewer, ierr)
  CHKERRQ(ierr)
  call PetscViewerHDF5PushGroup(viewer, "/", ierr); CHKERRQ(ierr)

  do i = 0, nt - 1
     call VecSet(X, dble(i), ierr); CHKERRQ(ierr)
     call PetscViewerHDF5SetTimestep(viewer, i, ierr); CHKERRQ(ierr)
     call VecView(X, viewer, ierr); CHKERRQ(ierr)
  end do

  call PetscViewerHDF5PopGroup(viewer, ierr); CHKERRQ(ierr)
  call PetscViewerDestroy(viewer, ierr); CHKERRQ(ierr)

  call VecDestroy(X, ierr); CHKERRQ(ierr)
  call DMDestroy(dm, ierr); CHKERRQ(ierr)
  call PetscFinalize(ierr); CHKERRQ(ierr)

end program testview

Attachment: column.exo
Description: Binary data

Attachment: view.h5
Description: HDF file

Reply via email to