Files

83 lines
2.2 KiB
Python

######################################################################
# This script creates a regular surface for each case
######################################################################
import rips
import math
def create_x_surface(nx, ny):
surface = []
for j in range(ny):
for i in range(nx):
surface.append(float(i))
return surface
def create_wave_surface(nx, ny):
# Fill the coordinate and wave pattern arrays
surface = []
for j in range(ny):
for i in range(nx):
# Create wave pattern - combining multiple sine waves
x = -5 + 10 * i / (nx - 1)
y = -5 + 10 * j / (ny - 1)
offset = (
math.sin(x**2 + y**2)
+ 0.5 * math.sin(2 * x) * math.cos(2 * y)
+ 25.0 * math.cos(5 * x + 2 * y)
)
surface.append(-depth + offset)
return surface
resinsight = rips.Instance.find()
project = resinsight.project
if resinsight is not None:
# Get a list of all cases
cases = resinsight.project.cases()
for c in cases:
bbox = c.reservoir_boundingbox()
depth = bbox.max_z - ((bbox.max_z - bbox.min_z) / 2.0)
origin_x = bbox.min_x
origin_y = bbox.min_y
name = "{} surface".format(c.name)
nx = 200
ny = 100
increment_x = (bbox.max_x - bbox.min_x) / float(nx)
increment_y = (bbox.max_y - bbox.min_y) / float(ny)
surface_collection = resinsight.project.descendants(rips.SurfaceCollection)[0]
# Create a surface at a given depth
s = surface_collection.new_regular_surface(
name=name,
origin_x=origin_x,
origin_y=origin_y,
depth=-depth,
nx=nx,
ny=ny,
increment_x=increment_x,
increment_y=increment_y,
)
# Rotate the resulting surface
s.rotation = 45.0
s.update()
# Add one property
s.set_property("first_property", create_x_surface(nx, ny))
# Add a wave surface
s.set_property("wave", create_wave_surface(nx, ny))
# Use the wave as depth for the surface
s.set_property_as_depth("wave")