Skip to content

Commit 333d0df

Browse files
committed
2 parents 50d70e1 + e0760f4 commit 333d0df

File tree

6 files changed

+169
-152
lines changed

6 files changed

+169
-152
lines changed

LoopStructural/interpolators/supports/_3d_base_structured.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,6 @@ def position_to_cell_index(self, pos):
174174
i,j,k indexes of the cell that the point is in
175175
"""
176176

177-
pos = self.rotate(pos)
178177
pos = self.check_position(pos)
179178

180179
ix = pos[:, 0] - self.origin[None, 0]
@@ -189,7 +188,6 @@ def position_to_cell_global_index(self, pos):
189188
ix, iy, iz = self.position_to_cell_index(pos)
190189

191190
def inside(self, pos):
192-
pos = self.rotate(pos)
193191
# check whether point is inside box
194192
inside = np.ones(pos.shape[0]).astype(bool)
195193
for i in range(3):

LoopStructural/modelling/core/geological_model.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,19 +1178,20 @@ def create_and_add_intrusion(
11781178
)
11791179

11801180
intrusion_frame = intrusion_frame_builder.frame
1181+
1182+
# -- create intrusion builder to simulate distance thresholds along frame coordinates
11811183
intrusion_builder = IntrusionBuilder(
1182-
intrusion_frame, model=self, name=f"{intrusion_frame_name}_feature"
1184+
intrusion_frame, model=self, name=f"{intrusion_name}_feature"
11831185
)
11841186
intrusion_builder.lateral_extent_model = intrusion_lateral_extent_model
11851187
intrusion_builder.vertical_extent_model = intrusion_vertical_extent_model
11861188

1187-
1189+
# logger.info("setting data for thresholds simulation")
11881190
intrusion_builder.set_data_for_extent_simulation(intrusion_data)
11891191
intrusion_builder.build_arguments = {
11901192
"lateral_extent_sgs_parameters": lateral_extent_sgs_parameters,
11911193
"vertical_extent_sgs_parameters": vertical_extent_sgs_parameters,
11921194
}
1193-
11941195
intrusion_feature = intrusion_builder.feature
11951196
self._add_feature(intrusion_feature)
11961197

LoopStructural/modelling/intrusions/intrusion_builder.py

Lines changed: 61 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ def __init__(self, frame, model=None, name="intrusion"):
4949
self.lateral_sgs_input_data = None
5050
self.vertical_sgs_input_data = None
5151

52-
self.lateral_extent_sgs_parameters = None
53-
self.vertical_extent_sgs_parameters = None
54-
# grid points for simulation:
52+
# self.lateral_extent_sgs_parameters = None
53+
# self.vertical_extent_sgs_parameters = None
54+
5555
self.simulation_grid = None
5656
self.data = None
5757
self.data_prepared = False
@@ -235,6 +235,13 @@ def set_l_sgs_GSLIBparameters(self, lateral_simulation_parameters):
235235
ndmin = lateral_simulation_parameters.get("ndmin", 0)
236236
ndmax = lateral_simulation_parameters.get("ndmax", 3)
237237
radius = lateral_simulation_parameters.get("radius", 500)
238+
nugget = lateral_simulation_parameters.get("nugget", 0)
239+
nst = lateral_simulation_parameters.get("nst", 1)
240+
it1 = lateral_simulation_parameters.get("it1", 1)
241+
cc1 = lateral_simulation_parameters.get("cc1", 1)
242+
azi1 = lateral_simulation_parameters.get("azi1", 90)
243+
hmaj1 = lateral_simulation_parameters.get("hmaj1", 999999)
244+
hmin1 = lateral_simulation_parameters.get("hmin1", 999999)
238245

239246
l_parameters = {
240247
"tmin": tmin,
@@ -254,6 +261,14 @@ def set_l_sgs_GSLIBparameters(self, lateral_simulation_parameters):
254261
"ndmin": ndmin,
255262
"ndmax": ndmax,
256263
"radius": radius,
264+
"nugget" : nugget,
265+
"nst" : nst,
266+
"it1" : it1,
267+
"cc1" : cc1,
268+
"azi1" : azi1,
269+
"hmaj1" : hmaj1,
270+
"hmin1" : hmin1
271+
257272
}
258273

259274
self.lateral_sgs_parameters = l_parameters
@@ -306,6 +321,13 @@ def set_g_sgs_GSLIBparameters(self, vertical_simulation_parameters):
306321
ndmin = vertical_simulation_parameters.get("ndmin", 0)
307322
ndmax = vertical_simulation_parameters.get("ndmax", 3)
308323
radius = vertical_simulation_parameters.get("radius", 500)
324+
nugget = vertical_simulation_parameters.get("nugget", 0)
325+
nst = vertical_simulation_parameters.get("nst", 1)
326+
it1 = vertical_simulation_parameters.get("it1", 1)
327+
cc1 = vertical_simulation_parameters.get("cc1", 1)
328+
azi1 = vertical_simulation_parameters.get("azi1", 90)
329+
hmaj1 = vertical_simulation_parameters.get("hmaj1", 999999)
330+
hmin1 = vertical_simulation_parameters.get("hmin1", 999999)
309331

310332
g_parameters = {
311333
"tmin": tmin,
@@ -327,11 +349,18 @@ def set_g_sgs_GSLIBparameters(self, vertical_simulation_parameters):
327349
"ndmin": ndmin,
328350
"ndmax": ndmax,
329351
"radius": radius,
352+
"nugget" : nugget,
353+
"nst" : nst,
354+
"it1" : it1,
355+
"cc1" : cc1,
356+
"azi1" : azi1,
357+
"hmaj1" : hmaj1,
358+
"hmin1" : hmin1
330359
}
331360

332361
self.vertical_sgs_parameters = g_parameters
333362

334-
def make_l_sgs_variogram(self, lateral_simulation_parameters):
363+
def make_l_sgs_variogram(self):
335364
"""
336365
Make variogram for lateral extent simulation
337366
By default: variogram with no nugget effect, 1 spherical nested structure, isotropic and infinite range
@@ -350,18 +379,19 @@ def make_l_sgs_variogram(self, lateral_simulation_parameters):
350379
----
351380
"""
352381

353-
nugget = lateral_simulation_parameters.get("nugget", 0)
354-
nst = lateral_simulation_parameters.get("nst", 1)
355-
it1 = lateral_simulation_parameters.get("it1", 1)
356-
cc1 = lateral_simulation_parameters.get("cc1", 1)
357-
azi1 = lateral_simulation_parameters.get("azi1", 90)
358-
hmaj1 = lateral_simulation_parameters.get("hmaj1", 999999)
359-
hmin1 = lateral_simulation_parameters.get("hmin1", 999999)
382+
nugget = self.lateral_sgs_parameters.get("nugget")
383+
nst = self.lateral_sgs_parameters.get("nst")
384+
it1 = self.lateral_sgs_parameters.get("it1")
385+
cc1 = self.lateral_sgs_parameters.get("cc1")
386+
azi1 = self.lateral_sgs_parameters.get("azi1")
387+
hmaj1 = self.lateral_sgs_parameters.get("hmaj1")
388+
hmin1 = self.lateral_sgs_parameters.get("hmin1")
389+
360390
self.lateral_sgs_variogram = GSLIB.make_variogram(
361391
nugget, nst, it1, cc1, azi1, hmaj1, hmin1
362392
)
363393

364-
def make_g_sgs_variogram(self, vertical_simulation_parameters):
394+
def make_g_sgs_variogram(self):
365395
"""
366396
Make variogram for vertical extent simulation
367397
By default: variogram with no nugget effect, 1 spherical nested structure, isotropic and infinite range
@@ -378,13 +408,13 @@ def make_g_sgs_variogram(self, vertical_simulation_parameters):
378408
----
379409
"""
380410

381-
nugget = vertical_simulation_parameters.get("nugget", 0)
382-
nst = vertical_simulation_parameters.get("nst", 1)
383-
it1 = vertical_simulation_parameters.get("it1", 1)
384-
cc1 = vertical_simulation_parameters.get("cc1", 1)
385-
azi1 = vertical_simulation_parameters.get("azi1", 90)
386-
hmaj1 = vertical_simulation_parameters.get("hmaj1", 999999)
387-
hmin1 = vertical_simulation_parameters.get("hmin1", 999999)
411+
nugget = self.vertical_sgs_parameters.get("nugget")
412+
nst = self.vertical_sgs_parameters.get("nst")
413+
it1 = self.vertical_sgs_parameters.get("it1")
414+
cc1 = self.vertical_sgs_parameters.get("cc1")
415+
azi1 = self.vertical_sgs_parameters.get("azi1")
416+
hmaj1 = self.vertical_sgs_parameters.get("hmaj1")
417+
hmin1 = self.vertical_sgs_parameters.get("hmin1")
388418

389419
self.vertical_sgs_variogram = GSLIB.make_variogram(
390420
nugget, nst, it1, cc1, azi1, hmaj1, hmin1
@@ -408,7 +438,7 @@ def simulate_lateral_thresholds(self):
408438
grid_points_coord1 = self.simulation_grid[2]
409439
# grid_points_coord2 = self.simulation_grid[3]
410440

411-
# generate data frame containing input data for simulation
441+
# -- generate data frame containing input data for simulation
412442
data_sides = self.lateral_contact_data[0]
413443

414444
minP = min(
@@ -464,7 +494,7 @@ def simulate_lateral_thresholds(self):
464494

465495
self.lateral_sgs_input_data = [inputsimdata_minL, inputsimdata_maxL]
466496

467-
# Compute simulation parameters if not defined
497+
# -- Compute simulation parameters if not defined
468498
if self.lateral_sgs_parameters.get("zmin") == None:
469499
self.lateral_sgs_parameters["zmin"] = min(
470500
inputsimdata_maxL["l_residual"].min(),
@@ -483,7 +513,7 @@ def simulate_lateral_thresholds(self):
483513
maxC0 = np.nanmax(grid_points_coord1)
484514
self.lateral_sgs_parameters["xsiz"] = (maxC0 - minC0) / nx
485515

486-
# Simulation of lateral extent
516+
# -- Simulation of lateral extent
487517
tmin = self.lateral_sgs_parameters.get("tmin")
488518
tmax = self.lateral_sgs_parameters.get("tmax")
489519
itrans = self.lateral_sgs_parameters.get("itrans")
@@ -596,7 +626,7 @@ def simulate_lateral_thresholds(self):
596626

597627
# self.simulationGSLIB_s_outcome = [s_min_simulation, s_max_simulation]
598628

599-
# Create dataframe containing S threshold for each grid point
629+
# -- Create dataframe containing S threshold for each grid point
600630

601631
propagation_grid_model = np.linspace(xmn, xmn + (nx * xsiz), nx)
602632

@@ -652,13 +682,13 @@ def simulate_growth_thresholds(self):
652682
-------
653683
"""
654684

655-
# Get grid points and evaluated values in the intrusion frame
685+
# -- Get grid points and evaluated values in the intrusion frame
656686
grid_points = self.simulation_grid
657687
grid_points_coord0 = self.simulation_grid[1]
658688
grid_points_coord1 = self.simulation_grid[2]
659689
grid_points_coord2 = self.simulation_grid[3]
660690

661-
# Generate data frame containing input data for simulation
691+
# -- Generate data frame containing input data for simulation
662692
inet_data = self.vertical_contact_data[0]
663693
other_contact_data = self.vertical_contact_data[1]
664694

@@ -734,9 +764,6 @@ def simulate_growth_thresholds(self):
734764
if self.vertical_sgs_parameters.get("zmax2") == None:
735765
self.vertical_sgs_parameters["zmax2"] = inputsimdata_inetG["coord0"].max()
736766

737-
# --- make variogram
738-
# self.make_g_simulation_variogram()
739-
740767
# --- get parameters for simulation
741768
tmin = self.vertical_sgs_parameters.get("tmin")
742769
tmax = self.vertical_sgs_parameters.get("tmax")
@@ -851,7 +878,7 @@ def simulate_growth_thresholds(self):
851878
)
852879

853880
# self.simulationGSLIB_g_outcome = [g_min_simulation, g_max_simulation]
854-
# Create dataframe containing S threshold for each grid point
881+
# -- Create dataframe containing S threshold for each grid point
855882
lower_extent_gpl = [0, xmn, ymn]
856883
upper_extent_gpl = [0, xmn + xsiz * nx, ymn + ysiz * ny]
857884

@@ -899,7 +926,7 @@ def build(
899926
lateral_extent_sgs_parameters={},
900927
**kwargs,
901928
):
902-
"""Main building function for intrusion. Calculates variogram and thresholds
929+
"""Main building function for intrusion. Calculates variogram and simulate thresholds along frame axes
903930
904931
Parameters
905932
----------
@@ -909,16 +936,16 @@ def build(
909936
parameters for the vertical sequential gaussian simulation, by default {}
910937
"""
911938
self.prepare_data()
912-
# self.set_data_for_extent_simulation(intrusion_data)
913939
self.create_grid_for_simulation()
914940
self.set_l_sgs_GSLIBparameters(lateral_extent_sgs_parameters)
915941
self.set_g_sgs_GSLIBparameters(vertical_extent_sgs_parameters)
916-
self.make_l_sgs_variogram(lateral_extent_sgs_parameters)
917-
self.make_g_sgs_variogram(vertical_extent_sgs_parameters)
942+
self.make_l_sgs_variogram()
943+
self.make_g_sgs_variogram()
918944
self.simulate_lateral_thresholds()
919945
self.simulate_growth_thresholds()
920-
self.feature.growth_simulated_threshold = self.growth_simulated_thresholds
946+
self.feature.growth_simulated_thresholds = self.growth_simulated_thresholds
921947
self.feature.lateral_simulated_thresholds = self.lateral_simulated_thresholds
948+
922949

923950
def update(self):
924951
self.build(**self.build_arguments)

LoopStructural/modelling/intrusions/intrusion_feature.py

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def __init__(self, frame, builder, name="UnnamedIntrusion", model=None):
4242
@property
4343
def lateral_simulated_thresholds(self):
4444
self.builder.up_to_date()
45-
45+
4646
return self._lateral_simulated_thresholds
4747

4848
@lateral_simulated_thresholds.setter
@@ -51,25 +51,22 @@ def lateral_simulated_thresholds(self, lateral_simulated_thresholds):
5151
self._lateral_simulated_thresholds = lateral_simulated_thresholds
5252

5353
@property
54-
def growth_simulated_threshold(self):
54+
def growth_simulated_thresholds(self):
5555
self.builder.up_to_date()
56+
5657
return self._growth_simulated_thresholds
5758

58-
@growth_simulated_threshold.setter
59-
def growth_simulated_threshold(self, growth_simulated_threshold):
59+
@growth_simulated_thresholds.setter
60+
def growth_simulated_thresholds(self, growth_simulated_threshold):
6061
# TODO check type is correct and will work?
6162
self._growth_simulated_thresholds = growth_simulated_threshold
6263

64+
6365
@property
6466
def lateral_sgs_input_data(self):
6567
self.builder.up_to_date()
6668
return self.builder.lateral_sgs_input_data
67-
68-
@property
69-
def growth_simulated_thresholds(self):
70-
self.builder.up_to_date()
71-
return self.builder.growth_simulated_thresholds
72-
69+
7370
@property
7471
def vertical_sgs_input_data(self):
7572
self.builder.up_to_date()
@@ -114,7 +111,7 @@ def evaluate_value(self, points):
114111
115112
Returns
116113
------------
117-
intrusion_sf : numpy array, constains distance to intrusion contact
114+
intrusion_sf : numpy array, contains distance to intrusion contact
118115
119116
"""
120117
self.builder.up_to_date()
@@ -133,9 +130,9 @@ def evaluate_value(self, points):
133130

134131
# if lateral extent values were simulated
135132
if simulation_s_data is None:
136-
print("No simultion for lateral extent")
133+
print("No simulation for lateral extent")
137134
else:
138-
print("Assigning lateral thresholds")
135+
# print("Assigning lateral thresholds")
139136
simulation_s_data.sort_values(["coord1"], ascending=[True], inplace=True)
140137

141138
# containers for thresholds
@@ -167,7 +164,7 @@ def evaluate_value(self, points):
167164
print("No simulation for vertical extent")
168165
else:
169166
# containers for thresholds
170-
print("Assigning vertical thresholds")
167+
# print("Assigning vertical thresholds")
171168
g_minside_threshold = np.zeros(len(intrusion_coord1_pts))
172169
g_maxside_threshold = np.zeros(len(intrusion_coord1_pts))
173170

0 commit comments

Comments
 (0)