Tutorial for time-varying geometry simulation

Simulation with time-varying geometry is demonstrated in case of plasma elongation increase from 1.1 to 1.7. An increase in the edge safety factor q95 is expected. Two CHEASE data files are used to get equilibrium data for low and high plasma elongation.

Contents

Model construction and initialization

close all hidden;
run(fullfile(pwd,'..','RAPTOR_path.m'));
% Load default parameters
config = RAPTOR_config;
% Specify input data file(s)
% One can specify several input data file(s) corresponding to plasma
% equilibrium at different time steps. In case of several data
% files config.equi.filenames contains a cell array.
config.equi.filenames = [{'/equils/chease/tutorial_freegeom_t0.1_cheasedata.mat'},...
           {'/equils/chease/tutorial_freegeom_t0.4_cheasedata.mat'}];
% Specify time grid for input data
config.equi.times = [0.1 0.4];
% Define geometry type
config.equi.mode = 'free';
% Define time grid: time interval from 0.0 to 450.0 ms
config.grid.tgrid = [0:0.005:0.45];

% Build model and get params, init structures, geometry g, kinetic profiles
% v, actuator inputs U
[model,params,init,g,v,U] = build_RAPTOR_model(config);

% Define initial conditions for plasma state
x0 = RAPTOR_initial_conditions(model,init,g(:,1),v(:,1));

Run RAPTOR simulation

simres = RAPTOR_predictive(x0,g,v,U,model,params);
out = RAPTOR_out(simres,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.28    5 1.8e-13       0       5      80       0    1.13    78.9    8.46    3.05    3.05 3.3e+00    0.31    0.31    1.00 7.3e+00 
     11    0.49    2 3.1e-12      50       5      80       0    3.34    76.7    8.46    1.26    1.26 2.2e+00    0.51    0.51    1.00 5.1e-01 
     21    0.68    2 9.6e-15     100       5      80       0    3.38    76.6    8.46    1.19    1.19 2.1e+00    0.53    0.53    1.00 4.9e-02 
     31    0.88    2 2.6e-14     150       5      80       0    3.35    76.7     9.2    1.25    1.25 2.1e+00    0.51    0.51    1.00 5.3e-02 
     41       1    1 6.5e-09     200       5      80       0    3.22    76.8    10.1    1.35    1.35 2.1e+00    0.48    0.48    1.00 7.7e-02 
     51     1.2    2 4.8e-14     250       5      80       0    3.07    76.9    11.1    1.49    1.49 2.1e+00    0.44    0.44    1.00 1.9e-01 
     61     1.4    2 5.1e-14     300       5      80       0    2.89    77.1    12.4    1.67    1.67 2.1e+00    0.41    0.41    1.00 3.0e-01 
     71     1.6    2 1.2e-13     350       5      80       0    2.68    77.3    14.1     1.9     1.9 2.2e+00    0.37    0.37    1.00 4.1e-01 
     81     1.8    2 2.3e-13     400       5      80       0    2.43    77.6    16.2    2.22    2.22 2.3e+00    0.33    0.33    1.00 5.3e-01 
     91       2    2 7.0e-14     450       5      80       0    2.31    77.7    16.2    2.42    2.42 2.4e+00    0.31    0.31    1.00 6.0e-02 

Plot results

subplot(211)
plot(out.time,[out.q95;out.q(end,:);out.Ip(end,:)/1e4]);
xlabel('time, sec'); legend({'q_{95}','q_{edge}','Ip [10kA]'},'location','northwest');
subplot(212)
plot(out.time,[out.te(1,:);out.Wth]);
xlabel('time, sec'); legend({'Te0','W_{e}'},'location','northwest');