subroutine obj_writer(this)
use constants, only : fileplace
use utils, only : str
use omp_lib
type(history_stack_t), intent(inout) :: this
type(vec4) :: v
integer :: u, io, id, counter, ioi
logical :: res
id = 0
inquire(file=trim(fileplace)//this%filename, exist=res)
if(res)then
open(newunit=u,file=trim(fileplace)//this%filename, status="old", position="append")
open(newunit=io,file=trim(fileplace)//this%filename//"2", status="old", position="append")
open(newunit=ioi,file=trim(fileplace)//"scalars"//str(id,3)//".dat", status="old", position="append")
else
open(newunit=u,file=trim(fileplace)//this%filename, status="new")
open(newunit=io,file=trim(fileplace)//this%filename//"2", status="new")
open(newunit=ioi,file=trim(fileplace)//"scalars"//str(id,3)//".dat", status="new")
end if
v = this%pop()
! write lines
if(this%size >=1)write(io, "(a)", advance="no")"l "
do counter = this%vertex_counter+1, this%vertex_counter+this%size, 2
write(io, "(2(i0,1x))", advance="no") counter, counter+1
end do
close(io)
!write vertices
do while(.not. this%empty())
v = this%pop()
write(u, "(a,1x,3(es15.8e2,1x))")"v", v%x, v%y, v%z
write(ioi, "(es15.8e2)")v%p
this%vertex_counter = this%vertex_counter + 1
end do
close(u)
close(ioi)
end subroutine obj_writer