AJMR-Python-Baird/EWR_Data/createSeg.py

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