In [1]:
import os
import bmi.wrapper
import cmocean.cm
import matplotlib.colors
import matplotlib.pyplot as plt
%matplotlib inline
In [2]:
delft3d = bmi.wrapper.BMIWrapper('dflowfm')
In [3]:
delft3d.initialize(os.path.expanduser('~/models/Zandmotor/zm_tide.mdu'))
In [4]:
delft3d.get_start_time(), delft3d.get_current_time(), delft3d.get_end_time(), delft3d.get_time_step()
Out[4]:
In [5]:
for i in range(delft3d.get_var_count()):
print(delft3d.get_var_name(i))
In [6]:
data = {
'bl': delft3d.get_var('bl'),
'xzw': delft3d.get_var('xzw'),
'yzw': delft3d.get_var('yzw'),
's1': delft3d.get_var('s1'),
's0': delft3d.get_var('s1').copy()
}
In [7]:
fig, axes = plt.subplots(1, 2, figsize=(16, 7))
N = matplotlib.colors.Normalize(data['bl'].min(), data['bl'].max())
cmap = cmocean.cm.deep_r
axes[0].scatter(data['xzw'], data['yzw'], c=cmap(N(data['bl'])), edgecolor='none')
N = matplotlib.colors.Normalize(data['s1'].min(), data['s1'].max())
cmap = cmocean.cm.delta
axes[1].scatter(data['xzw'], data['yzw'], c=cmap(N(data['s1'])), edgecolor='none')
Out[7]:
In [8]:
for i in range(10):
delft3d.update(60)
In [9]:
fig, axes = plt.subplots(1, 2, figsize=(16, 7))
N = matplotlib.colors.Normalize(data['bl'].min(), data['bl'].max())
cmap = cmocean.cm.deep_r
axes[0].scatter(data['xzw'], data['yzw'], c=cmap(N(data['bl'])), edgecolor='none')
var = data['s1'] - data['s0']
N = matplotlib.colors.Normalize(var.min(), var.max())
cmap = cmocean.cm.delta
axes[1].scatter(data['xzw'], data['yzw'], c=cmap(N(var)), edgecolor='none')
Out[9]:
In [10]:
import numpy as np
in_box = np.logical_and.reduce([
data['xzw'] > 70000,
data['xzw'] < 72000,
data['yzw'] > 451000,
data['yzw'] < 452000
])
data['bl'][in_box] += 4
In [11]:
fig, axes = plt.subplots(1, 2, figsize=(16, 7))
N = matplotlib.colors.Normalize(data['bl'].min(), data['bl'].max())
cmap = cmocean.cm.deep_r
axes[0].scatter(data['xzw'], data['yzw'], c=cmap(N(data['bl'])), edgecolor='none')
var = data['s1'] - data['s0']
N = matplotlib.colors.Normalize(var.min(), var.max())
cmap = cmocean.cm.delta
axes[1].scatter(data['xzw'], data['yzw'], c=cmap(N(var)), edgecolor='none')
Out[11]:
In [12]:
for i in range(10):
delft3d.update(60)
In [15]:
fig, axes = plt.subplots(1, 2, figsize=(16, 7))
N = matplotlib.colors.Normalize(data['bl'].min(), data['bl'].max())
cmap = cmocean.cm.gray
axes[0].scatter(data['xzw'], data['yzw'], c=cmap(N(data['bl'])), edgecolor='none')
var = data['s1'] - data['s0']
N = matplotlib.colors.Normalize(var.min(), var.max())
cmap = cmocean.cm.delta
axes[1].scatter(data['xzw'], data['yzw'], c=cmap(N(var)), edgecolor='none')
Out[15]:
In [ ]:
# TODO:
# convert coordinates from model to sandbox: matplotlib.transforms.BboxTransform -> Project 2d
# sketch black & white zandmotor
# Apply bathymetry based on sandbox output -> project z
# run FM continuously
# Export bathymetryTextureObjects from Sandbox to input for fm -> export
# visualize resulting ucx, ucy, and s1