Source code for pyleecan.Functions.Plot.plot_A_cfft2

# -*- coding: utf-8 -*-

from ..init_fig import init_fig
from .plot_A_3D import plot_A_3D
from numpy import max as np_max


[docs]def plot_A_cfft2( data, is_elecorder=False, is_spaceorder=False, freq_max=20000, r_max=100, mag_max=None, N_stem=100, disp_negative=False, is_norm=False, unit="SI", save_path=None, fig=None, subplot_index=None, ): """3D stem plot of the 2D Fourier Transform of a field Parameters ---------- data : Data a Data object is_elecorder : bool boolean indicating if we want to use the electrical order for the fft axis is_spaceorder : bool boolean indicating if we want to use the spatial order for the fft axis freq_max : int maximum value of the frequency for the fft axis r_max : int maximum value of the wavenumber for the fft axis mag_max : int maximum value of the magnitude N_stem : int number of stems to plot disp_negative : bool plot negative frequencies is_norm : bool boolean indicating if the field must be normalized unit : str unit in which to plot the field save_path : str path and name of the png file to save fig : Matplotlib.figure.Figure existing figure to use if None create a new one """ # Set plot is_show_fig = True if fig is None else False (fig, axes, patch_leg, label_leg) = init_fig(fig, shape="rectangle") title = "Complex FFT2 of " + data.name if is_elecorder: xlabel = "Electrical order []" freq_max = freq_max / data.normalizations.get("elec_order") if disp_negative: x_str = "freqs=[-" + str(freq_max) + "," + str(freq_max) + "]{elec_order}" x_min = -freq_max else: x_str = "freqs=[0," + str(freq_max) + "]{elec_order}" x_min = 0 else: xlabel = "Frequency [Hz]" if disp_negative: x_str = "freqs=[-" + str(freq_max) + "," + str(freq_max) + "]" x_min = -freq_max else: x_str = "freqs=[0," + str(freq_max) + "]" x_min = 0 if is_spaceorder: ylabel = "Spatial order []" r_max = r_max / data.normalizations.get("space_order") y_str = "wavenumber=[-" + str(r_max) + "," + str(r_max) + "]{space_order}" else: ylabel = "Wavenumber []" y_str = "wavenumber=[-" + str(r_max) + "," + str(r_max) + "]" if unit == "SI": unit = data.unit unit_str = "[" + unit + "]" elif "dB" in unit: unit_str = ( "[" + unit + " re. " + str(data.normalizations["ref"]) + data.unit + "]" ) else: unit_str = "[" + unit + "]" if data.symbol == "Magnitude": zlabel = "Magnitude " + unit_str else: zlabel = r"$|\widehat{" + data.symbol + "}|$ " + unit_str # Extract the field results = data.get_harmonics( N_stem, x_str, y_str, unit=unit, is_norm=False, is_flat=True ) F_flat = results["freqs"] R_flat = results["wavenumber"] B_FT_flat = results[data.symbol] if mag_max is None: mag_max = np_max(B_FT_flat) # Plot the original graph plot_A_3D( F_flat, R_flat, B_FT_flat, fig=fig, x_min=x_min, x_max=freq_max, y_min=r_max, y_max=-r_max, z_min=0, z_max=mag_max, title=title, xlabel=xlabel, ylabel=ylabel, zlabel=zlabel, type="stem", save_path=save_path, subplot_index=subplot_index, ) if is_show_fig: fig.show()