Borrar filtros
Borrar filtros

How this code will look like for matlab?

2 visualizaciones (últimos 30 días)
Vika
Vika el 18 de Oct. de 2023
Comentada: Rena Berman el 27 de Nov. de 2023
% 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()

Respuestas (1)

Sulaymon Eshkabilov
Sulaymon Eshkabilov el 18 de Oct. de 2023
You can convert a Python code into MATLAB code using 3rd party applications like this one

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by