Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions idstools/compute/core_sources.py
Original file line number Diff line number Diff line change
Expand Up @@ -365,8 +365,8 @@ def get_single_and_total_electrons_ions_waveforms(self, time_slice):
# single_power_waveform = dict() # waveform
# single_particles_waveform = dict() # waveform
time_length = len(self.ids.time)
total_power_waveform = np.zeros(time_length)
total_particles_waveform = np.zeros(time_length)
total_ion_power_waveform = np.zeros(time_length)
total_ion_particles_waveform = np.zeros(time_length)
single_power_waveform = {}
single_particles_waveform = {}
dict_single_and_total_electrons_waveforms = self.get_single_and_total_electrons_waveforms(time_slice)
Expand Down Expand Up @@ -398,16 +398,14 @@ def get_single_and_total_electrons_ions_waveforms(self, time_slice):
if total_ion_power < 0:
total_ion_power = 0.0

total_power_waveform[time_index] = (
total_electron_power_waveform[time_index] + electrons_power + total_ion_power
)
total_particles_waveform[time_index] = (
total_electron_particles_waveform[time_index] + electrons_particles
) + total_ion_particles
total_ion_power_waveform[time_index] += total_ion_power
total_ion_particles_waveform[time_index] += total_ion_particles
single_power_waveform[source_index].append(electrons_power + total_ion_power)
single_particles_waveform[source_index].append(electrons_particles + total_ion_particles)
single_power_waveform[source_index] = np.array(single_power_waveform[source_index])
single_particles_waveform[source_index] = np.array(single_particles_waveform[source_index])
total_power_waveform = total_electron_power_waveform + total_ion_power_waveform
total_particles_waveform = total_electron_particles_waveform + total_ion_particles_waveform
return {
"total_power_waveform": total_power_waveform,
"total_particles_waveform": total_particles_waveform,
Expand Down
37 changes: 35 additions & 2 deletions idstools/view/core_sources.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,6 @@ def view_power_and_particle_waveforms(self, ax, time_slice, *args, **kwargs):
"""
The function `view_power_and_particle_waveforms` plots power waveforms for different sources and particles
over time.

Args:
ax: The parameter `ax` is an instance of the `Axes` class from the `matplotlib.pyplot` module. It
represents the axes on which the waveforms will be plotted.
Expand All @@ -231,37 +230,71 @@ def view_power_and_particle_waveforms(self, ax, time_slice, *args, **kwargs):
)
source_names = self.core_sources_compute.get_source_names(time_slice)
ax.set_title("POWER AND PARTICLE WAVEFORMS")

# --- Marker spacing: ~8 markers per curve ---
markevery = max(1, ntime // 8)

# --- Per-source markers cycle ---
markers = ["o", "s", "D", "^", "v", "P", "X", "*"]

ax.plot(
time_array,
single_and_total_electrons_ions_waveforms["total_power_waveform"] * 1.0e-6,
label=r"Total electrons+ions",
linestyle="-",
linewidth=3.5,
alpha=0.5,
color="black",
)
ax.plot(
time_array,
single_and_total_electrons_waveforms["total_electron_power_waveform"] * 1.0e-6,
label=r"Total electrons",
linestyle="--",
linewidth=3.0,
alpha=0.5,
color="tab:blue",
)
ax.plot(
time_array,
single_and_total_ions_waveforms["total_ion_power_waveform"] * 1.0e-6,
label=r"Total ions",
linestyle=":",
linewidth=3.0,
alpha=0.5,
color="tab:red",
)

for isource, name in source_names.items():
marker = markers[isource % len(markers)]
ax.plot(
time_array,
single_and_total_electrons_ions_waveforms["single_power_waveform"][isource] * 1.0e-6,
label=name + " [" + str(isource) + "]" + " electrons+ions",
linestyle="-",
linewidth=1.8,
marker=marker,
markersize=5,
markevery=markevery,
)
ax.plot(
time_array,
single_and_total_electrons_waveforms["single_electron_power_waveform"][isource] * 1.0e-6,
label=name + " [" + str(isource) + "]" + " electrons",
linestyle="--",
linewidth=1.5,
marker=marker,
markersize=4,
markevery=markevery,
)
ax.plot(
time_array,
single_and_total_ions_waveforms["single_ion_power_waveform"][isource] * 1.0e-6,
label=name + " [" + str(isource) + "]" + " ions",
linestyle=":",
linewidth=1.5,
marker=marker,
markersize=4,
markevery=markevery,
)
ax.set_ylabel("Power waveforms $\\mathrm{[MW]}$")
ax.set_xlabel("Time (s)")
Expand Down
Loading