Skip to content

Commit 819cea1

Browse files
committed
fix: get displacement/dip/pitch from fault trace attributes
1 parent 996cdb8 commit 819cea1

1 file changed

Lines changed: 26 additions & 2 deletions

File tree

loopstructural/main/model_manager.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,21 +120,24 @@ def update_fault_points(
120120
# sample fault trace
121121
self.faults.clear() # Clear existing faults
122122
fault_points = sampler(fault_trace, self.dem_function, use_z_coordinate)
123+
cols = ['X', 'Y', 'Z']
123124
if fault_name_field is not None and fault_name_field in fault_points.columns:
124125
fault_points['fault_name'] = fault_points[fault_name_field]
125126
else:
126127
fault_points['fault_name'] = fault_points['feature_id'].astype(str)
127128
if fault_dip_field is not None and fault_dip_field in fault_points.columns:
128129
fault_points['dip'] = fault_points[fault_dip_field]
130+
cols.append('dip')
129131
if (
130132
fault_displacement_field is not None
131133
and fault_displacement_field in fault_points.columns
132134
):
133135
fault_points['displacement'] = fault_points[fault_displacement_field]
136+
cols.append('displacement')
134137
existing_faults = set(self.fault_topology.faults)
135138
for fault_name in fault_points['fault_name'].unique():
136139
self.faults[fault_name]['data'] = fault_points.loc[
137-
fault_points['fault_name'] == fault_name, ['X', 'Y', 'Z']
140+
fault_points['fault_name'] == fault_name, cols
138141
]
139142
if fault_name not in existing_faults:
140143
self.fault_topology.add_fault(fault_name)
@@ -260,7 +263,28 @@ def update_fault_features(self):
260263
data['val'] = 0
261264
# need to have a way of specifying the displacement from the trace
262265
# or maybe the model should calculate it
263-
self.model.create_and_add_fault(fault_name, displacement=10, fault_data=data)
266+
if 'displacement' in fault_data['data']:
267+
displacement = fault_data['data']['displacement'].mean()
268+
else:
269+
displacement = 10
270+
if 'dip' in fault_data['data']:
271+
dip = fault_data['data']['dip'].mean()
272+
else:
273+
dip = 90
274+
print(f"Fault {fault_name} dip: {dip}")
275+
276+
if 'pitch' in fault_data['data']:
277+
pitch = fault_data['data']['pitch'].mean()
278+
else:
279+
pitch = 0
280+
281+
self.model.create_and_add_fault(
282+
fault_name,
283+
displacement=displacement,
284+
fault_dip=dip,
285+
fault_pitch=pitch,
286+
fault_data=data,
287+
)
264288
print("Faults in model:")
265289
for f in self.fault_topology.faults:
266290
print(f"Fault {f} relationships:")

0 commit comments

Comments
 (0)