Some refactoring
This commit is contained in:
parent
ed32bba8c6
commit
828a841606
1 changed files with 20 additions and 7 deletions
27
water_sim.py
27
water_sim.py
|
@ -3,6 +3,11 @@
|
||||||
from game import *
|
from game import *
|
||||||
|
|
||||||
class WaterSim(Game):
|
class WaterSim(Game):
|
||||||
|
alpha = 100000
|
||||||
|
u = lambda Cm1,C,C1,dx: WaterSim.alpha * (Cm1+C1-2*C) * 0.5 * dx
|
||||||
|
v = lambda u,v,d,dt: ( v + (u - d * v) * dt )
|
||||||
|
w = lambda w,v,dt: w + v * dt
|
||||||
|
|
||||||
def __init__(self,N):
|
def __init__(self,N):
|
||||||
self.N = N
|
self.N = N
|
||||||
self.init_data(N//2)
|
self.init_data(N//2)
|
||||||
|
@ -26,19 +31,27 @@ class WaterSim(Game):
|
||||||
|
|
||||||
def on_update(self, dtime):
|
def on_update(self, dtime):
|
||||||
C2 = [0] * self.N
|
C2 = [0] * self.N
|
||||||
C2[0] = 100 * (self.C[1] - self.C[0]) * 100/self.N
|
C2[0] = WaterSim.u(self.C[1] , self.C[0] , self.C[1] , 1.0/self.N)
|
||||||
C2[-1] = 100 * (self.C[-2] - self.C[-1]) * 100/self.N
|
C2[-1] = WaterSim.u(self.C[-2] , self.C[-1] , self.C[-2] , 1.0/self.N)
|
||||||
|
#C2[0] = 100 * (self.C[1] - self.C[0]) * 100/self.N
|
||||||
|
#C2[-1] = 100 * (self.C[-2] - self.C[-1]) * 100/self.N
|
||||||
|
|
||||||
for i in range(1,self.N-1):
|
for i in range(1,self.N-1):
|
||||||
C2[i] = 1000 * (self.C[i+1] + self.C[i-1] - 2*self.C[i]) * 0.5 * 100 /(self.N)
|
C2[i] = WaterSim.u(self.C[i-1],self.C[i], self.C[i+1], 1.0/self.N)
|
||||||
|
#C2[i] = 1000 * (self.C[i+1] + self.C[i-1] - 2*self.C[i]) * 0.5 * 100 /(self.N)
|
||||||
|
|
||||||
for i in range(0,self.N):
|
for i in range(0,self.N):
|
||||||
self.C1[i] = (self.C1[i] + C2[i] * dtime)
|
|
||||||
if i == 0 or i == self.N-1:
|
if i == 0 or i == self.N-1:
|
||||||
self.C1[i] *= 0.98
|
d = 10
|
||||||
|
#d = 0.95
|
||||||
else:
|
else:
|
||||||
self.C1[i] *= 0.9999
|
d = 0.1
|
||||||
self.C[i] = ( self.C[i] + self.C1[i] * dtime )
|
#d = 0.9999
|
||||||
|
#self.C1[i] = d * (self.C1[i] + C2[i] * dtime)
|
||||||
|
self.C1[i] = WaterSim.v(C2[i], self.C1[i], d, dtime)
|
||||||
|
#self.C[i] = ( self.C[i] + self.C1[i] * dtime )
|
||||||
|
self.C[i] = WaterSim.w(self.C[i], self.C1[i], dtime)
|
||||||
|
|
||||||
if self.C[i] < 0:
|
if self.C[i] < 0:
|
||||||
self.C[i] = 0
|
self.C[i] = 0
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue