subroutine json_writer(this)
use constants, only : fileplace
use utils, only : str
type(history_stack_t), intent(inout) :: this
logical :: res
integer :: id, u
integer, save :: counter = 0
type(vec4) :: v
id = 0!omp_()
if(id == 0)then
inquire(file=trim(fileplace)//this%filename, exist=res)
if(res)then
open(newunit=u,file=trim(fileplace)//this%filename, status="old", position="append")
write(u,"(a)") ","//new_line("a")//'"'//str(counter)//'_'//str(id)//'": '//"["
else
open(newunit=u,file=trim(fileplace)//this%filename, status="new")
write(u,"(a)") "{"//new_line("a")//'"'//str(counter)//'_'//str(id)//'": '//"["
end if
counter = counter + 1
do while(.not. this%empty())
v = this%pop()
if(this%size /= 0)then
write(u,"(a,3(es15.8e2,a))")"[",v%x,",",v%y,",",v%z,"],"
else
write(u,"(a,3(es15.8e2,a))")"[",v%x,",",v%y,",",v%z,"]"
end if
end do
write(u,"(a)")"]"
close(u)
end if
end subroutine json_writer