Updated dispersion check function to return the spatial resolution of the minimum wavelength in the model.

这个提交包含在:
Craig Warren
2016-04-07 15:40:49 +01:00
父节点 5074203ab3
当前提交 095213539b

查看文件

@@ -99,9 +99,12 @@ def dispersion_check(G):
G (class): Grid class instance - holds essential parameters describing the model.
Returns:
(boolean): Potential numerical dispersion
resolution (float): Potential numerical dispersion
"""
# Minimum number of spatial steps to resolve smallest wavelength
resolvedsteps = 10
# Find maximum frequency
maxfreqs = []
for waveform in G.waveforms:
@@ -137,25 +140,21 @@ def dispersion_check(G):
# Find minimum wavelength
ers = [material.er for material in G.materials]
miner = max(ers)
maxer = max(ers)
# Minimum velocity
minvelocity = c / np.sqrt(miner)
# Minimum number of spatial steps to resolve smallest wavelength
resolution = 10
minvelocity = c / np.sqrt(maxer)
# Minimum wavelength
minwavelength = minvelocity / maxfreq
# Test for numerical dispersion
if max((G.dx, G.dy, G.dz)) > (minwavelength / resolution):
return True
else:
return False
# Resolution of minimum wavelength
resolution = minwavelength / resolvedsteps
else:
return False
resolution = 0
return resolution
def get_other_directions(direction):