function visualizeGSWavefunction(folder_path, run_index)
    
    set(0,'defaulttextInterpreter','latex')
    set(groot, 'defaultAxesTickLabelInterpreter','latex'); set(groot, 'defaultLegendInterpreter','latex');
    
    format long
    

    % Load data
    Data   = load(sprintf(horzcat(folder_path, '/Run_%03i/psi_gs.mat'),run_index),'psi','Params','Transf','Observ');
    
    Params = Data.Params;
    Transf = Data.Transf; 
    Observ = Data.Observ; 
    if isgpuarray(Data.psi)
        psi    = gather(Data.psi);
    else
        psi    = Data.psi;
    end
    
    if isgpuarray(Data.Observ.residual)
        Observ.residual = gather(Data.Observ.residual);
    else
        Observ.residual = Data.Observ.residual;
    end

    % Axes scaling and coordinates in micrometers
    x = Transf.x * Params.l0 * 1e6; 
    y = Transf.y * Params.l0 * 1e6;
    z = Transf.z * Params.l0 * 1e6;

    dx = x(2)-x(1); dy = y(2)-y(1); dz = z(2)-z(1);
    
    % Compute probability density |psi|^2
    n = abs(psi).^2;
    
    %Plotting    
    figure(1);
    clf
    set(gcf,'Position', [100, 100, 1600, 900])
    t = tiledlayout(2, 3, 'TileSpacing', 'compact', 'Padding', 'compact'); % 2x3 grid

    nexttile;
    nxz = squeeze(trapz(n*dy,2));
    nyz = squeeze(trapz(n*dx,1));
    nxy = squeeze(trapz(n*dz,3));
    plotxz = pcolor(x,z,nxz');
    set(plotxz, 'EdgeColor', 'none');
    cbar1 = colorbar;
    cbar1.Label.Interpreter = 'latex';
    % cbar1.Ticks = []; % Disable the ticks
    colormap(gca, Helper.Colormaps.plasma())
    xlabel('$x$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
    ylabel('$z$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
    title('$|\Psi(x,z)|^2$', 'Interpreter', 'latex', 'FontSize', 14) 

    nexttile;
    plotyz = pcolor(y,z,nyz');
    set(plotyz, 'EdgeColor', 'none');
    cbar1 = colorbar;
    cbar1.Label.Interpreter = 'latex';
    % cbar1.Ticks = []; % Disable the ticks
    colormap(gca, Helper.Colormaps.plasma())
    xlabel('$y$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
    ylabel('$z$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
    title('$|\Psi(y,z)|^2$', 'Interpreter', 'latex', 'FontSize', 14) 

    nexttile;
    plotxy = pcolor(x,y,nxy');
    set(plotxy, 'EdgeColor', 'none');
    cbar1 = colorbar;
    cbar1.Label.Interpreter = 'latex';
    % cbar1.Ticks = []; % Disable the ticks
    colormap(gca, Helper.Colormaps.plasma())
    xlabel('$x$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
    ylabel('$y$ ($\mu$m)', 'Interpreter', 'latex', 'FontSize', 14)
    title('$|\Psi(x,y)|^2$', 'Interpreter', 'latex', 'FontSize', 14) 

    nexttile;
    plot(-log10(Observ.residual),'-b')
    ylabel('$-\mathrm{log}_{10}(r)$', 'FontSize', 14); xlabel('Time steps', 'FontSize', 14);
    title('Residual', 'FontSize', 14);
    grid on
    
    nexttile;
    plot(Observ.EVec,'-b')
    ylabel('$E_{tot}$', 'FontSize', 14); xlabel('Time steps', 'FontSize', 14);
    title('Total Energy', 'FontSize', 14);
    grid on

    nexttile;
    plot(Observ.mucVec,'-b')
    ylabel('$\mu$', 'FontSize', 14); xlabel('Time steps', 'FontSize', 14);
    title('Chemical Potential', 'FontSize', 14);
    grid on
end