34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
#%% Create a Delft3D WAQ segment input file
|
|
# Alexander Rey, 2023-06-27
|
|
|
|
# These files can be used to define a value for every cell at every time step
|
|
# The files are binary and have a specific format
|
|
# The format is described in the Delft3D WAQ manual
|
|
# Each lauer is a different segmnent
|
|
# Typically, segments increase sequentially from 1 to N, then the second layer will be N+1 to 2N, etc.
|
|
# The number of layers is defined in the GUI
|
|
# Use QUICKPLOT to extract segment numbers in layer 1, then adjust from there
|
|
# Note: it will go to zero at the end of the time series, so ensure that the last time step is covered
|
|
|
|
#%% Import libraries
|
|
import struct
|
|
|
|
NOSEG = 5 # Number of segments
|
|
NOTIME = 10 # Number of time steps
|
|
|
|
VALUE = [[0.0] * NOSEG for _ in range(NOTIME)] # Initialize VALUE as a 2D matrix
|
|
|
|
for i in range(NOTIME):
|
|
for j in range(NOSEG):
|
|
# Fill the matrix with the desired values.
|
|
VALUE[i][j] = i + j
|
|
|
|
with open('output_seg10.bin', 'wb') as file:
|
|
for i in range(NOTIME):
|
|
# TIMER is the number of seconds from the reference date (set in the GUI)
|
|
TIMER = (i - 1) * 31536000
|
|
file.write(struct.pack('i', TIMER)) # Write TIMER as a 4-byte integer
|
|
|
|
for j in range(NOSEG):
|
|
file.write(struct.pack('f', VALUE[i][j])) # Write VALUE[i][j] as a 4-byte float
|