GUI tutorial - how to set up a custom GUI for outputs that interest you

Contents

Independent GUI use and out definition from scratch (for general use)

close all hidden;
clear out;
run(fullfile(pwd,'..','RAPTOR_path.m')); % add RAPTOR path
out.rho = linspace(0,1,21)';
out.time = [0:0.01:1];
out.a = (out.rho.^2)*sin(2*pi*10*out.time); % fake data

pp = RAPTOR_plot_GUI; % get defaults

% plot definitions
plots{1} = struct('xdata','out.time','xlabel','t',...
            'ydata','out.a(end,:)' ,'ylabel','a(end) time trace','yscale',1,'axesnr',1,'sty','--');

plots{2} = struct('xdata','out.rho','xlabel','\rho',...
            'ydata','out.a(:,%i)' ,'ylabel','a profile','yscale',1,'axesnr',2,'sty','-','ylim',[-1 1]);

% axis positions
axesdef(1).position = [0.1 0.1 0.8 0.4];
axesdef(2).position = [0.1 0.5 0.8 0.4];

pp.axes = axesdef;
pp.plots = plots;
RAPTOR_plot_GUI(out,pp)
ans = 

  Figure (1: RAPTOR output) with properties:

      Number: 1
        Name: 'RAPTOR output'
       Color: [0.9400 0.9400 0.9400]
    Position: [0.0495 0.1992 0.9000 0.7000]
       Units: 'normalized'

  Use GET to show all properties

RAPTOR-related use

standard calls for simple RAPTOR run

[config] = RAPTOR_config; % load default params
% generate model, params, init, geometry g, kinetic profiles v
[model,params,init,g,v,U] = build_RAPTOR_model(config);
U(1,:) = 80e3*ones(size(params.tgrid));
% input Ip trace: constant 80kA
init.Ip0 = U(1,1);
% Define the initial condition
x0 = RAPTOR_initial_conditions(model,init,g(:,1),v(:,1));
simres = RAPTOR_predictive(x0,g,v,U,model,params);
     it  telaps newt     res   t[ms]  dt[ms]  Ip[kA] Icd[kA] Ibs[kA] Ioh[kA]      qe    qmin      q0   Vl[V] Te0[keV] Ti0[keV] ne0[e19]   f_ss  
      1   0.058    4 5.7e-10       0       1      80       0    1.41    78.5    15.3    5.55    5.55 3.4e+00    0.21    0.21    1.00 1.1e+01 
     11    0.29    2 1.8e-12      10       1      80       0     2.4    77.6    15.3    2.89    2.89 2.9e+00    0.30    0.30    1.00 4.1e+00 
     21    0.48    2 6.8e-14      20       1      80       0    2.57    77.4    15.3    2.21    2.21 2.7e+00    0.35    0.35    1.00 2.2e+00 
     31     0.7    2 1.5e-14      30       1      80       0    2.67    77.3    15.3    1.93    1.93 2.5e+00    0.38    0.38    1.00 1.3e+00 
     41     0.9    2 1.7e-14      40       1      80       0    2.72    77.2    15.3    1.79    1.79 2.4e+00    0.39    0.39    1.00 7.5e-01 
     51     1.1    2 2.2e-14      50       1      80       0    2.75    77.2    15.3    1.72    1.72 2.4e+00    0.41    0.41    1.00 4.5e-01 

generate out structure

out = RAPTOR_out(simres,model,params);

% uses of the GUI:

simple plots

RAPTOR_plot_GUI(out,'simple');

overview plot

RAPTOR_plot_GUI(out,'overview');

customize plot

pp = RAPTOR_plot_GUI('simple'); % get config structure for simple
disp(pp); % inspect
% customize
disp(pp.plots{1});
p = pp.plots; % copy existing trace definitions

% add li vs time trace to first axis (axesnr,1)
        p = [p, struct('xdata','out.time','xlabel','t',...
            'ydata','out.li3(end,:)' ,'ylabel','li3','yscale',1,'axesnr',1,'sty','--')];

% add profile trace on sixth axis
p = [p,struct('xdata','out.rho','xlabel','\rho',...
            'ydata','out.shear(:,%i)' ,'ylabel','shear','yscale',1,'axesnr',6,'sty','-')];
% '%i' signals that this profile changes in time
% it is evaluated at time index it as: eval(sprintf('out.shear(:,%i)',it))

% append to existing pp sturcture
pp.plots = p;
% call GUI
RAPTOR_plot_GUI(out,pp); % get config structure for simple
          plots: {1x6 cell}
    linestylele: [1x7 struct]
           axes: [2x3 struct]

        xdata: 'out.time'
       xlabel: 't'
        ydata: 'out.Ip(end,:)'
       ylabel: 'I_p[MA]'
       yscale: 1.0000e-06
       axesnr: 1
    linestyle: '-'