functions don't need acces to variables of function

better keep them out
This commit is contained in:
Martin Diehl 2022-02-27 17:27:47 +01:00
parent 1cae6c4533
commit efa30d1f3a
1 changed files with 249 additions and 243 deletions

View File

@ -102,7 +102,8 @@ subroutine VTK_readVTI(cells,geomSize,origin,material, &
material = material + 1 material = material + 1
if (any(material<1)) call IO_error(error_ID = 844, ext_msg='material ID < 0') if (any(material<1)) call IO_error(error_ID = 844, ext_msg='material ID < 0')
contains end subroutine VTK_readVTI
!------------------------------------------------------------------------------------------------ !------------------------------------------------------------------------------------------------
!> @brief determine size and origin from coordinates !> @brief determine size and origin from coordinates
@ -149,6 +150,7 @@ subroutine VTK_readVTI(cells,geomSize,origin,material, &
integer, dimension(:), allocatable :: as_Int integer, dimension(:), allocatable :: as_Int
select case(dataType) select case(dataType)
case('Int32') case('Int32')
as_Int = int(prec_bytesToC_INT32_T(asBytes(base64_str,headerType,compressed))) as_Int = int(prec_bytesToC_INT32_T(asBytes(base64_str,headerType,compressed)))
@ -177,6 +179,7 @@ subroutine VTK_readVTI(cells,geomSize,origin,material, &
real(pReal), dimension(:), allocatable :: as_pReal real(pReal), dimension(:), allocatable :: as_pReal
select case(dataType) select case(dataType)
case('Int32') case('Int32')
as_pReal = real(prec_bytesToC_INT32_T(asBytes(base64_str,headerType,compressed)),pReal) as_pReal = real(prec_bytesToC_INT32_T(asBytes(base64_str,headerType,compressed)),pReal)
@ -204,6 +207,7 @@ subroutine VTK_readVTI(cells,geomSize,origin,material, &
integer(C_SIGNED_CHAR), dimension(:), allocatable :: bytes integer(C_SIGNED_CHAR), dimension(:), allocatable :: bytes
if (compressed) then if (compressed) then
bytes = asBytes_compressed(base64_str,headerType) bytes = asBytes_compressed(base64_str,headerType)
else else
@ -212,6 +216,7 @@ subroutine VTK_readVTI(cells,geomSize,origin,material, &
end function asBytes end function asBytes
!------------------------------------------------------------------------------------------------ !------------------------------------------------------------------------------------------------
!> @brief Interpret compressed Base64 string in vtk XML file as bytes !> @brief Interpret compressed Base64 string in vtk XML file as bytes
!> @details A compressed Base64 string consists of a header block and a data block !> @details A compressed Base64 string consists of a header block and a data block
@ -225,9 +230,9 @@ subroutine VTK_readVTI(cells,geomSize,origin,material, &
character(len=*), intent(in) :: base64_str, & ! base64 encoded string character(len=*), intent(in) :: base64_str, & ! base64 encoded string
headerType ! header type (UInt32 or Uint64) headerType ! header type (UInt32 or Uint64)
integer(C_SIGNED_CHAR), dimension(:), allocatable :: bytes
integer(C_SIGNED_CHAR), dimension(:), allocatable :: bytes, bytes_inflated integer(C_SIGNED_CHAR), dimension(:), allocatable :: bytes_inflated
integer(pI64), dimension(:), allocatable :: temp, size_inflated, size_deflated integer(pI64), dimension(:), allocatable :: temp, size_inflated, size_deflated
integer(pI64) :: headerLen, nBlock, b,s,e integer(pI64) :: headerLen, nBlock, b,s,e
@ -269,11 +274,12 @@ subroutine VTK_readVTI(cells,geomSize,origin,material, &
character(len=*), intent(in) :: base64_str, & ! base64 encoded string character(len=*), intent(in) :: base64_str, & ! base64 encoded string
headerType ! header type (UInt32 or Uint64) headerType ! header type (UInt32 or Uint64)
integer(C_SIGNED_CHAR), dimension(:), allocatable :: bytes
integer(pI64) :: s integer(pI64) :: s
integer(pI64), dimension(1) :: nByte integer(pI64), dimension(1) :: nByte
integer(C_SIGNED_CHAR), dimension(:), allocatable :: bytes
allocate(bytes(0)) allocate(bytes(0))
s=0_pI64 s=0_pI64
@ -293,13 +299,13 @@ subroutine VTK_readVTI(cells,geomSize,origin,material, &
end function asBytes_uncompressed end function asBytes_uncompressed
!------------------------------------------------------------------------------------------------ !------------------------------------------------------------------------------------------------
!> @brief Get XML string value for given key !> @brief Get XML string value for given key.
!------------------------------------------------------------------------------------------------ !------------------------------------------------------------------------------------------------
pure function getXMLValue(line,key) pure function getXMLValue(line,key)
character(len=*), intent(in) :: line, key character(len=*), intent(in) :: line, key
character(len=:), allocatable :: getXMLValue character(len=:), allocatable :: getXMLValue
integer :: s,e integer :: s,e
@ -307,6 +313,7 @@ subroutine VTK_readVTI(cells,geomSize,origin,material, &
character :: q character :: q
#endif #endif
s = index(line," "//key,back=.true.) s = index(line," "//key,back=.true.)
if (s==0) then if (s==0) then
getXMLValue = '' getXMLValue = ''
@ -331,13 +338,14 @@ subroutine VTK_readVTI(cells,geomSize,origin,material, &
!------------------------------------------------------------------------------------------------ !------------------------------------------------------------------------------------------------
!> @brief check for supported file format !> @brief Check for supported file format variants.
!------------------------------------------------------------------------------------------------ !------------------------------------------------------------------------------------------------
pure function fileFormatOk(line) pure function fileFormatOk(line)
character(len=*),intent(in) :: line character(len=*),intent(in) :: line
logical :: fileFormatOk logical :: fileFormatOk
fileFormatOk = getXMLValue(line,'type') == 'ImageData' .and. & fileFormatOk = getXMLValue(line,'type') == 'ImageData' .and. &
getXMLValue(line,'byte_order') == 'LittleEndian' .and. & getXMLValue(line,'byte_order') == 'LittleEndian' .and. &
getXMLValue(line,'compressor') /= 'vtkLZ4DataCompressor' .and. & getXMLValue(line,'compressor') /= 'vtkLZ4DataCompressor' .and. &
@ -345,6 +353,4 @@ subroutine VTK_readVTI(cells,geomSize,origin,material, &
end function fileFormatOk end function fileFormatOk
end subroutine VTK_readVTI
end module VTK end module VTK