How this code will look like for matlab?
2 views (last 30 days)
Show older comments
% Initialization
delx = 1000
delt = 5
n = 211
x = np.arange(0,n*delx,delx)
h = np.zeros(n)
h[:int(l2/delx-1)] = h2
for i in range(int(l1/delx-1),int((l1+l3)/delx)):
h[i] = h2+(h1-h2)/l3*delx*(i-int(l1/delx-1))
h[int((l2+l3)/delx):n] = h1
% Depth in channel
plt.plot(range(0,n),-h)
plt.xlabel('simulation node')
plt.ylabel('Depth, m')
plt.show()
% Initial data
t = 0. # time
kt = 0 # iteration counter
q = np.zeros(n) # flow (barotropic velocity*depth*channel width)
z = np.zeros(n-1) # Level
# setting the level at the initial time
for i in range (int(n-1-l/delx-1),n-1):
z[i] = a*np.cos(2*np.pi/2/l*(x[i]-x[int(n-1-l/delx)-1])-np.pi/2)
qold = q
zold = z
# Level at the initial time
plt.plot(range(0,n-1),z)
plt.plot(range(0,n),q)
plt.xlabel('simulation node')
plt.ylabel('Elevation, m')
plt.title('t = 0')
plt.show()
while t<t_stop : # time loop
q[0] = 0. # boundary condition on the left solid boundary (impenetrability)
for i in range(1,n-1): # cycle for calculating flows (speed) by channel length
q[i] = qold[i] - delt*g*b*h[i]*(zold[i]-zold[i-1])/delx
q[n-1] = b*zold[n-2]*np.sqrt(g*h[n-2]) # boundary condition on the right liquid boundary (radiation)
for i in range(0,n-1): # cycle for calculating the level based on the channel length
z[i] = zold[i] - delt/b*(q[i+1]-qold[i])/delx
t = t + delt
kt+= 1
qold = q # override new thread array (speed)
zold = z # override new level array
#output
if kt % 20 == 0: # frequency of results output
print('t = ', t/60, 'min')
fig, axs = plt.subplots(2,1,gridspec_kw={'height_ratios': [2, 1]})
axs[0].plot(x[:-1]/1000,z)
axs[0].set_ylabel('Elevation, m')
axs[1].plot(x/1000,-h)
axs[1].set_xlabel('Distance, km')
axs[1].set_ylabel('Depth, m')
plt.show()
Answers (1)
Sulaymon Eshkabilov
on 18 Oct 2023
You can convert a Python code into MATLAB code using 3rd party applications like this one
0 Comments
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!