only look for opening part of <CellData> tag
This commit is contained in:
parent
292449aca9
commit
186b688b04
|
@ -75,7 +75,7 @@ subroutine discretization_grid_init(restart)
|
||||||
print'(/,a)', ' <<<+- discretization_grid init -+>>>'; flush(IO_STDOUT)
|
print'(/,a)', ' <<<+- discretization_grid init -+>>>'; flush(IO_STDOUT)
|
||||||
|
|
||||||
|
|
||||||
if(worldrank == 0) then
|
if (worldrank == 0) then
|
||||||
fileContent = IO_read(interface_geomFile)
|
fileContent = IO_read(interface_geomFile)
|
||||||
call readVTI(grid,geomSize,origin,materialAt_global,fileContent)
|
call readVTI(grid,geomSize,origin,materialAt_global,fileContent)
|
||||||
fname = interface_geomFile
|
fname = interface_geomFile
|
||||||
|
@ -100,7 +100,7 @@ subroutine discretization_grid_init(restart)
|
||||||
print'(a,3(es12.5))', ' size x y z: ', geomSize
|
print'(a,3(es12.5))', ' size x y z: ', geomSize
|
||||||
print'(a,3(es12.5))', ' origin x y z: ', origin
|
print'(a,3(es12.5))', ' origin x y z: ', origin
|
||||||
|
|
||||||
if(worldsize>grid(3)) call IO_error(894, ext_msg='number of processes exceeds grid(3)')
|
if (worldsize>grid(3)) call IO_error(894, ext_msg='number of processes exceeds grid(3)')
|
||||||
|
|
||||||
call fftw_mpi_init
|
call fftw_mpi_init
|
||||||
devNull = fftw_mpi_local_size_3d(int(grid(3),C_INTPTR_T), &
|
devNull = fftw_mpi_local_size_3d(int(grid(3),C_INTPTR_T), &
|
||||||
|
@ -109,7 +109,7 @@ subroutine discretization_grid_init(restart)
|
||||||
PETSC_COMM_WORLD, &
|
PETSC_COMM_WORLD, &
|
||||||
z, & ! domain grid size along z
|
z, & ! domain grid size along z
|
||||||
z_offset) ! domain grid offset along z
|
z_offset) ! domain grid offset along z
|
||||||
if(z==0_C_INTPTR_T) call IO_error(894, ext_msg='Cannot distribute MPI processes')
|
if (z==0_C_INTPTR_T) call IO_error(894, ext_msg='Cannot distribute MPI processes')
|
||||||
|
|
||||||
grid3 = int(z)
|
grid3 = int(z)
|
||||||
grid3Offset = int(z_offset)
|
grid3Offset = int(z_offset)
|
||||||
|
@ -136,7 +136,7 @@ subroutine discretization_grid_init(restart)
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! store geometry information for post processing
|
! store geometry information for post processing
|
||||||
if(.not. restart) then
|
if (.not. restart) then
|
||||||
call results_openJobFile
|
call results_openJobFile
|
||||||
call results_closeGroup(results_addGroup('geometry'))
|
call results_closeGroup(results_addGroup('geometry'))
|
||||||
call results_addAttribute('cells', grid, '/geometry')
|
call results_addAttribute('cells', grid, '/geometry')
|
||||||
|
@ -202,7 +202,7 @@ subroutine readVTI(grid,geomSize,origin,material, &
|
||||||
if (endPos < startPos) endPos = len(fileContent,kind=pI64) ! end of file without new line
|
if (endPos < startPos) endPos = len(fileContent,kind=pI64) ! end of file without new line
|
||||||
|
|
||||||
if (.not. inFile) then
|
if (.not. inFile) then
|
||||||
if(index(fileContent(startPos:endPos),'<VTKFile',kind=pI64) /= 0_pI64) then
|
if (index(fileContent(startPos:endPos),'<VTKFile',kind=pI64) /= 0_pI64) then
|
||||||
inFile = .true.
|
inFile = .true.
|
||||||
if (.not. fileFormatOk(fileContent(startPos:endPos))) call IO_error(error_ID = 844, ext_msg='file format')
|
if (.not. fileFormatOk(fileContent(startPos:endPos))) call IO_error(error_ID = 844, ext_msg='file format')
|
||||||
headerType = merge('UInt64','UInt32',getXMLValue(fileContent(startPos:endPos),'header_type')=='UInt64')
|
headerType = merge('UInt64','UInt32',getXMLValue(fileContent(startPos:endPos),'header_type')=='UInt64')
|
||||||
|
@ -215,7 +215,7 @@ subroutine readVTI(grid,geomSize,origin,material, &
|
||||||
call cellsSizeOrigin(grid,geomSize,origin,fileContent(startPos:endPos))
|
call cellsSizeOrigin(grid,geomSize,origin,fileContent(startPos:endPos))
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
if (index(fileContent(startPos:endPos),'<CellData>',kind=pI64) /= 0_pI64) then
|
if (index(fileContent(startPos:endPos),'<CellData',kind=pI64) /= 0_pI64) then
|
||||||
gotCellData = .true.
|
gotCellData = .true.
|
||||||
do while (index(fileContent(startPos:endPos),'</CellData>',kind=pI64) == 0_pI64)
|
do while (index(fileContent(startPos:endPos),'</CellData>',kind=pI64) == 0_pI64)
|
||||||
if (index(fileContent(startPos:endPos),'<DataArray',kind=pI64) /= 0_pI64 .and. &
|
if (index(fileContent(startPos:endPos),'<DataArray',kind=pI64) /= 0_pI64 .and. &
|
||||||
|
@ -243,12 +243,12 @@ subroutine readVTI(grid,geomSize,origin,material, &
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
if(.not. allocated(material)) call IO_error(error_ID = 844, ext_msg='material data not found')
|
if (.not. allocated(material)) call IO_error(error_ID = 844, ext_msg='material data not found')
|
||||||
if(size(material) /= product(grid)) call IO_error(error_ID = 844, ext_msg='size(material)')
|
if (size(material) /= product(grid)) call IO_error(error_ID = 844, ext_msg='size(material)')
|
||||||
if(any(geomSize<=0)) call IO_error(error_ID = 844, ext_msg='size')
|
if (any(geomSize<=0)) call IO_error(error_ID = 844, ext_msg='size')
|
||||||
if(any(grid<1)) call IO_error(error_ID = 844, ext_msg='grid')
|
if (any(grid<1)) call IO_error(error_ID = 844, ext_msg='grid')
|
||||||
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
|
contains
|
||||||
|
|
||||||
|
@ -352,7 +352,7 @@ subroutine readVTI(grid,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
|
||||||
bytes = asBytes_uncompressed(base64_str,headerType)
|
bytes = asBytes_uncompressed(base64_str,headerType)
|
||||||
|
@ -379,12 +379,12 @@ subroutine readVTI(grid,geomSize,origin,material, &
|
||||||
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
|
||||||
|
|
||||||
if (headerType == 'UInt32') then
|
if (headerType == 'UInt32') then
|
||||||
temp = int(prec_bytesToC_INT32_T(base64_to_bytes(base64_str(:base64_nChar(4_pI64)))),pI64)
|
temp = int(prec_bytesToC_INT32_T(base64_to_bytes(base64_str(:base64_nChar(4_pI64)))),pI64)
|
||||||
nBlock = int(temp(1),pI64)
|
nBlock = int(temp(1),pI64)
|
||||||
headerLen = 4_pI64 * (3_pI64 + nBlock)
|
headerLen = 4_pI64 * (3_pI64 + nBlock)
|
||||||
temp = int(prec_bytesToC_INT32_T(base64_to_bytes(base64_str(:base64_nChar(headerLen)))),pI64)
|
temp = int(prec_bytesToC_INT32_T(base64_to_bytes(base64_str(:base64_nChar(headerLen)))),pI64)
|
||||||
elseif(headerType == 'UInt64') then
|
elseif (headerType == 'UInt64') then
|
||||||
temp = int(prec_bytesToC_INT64_T(base64_to_bytes(base64_str(:base64_nChar(8_pI64)))),pI64)
|
temp = int(prec_bytesToC_INT64_T(base64_to_bytes(base64_str(:base64_nChar(8_pI64)))),pI64)
|
||||||
nBlock = int(temp(1),pI64)
|
nBlock = int(temp(1),pI64)
|
||||||
headerLen = 8_pI64 * (3_pI64 + nBlock)
|
headerLen = 8_pI64 * (3_pI64 + nBlock)
|
||||||
|
@ -424,13 +424,13 @@ subroutine readVTI(grid,geomSize,origin,material, &
|
||||||
allocate(bytes(0))
|
allocate(bytes(0))
|
||||||
|
|
||||||
s=0_pI64
|
s=0_pI64
|
||||||
if (headerType == 'UInt32') then
|
if (headerType == 'UInt32') then
|
||||||
do while(s+base64_nChar(4_pI64)<(len(base64_str,pI64)))
|
do while(s+base64_nChar(4_pI64)<(len(base64_str,pI64)))
|
||||||
nByte = int(prec_bytesToC_INT32_T(base64_to_bytes(base64_str(s+1_pI64:s+base64_nChar(4_pI64)))),pI64)
|
nByte = int(prec_bytesToC_INT32_T(base64_to_bytes(base64_str(s+1_pI64:s+base64_nChar(4_pI64)))),pI64)
|
||||||
bytes = [bytes,base64_to_bytes(base64_str(s+1_pI64:s+base64_nChar(4_pI64+nByte(1))),5_pI64)]
|
bytes = [bytes,base64_to_bytes(base64_str(s+1_pI64:s+base64_nChar(4_pI64+nByte(1))),5_pI64)]
|
||||||
s = s + base64_nChar(4_pI64+nByte(1))
|
s = s + base64_nChar(4_pI64+nByte(1))
|
||||||
enddo
|
enddo
|
||||||
elseif(headerType == 'UInt64') then
|
elseif (headerType == 'UInt64') then
|
||||||
do while(s+base64_nChar(8_pI64)<(len(base64_str,pI64)))
|
do while(s+base64_nChar(8_pI64)<(len(base64_str,pI64)))
|
||||||
nByte = int(prec_bytesToC_INT64_T(base64_to_bytes(base64_str(s+1_pI64:s+base64_nChar(8_pI64)))),pI64)
|
nByte = int(prec_bytesToC_INT64_T(base64_to_bytes(base64_str(s+1_pI64:s+base64_nChar(8_pI64)))),pI64)
|
||||||
bytes = [bytes,base64_to_bytes(base64_str(s+1_pI64:s+base64_nChar(8_pI64+nByte(1))),9_pI64)]
|
bytes = [bytes,base64_to_bytes(base64_str(s+1_pI64:s+base64_nChar(8_pI64+nByte(1))),9_pI64)]
|
||||||
|
@ -455,11 +455,11 @@ subroutine readVTI(grid,geomSize,origin,material, &
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
s = index(line," "//key,back=.true.)
|
s = index(line," "//key,back=.true.)
|
||||||
if(s==0) then
|
if (s==0) then
|
||||||
getXMLValue = ''
|
getXMLValue = ''
|
||||||
else
|
else
|
||||||
e = s + 1 + scan(line(s+1:),"'"//'"')
|
e = s + 1 + scan(line(s+1:),"'"//'"')
|
||||||
if(scan(line(s:e-2),'=') == 0) then
|
if (scan(line(s:e-2),'=') == 0) then
|
||||||
getXMLValue = ''
|
getXMLValue = ''
|
||||||
else
|
else
|
||||||
s = e
|
s = e
|
||||||
|
|
Loading…
Reference in New Issue