gebpy 1.1.3__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.
- gebpy/__init__.py +55 -0
- gebpy/__pycache__/__init__.cpython-310.pyc +0 -0
- gebpy/adapters/__init__.py +0 -0
- gebpy/cli/__init__.py +0 -0
- gebpy/core/__init__.py +0 -0
- gebpy/core/chemistry/__init__.py +0 -0
- gebpy/core/chemistry/common.py +1369 -0
- gebpy/core/chemistry/elements.py +317 -0
- gebpy/core/chemistry/geochemistry.py +1728 -0
- gebpy/core/fluids/__init__.py +0 -0
- gebpy/core/io/__init__.py +0 -0
- gebpy/core/mathematics/__init__.py +0 -0
- gebpy/core/minerals/__init__.py +0 -0
- gebpy/core/minerals/carbonates.py +412 -0
- gebpy/core/minerals/common.py +555 -0
- gebpy/core/minerals/config.py +77 -0
- gebpy/core/minerals/cyclosilicates.py +0 -0
- gebpy/core/minerals/halides.py +0 -0
- gebpy/core/minerals/inosilicates.py +0 -0
- gebpy/core/minerals/nesosilicates.py +0 -0
- gebpy/core/minerals/organics.py +0 -0
- gebpy/core/minerals/oxides.py +589 -0
- gebpy/core/minerals/phosphates.py +0 -0
- gebpy/core/minerals/phospides.py +0 -0
- gebpy/core/minerals/phyllosilicates.py +436 -0
- gebpy/core/minerals/sorosilicates.py +0 -0
- gebpy/core/minerals/sulfates.py +0 -0
- gebpy/core/minerals/sulfides.py +459 -0
- gebpy/core/minerals/synthesis.py +201 -0
- gebpy/core/minerals/tectosilicates.py +433 -0
- gebpy/core/physics/__init__.py +0 -0
- gebpy/core/physics/common.py +53 -0
- gebpy/core/physics/geophysics.py +351 -0
- gebpy/core/rocks/__init__.py +0 -0
- gebpy/core/rocks/anisotropic_rocks.py +395 -0
- gebpy/core/rocks/common.py +95 -0
- gebpy/core/rocks/config.py +77 -0
- gebpy/core/rocks/isotropic_rocks.py +395 -0
- gebpy/core/rocks/sedimentary.py +385 -0
- gebpy/core/subsurface/__init__.py +0 -0
- gebpy/data_minerals/__init__.py +0 -0
- gebpy/data_minerals/albite.yaml +59 -0
- gebpy/data_minerals/anatase.yaml +43 -0
- gebpy/data_minerals/ankerite.yaml +47 -0
- gebpy/data_minerals/annite.yaml +57 -0
- gebpy/data_minerals/anorthite.yaml +59 -0
- gebpy/data_minerals/antigorite.yaml +53 -0
- gebpy/data_minerals/aragonite.yaml +48 -0
- gebpy/data_minerals/argutite.yaml +43 -0
- gebpy/data_minerals/arsenolite.yaml +40 -0
- gebpy/data_minerals/au3oxide.yaml +46 -0
- gebpy/data_minerals/avicennite.yaml +40 -0
- gebpy/data_minerals/azurite.yaml +53 -0
- gebpy/data_minerals/baddeleyite.yaml +49 -0
- gebpy/data_minerals/bismite.yaml +49 -0
- gebpy/data_minerals/boehmite.yaml +48 -0
- gebpy/data_minerals/brookite.yaml +46 -0
- gebpy/data_minerals/brucite.yaml +45 -0
- gebpy/data_minerals/bunsenite.yaml +40 -0
- gebpy/data_minerals/calcite.yaml +45 -0
- gebpy/data_minerals/cassiterite.yaml +43 -0
- gebpy/data_minerals/cerussite.yaml +48 -0
- gebpy/data_minerals/chamosite.yaml +56 -0
- gebpy/data_minerals/chlorite.yaml +75 -0
- gebpy/data_minerals/chromite.yaml +42 -0
- gebpy/data_minerals/chrysotile.yaml +53 -0
- gebpy/data_minerals/claudetite.yaml +49 -0
- gebpy/data_minerals/clinochlore.yaml +55 -0
- gebpy/data_minerals/cochromite.yaml +42 -0
- gebpy/data_minerals/corundum.yaml +43 -0
- gebpy/data_minerals/crocoite.yaml +51 -0
- gebpy/data_minerals/cuprite.yaml +40 -0
- gebpy/data_minerals/cuprospinel.yaml +42 -0
- gebpy/data_minerals/diaspore.yaml +48 -0
- gebpy/data_minerals/dolomite.yaml +47 -0
- gebpy/data_minerals/eastonite.yaml +57 -0
- gebpy/data_minerals/eskolaite.yaml +43 -0
- gebpy/data_minerals/fechlorite.yaml +61 -0
- gebpy/data_minerals/fecolumbite.yaml +48 -0
- gebpy/data_minerals/ferberite.yaml +51 -0
- gebpy/data_minerals/fetantalite.yaml +48 -0
- gebpy/data_minerals/franklinite.yaml +42 -0
- gebpy/data_minerals/gahnite.yaml +42 -0
- gebpy/data_minerals/galaxite.yaml +42 -0
- gebpy/data_minerals/geikielite.yaml +45 -0
- gebpy/data_minerals/gibbsite.yaml +51 -0
- gebpy/data_minerals/glauconite.yaml +69 -0
- gebpy/data_minerals/goethite.yaml +48 -0
- gebpy/data_minerals/groutite.yaml +48 -0
- gebpy/data_minerals/hematite.yaml +43 -0
- gebpy/data_minerals/hercynite.yaml +42 -0
- gebpy/data_minerals/huebnerite.yaml +51 -0
- gebpy/data_minerals/ikaite.yaml +53 -0
- gebpy/data_minerals/illite.yaml +55 -0
- gebpy/data_minerals/ilmenite.yaml +45 -0
- gebpy/data_minerals/jacobsite.yaml +42 -0
- gebpy/data_minerals/kalsilite.yaml +47 -0
- gebpy/data_minerals/kaolinite.yaml +59 -0
- gebpy/data_minerals/karelianite.yaml +43 -0
- gebpy/data_minerals/lime.yaml +40 -0
- gebpy/data_minerals/litharge.yaml +43 -0
- gebpy/data_minerals/magnesiochromite.yaml +42 -0
- gebpy/data_minerals/magnesioferrite.yaml +42 -0
- gebpy/data_minerals/magnesite.yaml +45 -0
- gebpy/data_minerals/magnetite.yaml +41 -0
- gebpy/data_minerals/malachite.yaml +53 -0
- gebpy/data_minerals/manganite.yaml +51 -0
- gebpy/data_minerals/manganochromite.yaml +42 -0
- gebpy/data_minerals/manganosite.yaml +40 -0
- gebpy/data_minerals/marialite.yaml +49 -0
- gebpy/data_minerals/massicot.yaml +46 -0
- gebpy/data_minerals/meionite.yaml +49 -0
- gebpy/data_minerals/mgchlorite.yaml +61 -0
- gebpy/data_minerals/mgcolumbite.yaml +48 -0
- gebpy/data_minerals/mgtantalite.yaml +48 -0
- gebpy/data_minerals/microcline.yaml +59 -0
- gebpy/data_minerals/minium.yaml +44 -0
- gebpy/data_minerals/mnchlorite.yaml +61 -0
- gebpy/data_minerals/mncolumbite.yaml +48 -0
- gebpy/data_minerals/mntantalite.yaml +48 -0
- gebpy/data_minerals/monteponite.yaml +40 -0
- gebpy/data_minerals/montmorillonite.yaml +77 -0
- gebpy/data_minerals/muscovite.yaml +55 -0
- gebpy/data_minerals/nanepheline.yaml +47 -0
- gebpy/data_minerals/nichlorite.yaml +61 -0
- gebpy/data_minerals/nichromite.yaml +42 -0
- gebpy/data_minerals/nimite.yaml +55 -0
- gebpy/data_minerals/nontronite.yaml +73 -0
- gebpy/data_minerals/orthoclase.yaml +53 -0
- gebpy/data_minerals/paratellurite.yaml +43 -0
- gebpy/data_minerals/pennantite.yaml +61 -0
- gebpy/data_minerals/periclase.yaml +40 -0
- gebpy/data_minerals/phlogopite.yaml +57 -0
- gebpy/data_minerals/plattnerite.yaml +43 -0
- gebpy/data_minerals/powellite.yaml +45 -0
- gebpy/data_minerals/pyrite.yaml +40 -0
- gebpy/data_minerals/pyrolusite.yaml +43 -0
- gebpy/data_minerals/pyrophanite.yaml +45 -0
- gebpy/data_minerals/pyrophyllite.yaml +59 -0
- gebpy/data_minerals/quartz.yaml +43 -0
- gebpy/data_minerals/rhodochrosite.yaml +45 -0
- gebpy/data_minerals/rutile.yaml +43 -0
- gebpy/data_minerals/saponite.yaml +77 -0
- gebpy/data_minerals/scheelite.yaml +45 -0
- gebpy/data_minerals/scrutinyite.yaml +46 -0
- gebpy/data_minerals/senarmontite.yaml +40 -0
- gebpy/data_minerals/siderite.yaml +45 -0
- gebpy/data_minerals/siderophyllite.yaml +57 -0
- gebpy/data_minerals/smithsonite.yaml +45 -0
- gebpy/data_minerals/spinel.yaml +42 -0
- gebpy/data_minerals/stishovite.yaml +43 -0
- gebpy/data_minerals/stolzite.yaml +45 -0
- gebpy/data_minerals/talc.yaml +53 -0
- gebpy/data_minerals/tistarite.yaml +43 -0
- gebpy/data_minerals/trevorite.yaml +42 -0
- gebpy/data_minerals/ulvoespinel.yaml +42 -0
- gebpy/data_minerals/uraninite.yaml +40 -0
- gebpy/data_minerals/valentinite.yaml +46 -0
- gebpy/data_minerals/vermiculite.yaml +69 -0
- gebpy/data_minerals/wulfenite.yaml +45 -0
- gebpy/data_minerals/wustite.yaml +40 -0
- gebpy/data_minerals/zincite.yaml +43 -0
- gebpy/data_minerals/zincochromite.yaml +42 -0
- gebpy/data_rocks/__init__.py +0 -0
- gebpy/data_rocks/dolostone.yaml +40 -0
- gebpy/data_rocks/limestone.yaml +40 -0
- gebpy/data_rocks/marl.yaml +50 -0
- gebpy/data_rocks/sandstone.yaml +39 -0
- gebpy/data_rocks/shale.yaml +50 -0
- gebpy/gebpy_app.py +8732 -0
- gebpy/gui/__init__.py +0 -0
- gebpy/lib/images/GebPy_Header.png +0 -0
- gebpy/lib/images/GebPy_Icon.png +0 -0
- gebpy/lib/images/GebPy_Logo.png +0 -0
- gebpy/main.py +29 -0
- gebpy/modules/__init__.py +0 -0
- gebpy/modules/__pycache__/__init__.cpython-310.pyc +0 -0
- gebpy/modules/__pycache__/metamorphics.cpython-310.pyc +0 -0
- gebpy/modules/__pycache__/silicates.cpython-310.pyc +0 -0
- gebpy/modules/carbonates.py +2658 -0
- gebpy/modules/chemistry.py +1369 -0
- gebpy/modules/core.py +1805 -0
- gebpy/modules/elements.py +317 -0
- gebpy/modules/evaporites.py +1299 -0
- gebpy/modules/exploration.py +1145 -0
- gebpy/modules/fluids.py +339 -0
- gebpy/modules/geochemistry.py +1727 -0
- gebpy/modules/geophysics.py +351 -0
- gebpy/modules/gui.py +9093 -0
- gebpy/modules/gui_elements.py +145 -0
- gebpy/modules/halides.py +485 -0
- gebpy/modules/igneous.py +2241 -0
- gebpy/modules/metamorphics.py +3222 -0
- gebpy/modules/mineralogy.py +442 -0
- gebpy/modules/minerals.py +7954 -0
- gebpy/modules/ore.py +1648 -0
- gebpy/modules/organics.py +530 -0
- gebpy/modules/oxides.py +9057 -0
- gebpy/modules/petrophysics.py +98 -0
- gebpy/modules/phosphates.py +589 -0
- gebpy/modules/phospides.py +194 -0
- gebpy/modules/plotting.py +619 -0
- gebpy/modules/pyllosilicates.py +380 -0
- gebpy/modules/sedimentary_rocks.py +908 -0
- gebpy/modules/sequences.py +2166 -0
- gebpy/modules/series.py +1625 -0
- gebpy/modules/silicates.py +11102 -0
- gebpy/modules/siliciclastics.py +1846 -0
- gebpy/modules/subsurface_2d.py +179 -0
- gebpy/modules/sulfates.py +1629 -0
- gebpy/modules/sulfides.py +4786 -0
- gebpy/plotting/__init__.py +0 -0
- gebpy/ui_nb/__init__.py +0 -0
- gebpy/user_data/.gitkeep +0 -0
- gebpy-1.1.3.dist-info/LICENSE +165 -0
- gebpy-1.1.3.dist-info/METADATA +207 -0
- gebpy-1.1.3.dist-info/RECORD +254 -0
- gebpy-1.1.3.dist-info/WHEEL +5 -0
- gebpy-1.1.3.dist-info/entry_points.txt +2 -0
- gebpy-1.1.3.dist-info/top_level.txt +1 -0
- modules/__init__.py +0 -0
- modules/carbonates.py +2658 -0
- modules/chemistry.py +1369 -0
- modules/core.py +1805 -0
- modules/elements.py +317 -0
- modules/evaporites.py +1299 -0
- modules/exploration.py +765 -0
- modules/fluids.py +339 -0
- modules/geochemistry.py +1727 -0
- modules/geophysics.py +337 -0
- modules/gui.py +9093 -0
- modules/gui_elements.py +145 -0
- modules/halides.py +485 -0
- modules/igneous.py +2196 -0
- modules/metamorphics.py +2699 -0
- modules/mineralogy.py +442 -0
- modules/minerals.py +7954 -0
- modules/ore.py +1628 -0
- modules/organics.py +530 -0
- modules/oxides.py +9057 -0
- modules/petrophysics.py +98 -0
- modules/phosphates.py +589 -0
- modules/phospides.py +194 -0
- modules/plotting.py +619 -0
- modules/pyllosilicates.py +380 -0
- modules/sedimentary_rocks.py +908 -0
- modules/sequences.py +2166 -0
- modules/series.py +1625 -0
- modules/silicates.py +11102 -0
- modules/siliciclastics.py +1830 -0
- modules/subsurface_2d.py +179 -0
- modules/sulfates.py +1629 -0
- modules/sulfides.py +4786 -0
- notebooks/__init__.py +0 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*-coding: utf-8 -*-
|
|
3
|
+
|
|
4
|
+
#-----------------------------------------------
|
|
5
|
+
|
|
6
|
+
# Name: subsurface_2d.py
|
|
7
|
+
# Author: Maximilian A. Beeskow
|
|
8
|
+
# Version: 1.0
|
|
9
|
+
# Date: 17.07.2021
|
|
10
|
+
|
|
11
|
+
#-----------------------------------------------
|
|
12
|
+
|
|
13
|
+
## MODULES
|
|
14
|
+
import numpy as np
|
|
15
|
+
import scipy.interpolate as interp
|
|
16
|
+
from numpy import round
|
|
17
|
+
import random as rd
|
|
18
|
+
from itertools import chain
|
|
19
|
+
from random import randint
|
|
20
|
+
from modules.carbonates import limestone, dolomite
|
|
21
|
+
from modules.siliciclastics import sandstone, shale, ore, Soil
|
|
22
|
+
from modules.igneous import plutonic, volcanic, Plutonic, Volcanic
|
|
23
|
+
from modules.evaporites import evaporites, Evaporites
|
|
24
|
+
from modules import minerals, sequences
|
|
25
|
+
from modules.elements import elements
|
|
26
|
+
from modules import fluids
|
|
27
|
+
|
|
28
|
+
class structural_geology:
|
|
29
|
+
#
|
|
30
|
+
def __init__(self):
|
|
31
|
+
pass
|
|
32
|
+
#
|
|
33
|
+
#def create_tilted_structures(self, y, dip=30):
|
|
34
|
+
# x = y*np.tan(dip*np.pi/180)
|
|
35
|
+
|
|
36
|
+
#
|
|
37
|
+
def generate_2d_horizontal(self, max_thickness=500, n=10, x=100):
|
|
38
|
+
data_boreholes = []
|
|
39
|
+
data = sequences.SedimentaryBasin()
|
|
40
|
+
data_sedbasin = data.create_sedimentary_basin(maximum_thickness=max_thickness)
|
|
41
|
+
for i in range(n):
|
|
42
|
+
data_boreholes.append([data_sedbasin, x*i])
|
|
43
|
+
#
|
|
44
|
+
return data_boreholes
|
|
45
|
+
#
|
|
46
|
+
#def generate_2d_tilted(self, dip=20, max_thickness=500, n=10, x=50):
|
|
47
|
+
# data_boreholes = []
|
|
48
|
+
# data = sequences.SedimentaryBasin()
|
|
49
|
+
# data_sedbasin = data.create_sedimentary_basin(maximum_thickness=max_thickness)
|
|
50
|
+
|
|
51
|
+
class Surface:
|
|
52
|
+
#
|
|
53
|
+
def __init__(self, coordinates):
|
|
54
|
+
self.coordinates = coordinates
|
|
55
|
+
#
|
|
56
|
+
def create_linear_surface(self):
|
|
57
|
+
# y = a*x + b
|
|
58
|
+
x1 = self.coordinates[0][0]
|
|
59
|
+
y1 = self.coordinates[0][1]
|
|
60
|
+
x2 = self.coordinates[1][0]
|
|
61
|
+
y2 = self.coordinates[1][1]
|
|
62
|
+
#
|
|
63
|
+
b = (x1*y2 - x2*y1)/(x1 - x2)
|
|
64
|
+
a = (y1 - b)/x1
|
|
65
|
+
#
|
|
66
|
+
return a, b
|
|
67
|
+
#
|
|
68
|
+
def create_quadratic_surface(self):
|
|
69
|
+
# y = a*x**2 + b*x + c
|
|
70
|
+
x1 = self.coordinates[0][0]
|
|
71
|
+
y1 = self.coordinates[0][1]
|
|
72
|
+
x2 = self.coordinates[1][0]
|
|
73
|
+
y2 = self.coordinates[1][1]
|
|
74
|
+
x3 = self.coordinates[2][0]
|
|
75
|
+
y3 = self.coordinates[2][1]
|
|
76
|
+
#
|
|
77
|
+
a = ((x2 - x3)*(y1 - y3) - (x1 - x3)*(y2 - y3))/((x2 - x3)*(x1**2 - x3**2) - (x1 - x3)*(x2**2 - x3**2))
|
|
78
|
+
b = (y1 - y3 - a*(x1**2 - x3**2))/(x1 - x3)
|
|
79
|
+
c = y3 - a*x3**2 - b*x3
|
|
80
|
+
#
|
|
81
|
+
return a, b, c
|
|
82
|
+
#
|
|
83
|
+
def create_interpolated_surface(self):
|
|
84
|
+
self.coordinates = np.array(self.coordinates)
|
|
85
|
+
x = self.coordinates[:, 0]
|
|
86
|
+
y = self.coordinates[:, 1]
|
|
87
|
+
#
|
|
88
|
+
f = interp.CubicSpline(x, y)
|
|
89
|
+
#
|
|
90
|
+
return f
|
|
91
|
+
|
|
92
|
+
class Units:
|
|
93
|
+
#
|
|
94
|
+
def __init__(self, x_limits, y_limits, number):
|
|
95
|
+
self.x_limits = x_limits
|
|
96
|
+
self.y_limits = y_limits
|
|
97
|
+
self.number = number
|
|
98
|
+
#
|
|
99
|
+
def create_outcrops(self, extrema):
|
|
100
|
+
condition = False
|
|
101
|
+
while condition == False:
|
|
102
|
+
x_outcrops = np.sort(rd.sample(list(range(int(self.x_limits[0]*(1-0.05)),
|
|
103
|
+
int(extrema[-1][0]-5))) + list(range(int(extrema[-1][0]+5),
|
|
104
|
+
int(self.x_limits[1]*(1-0.05)))), self.number))
|
|
105
|
+
x_diff = np.diff(x_outcrops)
|
|
106
|
+
check = any(item in np.arange(0, 5) for item in x_diff)
|
|
107
|
+
if check == False:
|
|
108
|
+
condition = True
|
|
109
|
+
else:
|
|
110
|
+
continue
|
|
111
|
+
#
|
|
112
|
+
return x_outcrops
|
|
113
|
+
#
|
|
114
|
+
def create_units(self, f_surface, kind=None):
|
|
115
|
+
x_units = []
|
|
116
|
+
y_units = []
|
|
117
|
+
f1 = interp.CubicSpline.derivative(f_surface)
|
|
118
|
+
f2 = interp.CubicSpline.derivative(f1)
|
|
119
|
+
x_extreme = np.around(f1.solve(), 4)
|
|
120
|
+
y_extreme = np.around(f_surface(x_extreme), 4)
|
|
121
|
+
extrema_type = np.around(f2(x_extreme), 4)
|
|
122
|
+
data_extrema = []
|
|
123
|
+
for i in range(len(x_extreme)):
|
|
124
|
+
if extrema_type[i] < 0:
|
|
125
|
+
data_extrema.append([round(x_extreme[i], 2), round(y_extreme[i], 2), "Maximum"])
|
|
126
|
+
elif extrema_type[i] > 0:
|
|
127
|
+
data_extrema.append([round(x_extreme[i], 2), round(y_extreme[i], 2), "Minimum"])
|
|
128
|
+
elif extrema_type[i] == 0:
|
|
129
|
+
data_extrema.append([round(x_extreme[i], 2), round(y_extreme[i], 2), "Saddle"])
|
|
130
|
+
if len(x_extreme) == 0:
|
|
131
|
+
data_extrema.append([round(max(self.x_limits), 2), round(max(self.y_limits), 2), "Maximum"])
|
|
132
|
+
data_extrema.append([round(min(self.x_limits), 2), round(min(self.y_limits), 2), "Minimum"])
|
|
133
|
+
data_extrema = np.array(data_extrema, dtype="object")
|
|
134
|
+
data_extrema = data_extrema[data_extrema[:, 1].argsort()]
|
|
135
|
+
print("Global Minimum:", data_extrema[0])
|
|
136
|
+
print("Global Maximum:", data_extrema[-1])
|
|
137
|
+
|
|
138
|
+
self.x_outcrops = self.create_outcrops(extrema=data_extrema)
|
|
139
|
+
self.y_outcrops = f_surface(self.x_outcrops)
|
|
140
|
+
n_units = len(self.x_outcrops)
|
|
141
|
+
|
|
142
|
+
if kind == None:
|
|
143
|
+
x_delta = rd.randint(-25, 25)
|
|
144
|
+
self.x_outcrops_bottom = self.x_outcrops + x_delta
|
|
145
|
+
y_min = min(self.y_limits)
|
|
146
|
+
for i in range(n_units):
|
|
147
|
+
if self.x_outcrops is not self.x_outcrops_bottom:
|
|
148
|
+
x1 = self.x_outcrops[i]
|
|
149
|
+
x2 = self.x_outcrops_bottom[i]
|
|
150
|
+
y1 = self.y_outcrops[i]
|
|
151
|
+
y2 = y_min
|
|
152
|
+
b = (x1*y2 - x2*y1)/(x1 - x2)
|
|
153
|
+
if x1 != 0:
|
|
154
|
+
a = (y1 - b)/x1
|
|
155
|
+
else:
|
|
156
|
+
a = (y2 - b)/x2
|
|
157
|
+
x = np.linspace(self.x_outcrops[i], self.x_outcrops_bottom[i], 25+1)
|
|
158
|
+
upper_limit = np.argwhere(x > self.x_limits[-1])
|
|
159
|
+
if len(upper_limit) > 0:
|
|
160
|
+
x = x[:upper_limit[0][0]]
|
|
161
|
+
x_units.append(x)
|
|
162
|
+
y_units.append(a*x + b)
|
|
163
|
+
else:
|
|
164
|
+
x1 = self.x_outcrops[i]
|
|
165
|
+
x2 = self.x_outcrops_bottom[i]
|
|
166
|
+
y1 = self.y_outcrops[i]
|
|
167
|
+
y2 = y_min
|
|
168
|
+
x_units.append(np.array([x1, x2]))
|
|
169
|
+
y_units.append(np.array([y1, y2]))
|
|
170
|
+
elif kind == "horizontal":
|
|
171
|
+
for i in range(len(self.x_outcrops)):
|
|
172
|
+
if self.x_outcrops[i] < data_extrema[-1][0]:
|
|
173
|
+
x_units.append([self.x_outcrops[i], f_surface.solve(y=self.y_outcrops[i])[2]])
|
|
174
|
+
y_units.append([self.y_outcrops[i], self.y_outcrops[i]])
|
|
175
|
+
elif self.x_outcrops[i] > data_extrema[-1][0]:
|
|
176
|
+
x_units.append([self.x_outcrops[i], f_surface.solve(y=self.y_outcrops[i])[1]])
|
|
177
|
+
y_units.append([self.y_outcrops[i], self.y_outcrops[i]])
|
|
178
|
+
#
|
|
179
|
+
return x_units, y_units, self.x_outcrops
|