How this code will look like for matlab?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
% 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()
1 Kommentar
Antworten (1)
Sulaymon Eshkabilov
am 18 Okt. 2023
You can convert a Python code into MATLAB code using 3rd party applications like this one
0 Kommentare
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!