Skip to content

Commit 08adb56

Browse files
committed
fix: updating so change work for building model
1 parent 2790d76 commit 08adb56

File tree

3 files changed

+53
-31
lines changed

3 files changed

+53
-31
lines changed

LoopStructural/modelling/core/geological_model.py

Lines changed: 43 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
strike_dip_vector,
6262
get_vectors,
6363
)
64+
from ...utils import BoundingBox
6465

6566
from ...modelling.intrusions import IntrusionBuilder
6667

@@ -165,16 +166,19 @@ def __init__(
165166

166167
lengths = self.maximum - self.origin
167168
self.scale_factor = 1.0
168-
self.bounding_box = np.zeros((2, 3))
169-
self.bounding_box[1, :] = self.maximum - self.origin
170-
self.bounding_box[1, :] = self.maximum - self.origin
171-
if rescale:
172-
self.scale_factor = float(np.max(lengths))
173-
logger.info(
174-
"Rescaling model using scale factor {}".format(self.scale_factor)
175-
)
176169

177-
self.bounding_box /= self.scale_factor
170+
self.bounding_box = BoundingBox(
171+
dimensions=3, origin=np.zeros(3), maximum=self.maximum - self.origin
172+
) # np.zeros((2, 3))
173+
# self.bounding_box[1, :] = self.maximum - self.origin
174+
# self.bounding_box[1, :] = self.maximum - self.origin
175+
# if rescale:
176+
# self.scale_factor = float(np.max(lengths))
177+
# logger.info(
178+
# "Rescaling model using scale factor {}".format(self.scale_factor)
179+
# )
180+
181+
# self.bounding_box /= self.scale_factor
178182
self.support = {}
179183
self.reuse_supports = reuse_supports
180184
if self.reuse_supports:
@@ -890,7 +894,13 @@ def get_interpolator(
890894
raise InterpolatorError("Could not create interpolator")
891895

892896
def create_and_add_foliation(
893-
self, series_surface_data:str, interpolatortype:str='FDI',nelements:int=1000, tol=None, faults=None, **kwargs
897+
self,
898+
series_surface_data: str,
899+
interpolatortype: str = "FDI",
900+
nelements: int = 1000,
901+
tol=None,
902+
faults=None,
903+
**kwargs,
894904
):
895905
"""
896906
Parameters
@@ -924,7 +934,11 @@ def create_and_add_foliation(
924934
tol = self.tol
925935

926936
series_builder = GeologicalFeatureBuilder(
927-
bounding_box=self.bounding_box, interpolatortype=interpolatortype,nelements=nelements, name=series_surface_data, **kwargs
937+
bounding_box=self.bounding_box,
938+
interpolatortype=interpolatortype,
939+
nelements=nelements,
940+
name=series_surface_data,
941+
**kwargs,
928942
)
929943
# add data
930944
series_data = self.data[self.data["feature_name"] == series_surface_data]
@@ -1731,21 +1745,24 @@ def regular_grid(self, nsteps=None, shuffle=True, rescale=False, order="C"):
17311745
xyz : np.array((N,3),dtype=float)
17321746
locations of points in regular grid
17331747
"""
1734-
if nsteps is None:
1735-
nsteps = self.nsteps
1736-
x = np.linspace(self.bounding_box[0, 0], self.bounding_box[1, 0], nsteps[0])
1737-
y = np.linspace(self.bounding_box[0, 1], self.bounding_box[1, 1], nsteps[1])
1738-
z = np.linspace(self.bounding_box[1, 2], self.bounding_box[0, 2], nsteps[2])
1739-
xx, yy, zz = np.meshgrid(x, y, z, indexing="ij")
1740-
locs = np.array(
1741-
[xx.flatten(order=order), yy.flatten(order=order), zz.flatten(order=order)]
1742-
).T
1743-
if shuffle:
1744-
logger.info("Shuffling points")
1745-
np.random.shuffle(locs)
1746-
if rescale:
1747-
locs = self.rescale(locs)
1748-
return locs
1748+
return self.bounding_box.regular_grid(
1749+
nsteps=nsteps, shuffle=shuffle, order=order
1750+
)
1751+
# if nsteps is None:
1752+
# nsteps = self.nsteps
1753+
# x = np.linspace(self.bounding_box[0, 0], self.bounding_box[1, 0], nsteps[0])
1754+
# y = np.linspace(self.bounding_box[0, 1], self.bounding_box[1, 1], nsteps[1])
1755+
# z = np.linspace(self.bounding_box[1, 2], self.bounding_box[0, 2], nsteps[2])
1756+
# xx, yy, zz = np.meshgrid(x, y, z, indexing="ij")
1757+
# locs = np.array(
1758+
# [xx.flatten(order=order), yy.flatten(order=order), zz.flatten(order=order)]
1759+
# ).T
1760+
# if shuffle:
1761+
# logger.info("Shuffling points")
1762+
# np.random.shuffle(locs)
1763+
# if rescale:
1764+
# locs = self.rescale(locs)
1765+
# return locs
17491766

17501767
def evaluate_model(self, xyz, scale=True):
17511768
"""Evaluate the stratigraphic id at each location

LoopStructural/modelling/features/builders/_geological_feature_builder.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,18 @@ def __init__(
5353
kwargs - name of the feature, region to interpolate the feature
5454
"""
5555
BaseBuilder.__init__(self, name)
56+
interpolator = get_interpolator(
57+
bounding_box=bounding_box,
58+
interpolatortype=interpolatortype,
59+
nelements=nelements,
60+
)
5661
if issubclass(type(interpolator), GeologicalInterpolator) == False:
5762
raise TypeError(
5863
"interpolator is {} and must be a GeologicalInterpolator".format(
5964
type(interpolator)
6065
)
6166
)
62-
self._interpolator = get_interpolator(
63-
bounding_box=bounding_box,
64-
interpolatortype=interpolatortype,
65-
nelements=nelements,
66-
)
67+
self._interpolator = interpolator
6768
self._interpolator.set_property_name(self._name)
6869
# everywhere region is just a lambda that returns true for all locations
6970

LoopStructural/utils/_bounding_box.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ def nelements(self):
6262
def volume(self):
6363
return np.product(self.maximum - self.origin)
6464

65+
@property
66+
def bb(self):
67+
return np.array([self.origin, self.maximum])
68+
6569
@nelements.setter
6670
def nelements(self, nelements):
6771
box_vol = self.volume

0 commit comments

Comments
 (0)