你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-06 04:26:52 +08:00
autopep8 code cleanups.
这个提交包含在:
@@ -25,7 +25,7 @@ outputfile = args.outputfile
|
||||
########################################
|
||||
# User configurable parameters
|
||||
|
||||
# Pattern type (E or H)
|
||||
# Pattern type (E or H)
|
||||
type = 'H'
|
||||
|
||||
# Antenna (true if using full antenna model; false for a theoretical Hertzian dipole
|
||||
@@ -116,21 +116,21 @@ for rx in range(0, nrx):
|
||||
f.close()
|
||||
|
||||
# Plot traces for sanity checking
|
||||
#fig, ((ax1, ax2), (ax3, ax4), (ax5, ax6)) = plt.subplots(num=outputfile, nrows=3, ncols=2, sharex=False, sharey='col', subplot_kw=dict(xlabel='Time [ns]'), figsize=(20, 10), facecolor='w', edgecolor='w')
|
||||
#ax1.plot(time, Ex[:, traceno],'r', lw=2)
|
||||
#ax1.set_ylabel('$E_x$, field strength [V/m]')
|
||||
#ax3.plot(time, Ey[:, traceno],'r', lw=2)
|
||||
#ax3.set_ylabel('$E_y$, field strength [V/m]')
|
||||
#ax5.plot(time, Ez[:, traceno],'r', lw=2)
|
||||
#ax5.set_ylabel('$E_z$, field strength [V/m]')
|
||||
#ax2.plot(time, Hx[:, traceno],'b', lw=2)
|
||||
#ax2.set_ylabel('$H_x$, field strength [A/m]')
|
||||
#ax4.plot(time, Hy[:, traceno],'b', lw=2)
|
||||
#ax4.set_ylabel('$H_y$, field strength [A/m]')
|
||||
#ax6.plot(time, Hz[:, traceno],'b', lw=2)
|
||||
#ax6.set_ylabel('$H_z$, field strength [A/m]')
|
||||
# fig, ((ax1, ax2), (ax3, ax4), (ax5, ax6)) = plt.subplots(num=outputfile, nrows=3, ncols=2, sharex=False, sharey='col', subplot_kw=dict(xlabel='Time [ns]'), figsize=(20, 10), facecolor='w', edgecolor='w')
|
||||
# ax1.plot(time, Ex[:, traceno],'r', lw=2)
|
||||
# ax1.set_ylabel('$E_x$, field strength [V/m]')
|
||||
# ax3.plot(time, Ey[:, traceno],'r', lw=2)
|
||||
# ax3.set_ylabel('$E_y$, field strength [V/m]')
|
||||
# ax5.plot(time, Ez[:, traceno],'r', lw=2)
|
||||
# ax5.set_ylabel('$E_z$, field strength [V/m]')
|
||||
# ax2.plot(time, Hx[:, traceno],'b', lw=2)
|
||||
# ax2.set_ylabel('$H_x$, field strength [A/m]')
|
||||
# ax4.plot(time, Hy[:, traceno],'b', lw=2)
|
||||
# ax4.set_ylabel('$H_y$, field strength [A/m]')
|
||||
# ax6.plot(time, Hz[:, traceno],'b', lw=2)
|
||||
# ax6.set_ylabel('$H_z$, field strength [A/m]')
|
||||
# Turn on grid
|
||||
#[ax.grid() for ax in fig.axes]
|
||||
# [ax.grid() for ax in fig.axes]
|
||||
# plt.show()
|
||||
|
||||
# Calculate fields for patterns
|
||||
|
@@ -18,15 +18,15 @@ from gprMax.constants import c, z0
|
||||
# Parse command line arguments
|
||||
parser = argparse.ArgumentParser(description='Plot field patterns from a simulation with receivers positioned in circles around an antenna. This module should be used after the field pattern data has been processed and stored using the initial_save.py module.', usage='cd gprMax; python -m user_libs.antenna_patterns.plot_fields numpyfile')
|
||||
parser.add_argument('numpyfile', help='name of numpy file including path')
|
||||
#parser.add_argument('hertzian', help='name of numpy file including path')
|
||||
# parser.add_argument('hertzian', help='name of numpy file including path')
|
||||
args = parser.parse_args()
|
||||
patterns = np.load(args.numpyfile)
|
||||
#hertzian = np.load(args.hertzian)
|
||||
# hertzian = np.load(args.hertzian)
|
||||
|
||||
########################################
|
||||
# User configurable parameters
|
||||
|
||||
# Pattern type (E or H)
|
||||
# Pattern type (E or H)
|
||||
type = 'H'
|
||||
|
||||
# Relative permittivity of half-space for homogeneous materials (set to None for inhomogeneous)
|
||||
@@ -87,11 +87,11 @@ for patt in range(0, len(radii)):
|
||||
|
||||
# Add Hertzian dipole plot
|
||||
# hertzplot1 = np.append(hertzian[0, :], hertzian[0, 0]) # Append start value to close circle
|
||||
#hertzplot1 = hertzplot1 / np.max(np.max(hertzian))
|
||||
#ax.plot(theta, 10 * np.log10(hertzplot1), label='Inf. dipole, 0.1m', color='black', ls='-.', lw=3)
|
||||
# hertzplot1 = hertzplot1 / np.max(np.max(hertzian))
|
||||
# ax.plot(theta, 10 * np.log10(hertzplot1), label='Inf. dipole, 0.1m', color='black', ls='-.', lw=3)
|
||||
# hertzplot2 = np.append(hertzian[-1, :], hertzian[-1, 0]) # Append start value to close circle
|
||||
#hertzplot2 = hertzplot2 / np.max(np.max(hertzian))
|
||||
#ax.plot(theta, 10 * np.log10(hertzplot2), label='Inf. dipole, 0.58m', color='black', ls='--', lw=3)
|
||||
# hertzplot2 = hertzplot2 / np.max(np.max(hertzian))
|
||||
# ax.plot(theta, 10 * np.log10(hertzplot2), label='Inf. dipole, 0.58m', color='black', ls='--', lw=3)
|
||||
|
||||
# Theta axis options
|
||||
ax.set_theta_zero_location('N')
|
||||
@@ -110,13 +110,13 @@ ax.set_yticklabels(yticks)
|
||||
ax.grid(True)
|
||||
handles, existlabels = ax.get_legend_handles_labels()
|
||||
leg = ax.legend([handles[0], handles[-1]], [existlabels[0], existlabels[-1]], ncol=2, loc=(0.27, -0.12), frameon=False) # Plot just first and last legend entries
|
||||
#leg = ax.legend([handles[0], handles[-3], handles[-2], handles[-1]], [existlabels[0], existlabels[-3], existlabels[-2], existlabels[-1]], ncol=4, loc=(-0.13,-0.12), frameon=False)
|
||||
# leg = ax.legend([handles[0], handles[-3], handles[-2], handles[-1]], [existlabels[0], existlabels[-3], existlabels[-2], existlabels[-1]], ncol=4, loc=(-0.13,-0.12), frameon=False)
|
||||
[legobj.set_linewidth(2) for legobj in leg.legendHandles]
|
||||
|
||||
# Save a pdf of the plot
|
||||
savename = os.path.splitext(args.numpyfile)[0] + '.pdf'
|
||||
fig.savefig(savename, dpi=None, format='pdf', bbox_inches='tight', pad_inches=0.1)
|
||||
#savename = os.path.splitext(args.numpyfile)[0] + '.png'
|
||||
#fig.savefig(savename, dpi=150, format='png', bbox_inches='tight', pad_inches=0.1)
|
||||
# savename = os.path.splitext(args.numpyfile)[0] + '.png'
|
||||
# fig.savefig(savename, dpi=150, format='png', bbox_inches='tight', pad_inches=0.1)
|
||||
|
||||
plt.show()
|
||||
|
@@ -52,13 +52,13 @@ def antenna_like_GSSI_1500(x, y, z, resolution=0.001, rotate90=False, **kwargs):
|
||||
else:
|
||||
# excitationfreq = 1.5e9 # GHz
|
||||
# sourceresistance = 50 # Ohms
|
||||
#absorberEr = 1.7
|
||||
#absorbersig = 0.59
|
||||
# absorberEr = 1.7
|
||||
# absorbersig = 0.59
|
||||
|
||||
# Values from http://hdl.handle.net/1842/4074
|
||||
excitationfreq = 1.71e9
|
||||
#sourceresistance = 4
|
||||
sourceresistance = 230 # Correction for old (< 123) GprMax3D bug
|
||||
# sourceresistance = 4
|
||||
sourceresistance = 230 # Correction for old (< 123) GprMax3D bug
|
||||
absorberEr = 1.58
|
||||
absorbersig = 0.428
|
||||
rxres = 925 # Resistance at Rx bowtie
|
||||
@@ -157,8 +157,8 @@ def antenna_like_GSSI_1500(x, y, z, resolution=0.001, rotate90=False, **kwargs):
|
||||
box(x, y, z, x + casesize[0], y + casesize[1], z + skidthickness, 'hdpe', rotate90origin=rotate90origin)
|
||||
|
||||
# Geometry views
|
||||
#geometry_view(x - dx, y - dy, z - dz, x + casesize[0] + dx, y + casesize[1] + dy, z + skidthickness + casesize[2] + dz, dx, dy, dz, 'antenna_like_GSSI_1500')
|
||||
#geometry_view(x, y, z, x + casesize[0], y + casesize[1], z + 0.010, dx, dy, dz, 'antenna_like_GSSI_1500_pcb', type='f')
|
||||
# geometry_view(x - dx, y - dy, z - dz, x + casesize[0] + dx, y + casesize[1] + dy, z + skidthickness + casesize[2] + dz, dx, dy, dz, 'antenna_like_GSSI_1500')
|
||||
# geometry_view(x, y, z, x + casesize[0], y + casesize[1], z + 0.010, dx, dy, dz, 'antenna_like_GSSI_1500_pcb', type='f')
|
||||
|
||||
# Excitation - custom pulse
|
||||
# print('#excitation_file: {}'.format(os.path.join(moduledirectory, 'GSSIgausspulse1.txt')))
|
||||
@@ -395,8 +395,8 @@ def antenna_like_MALA_1200(x, y, z, resolution=0.001, rotate90=False, **kwargs):
|
||||
box(x, y, z + polypropylenethickness, x + casesize[0], y + casesize[1], z + polypropylenethickness + hdpethickness, 'hdpe', rotate90origin=rotate90origin)
|
||||
|
||||
# Geometry views
|
||||
#geometry_view(x - dx, y - dy, z - dz, x + casesize[0] + dx, y + casesize[1] + dy, z + casesize[2] + skidthickness + dz, dx, dy, dz, 'antenna_like_MALA_1200')
|
||||
#geometry_view(x, y, z, x + casesize[0], y + casesize[1], z + 0.010, dx, dy, dz, 'antenna_like_MALA_1200_pcb', type='f')
|
||||
# geometry_view(x - dx, y - dy, z - dz, x + casesize[0] + dx, y + casesize[1] + dy, z + casesize[2] + skidthickness + dz, dx, dy, dz, 'antenna_like_MALA_1200')
|
||||
# geometry_view(x, y, z, x + casesize[0], y + casesize[1], z + 0.010, dx, dy, dz, 'antenna_like_MALA_1200_pcb', type='f')
|
||||
|
||||
# Excitation
|
||||
print('#waveform: gaussian 1.0 {} myGaussian'.format(excitationfreq))
|
||||
|
@@ -107,31 +107,31 @@ def xcorr(filename, args):
|
||||
raise GeneralError('No outputs matching {} were found'.format(args['outputs']))
|
||||
|
||||
# Normalise reference respose and response from output file
|
||||
# refresp /= np.amax(np.abs(refresp))
|
||||
# modelresp /= np.amax(np.abs(modelresp))
|
||||
# refresp /= np.amax(np.abs(refresp))
|
||||
# modelresp /= np.amax(np.abs(modelresp))
|
||||
|
||||
# Make both responses the same length in time
|
||||
# if reftime[-1] > modeltime[-1]:
|
||||
# reftime = np.arange(0, f.attrs['dt'] * f.attrs['Iterations'], reftime[-1] / len(reftime))
|
||||
# refresp = refresp[0:len(reftime)]
|
||||
# elif modeltime[-1] > reftime[-1]:
|
||||
# modeltime = np.arange(0, reftime[-1], f.attrs['dt'])
|
||||
# modelresp = modelresp[0:len(modeltime)]
|
||||
#
|
||||
# # Downsample the response with the higher sampling rate
|
||||
# if len(modeltime) < len(reftime):
|
||||
# refresp = signal.resample(refresp, len(modelresp))
|
||||
# elif len(reftime) < len(modeltime):
|
||||
# modelresp = signal.resample(modelresp, len(refresp))
|
||||
# if reftime[-1] > modeltime[-1]:
|
||||
# reftime = np.arange(0, f.attrs['dt'] * f.attrs['Iterations'], reftime[-1] / len(reftime))
|
||||
# refresp = refresp[0:len(reftime)]
|
||||
# elif modeltime[-1] > reftime[-1]:
|
||||
# modeltime = np.arange(0, reftime[-1], f.attrs['dt'])
|
||||
# modelresp = modelresp[0:len(modeltime)]
|
||||
|
||||
# Downsample the response with the higher sampling rate
|
||||
# if len(modeltime) < len(reftime):
|
||||
# refresp = signal.resample(refresp, len(modelresp))
|
||||
# elif len(reftime) < len(modeltime):
|
||||
# modelresp = signal.resample(modelresp, len(refresp))
|
||||
|
||||
# Prepare data for normalized cross-correlation
|
||||
refresp = (refresp - np.mean(refresp)) / (np.std(refresp) * len(refresp))
|
||||
modelresp = (modelresp - np.mean(modelresp)) / np.std(modelresp)
|
||||
|
||||
# Plots responses for checking
|
||||
#fig, ax = plt.subplots(subplot_kw=dict(xlabel='Iterations', ylabel='Voltage [V]'), figsize=(20, 10), facecolor='w', edgecolor='w')
|
||||
#ax.plot(refresp,'r', lw=2, label='refresp')
|
||||
#ax.plot(modelresp,'b', lw=2, label='modelresp')
|
||||
# fig, ax = plt.subplots(subplot_kw=dict(xlabel='Iterations', ylabel='Voltage [V]'), figsize=(20, 10), facecolor='w', edgecolor='w')
|
||||
# ax.plot(refresp,'r', lw=2, label='refresp')
|
||||
# ax.plot(modelresp,'b', lw=2, label='modelresp')
|
||||
# ax.grid()
|
||||
# plt.show()
|
||||
|
||||
@@ -142,10 +142,10 @@ def xcorr(filename, args):
|
||||
xcorr = np.nan_to_num(xcorr)
|
||||
|
||||
# Plot cross-correlation for checking
|
||||
# fig, ax = plt.subplots(subplot_kw=dict(xlabel='Iterations', ylabel='Voltage [V]'), figsize=(20, 10), facecolor='w', edgecolor='w')
|
||||
# ax.plot(xcorr,'r', lw=2, label='xcorr')
|
||||
# ax.grid()
|
||||
# plt.show()
|
||||
# fig, ax = plt.subplots(subplot_kw=dict(xlabel='Iterations', ylabel='Voltage [V]'), figsize=(20, 10), facecolor='w', edgecolor='w')
|
||||
# ax.plot(xcorr,'r', lw=2, label='xcorr')
|
||||
# ax.grid()
|
||||
# plt.show()
|
||||
|
||||
xcorrmax = np.amax(xcorr)
|
||||
|
||||
@@ -237,15 +237,15 @@ def compactness(filename, args):
|
||||
# Amplitude ratio of the 1st to 3rd peak - hopefully be a measure of a compact envelope
|
||||
compactness = np.abs(outputdata[peaks[0]]) / np.abs(outputdata[peaks[2]])
|
||||
|
||||
# # Percentage of maximum value to measure compactness of signal
|
||||
# durationthreshold = 2
|
||||
# # Check if there is a peak/trough smaller than threshold
|
||||
# durationthresholdexist = np.where(np.abs(outputdata[peaks]) < (peak * (durationthreshold / 100)))[0]
|
||||
# if durationthresholdexist.size == 0:
|
||||
# compactness = time[peaks[-1]]
|
||||
# else:
|
||||
# time2threshold = time[peaks[durationthresholdexist[0]]]
|
||||
# compactness = time2threshold - time[min(peaks)]
|
||||
# Percentage of maximum value to measure compactness of signal
|
||||
# durationthreshold = 2
|
||||
# Check if there is a peak/trough smaller than threshold
|
||||
# durationthresholdexist = np.where(np.abs(outputdata[peaks]) < (peak * (durationthreshold / 100)))[0]
|
||||
# if durationthresholdexist.size == 0:
|
||||
# compactness = time[peaks[-1]]
|
||||
# else:
|
||||
# time2threshold = time[peaks[durationthresholdexist[0]]]
|
||||
# compactness = time2threshold - time[min(peaks)]
|
||||
|
||||
# Check in case no outputs where found
|
||||
if not outputsused:
|
||||
|
在新工单中引用
屏蔽一个用户