Skip to content

Commit 3e741e9

Browse files
committed
Clean the log
1 parent 8876ea8 commit 3e741e9

File tree

6 files changed

+64
-40
lines changed

6 files changed

+64
-40
lines changed

geos-processing/src/geos/processing/post_processing/GeomechanicsCalculator.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
mesh: vtkUnstructuredGrid
8686
computeAdvancedProperties: bool # optional, defaults to False
8787
speHandler: bool # optional, defaults to False
88+
loggerName: str # Defaults to "Geomechanics Calculator"
8889
8990
# Instantiate the filter
9091
geomechanicsCalculatorFilter: GeomechanicsCalculator = GeomechanicsCalculator( mesh, computeAdvancedProperties, speHandler )
@@ -693,7 +694,7 @@ def __init__(
693694
computeAdvancedProperties (bool, optional): True to compute advanced geomechanics properties, False otherwise.
694695
Defaults to False.
695696
loggerName (str, optional): Name of the filter logger.
696-
Defaults to "Geomechanics Calculator"
697+
Defaults to "Geomechanics Calculator".
697698
speHandler (bool, optional): True to use a specific handler, False to use the internal handler.
698699
Defaults to False.
699700
"""

geos-processing/src/geos/processing/post_processing/GeosBlockExtractor.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
extractFault: bool # Defaults to False
3939
extractWell: bool # Defaults to False
4040
speHandler: bool # Defaults to False
41+
loggerName: str # Defaults to "Geos Block Extractor"
4142
4243
# Instantiate the filter
4344
geosBlockExtractor: GeosBlockExtractor = GeosBlockExtractor( geosMesh, extractFault, extractWell, speHandler )
@@ -56,8 +57,6 @@
5657
geosDomainExtracted = geosBlockExtractor.extractedGeosDomain.well # For well domain
5758
"""
5859

59-
loggerTitle: str = "Geos Block Extractor"
60-
6160

6261
class GeosExtractDomainBlock( vtkExtractBlock ):
6362

@@ -149,6 +148,7 @@ def __init__(
149148
extractFault: bool = False,
150149
extractWell: bool = False,
151150
speHandler: bool = False,
151+
loggerName: str = "Geos Block Extractor",
152152
) -> None:
153153
"""Blocks from the ElementRegions from a GEOS output multiBlockDataset mesh.
154154
@@ -160,6 +160,8 @@ def __init__(
160160
Defaults to False.
161161
speHandler (bool, optional): True to use a specific handler, False to use the internal handler.
162162
Defaults to False.
163+
loggerName (str, optional): Name of the filter logger.
164+
Defaults to "Geos Block Extractor".
163165
"""
164166
self.geosMesh: vtkMultiBlockDataSet = geosMesh
165167
self.extractedGeosDomain = self.ExtractedGeosDomain()
@@ -173,9 +175,9 @@ def __init__(
173175
# Logger.
174176
self.logger: Logger
175177
if not speHandler:
176-
self.logger = getLogger( loggerTitle, True )
178+
self.logger = getLogger( loggerName, True )
177179
else:
178-
self.logger = logging.getLogger( loggerTitle )
180+
self.logger = logging.getLogger( loggerName )
179181
self.logger.setLevel( logging.INFO )
180182

181183
def setLoggerHandler( self: Self, handler: logging.Handler ) -> None:
@@ -201,15 +203,18 @@ def applyFilter( self: Self ) -> None:
201203
extractGeosDomain: GeosExtractDomainBlock = GeosExtractDomainBlock()
202204
extractGeosDomain.SetInputData( self.geosMesh )
203205

206+
domainNames: list = []
204207
for domain in self.domainToExtract:
205208
extractGeosDomain.RemoveAllIndices()
206209
extractGeosDomain.AddGeosDomainName( domain )
207210
extractGeosDomain.Update()
208211
self.extractedGeosDomain.setExtractedDomain( domain, extractGeosDomain.GetOutput() )
212+
domainNames.append( domain.value )
213+
214+
self.logger.info( f"The GEOS domain { domainNames } have been extracted." )
215+
self.logger.info( f"The filter { self.logger.name } succeeded." )
209216

210-
self.logger.info( "The filter succeeded." )
217+
except ( ValueError, TypeError ) as e:
218+
self.logger.error( f"The filter { self.logger.name } failed.\n{ e }." )
211219

212-
except ValueError as ve:
213-
self.logger.error( f"The filter failed.\n{ ve }." )
214-
except TypeError as te:
215-
self.logger.error( f"The filter failed.\n{ te }." )
220+
return

geos-processing/src/geos/processing/post_processing/GeosBlockMerge.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,10 @@
4444
# Optional inputs.
4545
convertFaultToSurface: bool # Defaults to False
4646
speHandler: bool # Defaults to False
47+
loggerName: str # Defaults to "GEOS Block Merge"
4748
4849
# Instantiate the filter
49-
mergeBlockFilter: GeosBlockMerge = GeosBlockMerge( inputMesh, convertFaultToSurface, speHandler )
50+
mergeBlockFilter: GeosBlockMerge = GeosBlockMerge( inputMesh, convertFaultToSurface, speHandler, loggerName )
5051
5152
# Set the handler of yours (only if speHandler is True).
5253
yourHandler: logging.Handler
@@ -59,8 +60,6 @@
5960
outputMesh: vtkMultiBlockDataSet = mergeBlockFilter.getOutput()
6061
"""
6162

62-
loggerTitle: str = "GEOS Block Merge"
63-
6463

6564
class GeosBlockMerge():
6665

@@ -69,6 +68,7 @@ def __init__(
6968
inputMesh: vtkMultiBlockDataSet,
7069
convertFaultToSurface: bool = False,
7170
speHandler: bool = False,
71+
loggerName: str = "GEOS Block Merge",
7272
) -> None:
7373
"""VTK Filter that merge ranks of GEOS output mesh.
7474
@@ -83,6 +83,8 @@ def __init__(
8383
Defaults to False.
8484
speHandler (bool, optional): True to use a specific handler, False to use the internal handler.
8585
Defaults to False.
86+
loggerName (str, optional): Name of the filter logger.
87+
Defaults to "GEOS Block Merge".
8688
8789
"""
8890
self.inputMesh: vtkMultiBlockDataSet = inputMesh
@@ -94,12 +96,12 @@ def __init__(
9496
PhaseTypeEnum.FLUID.type: set(),
9597
}
9698

97-
# Logger.
99+
# Logger
98100
self.logger: Logger
99101
if not speHandler:
100-
self.logger = getLogger( loggerTitle, True )
102+
self.logger = getLogger( loggerName, True )
101103
else:
102-
self.logger = logging.getLogger( loggerTitle )
104+
self.logger = logging.getLogger( loggerName )
103105
self.logger.setLevel( logging.INFO )
104106

105107
def setLoggerHandler( self: Self, handler: logging.Handler ) -> None:
@@ -161,18 +163,18 @@ def applyFilter( self: Self ) -> None:
161163
# Convert the volume mesh to a surface mesh
162164
if self.convertFaultToSurface:
163165
if not isTriangulate( volumeMesh ):
164-
volumeMesh.ShallowCopy( triangulateMesh( volumeMesh ) )
165-
surfaceMesh: vtkPolyData = convertUnstructuredGridToPolyData( volumeMesh )
166+
volumeMesh.ShallowCopy( triangulateMesh( volumeMesh, self.logger ) )
167+
surfaceMesh: vtkPolyData = convertUnstructuredGridToPolyData( volumeMesh, self.logger )
166168
surfaceMesh.ShallowCopy( computeNormals( surfaceMesh, logger=self.logger ) )
167169
surfaceMesh.ShallowCopy( computeTangents( surfaceMesh, logger=self.logger ) )
168170
# Add the merged block to the output mesh
169171
self.outputMesh.SetBlock( newIndex, surfaceMesh )
170172
else:
171173
self.outputMesh.SetBlock( newIndex, volumeMesh )
172174

173-
self.logger.info( "The filter succeeded." )
175+
self.logger.info( f"The filter { self.logger.name } succeeded." )
174176
except ( ValueError, TypeError, RuntimeError, AssertionError, VTKError ) as e:
175-
self.logger.critical( f"The filter failed.\n{ e }" )
177+
self.logger.error( f"The filter { self.logger.name } failed.\n{ e }" )
176178

177179
return
178180

@@ -197,6 +199,8 @@ def renameAttributes(
197199
else:
198200
renameAttribute( mesh, attributeName, newName, False )
199201

202+
return
203+
200204
def computePhaseNames( self: Self ) -> None:
201205
"""Get the names of the phases in the mesh from Cell attributes."""
202206
# All the phase attributes are on cells

geos-pv/src/geos/pv/plugins/PVGeomechanicsWorkflow.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,12 @@
108108
class PVGeomechanicsWorkflow( VTKPythonAlgorithmBase ):
109109

110110
def __init__( self: Self ) -> None:
111-
"""Paraview plugin to clean and add new outputs Geos output mesh.
111+
"""Paraview plugin to compute geomechanics properties on volume and on surface directly from the GEOS simulation output mesh.
112112
113-
To apply in the case of output ".pvd" file contains Volume, Fault or
114-
Well elements.
113+
This plugin is the combination of three other:
114+
- First PVGeosBlockExtractAndMerge
115+
- Secondly PVGeomechanicsCalculator
116+
- Thirdly PVSurfaceGeomechanics (if the input mesh contains faults)
115117
"""
116118
super().__init__(
117119
nInputPorts=1,
@@ -141,6 +143,8 @@ def __init__( self: Self ) -> None:
141143
self.logger.setLevel( logging.INFO )
142144
self.logger.addHandler( VTKHandler() )
143145

146+
self.logger.info( f"Apply plugin { self.logger.name }." )
147+
144148
@smproperty.doublevector(
145149
name="GrainBulkModulus",
146150
label="Grain bulk modulus (Pa)",
@@ -223,7 +227,7 @@ def setRockCohesion( self: Self, rockCohesion: float ) -> None:
223227
@smdomain.xml( """
224228
<Documentation>
225229
Reference friction angle to compute critical pore pressure.
226-
The unit is °. Default is no friction case (i.e., 0.°).
230+
The unit is °. Default is an average friction angle (i.e., 10°).
227231
</Documentation>
228232
""" )
229233
def setFrictionAngle( self: Self, frictionAngle: float ) -> None:
@@ -320,7 +324,6 @@ def RequestData(
320324
Returns:
321325
int: 1 if calculation successfully ended, 0 otherwise.
322326
"""
323-
self.logger.info( f"Apply plugin { self.logger.name }." )
324327
try:
325328
self.volumeMesh = self.GetOutputData( outInfoVec, 0 )
326329
self.faultMesh = self.GetOutputData( outInfoVec, 1 )

geos-pv/src/geos/pv/plugins/PVGeosBlockExtractAndMerge.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ def __init__( self: Self ) -> None:
118118
self.logger.setLevel( logging.INFO )
119119
self.logger.addHandler( VTKHandler() )
120120

121+
self.logger.info( f"Apply plugin { self.logger.name }." )
122+
121123
def RequestDataObject(
122124
self: Self,
123125
request: vtkInformation,
@@ -170,8 +172,6 @@ def RequestInformation(
170172
Returns:
171173
int: 1 if calculation successfully ended, 0 otherwise.
172174
"""
173-
self.logger.info( f"Apply plugin { self.logger.name }." )
174-
175175
executive = self.GetExecutive()
176176
inInfo = inInfoVec[ 0 ]
177177
self.timeSteps = inInfo.GetInformationObject( 0 ).Get( executive.TIME_STEPS() )

geos-pv/src/geos/pv/utils/workflowFunctions.py

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@
33
# SPDX-FileContributor: Romain Baville
44
# ruff: noqa: E402 # disable Module level import not at top of file
55

6-
76
from geos.processing.post_processing.GeosBlockExtractor import GeosBlockExtractor
87
from geos.processing.post_processing.GeosBlockMerge import GeosBlockMerge
98

109
from vtkmodules.vtkCommonDataModel import vtkMultiBlockDataSet
1110

12-
from paraview.detail.loghandler import ( VTKHandler ) # type: ignore[import-not-found]
11+
from paraview.detail.loghandler import ( VTKHandler ) # type: ignore[import-not-found]
1312

1413

1514
def doExtractAndMerge(
@@ -23,47 +22,59 @@ def doExtractAndMerge(
2322
"""Apply block extraction and merge.
2423
2524
Args:
26-
mesh (vtkMultiBlockDataSet): Mesh to process.
27-
outputCells (vtkMultiBlockDataSet): Output volume mesh.
28-
outputFaults (vtkMultiBlockDataSet): Output surface mesh.
29-
outputWells (vtkMultiBlockDataSet): Output well mesh.
25+
mesh (vtkMultiBlockDataSet): Mesh to process
26+
outputCells (vtkMultiBlockDataSet): Output volume mesh
27+
outputFaults (vtkMultiBlockDataSet): Output surface mesh
28+
outputWells (vtkMultiBlockDataSet): Output well mesh
29+
extractFault (bool, Optional): True if SurfaceElementRegion needs to be extracted, False otherwise.
30+
extractWell (bool, Optional): True if WellElementRegion needs to be extracted, False otherwise.
3031
"""
3132
# Extract blocks
32-
blockExtractor: GeosBlockExtractor = GeosBlockExtractor( mesh, extractFault=extractFault, extractWell=extractWell, speHandler=True )
33+
blockExtractor: GeosBlockExtractor = GeosBlockExtractor( mesh,
34+
extractFault=extractFault,
35+
extractWell=extractWell,
36+
speHandler=True )
3337
if not blockExtractor.logger.hasHandlers():
3438
blockExtractor.setLoggerHandler( VTKHandler() )
3539
blockExtractor.applyFilter()
3640

3741
# recover output objects from GeosBlockExtractor filter and merge internal blocks
3842
volumeBlockExtracted: vtkMultiBlockDataSet = blockExtractor.extractedGeosDomain.volume
39-
outputCells.ShallowCopy( mergeBlocksFilter( volumeBlockExtracted, False ) )
43+
outputCells.ShallowCopy( mergeBlocksFilter( volumeBlockExtracted, False, "Volume" ) )
4044
outputCells.Modified()
4145

4246
if extractFault:
4347
faultBlockExtracted: vtkMultiBlockDataSet = blockExtractor.extractedGeosDomain.fault
44-
outputFaults.ShallowCopy( mergeBlocksFilter( faultBlockExtracted, True ) )
48+
outputFaults.ShallowCopy( mergeBlocksFilter( faultBlockExtracted, True, "Fault" ) )
4549
outputFaults.Modified()
4650

4751
if extractWell:
4852
wellBlockExtracted: vtkMultiBlockDataSet = blockExtractor.extractedGeosDomain.well
49-
outputWells.ShallowCopy( mergeBlocksFilter( wellBlockExtracted, False ) )
53+
outputWells.ShallowCopy( mergeBlocksFilter( wellBlockExtracted, False, "Well" ) )
5054
outputWells.Modified()
5155

5256
return
5357

54-
def mergeBlocksFilter( mesh: vtkMultiBlockDataSet,
55-
convertSurfaces: bool = False, ) -> vtkMultiBlockDataSet:
58+
59+
def mergeBlocksFilter(
60+
mesh: vtkMultiBlockDataSet,
61+
convertSurfaces: bool = False,
62+
domainToMerge: str = "Volume",
63+
) -> vtkMultiBlockDataSet:
5664
"""Apply vtk merge block filter on input multi block mesh.
5765
5866
Args:
5967
mesh (vtkMultiBlockDataSet): Mesh to merge.
6068
convertSurfaces (bool, optional): True to convert surface from vtkUnstructuredGrid to vtkPolyData.
6169
Defaults to False.
70+
domainToMerge (str, optional): The name of the GEOS domain processed.
71+
Defaults to "Volume".
6272
6373
Returns:
6474
vtkMultiBlockDataSet: Mesh composed of internal merged blocks.
6575
"""
66-
mergeBlockFilter: GeosBlockMerge = GeosBlockMerge( mesh, convertSurfaces, True )
76+
loggerName = f"GEOS Block Merge for the domain { domainToMerge }."
77+
mergeBlockFilter: GeosBlockMerge = GeosBlockMerge( mesh, convertSurfaces, True, loggerName )
6778
if not mergeBlockFilter.logger.hasHandlers():
6879
mergeBlockFilter.setLoggerHandler( VTKHandler() )
6980
mergeBlockFilter.applyFilter()

0 commit comments

Comments
 (0)