@@ -79,7 +79,6 @@ def __init__(
7979 Dictionary with default values.
8080 """
8181 self .tolerance = 1.0e-5
82- self .zero_tolerance = 1.0e-10
8382 self .scale = scale
8483 self .final_time_only = final_time_only
8584 self .vertex_fields = []
@@ -226,7 +225,7 @@ def checkVertexField(
226225 mesh_entity ,
227226 exact_soln ,
228227 tolerance ,
229- zero_tolerance ,
228+ scale ,
230229 final_time_only ,
231230 ):
232231 self .testcase .assertTrue ("vertex_fields" in self .h5 .keys ())
@@ -246,7 +245,7 @@ def checkVertexField(
246245 mask = None
247246 if "getMask" in dir (exact_soln ):
248247 mask = exact_soln .getMask (fieldName , mesh_entity , vertices )
249- self ._checkField (fieldE , field , mask , tolerance , zero_tolerance )
248+ self ._checkField (fieldE , field , mask , tolerance , scale )
250249 return
251250
252251 def checkCellField (
@@ -255,7 +254,7 @@ def checkCellField(
255254 mesh_entity ,
256255 exact_soln ,
257256 tolerance ,
258- zero_tolerance ,
257+ scale ,
259258 final_time_only ,
260259 ):
261260 self .testcase .assertTrue (
@@ -274,10 +273,10 @@ def checkCellField(
274273 centroids = self ._getCellCentroids ()
275274 fieldE = exact_soln .getField (fieldName , mesh_entity , centroids )
276275 mask = None
277- self ._checkField (fieldE , field , mask , tolerance , zero_tolerance )
276+ self ._checkField (fieldE , field , mask , tolerance , scale )
278277 return
279278
280- def _checkField (self , fieldE , field , maskField , tolerance , zero_tolerance ):
279+ def _checkField (self , fieldE , field , maskField , tolerance , scale ):
281280 (nstepsE , nptsE , ncompsE ) = fieldE .shape
282281 (nsteps , npts , ncomps ) = field .shape
283282 self .testcase .assertEqual (
@@ -288,9 +287,9 @@ def _checkField(self, fieldE, field, maskField, tolerance, zero_tolerance):
288287 ncompsE , ncomps , msg = "Mismatch in number of components"
289288 )
290289
291- scale = numpy .mean (numpy .abs (fieldE ).ravel ())
292- vtolerance = scale * tolerance if scale > zero_tolerance else tolerance
293- okay = numpy .abs (field - fieldE ) < vtolerance
290+ v_scale = max ( scale , numpy .mean (numpy .abs (fieldE ).ravel () ))
291+ v_tolerance = v_scale * tolerance
292+ okay = numpy .abs (field - fieldE ) < v_tolerance
294293
295294 if not maskField is None :
296295 okay [:, maskField , :] = True
@@ -305,7 +304,7 @@ def _checkField(self, fieldE, field, maskField, tolerance, zero_tolerance):
305304 msg += [f"Expected values (not okay): { fieldE [~ okay ]} " ]
306305 msg += [f"Computed values (not okay): { field [~ okay ]} " ]
307306 # msg += [f"Coordinates: {pts[~okay, :]}"]
308- msg += [f"Tolerance: { vtolerance } " ]
307+ msg += [f"Tolerance: { v_tolerance } " ]
309308 self .testcase .assertEqual (
310309 nsteps * npts * ncomps , numpy .sum (okay ), msg = "\n " .join (msg )
311310 )
@@ -358,19 +357,15 @@ def check_data(testcase, filename, check, mesh_entity, mesh):
358357
359358 checker = HDF5Checker (filename , testcase , mesh )
360359
361- tolerance = check .tolerance * check .scale
362- zero_tolerance = check .zero_tolerance * check .scale
363- final_time_only = check .final_time_only
364-
365360 for field in check .vertex_fields :
366361 with testcase .subTest (vertex_field = field ):
367362 checker .checkVertexField (
368363 field ,
369364 mesh_entity ,
370365 check .exact_soln ,
371- tolerance ,
372- zero_tolerance ,
373- final_time_only ,
366+ check . tolerance ,
367+ check . scale ,
368+ check . final_time_only ,
374369 )
375370
376371 for field in check .cell_fields :
@@ -379,9 +374,9 @@ def check_data(testcase, filename, check, mesh_entity, mesh):
379374 field ,
380375 mesh_entity ,
381376 check .exact_soln ,
382- tolerance ,
383- zero_tolerance ,
384- final_time_only ,
377+ check . tolerance ,
378+ check . scale ,
379+ check . final_time_only ,
385380 )
386381 return
387382
0 commit comments