Skip to content
Snippets Groups Projects
Commit 9db32a37 authored by mischa's avatar mischa
Browse files

Compare accuracy and computation time of v37

parent c5711be7
No related merge requests found
......@@ -84,8 +84,6 @@ def update_f_equilibrium_kernel(Q, weights, c_ix, c_iy, c_s_sq=1/3):
)
)
if i == 0:
print(formula)
symbolic_description.append(
ps.Assignment(
f_eq[0, 0](i),
......
......@@ -115,6 +115,91 @@ def compare_numpy_performance():
print("Equilibrium v17 takes {} times as long".format((t2 - t1) / (t1 - t0)))
def compare_v37_pystencils():
lattice_v17 = Lattice.from_name("D2V17")
lattice_v37 = Lattice.from_name("D2V37")
s = 100
size = (s, s)
tau = 0.8
iterations = 100
viscosity = 1 / 3 * (tau - 0.5)
omega_v17 = 1 / (viscosity / float(lattice_v17.c_s_sq) + 0.5)
omega_v37 = 1 / (viscosity / float(lattice_v37.c_s_sq) + 0.5)
lbm_v17 = LBM(size=size, lattice=lattice_v17, pystencils=True, omega=omega_v17, fill_mode="taylor-green")
lbm_v37 = LBM(size=size, lattice=lattice_v37, pystencils=True, omega=omega_v37, fill_mode="taylor-green")
# Whole algorithm
import time
t0 = time.time()
for i in range(iterations):
lbm_v17.iterate()
t1 = time.time()
for i in range(iterations):
lbm_v37.iterate()
t2 = time.time()
print("Iterate v37: {} vs v17:{}".format(t2 - t1, t1 - t0))
print("Iterate v37 takes {} times as long".format((t2 - t1) / (t1 - t0)))
# update_f_equilibrium
t0 = time.time()
for i in range(iterations):
lbm_v17.update_f_equilibrium()
t1 = time.time()
for i in range(iterations):
lbm_v37.update_f_equilibrium()
t2 = time.time()
print("Equilibrium v37: {} vs v17:{}".format(t2 - t1, t1 - t0))
print("Equilibrium v37 takes {} times as long".format((t2 - t1) / (t1 - t0)))
def compare_v37_accuracy():
# lattices to be used
lattice_q9 = Lattice.from_name("D2Q9")
lattice_v17 = Lattice.from_name("D2V17")
lattice_v37 = Lattice.from_name("D2V37")
# Simulation params
s = 100
size = (s, s)
tau = 0.55
iterations = 1000
# c_s_sq different for both implementations therefore tau has to be changed so both simulate the same thing
viscosity = 1 / 3 * (tau - 0.5)
omega_q9 = 1 / tau
omega_v17 = 1 / (viscosity / float(lattice_v17.c_s_sq) + 0.5)
omega_v37 = 1 / (viscosity / float(lattice_v37.c_s_sq) + 0.5)
lbm_q9 = LBM(size=size, lattice=lattice_q9, pystencils=True, omega=omega_q9, fill_mode="taylor-green")
lbm_v17 = LBM(size=size, lattice=lattice_v17, pystencils=True, omega=omega_v17, fill_mode="taylor-green")
lbm_v37 = LBM(size=size, lattice=lattice_v37, pystencils=True, omega=omega_v37, fill_mode="taylor-green")
accuracy_q9 = np.zeros((iterations))
accuracy_v17 = np.zeros((iterations))
accuracy_v37 = np.zeros((iterations))
for i in range(iterations):
lbm_q9.iterate()
accuracy_q9[i] = lbm_q9.accuracy
for i in range(iterations):
lbm_v17.iterate()
accuracy_v17[i] = lbm_v17.accuracy
for i in range(iterations):
lbm_v37.iterate()
accuracy_v37[i] = lbm_v37.accuracy
# Plotting
x = np.arange(0, iterations)
plt.plot(x, accuracy_q9, 'r', label="Q9")
plt.plot(x, accuracy_v17, 'b', label="V17")
plt.plot(x, accuracy_v37, 'g', label="V37")
plt.legend()
plt.show()
if __name__ == "__main__":
# logger.setLevel(logging.INFO)
logger.setLevel(logging.WARNING)
......@@ -122,4 +207,6 @@ if __name__ == "__main__":
# Visualizations:
# compare_numpy_accuracy()
compare_numpy_performance()
# compare_numpy_performance()
# compare_v37_pystencils()
compare_v37_accuracy()
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment