obj_writer Subroutine

private subroutine obj_writer(this)

Uses

Arguments

Type IntentOptional Attributes Name
type(history_stack_t), intent(inout) :: this

Source Code

    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