json_writer Subroutine

private subroutine json_writer(this)

Uses

Arguments

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

Source Code

    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