-
Notifications
You must be signed in to change notification settings - Fork 313
Description
Prerequisites
- Write a descriptive title.
- Make sure you are able to repro it on the latest released version
- Search the existing issues, especially the pinned issues.
Exception report
-----------------------------------------------------------------------
Last 200 Keys:
Ctrl+Alt+\ O m i s t a j a Ctrl+Alt+\ a n a c o n d a 3 Ctrl+Alt+\ p y t h o n . e x e ' Space ' c : Ctrl+Alt+\ U s e r s Ctrl+Alt+\ O m i s t a j a Ctrl+Alt+\ . v s c o d e Ctrl+Alt+\ e x t e n s i o n s Ctrl+Alt+\ m s - p y t h o n . d e b u g p y - 2 0 2 5 . 1 0 . 0 - w i n 3 2 - x 6 4 Ctrl+Alt+\ b u n d l e d Ctrl+Alt+\ l i b s Ctrl+Alt+\ d e b u g p y Ctrl+Alt+\ l a u n c h e r ' Space ' 5 1 3 2 3 ' Space ' - - ' Space ' C : Ctrl+Alt+\ U s e r s Ctrl+Alt+\ O m i s t a j a Ctrl+Alt+\ m e
t a l l i c _ g l a s s _ a n a l y s i s . p y ' Space Enter
Exception:
System.ArgumentOutOfRangeException: Arvon on oltava vähintään nolla ja pienempi kuin konsolin puskurikoko kyseissä ulottuvuudessa.
Parametrin nimi: left
Todellinen arvo oli -2.
kohteessa Microsoft.PowerShell.Internal.VirtualTerminal.set_CursorLeft(Int32 value)
kohteessa Microsoft.PowerShell.PSConsoleReadLine.ReallyRender(RenderData renderData, String defaultColor)
kohteessa Microsoft.PowerShell.PSConsoleReadLine.ForceRender()
kohteessa Microsoft.PowerShell.PSConsoleReadLine.Insert(Char c)
kohteessa Microsoft.PowerShell.PSConsoleReadLine.SelfInsert(Nullable`1 key, Object arg)
kohteessa Microsoft.PowerShell.PSConsoleReadLine.ProcessOneKey(ConsoleKeyInfo key, Dictionary`2 dispatchTable, Boolean ignoreIfNoAction, Object arg)
kohteessa Microsoft.PowerShell.PSConsoleReadLine.InputLoop()
kohteessa Microsoft.PowerShell.PSConsoleReadLine.ReadLine(Runspace runspace, EngineIntrinsics engineIntrinsics)
-----------------------------------------------------------------------
Screenshot
The bug occurred when I was testing custom code using pyCALPHAD. The translation for the console messages are as follows:
System.ArgumentOutOfRangeException: Value must be at least zero and smaller than the console's buffer size in the specific dimension.
Parameter's name: left:
True value was -2.
The code that triggered the bug was the one below, launched from VSCode using the Anaconda Navigator:
`
from pycalphad import Database, equilibrium, variables as v
import numpy as np
import matplotlib.pyplot as plt
Load thermodynamic database
dbf = Database(r'C:\Users\Omistaja\anaconda3\Lib\site-packages\pycalphad\tests\databases\mmc1.TDB')
Define system components
components = ['AL', 'Y', 'FE', 'SI', 'VA']
Define temperature and composition range
T_range = np.linspace(500, 1500, 200)
conds = {
v.X('Y'): 0.006,
v.X('FE'): 0.094,
v.X('SI'): 0.01,
v.T: T_range,
v.P: 101325
}
Define phases to consider (expand if needed)
phases = ['LIQUID', 'FCC_A1', 'BCC_A2', 'HCP_A3', 'AL13FE4', 'Y5SI3', 'SI', 'C14_LAVES']
Run equilibrium calculation
eq = equilibrium(dbf, components, phases, conds, output='NP')
Extract temperature array
T = np.squeeze(eq['T'].values)
Prepare clean dictionary of phase fractions
phase_fractions = {}
all_phases = np.unique(eq['Phase'].values)
for phase in all_phases:
try:
# Extract and squeeze NP values
np_vals = eq.sel(Phase=phase)['NP'].values
np_vals = np.squeeze(np_vals).astype(float)
# Skip phases with NaN or shape mismatch
if np_vals.shape != T.shape:
continue
if np.isnan(np_vals).all():
continue
phase_fractions[phase] = np_vals
except Exception as e:
print(f"Skipping phase {phase} due to error: {e}")
continue
Plot
plt.figure(figsize=(10, 6))
for phase, np_vals in phase_fractions.items():
plt.plot(T, np_vals, label=phase, linewidth=2)
Detect melting and crystallization if LIQUID is present
if 'LIQUID' in phase_fractions:
liq = phase_fractions['LIQUID']
for i in range(len(liq) - 1):
if np.isnan(liq[i]) or np.isnan(liq[i + 1]):
continue
if liq[i] > 1e-3 and liq[i + 1] <= 1e-3:
T_cryst = T[i]
print(f"Crystallization temperature: {T_cryst:.2f} K")
plt.axvline(T_cryst, color='blue', linestyle='--', linewidth=1)
plt.text(T_cryst + 10, 0.5, 'Cryst.', color='blue', rotation=90)
if liq[i] <= 1e-3 and liq[i + 1] > 1e-3:
T_melt = T[i + 1]
print(f"Melting temperature: {T_melt:.2f} K")
plt.axvline(T_melt, color='red', linestyle='--', linewidth=1)
plt.text(T_melt + 10, 0.5, 'Melt', color='red', rotation=90)
plt.xlabel("Temperature (K)")
plt.ylabel("Phase Fraction")
plt.title("Phase Stability vs Temperature")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
`
Environment data
PS Version: 5.1.19041.6093
PS HostName: ConsoleHost
PSReadLine Version: 2.0.0-beta2
PSReadLine EditMode: Windows
OS: 10.0.19041.1 (WinBuild.160101.0800)
BufferWidth: 166
BufferHeight: 12
Steps to reproduce
Step 1. Open VSCode on Anaconda Navigator.
Step 2. Download pyCALPHAD and download the mmc1.TDB database.
Step 3. Run the script posted in the bug report.
Expected behavior
The script was meant to calculate the crystallisation and melting temperatures of a custom aluminium alloy, and create a graph of its phase diagram using GNUPLOT.
Actual behavior
The bug alert happens, the figure comes out without any phase lines, and the terminal gives the following message:
Skipping phase due to error: "'Phase' is not a valid dimension or coordinate"
Skipping phase AL13FE4 due to error: "'Phase' is not a valid dimension or coordinate"
Skipping phase FCC_A1 due to error: "'Phase' is not a valid dimension or coordinate"
Skipping phase LIQUID due to error: "'Phase' is not a valid dimension or coordinate"
No artists with labels found to put in legend. Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
No temperatures were calculated.