Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[ENH/CLN] Adding scalar_field_value at interface to StructuralElement
  • Loading branch information
Leguark committed May 2, 2025
commit 07c88cd151a448f4a17b1320f1af8d3530ab056c
4 changes: 3 additions & 1 deletion gempy/core/data/geo_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ def solutions(self) -> Solutions:
return self._solutions

@solutions.setter
def solutions(self, value):
def solutions(self, value: Solutions):
# * This is set from the gempy engine

self._solutions = value
Expand All @@ -161,6 +161,8 @@ def solutions(self, value):

# * Set solutions per element
for e, element in enumerate(self.structural_frame.structural_elements[:-1]): # * Ignore basement
element.scalar_field_at_interface = value.scalar_field_at_surface_points[e]

if self._solutions.dc_meshes is None:
continue
dc_mesh = self._solutions.dc_meshes[e]
Expand Down
2 changes: 1 addition & 1 deletion gempy/core/data/structural_element.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class StructuralElement:
# ? Should we extract this to a separate class?
vertices: Optional[np.ndarray] = None #: The vertices of the element in 3D space.
edges: Optional[np.ndarray] = None #: The edges of the element in 3D space.
scalar_field: Optional[float] = None #: The scalar field value for the element.
scalar_field_at_interface: Optional[float] = None #: The scalar field value for the element.

_id: int = -1

Expand Down
7 changes: 4 additions & 3 deletions gempy/modules/mesh_extranction/marching_cubes.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def set_meshes_with_marching_cubes(model: GeoModel) -> None:
# TODO: Attribute of element.scalar_field was None, changed it to scalar field value of that element
# This should probably be done somewhere else and maybe renamed to scalar_field_value?
# This is just the most basic solution to be clear what I did
_set_scalar_field_to_element(model, output_lvl0, structural_groups)
# _set_scalar_field_to_element(model, output_lvl0, structural_groups)

# Trying to use the exiting gempy masks
# masks = []
Expand Down Expand Up @@ -96,13 +96,14 @@ def set_meshes_with_marching_cubes(model: GeoModel) -> None:

# TODO: This should be set somewhere else
def _set_scalar_field_to_element(model, output_lvl0, structural_groups):
element: StructuralElement
counter = 0
for e, structural_group in enumerate(structural_groups):
if e >= len(output_lvl0):
continue

for element in structural_group.elements:
element.scalar_field = model.solutions.scalar_field_at_surface_points[counter]
element.scalar_field_at_interface = model.solutions.scalar_field_at_surface_points[counter]
counter += 1


Expand Down Expand Up @@ -139,7 +140,7 @@ def extract_mesh_for_element(structural_element: StructuralElement,
# Extract mesh using marching cubes
verts, faces, _, _ = measure.marching_cubes(
volume=scalar_field,
level=structural_element.scalar_field,
level=structural_element.scalar_field_at_interface,
spacing=(regular_grid.dx, regular_grid.dy, regular_grid.dz),
mask=mask
)
Expand Down