output_overall_vtk_cell Subroutine

subroutine output_overall_vtk_cell(self, file_name, variable_name, variable)

Arguments

Type IntentOptional Attributes Name
class(type_output_overall), intent(inout) :: self
character(len=*), intent(in) :: file_name
character(len=*), intent(in) :: variable_name
integer(kind=int32), intent(in) :: variable(:)

Calls

proc~~output_overall_vtk_cell~~CallsGraph proc~output_overall_vtk_cell output_overall_vtk_cell interface~write_cell write_cell proc~output_overall_vtk_cell->interface~write_cell proc~error_message error_message proc~output_overall_vtk_cell->proc~error_message to_string to_string proc~output_overall_vtk_cell->to_string proc~output_vtk_cell_int32 output_vtk_cell_int32 interface~write_cell->proc~output_vtk_cell_int32 proc~output_vtk_cell_real64 output_vtk_cell_real64 interface~write_cell->proc~output_vtk_cell_real64 log_error log_error proc~error_message->log_error

Source Code

    subroutine output_overall_vtk_cell(self, file_name, variable_name, variable)
        implicit none
        class(type_output_overall), intent(inout) :: self
        character(*), intent(in) :: file_name
        character(*), intent(in) :: variable_name
        integer(int32), intent(in) :: variable(:)

        integer(int32) :: status
        integer(int32) :: unit_num
        integer(int32) :: iN, iE, idx, i

        open (newunit=unit_num, file=trim(self%dir_output_field)//trim(file_name)//trim(self%file_extension), &
              status='replace', action='write', iostat=status)
        if (status /= 0) call error_message(931)

        write (unit_num, '(a)') "# vtk DataFile Version 2.0"
        write (unit_num, '(a)') "Analysis ASCII VTK file"
        write (unit_num, '(a)') "ASCII"
        write (unit_num, '(a)') "DATASET UNSTRUCTURED_GRID"
        write (unit_num, '(a,i0,a)') "POINTS ", self%vtk%num_points, " double"

        do iN = 1, self%vtk%num_points
            write (unit_num, '(3(es22.15,x))') self%vtk%coordinate%x(iN), self%vtk%coordinate%y(iN), self%vtk%coordinate%z(iN)
        end do
        write (unit_num, '(a)') ""

        write (unit_num, '(a,i0,x,i0,a)') "CELLS ", self%vtk%num_cells, sum(self%vtk%offsets(:)) + self%vtk%num_cells
        idx = 1
        do iE = 1, self%vtk%num_cells
            write (unit_num, '(i0,'//to_string(self%vtk%offsets(iE))//'(x,i0))') self%vtk%offsets(iE), &
                self%vtk%connectivities(idx:idx + self%vtk%offsets(iE) - 1)
            idx = idx + self%vtk%offsets(iE)
        end do
        write (unit_num, '(a)') ""

        write (unit_num, '(a,i0)') "CELL_TYPES ", self%vtk%num_cells
        write (unit_num, '(i0)') self%vtk%cell_types(:)
        write (unit_num, '(a)') ""

        write (unit_num, '(a,i0)') "CELL_DATA ", self%vtk%num_cells
        call write_cell(unit_num, variable_name, variable)

    end subroutine output_overall_vtk_cell