From 84445f4f7b49b39d9c1b5970381fd51a746697c6 Mon Sep 17 00:00:00 2001 From: Craig Warren Date: Fri, 31 Mar 2023 13:56:05 +0100 Subject: [PATCH] Update to impulse info --- images_shared/impulse.png | Bin 0 -> 35465 bytes toolboxes/Plotting/README.rst | 20 ++++++++++++---- toolboxes/Plotting/plot_source_wave.py | 32 ++++++++++++------------- 3 files changed, 31 insertions(+), 21 deletions(-) create mode 100644 images_shared/impulse.png diff --git a/images_shared/impulse.png b/images_shared/impulse.png new file mode 100644 index 0000000000000000000000000000000000000000..e1677f4052e0e0c8bb8a0075e23f9f0c3e593332 GIT binary patch literal 35465 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 literal 0 HcmV?d00001 diff --git a/toolboxes/Plotting/README.rst b/toolboxes/Plotting/README.rst index e65135ab..e15735b9 100644 --- a/toolboxes/Plotting/README.rst +++ b/toolboxes/Plotting/README.rst @@ -237,10 +237,20 @@ impulse A unit impulse or dirac delta waveform. -.. math:: - - W(t) = 1, dt <= 0 - W(t) = 0, dt > 0 +.. math:: + + W(t) = + \begin{cases} + 1 &\text{if $dt\leq 0$}, \\ + 0 &\text{if $dt>1$}. + \end{cases} + +.. figure:: ../../images_shared/impulse.png + + Example of the ``impulse`` waveform - time domain. .. note:: - The impulse waveform should be used with care! The impulse response of a model, i.e. when the source in the model is excited using the impulse waveform, is not likely to be useful when viewed in isolation. However, the impulse response of a model can be convolved with different inputs (waveforms) to provide valid outputs without having to run a separate model for each different input (waveform). N.B. The impulse response of the model can only be legitimately convolved with inputs (waveforms) that respect the limits of numerical dispersion in the original model, i.e. if a waveform contains frequencies that will not propagate correctly (due to numerical dispersion) in the original model, then the convolution of the waveform with the impulse response will not be valid. \ No newline at end of file + * The impulse waveform should be used with care! + * The impulse response of a model, i.e. when the source in the model is excited using the impulse waveform, is not likely to be useful when viewed in isolation. + * However, the impulse response of a model can be convolved with different inputs (waveforms) to provide valid outputs without having to run a separate model for each different input (waveform). + * The impulse response of the model can only be legitimately convolved with inputs (waveforms) that respect the limits of numerical dispersion in the original model, i.e. if a waveform contains frequencies that will not propagate correctly (due to numerical dispersion) in the original model, then the convolution of the waveform with the impulse response will not be valid. \ No newline at end of file diff --git a/toolboxes/Plotting/plot_source_wave.py b/toolboxes/Plotting/plot_source_wave.py index 6d6be461..ba4cfaf5 100644 --- a/toolboxes/Plotting/plot_source_wave.py +++ b/toolboxes/Plotting/plot_source_wave.py @@ -25,7 +25,7 @@ import numpy as np from gprMax.utilities.utilities import fft_power, round_value from gprMax.waveforms import Waveform -logger = logging.getLogger(__name__) +logging.basicConfig(format='%(message)s', level=logging.INFO) def check_timewindow(timewindow, dt): @@ -53,7 +53,7 @@ def check_timewindow(timewindow, dt): if timewindow > 0: iterations = round_value((timewindow / dt)) + 1 else: - logger.exception('Time window must have a value greater than zero') + logging.exception('Time window must have a value greater than zero') raise ValueError return timewindow, iterations @@ -82,23 +82,23 @@ def mpl_plot(w, timewindow, dt, iterations, fft=False, save=False): waveform[timeiter.index] = w.calculate_value(timeiter[0], dt) timeiter.iternext() - logger.info('Waveform characteristics...') - logger.info(f'Type: {w.type}') - logger.info(f'Maximum (absolute) amplitude: {np.max(np.abs(waveform)):g}') + logging.info('Waveform characteristics...') + logging.info(f'Type: {w.type}') + logging.info(f'Maximum (absolute) amplitude: {np.max(np.abs(waveform)):g}') - if w.freq and not w.type == 'gaussian': - logger.info(f'Centre frequency: {w.freq:g} Hz') + if w.freq and not w.type == 'gaussian' and not w.type == 'impulse': + logging.info(f'Centre frequency: {w.freq:g} Hz') if (w.type == 'gaussian' or w.type == 'gaussiandot' or w.type == 'gaussiandotnorm' or w.type == 'gaussianprime' or w.type == 'gaussiandoubleprime'): delay = 1 / w.freq - logger.info(f'Time to centre of pulse: {delay:g} s') + logging.info(f'Time to centre of pulse: {delay:g} s') elif w.type == 'gaussiandotdot' or w.type == 'gaussiandotdotnorm' or w.type == 'ricker': delay = np.sqrt(2) / w.freq - logger.info(f'Time to centre of pulse: {delay:g} s') + logging.info(f'Time to centre of pulse: {delay:g} s') - logger.info(f'Time window: {timewindow:g} s ({iterations} iterations)') - logger.info(f'Time step: {dt:g} s') + logging.info(f'Time window: {timewindow:g} s ({iterations} iterations)') + logging.info(f'Time step: {dt:g} s') if fft: # FFT @@ -133,7 +133,7 @@ def mpl_plot(w, timewindow, dt, iterations, fft=False, save=False): ax2.set_ylabel('Power [dB]') else: - fig, ax1 = plt.subplots(num=w.type, figsize=(20, 10), facecolor='w', + fig, ax1 = plt.subplots(num=w.type, figsize=(10, 10), facecolor='w', edgecolor='w') # Plot waveform @@ -150,8 +150,8 @@ def mpl_plot(w, timewindow, dt, iterations, fft=False, save=False): fig.savefig(savefile.with_suffix('.pdf'), dpi=None, format='pdf', bbox_inches='tight', pad_inches=0.1) # Save a PNG of the figure - # fig.savefig(savefile.with_suffix('.png'), dpi=150, format='png', - # bbox_inches='tight', pad_inches=0.1) + fig.savefig(savefile.with_suffix('.png'), dpi=150, format='png', + bbox_inches='tight', pad_inches=0.1) return plt @@ -174,11 +174,11 @@ if __name__ == "__main__": # Check waveform parameters if args.type.lower() not in Waveform.types: - logger.exception(f"The waveform must have one of the following types " + + logging.exception(f"The waveform must have one of the following types " + f"{', '.join(Waveform.types)}") raise ValueError if args.freq <= 0: - logger.exception('The waveform requires an excitation frequency value of ' + + logging.exception('The waveform requires an excitation frequency value of ' + 'greater than zero') raise ValueError