11# SPDX-License-Identifier: Apache-2.0
22# SPDX-FileCopyrightText: Copyright 2023-2024 TotalEnergies.
3- # SPDX-FileContributor: Martin Lemay, Paloma Martinez
3+ # SPDX-FileContributor: Martin Lemay, Paloma Martinez, Jacques Franc
44from typing import Union
55import logging
6- # import re
76
87from vtkmodules .vtkCommonDataModel import ( vtkCompositeDataSet , vtkDataObjectTreeIterator , vtkMultiBlockDataSet ,
98 vtkUnstructuredGrid , vtkDataSet )
@@ -37,10 +36,10 @@ def mergeBlocks(
3736 Defaults to None, an internal logger is used.
3837
3938 Returns:
40- vtkUnstructuredGrid: Merged dataset or input mesh if it's already a single block
39+ vtkUnstructuredGrid: Merged dataset or input mesh if it's already a single block.
4140
4241 Raises:
43- geos.utilsVTKError ():
42+ geos.utils.VTKError (): Error raised during call of VTK function
4443
4544 .. Note::
4645 Default filling values:
@@ -52,27 +51,31 @@ def mergeBlocks(
5251
5352 """
5453 if logger is None :
55- logger : Logger = getLogger ( "mergeBlocks" , True )
54+ logger = getLogger ( "mergeBlocks" , True )
5655
5756 vtkLogger .SetStderrVerbosity ( vtkLogger .VERBOSITY_TRACE )
5857 logger .addFilter ( RegexExceptionFilter () ) # will raise VTKError if captured VTK Error
58+
59+ logCurrentLevel : int = logger .getEffectiveLevel ()
5960 logger .setLevel ( logging .DEBUG )
6061
6162 # Fill the partial attributes with default values to keep them during the merge.
6263 if keepPartialAttributes and not fillAllPartialAttributes ( inputMesh , logger ):
6364 logger .warning ( "Failed to fill partial attributes. Merging without keeping partial attributes." )
6465
66+ outputMesh : vtkUnstructuredGrid
67+
6568 if Version ( vtk .__version__ ) >= Version ( "9.5" ):
6669 filter : vtkMergeBlocks = vtkMergeBlocks ()
6770 filter .SetInputData ( inputMesh )
6871 filter .Update ()
6972
70- outputMesh : vtkUnstructuredGrid = filter .GetOutputDataObject ( 0 )
73+ outputMesh = filter .GetOutputDataObject ( 0 )
7174
7275 else :
7376 if inputMesh .IsA ( "vtkDataSet" ):
7477 logger .warning ( "Input mesh is already a single block." )
75- outputMesh = inputMesh
78+ outputMesh = vtkUnstructuredGrid . SafeDownCast ( inputMesh )
7679 else :
7780 with VTKCaptureLog () as captured_log :
7881
@@ -87,10 +90,12 @@ def mergeBlocks(
8790 af .AddInputData ( block )
8891 iterator .GoToNextItem ()
8992 af .Update ()
90- captured_log .seek ( 0 ) #be kind let's just rewind
93+ captured_log .seek ( 0 )
9194 captured = captured_log .read ().decode ()
9295
9396 logger .debug ( captured .strip () )
94- outputMesh : vtkUnstructuredGrid = af .GetOutputDataObject ( 0 )
97+ outputMesh = af .GetOutputDataObject ( 0 )
98+
99+ logger .setLevel ( logCurrentLevel )
95100
96101 return outputMesh
0 commit comments