print an array to the debugunit
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=long_k), | intent(in) | :: | me(:) |
long array to write to debug file |
||
integer, | intent(in) | :: | nVals |
number of values in array me |
||
integer, | optional | :: | itemLength |
how many characters needs each item of the array to output |
||
character(len=*), | optional | :: | title |
Array title in debug output for easy identification in the file |
||
integer, | intent(in) | :: | outUnit |
output unit |
subroutine tem_print_array( me, nVals, itemLength, title, outUnit ) ! --------------------------------------------------------------------------- !> Array title in debug output for easy identification in the file character( len=* ),optional :: title !> number of values in array me integer, intent(in) :: nVals !> long array to write to debug file integer(kind=long_k), intent(in) :: me(:) !> how many characters needs each item of the array to output integer,optional :: itemLength !> output unit integer, intent(in) :: outUnit ! --------------------------------------------------------------------------- integer :: iVal, iLine, nLines integer :: itemLength_loc character( len=buffer_length ) :: buffer ! --------------------------------------------------------------------------- if( present(itemlength)) then itemlength_loc = itemlength else itemlength_loc = 8 endif write(outUnit,*) '' write(outUnit,*) '------------------------------------------------' if( present(title)) then write(outUnit,"(A,I0)") ' '//trim(title)//', nVals: ', nVals write(outUnit,*) '' endif buffer = '' nLines = nVals / itemLength_loc + 1 do iLine = 1, nLines - 1 buffer = '' do iVal = 1, itemLength_loc call append_to_buffer( buffer, me(iVal) ) end do write(outUnit,*) trim(buffer) end do buffer = '' do iVal = 1, mod( nVals, itemLength_loc ) call append_to_buffer( buffer, me(iVal) ) end do write(outUnit,*) trim(buffer) write(outUnit,*) '------------------------------------------------' write(outUnit,*) '' ! do iVal = 1, nVals ! buffer = trim(buffer)//' '//tem_toStr( me(iVal), logger ) ! if( iVal == nVals .or. mod( iElem, itemLength_loc ) == 0) then ! write(outUnit,*) trim(buffer) ! buffer = '' ! endif ! enddo contains subroutine append_to_buffer(buffer, val ) character( len=buffer_length ), intent(inout) :: buffer integer(kind=long_k), intent(in) :: val character(len=SolSpecLen) :: str str = tem_toStr( val, main_debug%logger ) if ( (2 + len_trim(buffer) + len_trim(str)) > buffer_length) then write(logunit(1),*) "Can't append value to output in tem_print_array." write(logunit(1),*) " Internal buffer too short." else buffer = trim(buffer) // ' ' // str endif end subroutine append_to_buffer end subroutine tem_print_array