@@ -158,6 +158,10 @@ def __init__(self, origin, maximum, rescale=True, nsteps=(40, 40, 40),
158158 self .bounding_box /= self .scale_factor
159159 self .support = {}
160160 self .reuse_supports = reuse_supports
161+ if reuse_supports :
162+ logger .warning ("Supports are shared between geological features \n "
163+ "this may cause unexpected behaviour and should only\n "
164+ "be use by advanced users" )
161165 logger .info ('Reusing interpolation supports: {}' .format (self .reuse_supports ))
162166 self .stratigraphic_column = None
163167 self .parameters = {'features' : [], 'model' : {'bounding_box' : self .origin .tolist () + self .maximum .tolist (),
@@ -480,18 +484,22 @@ def get_interpolator(self, interpolatortype='PLI', nelements=1e5,
480484 # number of steps is the length of the box / step vector
481485 nsteps = np .ceil ((bb [1 , :] - bb [0 , :]) / step_vector ).astype (int )
482486 # create a structured grid using the origin and number of steps
483- mesh_id = 'mesh_{}' .format (nelements )
484- mesh = self .support .get (mesh_id ,
485- TetMesh (origin = bb [0 , :], nsteps = nsteps ,
486- step_vector = step_vector ))
487- if mesh_id not in self .support :
488- self .support [mesh_id ] = mesh
487+ if reuse_supports :
488+ mesh_id = 'mesh_{}' .format (nelements )
489+ mesh = self .support .get (mesh_id ,
490+ TetMesh (origin = bb [0 , :], nsteps = nsteps ,
491+ step_vector = step_vector ))
492+ if mesh_id not in self .support :
493+ self .support [mesh_id ] = mesh
494+ else :
495+ mesh = TetMesh (origin = bb [0 , :], nsteps = nsteps , step_vector = step_vector )
489496 logger .info ("Creating regular tetrahedron mesh with %i elements \n "
490497 "for modelling using PLI" % (mesh .ntetra ))
491498
492499 return PLI (mesh )
493500
494501 if interpolatortype == 'FDI' :
502+
495503 # find the volume of one element
496504 if element_volume is None :
497505 element_volume = box_vol / nelements
@@ -504,12 +512,15 @@ def get_interpolator(self, interpolatortype='PLI', nelements=1e5,
504512 logger .error ("Cannot create interpolator: number of steps is too small" )
505513 return None
506514 # create a structured grid using the origin and number of steps
507- grid_id = 'grid_{}' .format (nelements )
508- grid = self .support .get (grid_id , StructuredGrid (origin = bb [0 , :],
515+ if self .reuse_supports :
516+ grid_id = 'grid_{}' .format (nelements )
517+ grid = self .support .get (grid_id , StructuredGrid (origin = bb [0 , :],
509518 nsteps = nsteps ,
510519 step_vector = step_vector ))
511- if grid_id not in self .support :
512- self .support [grid_id ] = grid
520+ if grid_id not in self .support :
521+ self .support [grid_id ] = grid
522+ else :
523+ grid = StructuredGrid (origin = bb [0 , :], nsteps = nsteps ,step_vector = step_vector )
513524 logger .info ("Creating regular grid with %i elements \n "
514525 "for modelling using FDI" % grid .n_elements )
515526 return FDI (grid )
0 commit comments