Hydrodynamics simulation

I had to use a space after the "[" in each tag to prevent the forum software from interpreting the tag.)
  • #1
624
11
Hi! I have this code which should simulate a sod shock tube like this: https://en.wikipedia.org/wiki/Sod_shock_tube But when i plot density versus distance I just get something like a noisy signal. Any idea where I am doing something wrong?

from matplotlib import pyplot as plt

import numpy as np

import copy

import random

import mathL=1.0

gamma = 1.4

N=1000

h=L/(N-1)

CFL=0.1v=[[0 for x in range(3)] for x in range(N)]

F=[[0 for x in range(3)] for x in range(N)]
# give the values to each cell
def initialise():

for i in range(N):

if i<N/2:

rho=1

p=1

u=0

else:

rho=0.125

p=0.1

u=0

e=p/((gamma-1)*rho)

v[0]=rho #create a matrix with first column for density, second for density times speed

v[1]=u*rho #and third for e, and a vector for the volume of each grid

v[2]=e
# calculate the maximum speed in the program

def cMax():

uMax=0

for i in range(N):

pressure = (gamma-1)*v[0]*v[2]

speed=v[1]/v[0]

c=np.sqrt(gamma*abs(pressure)/abs(v[0]))

if uMax< (c+abs(speed)):

uMax=c+abs(speed)

return uMax

def fluxCalculator():

for i in range(1,N-1):

#density flux

if v[0]< v[i-1][0]:

rho=v[i-1][0]

if v[0]> v[i-1][0]:

rho=v[0]

if v[0]==v[i-1][0]:

rho=0

F[0]=rho*v[1]/v[0]
#energy flux
if v[2]<v[i-1][2]:

e=v[i-1][2]

if v[2]>v[i-1][2]:

e=v[2]

if v[2]==v[i-1][2]:

e=0

F[2]=F[0]*e
#momentum flux
if v[1]/v[0]<v[i-1][1]/v[i-1][0]:

u=v[i-1][1]/v[i-1][0]

if v[1]/v[0]>v[i-1][1]/v[i-1][0]:

u=v[1]/v[0]

if v[1]/v[0]==v[i-1][1]/v[i-1][0]:

u=0

F[1]=0.5*u*(F[i+1][0]+F[0])initialise()
def update():

tau=CFL*h/cMax()

fluxCalculator()

for i in range(1,N-1):

rho=v[0]

m=v[1]

e=v[2]

pressure=(gamma-1)*rho*e

e=e-tau/h*pressure*(v[i+1][1]/v[i+1][0]-m/rho)

m=m-tau/h*(pressure-(gamma-1)*v[i-1][0]*v[i-1][2])

rho=rho-tau/h*(F[i+1][0]-F[0])

e=e-tau/h*(F[i+1][2]-F[2])

m=m-tau/h*(F[i+1][1]-F[1])

v[0]=rho

v[1]=m

v[2]=e

density=[]

position=np.arange(0,1+h/2,h)
for i in range(1000):

update()
for i in range(N):

density=density+[v[0]]

plt.plot(position,density)

plt.show()
 
Technology news on Phys.org
  • #2
Please repost your code, using a [code=python] tag at the top and a [/code] tag at the bottom.

You might notice that what is displayed above switches to italics in the middle somewhere. This is because your code contains v[i][0]. The first pair of brackets is interpreted by browsers as a sign that the following text should be in italics. Each [i] in the code is "gobbled up" and doesn't appear.
Silviu said:
But when i plot density versus distance I just get something like a noisy signal. Any idea where I am doing something wrong?
Given the amount of code, this is probably not enough for us to go on. If you can identify a section of code that you think is misbehaving, that would be very helpful.
 
Last edited:
  • Like
Likes BvU
  • #3
Mark44 said:
Please repost your code, using a [code=python] tag at the top and a [/code] tag at the bottom.
Hehe, I wanted to point that out to Silviu in a private conversation, so his (her) thread would remain unanswered, but never mind. Out of curiosity: How can you let the tags
Python:
[code=python] and ##[\ /code]##  appear without the browser taking action
o0)?
 
  • #4
BvU said:
Hehe, I wanted to point that out to Silviu in a private conversation, so his (her) thread would remain unanswered, but never mind. Out of curiosity: How can you let the tags
Python:
[code=python] and ##[\ /code]##  appear without the browser taking action
o0)?
I change the color of the first character in each tag. Black works fine -- this causes the browser to not interpret the tag as it usually would.
 
  • Like
Likes Ibix and BvU

1. What is hydrodynamics simulation?

Hydrodynamics simulation is a computer-based method of modeling and studying the movement of fluids, such as water or air. It uses mathematical equations to simulate real-world scenarios and predict how fluids will behave under different conditions.

2. How is hydrodynamics simulation used in scientific research?

Hydrodynamics simulation is used in a variety of scientific fields, including engineering, oceanography, meteorology, and astrophysics. It can help researchers understand and predict the behavior of fluids in complex systems, such as weather patterns, ocean currents, and fluid flow in machinery.

3. What types of problems can be solved using hydrodynamics simulation?

Hydrodynamics simulation can be used to solve a wide range of problems, including fluid behavior in pipes and channels, fluid-structure interaction, wave and current patterns in oceans and rivers, and aerodynamics of vehicles and aircraft. It can also be used to optimize designs for efficiency and safety.

4. What are the advantages of using hydrodynamics simulation over physical experiments?

Hydrodynamics simulation offers several advantages over physical experiments, including cost-effectiveness, speed, and the ability to easily modify parameters and conditions. It also allows for the study of systems that are difficult to replicate in a laboratory setting, such as large-scale ocean currents or complex fluid flows in machinery.

5. What are the limitations of hydrodynamics simulation?

While hydrodynamics simulation is a powerful tool, it also has limitations. It relies on mathematical models that may not accurately reflect real-world conditions, and the accuracy of the results depends on the quality of the input data and assumptions made by the researcher. It also cannot account for all variables and may not always provide a complete understanding of fluid behavior.

Suggested for: Hydrodynamics simulation

Replies
2
Views
1K
Replies
1
Views
1K
Replies
4
Views
1K
Replies
5
Views
454
Replies
19
Views
2K
Replies
3
Views
1K
Replies
2
Views
899
Replies
1
Views
143
Replies
1
Views
1K
Back
Top