LoopStructural 1.8.2__tar.gz → 1.8.4__tar.gz
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.
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/core/_model_feature_factory.py +22 -4
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/core/_model_relationships.py +10 -3
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/core/geological_model.py +2 -1
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/builders/_folded_feature_builder.py +7 -1
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fold/_fold.py +3 -14
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural.egg-info/PKG-INFO +1 -1
- {loopstructural-1.8.2 → loopstructural-1.8.4}/PKG-INFO +1 -1
- {loopstructural-1.8.2 → loopstructural-1.8.4}/pyproject.toml +2 -1
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LICENSE +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/_base.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/_example_models.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/claudius.csv +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/claudiusbb.txt +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/duplex.csv +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/duplexbb.txt +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/fault_trace/fault_trace.cpg +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/fault_trace/fault_trace.dbf +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/fault_trace/fault_trace.prj +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/fault_trace/fault_trace.shp +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/fault_trace/fault_trace.shx +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/geological_map_data/bbox.csv +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/geological_map_data/contacts.csv +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/geological_map_data/fault_displacement.csv +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/geological_map_data/fault_edges.txt +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/geological_map_data/fault_locations.csv +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/geological_map_data/fault_orientations.csv +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/geological_map_data/stratigraphic_order.csv +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/geological_map_data/stratigraphic_orientations.csv +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/geological_map_data/stratigraphic_thickness.csv +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/intrusion.csv +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/intrusionbb.txt +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/onefoldbb.txt +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/onefolddata.csv +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/refolded_bb.txt +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/refolded_fold.csv +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/tabular_intrusion.csv +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datatypes/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/export/exporters.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/export/file_formats.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/export/geoh5.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/export/gocad.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/export/omf_wrapper.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/geometry/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/geometry/_structured_grid.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/interpolators/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/interpolators/_api.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/interpolators/_builders.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/interpolators/_constant_norm.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/interpolators/_cython/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/interpolators/_discrete_fold_interpolator.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/interpolators/_interpolatortype.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/core/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/core/_feature_registry.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/core/_model_exporter.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/core/_model_serializer.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/core/fault_topology.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/core/stratigraphic_column.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/_analytical_feature.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/_base_geological_feature.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/_cross_product_geological_feature.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/_feature_converters.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/_geological_feature.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/_lambda_geological_feature.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/_projected_vector_feature.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/_region.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/_structural_frame.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/_unconformity_feature.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/builders/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/builders/_analytical_fold_builder.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/builders/_base_builder.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/builders/_fault_builder.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/builders/_geological_feature_builder.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/builders/_structural_frame_builder.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fault/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fault/_fault_function.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fault/_fault_function_feature.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fault/_fault_segment.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fold/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fold/_fold_rotation_angle_feature.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fold/_foldframe.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fold/_svariogram.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fold/fold_function/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fold/fold_function/_base_fold_rotation_angle.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fold/fold_function/_fourier_series_fold_rotation_angle.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fold/fold_function/_lambda_fold_rotation_angle.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fold/fold_function/_trigo_fold_rotation_angle.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/input/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/input/fault_network.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/input/map2loop_processor.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/input/process_data.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/input/project_file.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/intrusions/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/intrusions/geom_conceptual_models.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/intrusions/geometric_scaling_functions.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/intrusions/intrusion_builder.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/intrusions/intrusion_feature.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/intrusions/intrusion_frame.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/intrusions/intrusion_frame_builder.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/_api_registry.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/_surface.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/_transformation.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/colours.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/config.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/dtm_creator.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/exceptions.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/features.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/helper.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/json_encoder.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/linalg.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/logging.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/maths.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/observer.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/regions.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/typing.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/utils/utils.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/visualisation/__init__.py +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural.egg-info/SOURCES.txt +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural.egg-info/dependency_links.txt +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural.egg-info/requires.txt +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural.egg-info/top_level.txt +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/README.md +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/setup.cfg +0 -0
- {loopstructural-1.8.2 → loopstructural-1.8.4}/setup.py +0 -0
|
@@ -31,6 +31,9 @@ from ...utils import getLogger
|
|
|
31
31
|
|
|
32
32
|
logger = getLogger(__name__)
|
|
33
33
|
|
|
34
|
+
# interpolator types that implement fold constraints
|
|
35
|
+
FOLD_INTERPOLATOR_TYPES = ("DFI", "P2Fold")
|
|
36
|
+
|
|
34
37
|
|
|
35
38
|
class ModelFeatureFactory:
|
|
36
39
|
@staticmethod
|
|
@@ -216,6 +219,13 @@ class ModelFeatureFactory:
|
|
|
216
219
|
fold_frame : FoldFrame
|
|
217
220
|
svario : Boolean
|
|
218
221
|
whether to calculate svariograms, saves time if avoided
|
|
222
|
+
interpolatortype : str
|
|
223
|
+
``"DFI"`` (default, piecewise linear) or ``"P2Fold"`` (piecewise quadratic).
|
|
224
|
+
Other values are replaced by ``"DFI"`` with a warning.
|
|
225
|
+
nelements : int
|
|
226
|
+
requested structured-grid cell budget. Each cell splits into five
|
|
227
|
+
tetrahedra. For ``"P2Fold"``, a request of 1e4 gave about 56k tets
|
|
228
|
+
and 86k unknowns in the Bermagui validation; inspect the actual counts
|
|
219
229
|
kwargs
|
|
220
230
|
additional kwargs to be passed through to other functions
|
|
221
231
|
|
|
@@ -227,6 +237,7 @@ class ModelFeatureFactory:
|
|
|
227
237
|
Notes
|
|
228
238
|
-----
|
|
229
239
|
|
|
240
|
+
- The P2 mesh is larger than the model box because of ``buffer``.
|
|
230
241
|
- Building a folded foliation uses the fold interpolation code from Laurent et al., 2016
|
|
231
242
|
and fold profile fitting from Grose et al., 2017. For more information about the fold modelling
|
|
232
243
|
see :class:`LoopStructural.modelling.features.fold.FoldEvent`,
|
|
@@ -245,8 +256,11 @@ class ModelFeatureFactory:
|
|
|
245
256
|
|
|
246
257
|
fold = FoldEvent(fold_frame, name=f"Fold_{foliation_name}", invert_norm=invert_fold_norm)
|
|
247
258
|
|
|
248
|
-
if interpolatortype
|
|
249
|
-
logger.warning(
|
|
259
|
+
if interpolatortype not in FOLD_INTERPOLATOR_TYPES:
|
|
260
|
+
logger.warning(
|
|
261
|
+
f"Folded foliation only supports {FOLD_INTERPOLATOR_TYPES} interpolators, "
|
|
262
|
+
f"changing {interpolatortype} to DFI"
|
|
263
|
+
)
|
|
250
264
|
interpolatortype = "DFI"
|
|
251
265
|
series_builder = FoldedFeatureBuilder(
|
|
252
266
|
interpolatortype=interpolatortype,
|
|
@@ -300,7 +314,10 @@ class ModelFeatureFactory:
|
|
|
300
314
|
fold_frame_data : pandas data frame, optional
|
|
301
315
|
data frame containing the fold frame data, if not specified uses the model data
|
|
302
316
|
interpolatortype : str
|
|
303
|
-
|
|
317
|
+
``"DFI"`` or ``"P2Fold"`` sets the interpolator of the first (fold) coordinate.
|
|
318
|
+
Any other value gives ``"DFI"``. The other two coordinates always use FDI.
|
|
319
|
+
``nelements`` is a structured-grid cell budget, not a literal
|
|
320
|
+
tetrahedron count. P2 adds edge nodes; inspect the actual dof.
|
|
304
321
|
fold_frame : StructuralFrame, optional
|
|
305
322
|
the fold frame for the fold if not specified uses last feature added
|
|
306
323
|
nelements : int
|
|
@@ -342,8 +359,9 @@ class ModelFeatureFactory:
|
|
|
342
359
|
raise TypeError("Please specify a FoldFrame")
|
|
343
360
|
fold = FoldEvent(fold_frame, name=f"Fold_{fold_frame_name}")
|
|
344
361
|
|
|
362
|
+
# the first coordinate carries the fold constraints, the others are plain FDI
|
|
345
363
|
interpolatortypes = [
|
|
346
|
-
"DFI",
|
|
364
|
+
interpolatortype if interpolatortype in FOLD_INTERPOLATOR_TYPES else "DFI",
|
|
347
365
|
"FDI",
|
|
348
366
|
"FDI",
|
|
349
367
|
]
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/core/_model_relationships.py
RENAMED
|
@@ -66,7 +66,8 @@ class FeatureRelationshipManager:
|
|
|
66
66
|
def add_domain_fault_below(model, domain_fault):
|
|
67
67
|
"""
|
|
68
68
|
Looks through the feature list and adds any the domain_fault to the features
|
|
69
|
-
that already exist in the stack until an unconformity
|
|
69
|
+
that already exist in the stack until an unconformity or another domain
|
|
70
|
+
fault is reached (that boundary is not cropped). domain faults
|
|
70
71
|
to the feature. The domain fault masks everything where the fault scalar field
|
|
71
72
|
is < 0 as being active when added to feature.
|
|
72
73
|
|
|
@@ -80,9 +81,15 @@ class FeatureRelationshipManager:
|
|
|
80
81
|
for f in reversed(model.features):
|
|
81
82
|
if f.name == domain_fault.name:
|
|
82
83
|
continue
|
|
83
|
-
f.
|
|
84
|
-
|
|
84
|
+
if f.type == FeatureType.UNCONFORMITY or f.type == FeatureType.DOMAINFAULT:
|
|
85
|
+
# An unconformity or domain fault added before this one is
|
|
86
|
+
# the boundary above the features this domain fault crops.
|
|
87
|
+
# It is a stopping point and is not itself cropped, else the
|
|
88
|
+
# boundary surface is removed on one side of this fault.
|
|
89
|
+
# This matches add_unconformity, which also stops before it
|
|
90
|
+
# crops.
|
|
85
91
|
break
|
|
92
|
+
f.add_region(region)
|
|
86
93
|
|
|
87
94
|
@staticmethod
|
|
88
95
|
def add_unconformity_above(model, feature):
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/core/geological_model.py
RENAMED
|
@@ -793,7 +793,8 @@ class GeologicalModel:
|
|
|
793
793
|
"""Create a folded foliation and add it to the model.
|
|
794
794
|
|
|
795
795
|
See :meth:`~._model_feature_factory.ModelFeatureFactory.build_folded_foliation`
|
|
796
|
-
for parameter documentation.
|
|
796
|
+
for parameter documentation. ``interpolatortype`` is ``"DFI"`` (default)
|
|
797
|
+
or ``"P2Fold"``.
|
|
797
798
|
Thin wrapper around :meth:`create_and_add_feature` (see
|
|
798
799
|
``API.md``); kept as a stable, unchanged entry point.
|
|
799
800
|
"""
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import numpy as np
|
|
2
2
|
|
|
3
3
|
from ....geometry import BoundingBox
|
|
4
|
+
from ....interpolators import InterpolatorType
|
|
4
5
|
from ....modelling.features import FeatureType
|
|
5
6
|
from ._geological_feature_builder import GeologicalFeatureBuilder
|
|
6
7
|
from ....modelling.features.fold.fold_function import FoldRotationType, get_fold_rotation_profile
|
|
@@ -71,8 +72,13 @@ class FoldedFeatureBuilder(GeologicalFeatureBuilder):
|
|
|
71
72
|
if not isinstance(feature_builder, GeologicalFeatureBuilder):
|
|
72
73
|
logger.error(f'Feature builder is {type(feature_builder)} not GeologicalFeatureBuilder')
|
|
73
74
|
raise TypeError("feature_builder must be an instance of GeologicalFeatureBuilder")
|
|
75
|
+
# keep the fold type of the source builder, DFI otherwise
|
|
76
|
+
source_type = getattr(feature_builder.interpolator, "type", None)
|
|
77
|
+
interpolatortype = (
|
|
78
|
+
'P2Fold' if source_type == InterpolatorType.PIECEWISE_QUADRATIC_FOLD else 'DFI'
|
|
79
|
+
)
|
|
74
80
|
builder = cls(
|
|
75
|
-
interpolatortype=
|
|
81
|
+
interpolatortype=interpolatortype,
|
|
76
82
|
bounding_box=feature_builder.model.bounding_box,
|
|
77
83
|
fold=fold,
|
|
78
84
|
nelements=feature_builder.interpolator.n_elements,
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fold/_fold.py
RENAMED
|
@@ -104,22 +104,11 @@ class FoldEvent:
|
|
|
104
104
|
dgz[mask, :] /= np.linalg.norm(dgz[mask, :], axis=1)[:, None]
|
|
105
105
|
R2 = self.rot_mat(fold_axis, self.fold_limb_rotation(gx))
|
|
106
106
|
fold_direction = np.einsum("ijk,ki->kj", R2, dgx)
|
|
107
|
-
fold_direction /= np.
|
|
108
|
-
# calculate dot product between fold_direction and axis
|
|
109
|
-
# if its less than 0 then inverse dgz
|
|
110
|
-
d = np.einsum("ij,ik->i", fold_direction, fold_axis)
|
|
107
|
+
fold_direction /= np.linalg.norm(fold_direction, axis=1)[:, None]
|
|
111
108
|
|
|
112
109
|
if self.invert_norm:
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
elif not self.invert_norm:
|
|
117
|
-
return fold_direction, fold_axis, dgz
|
|
118
|
-
else:
|
|
119
|
-
logger.warning("invert fold frame param not valid. Defaulting to false.")
|
|
120
|
-
return fold_direction, fold_axis, dgz
|
|
121
|
-
|
|
122
|
-
# return fold_direction, fold_axis, dgz
|
|
110
|
+
dgz = -dgz
|
|
111
|
+
return fold_direction, fold_axis, dgz
|
|
123
112
|
|
|
124
113
|
# def get_regularisation_direction(self, points):
|
|
125
114
|
# self.foldframe.features[2].evaluate_gradient(points)
|
|
@@ -4,7 +4,7 @@ build-backend = 'setuptools.build_meta'
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = 'LoopStructural'
|
|
7
|
-
version = "1.8.
|
|
7
|
+
version = "1.8.4"
|
|
8
8
|
description = '3D geological modelling'
|
|
9
9
|
authors = [{ name = 'Lachlan Grose', email = 'lachlan.grose@monash.edu' }]
|
|
10
10
|
readme = 'README.md'
|
|
@@ -97,6 +97,7 @@ LoopStructural = { workspace = true }
|
|
|
97
97
|
[tool.pytest.ini_options]
|
|
98
98
|
addopts = "--import-mode=importlib"
|
|
99
99
|
testpaths = ["tests"]
|
|
100
|
+
pythonpath = ["."]
|
|
100
101
|
|
|
101
102
|
[tool.isort]
|
|
102
103
|
profile = 'black'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/refolded_fold.csv
RENAMED
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/datasets/data/tabular_intrusion.csv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/interpolators/_constant_norm.py
RENAMED
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/interpolators/_cython/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/interpolators/_interpolatortype.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/core/_feature_registry.py
RENAMED
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/core/_model_exporter.py
RENAMED
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/core/_model_serializer.py
RENAMED
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/core/fault_topology.py
RENAMED
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/core/stratigraphic_column.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/_structural_frame.py
RENAMED
|
File without changes
|
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/builders/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fault/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fold/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fold/_foldframe.py
RENAMED
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/features/fold/_svariogram.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/input/fault_network.py
RENAMED
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/input/map2loop_processor.py
RENAMED
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/input/process_data.py
RENAMED
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/input/project_file.py
RENAMED
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/intrusions/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{loopstructural-1.8.2 → loopstructural-1.8.4}/LoopStructural/modelling/intrusions/intrusion_frame.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|