download
raw
1.27 kB
def dispersion_relation_2D(p, theta, C):
arg = C*sqrt(sin(p*cos(theta))**2 +
sin(p*sin(theta))**2)
c_frac = 2./(C*p)*arcsin(arg)
return c_frac
import numpy as np
from numpy import \
cos, sin, arcsin, sqrt, pi # for nicer math formulas
r = p = np.linspace(0.001, pi/2, 101)
theta = np.linspace(0, 2*pi, 51)
r, theta = np.meshgrid(r, theta)
# Make 2x2 filled contour plots for 4 values of C
import matplotlib.pyplot as plt
C_max = 1/sqrt(2)
C = [[C_max, 0.9*C_max], [0.5*C_max, 0.2*C_max]]
fix, axes = plt.subplots(2, 2, subplot_kw=dict(polar=True))
for row in range(2):
for column in range(2):
error = 1 - dispersion_relation_2D(
p, theta, C[row][column])
print error.min(), error.max()
# use vmin=error.min(), vmax=error.max()
cax = axes[row][column].contourf(
theta, r, error, 50, vmin=-1, vmax=-0.28)
axes[row][column].set_xticks([])
axes[row][column].set_yticks([])
# Add colorbar to the last plot
cbar = plt.colorbar(cax)
cbar.ax.set_ylabel('error in wave velocity')
plt.savefig('disprel2D.png'); plt.savefig('disprel2D.pdf')
plt.show()
# See
# http://blog.rtwilson.com/producing-polar-contour-plots-with-matplotlib/
# for polar plotting in matplotlib

Xet Storage Details

Size:
1.27 kB
·
Xet hash:
3b62584a9890459add899b579d0f9d65bd60a24ec02d3b97d145a68a3eba92e4

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.