Writes marker data to file in parallel using H5HUT.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| integer, | intent(in) | :: | iter |
Iteration at write |
||
| real(kind=wp), | intent(in) | :: | time |
Time at write |
impure subroutine marker_set_WriteH5HUT(this,iter,time) !> Writes marker data to file in parallel using H5HUT. implicit none class(marker_set), intent(inout) :: this !! A collection of tessellation elements integer, intent(in) :: iter !! Iteration at write real(wp), intent(in) :: time !! Time at write ! Work variables type(h5hut_obj) :: h5 !! H5hut structure integer, allocatable :: buffi(:) integer(leapI8), allocatable :: buffi8(:) real(wp), allocatable :: buffr(:) ! Nothing to write, if empty call this%UpdateCount() if (this%count.eq.0) return ! Open the file if (this%overwrite) then call h5%Initialize(trim(adjustl(this%write_file)),"W",this%parallel) else call h5%Initialize(trim(adjustl(this%write_file)),"RW",this%parallel) end if ! Create a new time step call h5%NewTimeStep(iter,time) ! Allocate buffers allocate(buffi8(this%count_),buffi(this%count_),buffr(this%count_)) ! Write the marker data if (this%count_.eq.0) then call h5%Write("id",buffi8) call h5%Write("x", buffr ) call h5%Write("y", buffr ) call h5%Write("z", buffr ) call h5%Write("i", buffi ) call h5%Write("j", buffi ) call h5%Write("k", buffi ) call h5%Write("s", buffi ) call h5%Write("SA",buffr ) call h5%Write("nx",buffr ) call h5%Write("ny",buffr ) call h5%Write("nz",buffr ) call h5%Write("vx",buffr ) call h5%Write("vy",buffr ) call h5%Write("vz",buffr ) call h5%Write("fx",buffr ) call h5%Write("fy",buffr ) call h5%Write("fz",buffr ) else select type (markers=>this%p) type is (marker_obj) buffi8=markers(1:this%count_)%id ; call h5%Write("id",buffi8) buffr =markers(1:this%count_)%p(1) ; call h5%Write("x", buffr ) buffr =markers(1:this%count_)%p(2) ; call h5%Write("y", buffr ) buffr =markers(1:this%count_)%p(3) ; call h5%Write("z", buffr ) buffi =markers(1:this%count_)%c(1) ; call h5%Write("i", buffi ) buffi =markers(1:this%count_)%c(2) ; call h5%Write("j", buffi ) buffi =markers(1:this%count_)%c(3) ; call h5%Write("k", buffi ) buffi =markers(1:this%count_)%s ; call h5%Write("s", buffi ) buffr =markers(1:this%count_)%SA ; call h5%Write("SA",buffr ) buffr =markers(1:this%count_)%n(1) ; call h5%Write("nx",buffr ) buffr =markers(1:this%count_)%n(2) ; call h5%Write("ny",buffr ) buffr =markers(1:this%count_)%n(3) ; call h5%Write("nz",buffr ) buffr =markers(1:this%count_)%v(1) ; call h5%Write("vx",buffr ) buffr =markers(1:this%count_)%v(2) ; call h5%Write("vy",buffr ) buffr =markers(1:this%count_)%v(3) ; call h5%Write("vz",buffr ) buffr =markers(1:this%count_)%f(1) ; call h5%Write("fx",buffr ) buffr =markers(1:this%count_)%f(2) ; call h5%Write("fy",buffr ) buffr =markers(1:this%count_)%f(3) ; call h5%Write("fz",buffr ) end select end if ! Deallocate buffers deallocate(buffi8,buffi,buffr) call h5%Finalize return end subroutine marker_set_WriteH5HUT