LoopStructural 1.6.13__py3-none-any.whl → 1.6.15__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of LoopStructural might be problematic. Click here for more details.
- LoopStructural/datatypes/_bounding_box.py +23 -13
- LoopStructural/datatypes/_point.py +0 -1
- LoopStructural/export/exporters.py +2 -2
- LoopStructural/interpolators/__init__.py +43 -32
- LoopStructural/interpolators/_constant_norm.py +205 -0
- LoopStructural/interpolators/_discrete_interpolator.py +15 -14
- LoopStructural/interpolators/_finite_difference_interpolator.py +27 -21
- LoopStructural/interpolators/_geological_interpolator.py +1 -1
- LoopStructural/interpolators/_interpolatortype.py +22 -0
- LoopStructural/interpolators/_p1interpolator.py +7 -3
- LoopStructural/interpolators/_surfe_wrapper.py +4 -1
- LoopStructural/interpolators/supports/_2d_base_unstructured.py +1 -1
- LoopStructural/interpolators/supports/_2d_structured_grid.py +16 -0
- LoopStructural/interpolators/supports/_3d_base_structured.py +16 -0
- LoopStructural/interpolators/supports/_3d_structured_grid.py +3 -2
- LoopStructural/interpolators/supports/_3d_structured_tetra.py +7 -3
- LoopStructural/modelling/__init__.py +11 -3
- LoopStructural/modelling/core/geological_model.py +187 -234
- LoopStructural/modelling/features/_base_geological_feature.py +38 -2
- LoopStructural/modelling/features/builders/_geological_feature_builder.py +2 -2
- LoopStructural/modelling/features/fault/_fault_function.py +1 -1
- LoopStructural/modelling/intrusions/intrusion_builder.py +1 -1
- LoopStructural/modelling/intrusions/intrusion_frame_builder.py +1 -1
- LoopStructural/utils/__init__.py +1 -0
- LoopStructural/utils/helper.py +1 -24
- LoopStructural/utils/maths.py +74 -17
- LoopStructural/version.py +1 -1
- {loopstructural-1.6.13.dist-info → loopstructural-1.6.15.dist-info}/METADATA +2 -2
- {loopstructural-1.6.13.dist-info → loopstructural-1.6.15.dist-info}/RECORD +32 -30
- {loopstructural-1.6.13.dist-info → loopstructural-1.6.15.dist-info}/WHEEL +1 -1
- {loopstructural-1.6.13.dist-info → loopstructural-1.6.15.dist-info}/licenses/LICENSE +0 -0
- {loopstructural-1.6.13.dist-info → loopstructural-1.6.15.dist-info}/top_level.txt +0 -0
|
@@ -244,7 +244,7 @@ class BaseFeature(metaclass=ABCMeta):
|
|
|
244
244
|
if self.model is None:
|
|
245
245
|
return 0
|
|
246
246
|
|
|
247
|
-
return np.nanmin(self.evaluate_value(self.model.regular_grid((10, 10, 10))))
|
|
247
|
+
return np.nanmin(self.evaluate_value(self.model.regular_grid(nsteps=(10, 10, 10))))
|
|
248
248
|
|
|
249
249
|
def max(self):
|
|
250
250
|
"""Calculate the maximum value of the geological feature
|
|
@@ -257,7 +257,7 @@ class BaseFeature(metaclass=ABCMeta):
|
|
|
257
257
|
"""
|
|
258
258
|
if self.model is None:
|
|
259
259
|
return 0
|
|
260
|
-
return np.nanmax(self.evaluate_value(self.model.regular_grid((10, 10, 10))))
|
|
260
|
+
return np.nanmax(self.evaluate_value(self.model.regular_grid(nsteps=(10, 10, 10))))
|
|
261
261
|
|
|
262
262
|
def __tojson__(self):
|
|
263
263
|
regions = [r.name for r in self.regions]
|
|
@@ -347,6 +347,42 @@ class BaseFeature(metaclass=ABCMeta):
|
|
|
347
347
|
grid.cell_properties[self.name] = value
|
|
348
348
|
return grid
|
|
349
349
|
|
|
350
|
+
def gradient_norm_scalar_field(self, bounding_box=None):
|
|
351
|
+
"""Create a scalar field for the gradient norm of the feature
|
|
352
|
+
|
|
353
|
+
Parameters
|
|
354
|
+
----------
|
|
355
|
+
bounding_box : Optional[BoundingBox], optional
|
|
356
|
+
bounding box to evaluate the scalar field in, by default None
|
|
357
|
+
|
|
358
|
+
Returns
|
|
359
|
+
-------
|
|
360
|
+
np.ndarray
|
|
361
|
+
scalar field of the gradient norm
|
|
362
|
+
"""
|
|
363
|
+
if bounding_box is None:
|
|
364
|
+
if self.model is None:
|
|
365
|
+
raise ValueError("Must specify bounding box")
|
|
366
|
+
bounding_box = self.model.bounding_box
|
|
367
|
+
grid = bounding_box.structured_grid(name=self.name)
|
|
368
|
+
value = np.linalg.norm(
|
|
369
|
+
self.evaluate_gradient(bounding_box.regular_grid(local=False, order='F')),
|
|
370
|
+
axis=1,
|
|
371
|
+
)
|
|
372
|
+
if self.model is not None:
|
|
373
|
+
value = np.linalg.norm(
|
|
374
|
+
self.evaluate_gradient(
|
|
375
|
+
self.model.scale(bounding_box.regular_grid(local=False, order='F'))
|
|
376
|
+
),
|
|
377
|
+
axis=1,
|
|
378
|
+
)
|
|
379
|
+
grid.properties[self.name] = value
|
|
380
|
+
|
|
381
|
+
value = np.linalg.norm(
|
|
382
|
+
self.evaluate_gradient(bounding_box.cell_centres(order='F')), axis=1
|
|
383
|
+
)
|
|
384
|
+
grid.cell_properties[self.name] = value
|
|
385
|
+
return grid
|
|
350
386
|
def vector_field(self, bounding_box=None, tolerance=0.05, scale=1.0):
|
|
351
387
|
"""Create a vector field for the feature
|
|
352
388
|
|
|
@@ -86,7 +86,7 @@ class GeologicalFeatureBuilder(BaseBuilder):
|
|
|
86
86
|
self._orthogonal_features = {}
|
|
87
87
|
self._equality_constraints = {}
|
|
88
88
|
# add default parameters
|
|
89
|
-
self.update_build_arguments({'cpw':1.0,'npw':1.0,'regularisation'
|
|
89
|
+
self.update_build_arguments({'cpw':1.0,'npw':1.0,'regularisation':.10,'nelements':self.interpolator.n_elements})
|
|
90
90
|
def set_not_up_to_date(self, caller):
|
|
91
91
|
logger.info(
|
|
92
92
|
f"Setting {self.name} to not up to date from an instance of {caller.__class__.__name__}"
|
|
@@ -452,7 +452,7 @@ class GeologicalFeatureBuilder(BaseBuilder):
|
|
|
452
452
|
self.interpolator.support.rotation_xy = rotation
|
|
453
453
|
self._up_to_date = False
|
|
454
454
|
|
|
455
|
-
while self.interpolator.
|
|
455
|
+
while self.interpolator.dof < 100:
|
|
456
456
|
self.interpolator.support.step_vector = self.interpolator.support.step_vector * 0.9
|
|
457
457
|
|
|
458
458
|
def check_interpolation_geometry(self, data, buffer=0.3):
|
|
@@ -12,7 +12,7 @@ logger = getLogger(__name__)
|
|
|
12
12
|
def smooth_peak(x):
|
|
13
13
|
v = np.zeros(x.shape)
|
|
14
14
|
mask = np.logical_and(x >= -1, x <= 1)
|
|
15
|
-
v[mask] =
|
|
15
|
+
v[mask] = x[mask] ** 4 - 2 * x[mask] ** 2 + 1
|
|
16
16
|
return v
|
|
17
17
|
|
|
18
18
|
class FaultProfileFunction(metaclass=ABCMeta):
|
|
@@ -82,7 +82,7 @@ class IntrusionBuilder(BaseBuilder):
|
|
|
82
82
|
if spacing is None:
|
|
83
83
|
spacing = self.model.nsteps
|
|
84
84
|
|
|
85
|
-
grid_points = self.model.regular_grid(spacing, shuffle=False)
|
|
85
|
+
grid_points = self.model.regular_grid(nsteps=spacing, shuffle=False)
|
|
86
86
|
|
|
87
87
|
grid_points_coord0 = self.intrusion_frame[0].evaluate_value(grid_points)
|
|
88
88
|
|
|
@@ -168,7 +168,7 @@ class IntrusionFrameBuilder(StructuralFrameBuilder):
|
|
|
168
168
|
if spacing is None:
|
|
169
169
|
spacing = self.model.nsteps
|
|
170
170
|
|
|
171
|
-
grid_points = self.model.regular_grid(spacing, shuffle=False)
|
|
171
|
+
grid_points = self.model.regular_grid(nsteps=spacing, shuffle=False)
|
|
172
172
|
|
|
173
173
|
self.grid_to_evaluate_ifx = grid_points
|
|
174
174
|
|
LoopStructural/utils/__init__.py
CHANGED
LoopStructural/utils/helper.py
CHANGED
|
@@ -107,30 +107,7 @@ def get_data_bounding_box(xyz, buffer):
|
|
|
107
107
|
return bb, region
|
|
108
108
|
|
|
109
109
|
|
|
110
|
-
|
|
111
|
-
# plunge: Union[np.ndarray, list], plunge_dir: Union[np.ndarray, list]
|
|
112
|
-
# ) -> np.ndarray:
|
|
113
|
-
# """Convert plunge and plunge direction to a vector
|
|
114
|
-
|
|
115
|
-
# Parameters
|
|
116
|
-
# ----------
|
|
117
|
-
# plunge : Union[np.ndarray, list]
|
|
118
|
-
# array or array like of plunge values
|
|
119
|
-
# plunge_dir : Union[np.ndarray, list]
|
|
120
|
-
# array or array like of plunge direction values
|
|
121
|
-
|
|
122
|
-
# Returns
|
|
123
|
-
# -------
|
|
124
|
-
# np.array
|
|
125
|
-
# nx3 vector
|
|
126
|
-
# """
|
|
127
|
-
# plunge = np.deg2rad(plunge)
|
|
128
|
-
# plunge_dir = np.deg2rad(plunge_dir)
|
|
129
|
-
# vec = np.zeros(3)
|
|
130
|
-
# vec[0] = np.sin(plunge_dir) * np.cos(plunge)
|
|
131
|
-
# vec[1] = np.cos(plunge_dir) * np.cos(plunge)
|
|
132
|
-
# vec[2] = -np.sin(plunge)
|
|
133
|
-
# return vec
|
|
110
|
+
|
|
134
111
|
|
|
135
112
|
|
|
136
113
|
def create_surface(bounding_box, nstep):
|
LoopStructural/utils/maths.py
CHANGED
|
@@ -28,20 +28,28 @@ def strikedip2vector(strike: NumericInput, dip: NumericInput) -> np.ndarray:
|
|
|
28
28
|
vec /= np.linalg.norm(vec, axis=1)[:, None]
|
|
29
29
|
return vec
|
|
30
30
|
|
|
31
|
-
|
|
32
31
|
def azimuthplunge2vector(
|
|
32
|
+
plunge: NumericInput,
|
|
33
|
+
azimuth: NumericInput,
|
|
34
|
+
degrees: bool = True,
|
|
35
|
+
) -> np.ndarray:
|
|
36
|
+
raise DeprecationWarning(
|
|
37
|
+
"azimuthplunge2vector is deprecated, use plungeazimuth2vector instead"
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
def plungeazimuth2vector(
|
|
33
41
|
plunge: NumericInput,
|
|
34
|
-
|
|
42
|
+
azimuth: NumericInput,
|
|
35
43
|
degrees: bool = True,
|
|
36
44
|
) -> np.ndarray:
|
|
37
45
|
"""Convert plunge and plunge direction to a vector
|
|
38
46
|
|
|
39
47
|
Parameters
|
|
40
48
|
----------
|
|
49
|
+
azimuth : Union[np.ndarray, list]
|
|
50
|
+
array or array like of plunge direction values
|
|
41
51
|
plunge : Union[np.ndarray, list]
|
|
42
52
|
array or array like of plunge values
|
|
43
|
-
plunge_dir : Union[np.ndarray, list]
|
|
44
|
-
array or array like of plunge direction values
|
|
45
53
|
|
|
46
54
|
Returns
|
|
47
55
|
-------
|
|
@@ -52,16 +60,16 @@ def azimuthplunge2vector(
|
|
|
52
60
|
plunge = np.array([plunge], dtype=float)
|
|
53
61
|
else:
|
|
54
62
|
plunge = np.array(plunge, dtype=float)
|
|
55
|
-
if isinstance(
|
|
56
|
-
|
|
63
|
+
if isinstance(azimuth, numbers.Number):
|
|
64
|
+
azimuth = np.array([azimuth], dtype=float)
|
|
57
65
|
else:
|
|
58
|
-
|
|
66
|
+
azimuth = np.array(azimuth, dtype=float)
|
|
59
67
|
if degrees:
|
|
60
68
|
plunge = np.deg2rad(plunge)
|
|
61
|
-
|
|
69
|
+
azimuth = np.deg2rad(azimuth)
|
|
62
70
|
vec = np.zeros((len(plunge), 3))
|
|
63
|
-
vec[:, 0] = np.sin(
|
|
64
|
-
vec[:, 1] = np.cos(
|
|
71
|
+
vec[:, 0] = np.sin(azimuth) * np.cos(plunge)
|
|
72
|
+
vec[:, 1] = np.cos(azimuth) * np.cos(plunge)
|
|
65
73
|
vec[:, 2] = -np.sin(plunge)
|
|
66
74
|
return vec
|
|
67
75
|
|
|
@@ -204,19 +212,21 @@ def get_vectors(normal: NumericInput) -> Tuple[np.ndarray, np.ndarray]:
|
|
|
204
212
|
|
|
205
213
|
|
|
206
214
|
def get_strike_vector(strike: NumericInput, degrees: bool = True) -> np.ndarray:
|
|
207
|
-
"""Return
|
|
215
|
+
"""Return strike direction vector(s) from strike angle(s).
|
|
208
216
|
|
|
209
217
|
Parameters
|
|
210
218
|
----------
|
|
211
|
-
strike :
|
|
212
|
-
strike
|
|
219
|
+
strike : NumericInput
|
|
220
|
+
Single strike angle or array-like of strike angles, measured clockwise from North.
|
|
213
221
|
degrees : bool, optional
|
|
214
|
-
|
|
222
|
+
Whether the input angles are in degrees. If False, angles are assumed to be in radians.
|
|
223
|
+
Default is True.
|
|
215
224
|
|
|
216
225
|
Returns
|
|
217
226
|
-------
|
|
218
227
|
np.ndarray
|
|
219
|
-
vector
|
|
228
|
+
Array of shape (3, n) where each column is a 3D unit vector (x, y, z) representing
|
|
229
|
+
the horizontal strike direction. The z-component is always 0.
|
|
220
230
|
|
|
221
231
|
"""
|
|
222
232
|
if isinstance(strike, numbers.Number):
|
|
@@ -236,6 +246,21 @@ def get_strike_vector(strike: NumericInput, degrees: bool = True) -> np.ndarray:
|
|
|
236
246
|
|
|
237
247
|
|
|
238
248
|
def get_dip_vector(strike, dip):
|
|
249
|
+
"""Return the dip vector based on strike and dip angles.
|
|
250
|
+
|
|
251
|
+
Parameters
|
|
252
|
+
----------
|
|
253
|
+
strike : float
|
|
254
|
+
Strike angle in degrees, measured clockwise from North.
|
|
255
|
+
dip : float
|
|
256
|
+
Dip angle in degrees, measured from the horizontal plane.
|
|
257
|
+
|
|
258
|
+
Returns
|
|
259
|
+
-------
|
|
260
|
+
np.ndarray
|
|
261
|
+
Unit vector (length 3) representing the dip direction in 3D space.
|
|
262
|
+
|
|
263
|
+
"""
|
|
239
264
|
v = np.array(
|
|
240
265
|
[
|
|
241
266
|
-np.cos(np.deg2rad(-strike)) * np.cos(-np.deg2rad(dip)),
|
|
@@ -247,6 +272,23 @@ def get_dip_vector(strike, dip):
|
|
|
247
272
|
|
|
248
273
|
|
|
249
274
|
def regular_tetraherdron_for_points(xyz, scale_parameter):
|
|
275
|
+
"""Generate regular tetrahedrons centered at given 3D points.
|
|
276
|
+
|
|
277
|
+
Parameters
|
|
278
|
+
----------
|
|
279
|
+
xyz : np.ndarray
|
|
280
|
+
Array of shape (n, 3) representing the coordinates of n points in 3D space,
|
|
281
|
+
which will serve as the centers of the generated tetrahedrons.
|
|
282
|
+
scale_parameter : float
|
|
283
|
+
Scaling factor controlling the size of the regular tetrahedrons.
|
|
284
|
+
|
|
285
|
+
Returns
|
|
286
|
+
-------
|
|
287
|
+
np.ndarray
|
|
288
|
+
Array of shape (n, 4, 3) representing n regular tetrahedrons, where each
|
|
289
|
+
tetrahedron has 4 vertices in 3D space, positioned relative to the corresponding center point.
|
|
290
|
+
|
|
291
|
+
"""
|
|
250
292
|
regular_tetrahedron = np.array(
|
|
251
293
|
[
|
|
252
294
|
[np.sqrt(8 / 9), 0, -1 / 3],
|
|
@@ -264,8 +306,23 @@ def regular_tetraherdron_for_points(xyz, scale_parameter):
|
|
|
264
306
|
|
|
265
307
|
|
|
266
308
|
def gradient_from_tetrahedron(tetrahedron, value):
|
|
267
|
-
"""
|
|
268
|
-
|
|
309
|
+
"""Compute the gradient of values within tetrahedral elements
|
|
310
|
+
|
|
311
|
+
Parameters
|
|
312
|
+
----------
|
|
313
|
+
tetrahedron : np.ndarray
|
|
314
|
+
Array of shape (n, 4, 3) representing the coordinates of tetrahedral elements,
|
|
315
|
+
where each tetrahedron is defined by 4 vertices in 3D space.
|
|
316
|
+
value : np.ndarray
|
|
317
|
+
Array of shape (n, 4) representing the scalar values at the 4 vertices
|
|
318
|
+
of each tetrahedron.
|
|
319
|
+
|
|
320
|
+
Returns
|
|
321
|
+
-------
|
|
322
|
+
np.ndarray
|
|
323
|
+
Array of shape (n, 3) representing the gradient vector of the scalar field
|
|
324
|
+
inside each tetrahedral element.
|
|
325
|
+
|
|
269
326
|
"""
|
|
270
327
|
tetrahedron = tetrahedron.reshape(-1, 4, 3)
|
|
271
328
|
m = np.array(
|
LoopStructural/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "1.6.
|
|
1
|
+
__version__ = "1.6.15"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: LoopStructural
|
|
3
|
-
Version: 1.6.
|
|
3
|
+
Version: 1.6.15
|
|
4
4
|
Summary: 3D geological modelling
|
|
5
5
|
Author-email: Lachlan Grose <lachlan.grose@monash.edu>
|
|
6
6
|
License: MIT
|
|
@@ -34,7 +34,7 @@ Requires-Dist: tqdm; extra == "all"
|
|
|
34
34
|
Provides-Extra: visualisation
|
|
35
35
|
Requires-Dist: matplotlib; extra == "visualisation"
|
|
36
36
|
Requires-Dist: pyvista; extra == "visualisation"
|
|
37
|
-
Requires-Dist:
|
|
37
|
+
Requires-Dist: loopstructuralvisualisation>=0.1.14; extra == "visualisation"
|
|
38
38
|
Provides-Extra: export
|
|
39
39
|
Requires-Dist: geoh5py; extra == "export"
|
|
40
40
|
Requires-Dist: pyevtk; extra == "export"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
LoopStructural/__init__.py,sha256=fg_Vm1aMDYIf_CffTFopLsTx21u6deLaI7JMVpRYdOI,1378
|
|
2
|
-
LoopStructural/version.py,sha256=
|
|
2
|
+
LoopStructural/version.py,sha256=Pie9fpkEEQtWduVE5VudTkNuOKHw2-cSLQQzkG-8ENk,23
|
|
3
3
|
LoopStructural/datasets/__init__.py,sha256=ylb7fzJU_DyQ73LlwQos7VamqkDSGITbbnoKg7KAOmE,677
|
|
4
4
|
LoopStructural/datasets/_base.py,sha256=FB_D5ybBYHoaNbycdkpZcRffzjrrL1xp9X0k-pyob9Y,7618
|
|
5
5
|
LoopStructural/datasets/_example_models.py,sha256=Zg33IeUyh4C-lC0DRMLqCDP2IrX8L-gNV1WxJwBGjzM,113
|
|
@@ -29,50 +29,52 @@ LoopStructural/datasets/data/geological_map_data/stratigraphic_order.csv,sha256=
|
|
|
29
29
|
LoopStructural/datasets/data/geological_map_data/stratigraphic_orientations.csv,sha256=RysyqUAIjY6iIDUfTh11n9QUQWXB_qxKnZeN_DqNzlY,26745
|
|
30
30
|
LoopStructural/datasets/data/geological_map_data/stratigraphic_thickness.csv,sha256=pnSmG-wL8-kxuoHo_pgpJrfTmsZOzc8L0vxpBRh3r8A,355
|
|
31
31
|
LoopStructural/datatypes/__init__.py,sha256=lVg64DnynMm58qvYTjLrcyWH7vk2ngr9JGMo5FaiALI,160
|
|
32
|
-
LoopStructural/datatypes/_bounding_box.py,sha256=
|
|
33
|
-
LoopStructural/datatypes/_point.py,sha256=
|
|
32
|
+
LoopStructural/datatypes/_bounding_box.py,sha256=wjjqTTbdvBbmdCZZNhLe2lsnOtJd9PRv9r1djeZK2S4,18961
|
|
33
|
+
LoopStructural/datatypes/_point.py,sha256=R-PY8PfN72fLY3OmnlyHxTxSXZAzwbVbbjQ7qV_Ef-0,7679
|
|
34
34
|
LoopStructural/datatypes/_structured_grid.py,sha256=mc-UM1Gh_BjHFItuPE4FF5wvGzJnSqF2MTx_xvrwcTk,5088
|
|
35
35
|
LoopStructural/datatypes/_surface.py,sha256=5BpPKVS4X3Kq1k3YxxAofKMgxdXhnOIcDi6NzKn2p2Q,6652
|
|
36
|
-
LoopStructural/export/exporters.py,sha256=
|
|
36
|
+
LoopStructural/export/exporters.py,sha256=ObnNL2MxBzmPHYuiq5DAo14dJ9Mrk-_gZWoo6mATDgI,17223
|
|
37
37
|
LoopStructural/export/file_formats.py,sha256=0xKyYSW4Jv_4jsXwusg-WO6PNUhZKd6HdWSqGSaPve8,232
|
|
38
38
|
LoopStructural/export/geoh5.py,sha256=jLFKC5EB0azT3PgJPtkJzi3_CG28RLgP2FuENAGCQMI,4313
|
|
39
39
|
LoopStructural/export/gocad.py,sha256=cQ6v7ZD0CVubt3c2f9EwAYrziu5bEFSWBtx0uade5mg,3370
|
|
40
40
|
LoopStructural/export/omf_wrapper.py,sha256=4vcF4WOQIVEYsWrfATgKCDh8nUybLTbrlXnCxZ_3fkU,3392
|
|
41
|
-
LoopStructural/interpolators/__init__.py,sha256=
|
|
41
|
+
LoopStructural/interpolators/__init__.py,sha256=g3XgNg3KcWef4kCNPFeqSuiml2LXVZ8xbIoCphpWntQ,4180
|
|
42
42
|
LoopStructural/interpolators/_api.py,sha256=EC4ogG2uPq-z_pgNGd_eTieTl92eaZ-rjyoFwXiHL_s,7839
|
|
43
43
|
LoopStructural/interpolators/_builders.py,sha256=B49KsxB8RRN6IHDfGT43nXWe_Av1SVVT8vm2Nh1oEiQ,6758
|
|
44
|
+
LoopStructural/interpolators/_constant_norm.py,sha256=gGaDGDoEzfnL4b6386YwInCxIA-Rog2p288Z4HsXMaA,7708
|
|
44
45
|
LoopStructural/interpolators/_discrete_fold_interpolator.py,sha256=eDe0R1lcQ0AuMcv7zlpu5c-soCv7AybIqQAuN2vFE3M,6542
|
|
45
|
-
LoopStructural/interpolators/_discrete_interpolator.py,sha256=
|
|
46
|
-
LoopStructural/interpolators/_finite_difference_interpolator.py,sha256=
|
|
47
|
-
LoopStructural/interpolators/_geological_interpolator.py,sha256=
|
|
46
|
+
LoopStructural/interpolators/_discrete_interpolator.py,sha256=bPGJ1CrvLmz3m86JkXAiw7WbfbGEeGXR5cklDX54PQU,26083
|
|
47
|
+
LoopStructural/interpolators/_finite_difference_interpolator.py,sha256=qc7zpqJka16I7yv-GigjQxF0hWRRHyWpHm8dHersy_8,18712
|
|
48
|
+
LoopStructural/interpolators/_geological_interpolator.py,sha256=BXUJD1OrSbgZbJwe884FDkew0m1XxiG1mtY5Og_CFJE,11196
|
|
48
49
|
LoopStructural/interpolators/_interpolator_builder.py,sha256=Z8bhmco5aSQX19A8It2SB_rG61wnlyshWfp3ivm8rU0,4586
|
|
49
50
|
LoopStructural/interpolators/_interpolator_factory.py,sha256=fbjebXSe5IgTol1tnBlnsw9gD426v-TGkX3gquIg7LI,2782
|
|
51
|
+
LoopStructural/interpolators/_interpolatortype.py,sha256=q8U9JGyFpO2FBA9XsMI5ojv3TV1LYqyvYHzLAbHcj9A,593
|
|
50
52
|
LoopStructural/interpolators/_operator.py,sha256=PZOUzq9OMaJdG151dSLIo7AxRuhTj6-zEAzFZo-EOJU,1114
|
|
51
|
-
LoopStructural/interpolators/_p1interpolator.py,sha256=
|
|
53
|
+
LoopStructural/interpolators/_p1interpolator.py,sha256=o602nLrUbBQTG9G2nBtv9xUQtlgs0kyT8G1wZuyZl2M,8955
|
|
52
54
|
LoopStructural/interpolators/_p2interpolator.py,sha256=UT-As5RNsmOwHOzO_6FiRcAwlNHfi4ILbJw2LGpwKAw,10274
|
|
53
|
-
LoopStructural/interpolators/_surfe_wrapper.py,sha256=
|
|
55
|
+
LoopStructural/interpolators/_surfe_wrapper.py,sha256=BwHOR2aV-SZU0IgcN03iZT_T-Z5EVXjDQ7Pr-a6t4uI,6932
|
|
54
56
|
LoopStructural/interpolators/_cython/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
|
-
LoopStructural/interpolators/supports/_2d_base_unstructured.py,sha256=
|
|
57
|
+
LoopStructural/interpolators/supports/_2d_base_unstructured.py,sha256=1bOP-BZk1AcBSVRh2IVPCpKSYibwgzbnlC_2xX0xBGA,11879
|
|
56
58
|
LoopStructural/interpolators/supports/_2d_p1_unstructured.py,sha256=okcy56nyjuedmknQn_95V2tm0kdMA-oJcD3U2jU8u0w,2637
|
|
57
59
|
LoopStructural/interpolators/supports/_2d_p2_unstructured.py,sha256=TeBVtT1PMV7CKzmnFZke37acMoFxouer20cskS7pVoE,10422
|
|
58
|
-
LoopStructural/interpolators/supports/_2d_structured_grid.py,sha256=
|
|
60
|
+
LoopStructural/interpolators/supports/_2d_structured_grid.py,sha256=mqHkb_J2zQ09JuFXtZ-0iXlKMQlFM7voTdicCURaiqA,17004
|
|
59
61
|
LoopStructural/interpolators/supports/_2d_structured_tetra.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
|
-
LoopStructural/interpolators/supports/_3d_base_structured.py,sha256=
|
|
62
|
+
LoopStructural/interpolators/supports/_3d_base_structured.py,sha256=h0lDiZLwk08cGS4YGix3oaHJ1uFsdCGQlKUGb_Wy0Mc,17134
|
|
61
63
|
LoopStructural/interpolators/supports/_3d_p2_tetra.py,sha256=CqGVJRUMxbPQZDhhopNt_s9gVhMqh4YbjQyDZonoyxc,11574
|
|
62
|
-
LoopStructural/interpolators/supports/_3d_structured_grid.py,sha256=
|
|
63
|
-
LoopStructural/interpolators/supports/_3d_structured_tetra.py,sha256=
|
|
64
|
+
LoopStructural/interpolators/supports/_3d_structured_grid.py,sha256=ha32EmyN4EouxEeEPIMiQL3yq8zDHQZRcg2yOkiDPmY,17476
|
|
65
|
+
LoopStructural/interpolators/supports/_3d_structured_tetra.py,sha256=zF76el1JuNTEaWonqH2MnzcFn4DmnCAwURN6PQ8N_Ig,26577
|
|
64
66
|
LoopStructural/interpolators/supports/_3d_unstructured_tetra.py,sha256=_peXMTMxctuWNOL74AHxzw0b_1sP5glvbJigIvIkK9I,23867
|
|
65
67
|
LoopStructural/interpolators/supports/__init__.py,sha256=V0JjixoBIUZVAo5MmqARR67xDOoQwnb4G3SXeOMRSyQ,1603
|
|
66
68
|
LoopStructural/interpolators/supports/_aabb.py,sha256=Z-kH_u6c6izak0aHG3Uo14PEKQeZmYlevLDC32Q06xk,3208
|
|
67
69
|
LoopStructural/interpolators/supports/_base_support.py,sha256=pYzsmeBu4kLaD9ZKsz_dfjVpfuAd00xENqOQC9Xw5QY,2501
|
|
68
70
|
LoopStructural/interpolators/supports/_face_table.py,sha256=Hyj4Io63NkPRN8ab9uDHyec-2Kb8BLY_xBF6STNlvBw,3095
|
|
69
71
|
LoopStructural/interpolators/supports/_support_factory.py,sha256=XNAxnr-JS3KEhdsoZeJ-VaLTJwlvxgBuRMCqYrCDW18,1485
|
|
70
|
-
LoopStructural/modelling/__init__.py,sha256=
|
|
72
|
+
LoopStructural/modelling/__init__.py,sha256=a-bq2gDhyUlcky5l9kl_IP3ExMdohkgYjQz2V8madQE,902
|
|
71
73
|
LoopStructural/modelling/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
72
|
-
LoopStructural/modelling/core/geological_model.py,sha256=
|
|
74
|
+
LoopStructural/modelling/core/geological_model.py,sha256=2NIVrPHu_8rx3Cgp9oPgFazBWHUI0dLs7vWFngfN3g0,65272
|
|
73
75
|
LoopStructural/modelling/features/__init__.py,sha256=Vf-qd5EDBtJ1DpuXXyCcw2-wf6LWPRW5wzxDEO3vOc8,939
|
|
74
76
|
LoopStructural/modelling/features/_analytical_feature.py,sha256=U_g86LgQhYY2359rdsDqpvziYwqrWkc5EdvhJARiUWo,3597
|
|
75
|
-
LoopStructural/modelling/features/_base_geological_feature.py,sha256=
|
|
77
|
+
LoopStructural/modelling/features/_base_geological_feature.py,sha256=kGyrbb8nNzfi-M8WSrVMEQYKtxThdcBxaji5HKXtAqw,13483
|
|
76
78
|
LoopStructural/modelling/features/_cross_product_geological_feature.py,sha256=GIyCHUdE6F-bse2e4puG9V2f7qRtDVfby5PRe2BboD4,3021
|
|
77
79
|
LoopStructural/modelling/features/_geological_feature.py,sha256=u6pbKj9BujX1Ijj5eVdhwGDNjrIAI16CpiAn5n8g3RY,11279
|
|
78
80
|
LoopStructural/modelling/features/_lambda_geological_feature.py,sha256=GiB19l6v5WvvR8CitATZvCwaOfRyLuzchoXzpNupsfM,5743
|
|
@@ -84,10 +86,10 @@ LoopStructural/modelling/features/builders/__init__.py,sha256=Gqld1C-PcaXfJ8vpkW
|
|
|
84
86
|
LoopStructural/modelling/features/builders/_base_builder.py,sha256=N3txGC98V08A8-k2TLdoIWgWLfblZ91kaTvciPq_QVM,3750
|
|
85
87
|
LoopStructural/modelling/features/builders/_fault_builder.py,sha256=CeQnvgDrgMIbyPV6nB0qnpY5PJG1OYTJIukRXv4df1E,25324
|
|
86
88
|
LoopStructural/modelling/features/builders/_folded_feature_builder.py,sha256=1_0BVTzcvmFl6K3_lX-jF0tiMFPmS8j6vPeSLn9MbrE,6607
|
|
87
|
-
LoopStructural/modelling/features/builders/_geological_feature_builder.py,sha256=
|
|
89
|
+
LoopStructural/modelling/features/builders/_geological_feature_builder.py,sha256=tQJJol1U5wH6V0Rw3OgigCFPssv8uOPQ5jdwdLFg3cc,22015
|
|
88
90
|
LoopStructural/modelling/features/builders/_structural_frame_builder.py,sha256=ms3-fuFpDEarjzYU5W499TquOIlTwHPUibVxIypfmWY,8019
|
|
89
91
|
LoopStructural/modelling/features/fault/__init__.py,sha256=4u0KfYzmoO-ddFGo9qd9ov0gBoLqBiPAUsaw5zhEOAQ,189
|
|
90
|
-
LoopStructural/modelling/features/fault/_fault_function.py,sha256=
|
|
92
|
+
LoopStructural/modelling/features/fault/_fault_function.py,sha256=QEPh2jIvgD68hEJc5SM5xuMzZw-93V1me1ZbK9G2TB0,12655
|
|
91
93
|
LoopStructural/modelling/features/fault/_fault_function_feature.py,sha256=4m0jVNx7ewrVI0pECI1wNciv8Cy8FzhZrYDjKJ_e2GU,2558
|
|
92
94
|
LoopStructural/modelling/features/fault/_fault_segment.py,sha256=dNTCY0ZyC8krrL1suSnhywSE_i5V_VZ4DJ2BieirkhI,18305
|
|
93
95
|
LoopStructural/modelling/features/fold/__init__.py,sha256=pOv20yQvshZozvmO_YFw2E7Prp9DExlm855N-0SnxbQ,175
|
|
@@ -108,11 +110,11 @@ LoopStructural/modelling/input/project_file.py,sha256=WhJkMfDK9uE7MK7HK-YK6ZOBAd
|
|
|
108
110
|
LoopStructural/modelling/intrusions/__init__.py,sha256=EpZK3cHJwGQhPUYIwKCKu8vkNdt_nOgWF0zfhiqDYDA,712
|
|
109
111
|
LoopStructural/modelling/intrusions/geom_conceptual_models.py,sha256=jwTlhYySUj7z4DEnJoi4AINZB_N3-SW6ONRFL66OsW0,3665
|
|
110
112
|
LoopStructural/modelling/intrusions/geometric_scaling_functions.py,sha256=PK3qf0TiK-WYIBGG7fYhTD1hwlUN0s75BK8d53SLYuQ,3209
|
|
111
|
-
LoopStructural/modelling/intrusions/intrusion_builder.py,sha256=
|
|
113
|
+
LoopStructural/modelling/intrusions/intrusion_builder.py,sha256=PtNLDreUZTGodMwtk302TV_ifcyaR0GQPx-G7XL6wkQ,26388
|
|
112
114
|
LoopStructural/modelling/intrusions/intrusion_feature.py,sha256=ESjtikHFJQzUnowbYiY7UZ_kYdV2QHobQoRJ2far9Vc,15489
|
|
113
|
-
LoopStructural/modelling/intrusions/intrusion_frame_builder.py,sha256=
|
|
115
|
+
LoopStructural/modelling/intrusions/intrusion_frame_builder.py,sha256=YEJv2GURAL8bW6J1KscM69ZVx9yoKVQKF_gXbjB513I,40150
|
|
114
116
|
LoopStructural/modelling/intrusions/intrusion_support_functions.py,sha256=wodakheMD62WJyoKnyX8UO-C1pje0I-5kHQEoDqShzo,13951
|
|
115
|
-
LoopStructural/utils/__init__.py,sha256=
|
|
117
|
+
LoopStructural/utils/__init__.py,sha256=t-vJQ0cF2DrjSRtAfuPEL4hc73XJyQno7PucBnd-fu8,950
|
|
116
118
|
LoopStructural/utils/_surface.py,sha256=Eg7x1GGfELl7bPe21_wU96Dn4JWJNReEFxwq-aIV4A4,6165
|
|
117
119
|
LoopStructural/utils/_transformation.py,sha256=peuLPH3BJ5DxnPbOuNKcqK4eXhAXdbT540L1OIsO3v0,5404
|
|
118
120
|
LoopStructural/utils/colours.py,sha256=-KRf1MXKx4L8TXnwyiunmKAX4tfy0qG68fRadyfn_bM,1163
|
|
@@ -120,17 +122,17 @@ LoopStructural/utils/config.py,sha256=ITGOtZTo2_QBwXkG_0AFANfE90J9siCXLzxypVmg9Q
|
|
|
120
122
|
LoopStructural/utils/dtm_creator.py,sha256=-yqGG0wyEJfTCCDghz058wull1q3zGFASjeu8oDgYnk,535
|
|
121
123
|
LoopStructural/utils/exceptions.py,sha256=SJboJ7ncMqVX-ib7MMizClwMrFZRHQhjZr2eCnVwnQE,500
|
|
122
124
|
LoopStructural/utils/features.py,sha256=WCatS4lYBrURNvWvWwhOsDVUod9KIPNq3x0OHPbWctU,241
|
|
123
|
-
LoopStructural/utils/helper.py,sha256=
|
|
125
|
+
LoopStructural/utils/helper.py,sha256=2yt_kdQIhRfik2zSAu4UhPigAM7eif1OB093ddAYtXQ,5857
|
|
124
126
|
LoopStructural/utils/json_encoder.py,sha256=5YNouf1TlhjEqOYgthd07MRXc0JLgxern-nyKSZ__ws,403
|
|
125
127
|
LoopStructural/utils/linalg.py,sha256=tBXyu6NXcG2AcPuzUMnkVI4ncZWtE_MPHGj2PLXRwfY,123
|
|
126
128
|
LoopStructural/utils/logging.py,sha256=dIUWEsS2lT4G1dsf4ZYXknTR7eQkrgvGA4b_E0vMIRU,2402
|
|
127
|
-
LoopStructural/utils/maths.py,sha256=
|
|
129
|
+
LoopStructural/utils/maths.py,sha256=KaLj9RHsxdaSkEHm4t0JEzykhiuETAV14KpjL6lknWY,10374
|
|
128
130
|
LoopStructural/utils/regions.py,sha256=SjCC40GI7_n03G4mlcmvyrBgJFbxnvB3leBzXWco37o,3891
|
|
129
131
|
LoopStructural/utils/typing.py,sha256=29uVSTZdzXXH-jdlaYyBWZ1gQ2-nlZ2-XoVgG_PXNFY,157
|
|
130
132
|
LoopStructural/utils/utils.py,sha256=2Z4zVE6G752-SPmM29zebk82bROJxEwi_YiiJjcVED4,2438
|
|
131
133
|
LoopStructural/visualisation/__init__.py,sha256=5BDgKor8-ae6DrS7IZybJ3Wq_pTnCchxuY4EgzA7v1M,318
|
|
132
|
-
loopstructural-1.6.
|
|
133
|
-
loopstructural-1.6.
|
|
134
|
-
loopstructural-1.6.
|
|
135
|
-
loopstructural-1.6.
|
|
136
|
-
loopstructural-1.6.
|
|
134
|
+
loopstructural-1.6.15.dist-info/licenses/LICENSE,sha256=ZqGeNFOgmYevj7Ld7Q-kR4lAxWXuBRUdUmPC6XM_py8,1071
|
|
135
|
+
loopstructural-1.6.15.dist-info/METADATA,sha256=2aOi3Osgig1KIQcpmKAyTDOJbo1DksD-mA3SICfAbI0,6453
|
|
136
|
+
loopstructural-1.6.15.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
137
|
+
loopstructural-1.6.15.dist-info/top_level.txt,sha256=QtQErKzYHfg6ddxTQ1NyaTxXBVM6qAqrM_vxEPyXZLg,15
|
|
138
|
+
loopstructural-1.6.15.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|