Contents

RAPTOR Tutorial 4: Time varying kinetic profiles

Example of how to input time-varying kinetic profiles ne,ni,ti,zeff These are provided externally to the simulation.

addpath(fullfile(pwd,'..','RAPTOR_code'),'-end'); % add RAPTOR path
%
% load the default parameters,
[config] = RAPTOR_config; % load default config
[~,model,params,init] = RAPTOR_config(config); % generate model structure for these params.
params.debug.iterdisp = 10; % display every 10

% simple inputs: constant current plasma
U = 200e3*ones(size(params.tgrid.tgrid)); % input Ip trace

% initial conditions
[x0,g0,v0] = RAPTOR_initial_conditions(U(1),model,init); % Define the initial condition
loading CHEASE equilibrium from /Users/ffelici/matlab/RAPTOR/chease_equils/TCV_41083_cheasedata
Scaling Te initial condition to match edge value boundary value (50)

time varying ne: scale ne by time-dependent factor

ne0 = v0(model.ne.ind);
% initialize V0
V0 = repmat(v0,1,params.tgrid.nt);
% factor
nefactor = linspace(1,3,params.tgrid.nt);
% clip to 2
nefactor(round(numel(nefactor)/2):end) = nefactor(round(numel(nefactor)/2));
% substitute new time-varying ne0
V0(model.ne.ind,:) = bsxfun(@times,ne0,nefactor);

% run RAPTOR simulation
simres = RAPTOR_predictive(x0,g0,V0,U,model,params);
out1 = RAPTOR_out(simres,model,params);
  istep  telaps newt     res   t[ms]  dt[ms]  Ip[kA] Icd[kA] Ibs[kA] Ioh[kA]      qe    qmin      q0   Vl[V] Te0[keV] ne0[e19]  Wi[kJ] We[kJ]  f_ss  
      1   0.016    4 1.4e-11       0       1     200       0     7.9     192    6.36    2.32    2.32 3.7e+00    0.85    1.00    7.51    0.53 1.5e+01 
     11    0.15    3 1.5e-11      10       1     200       0    6.93     193    6.36     1.7     1.7 3.0e+00    0.75    1.40    9.36    0.66 9.7e+00 
     21    0.33    2 9.9e-09      20       1     200       0    6.86     193    6.36    1.25    1.25 2.8e+00    0.76    1.80   10.56    0.79 7.6e+00 
     31    0.48    2 6.8e-09      30       1     200       0    6.76     193    6.36   0.972   0.972 2.7e+00    0.79    2.00   11.46    0.85 5.7e+00 
     41    0.58    2 8.9e-10      40       1     200       0    6.77     193    6.36   0.817   0.817 2.6e+00    0.85    2.00   12.18    0.88 4.3e+00 
     51    0.67    2 4.9e-10      50       1     200       0    6.79     193    6.36   0.725   0.725 2.4e+00    0.90    2.00   12.75    0.90 3.3e+00 

time varying Zeff

ze0 = v0(model.ze.ind); % get original Zeff profile coefficients
V0 = repmat(v0,1,params.tgrid.nt); % reset to old values

zefactor = 1+linspace(1,0,numel(ze0))'*linspace(0,2,params.tgrid.nt);
% Zeff ramp by factor 3 in core only, keep edge fixed
V0(model.ze.ind,:) = bsxfun(@times,ze0,zefactor);
simres = RAPTOR_predictive(x0,g0,V0,U,model,params);

out2 = RAPTOR_out(simres,model,params);

% end of tutorial
  istep  telaps newt     res   t[ms]  dt[ms]  Ip[kA] Icd[kA] Ibs[kA] Ioh[kA]      qe    qmin      q0   Vl[V] Te0[keV] ne0[e19]  Wi[kJ] We[kJ]  f_ss  
      1   0.016    4 1.4e-11       0       1     200       0     7.9     192    6.36    2.32    2.32 3.7e+00    0.85    1.00    7.51    0.53 1.5e+01 
     11    0.13    2 1.5e-11      10       1     200       0    6.92     193    6.36    1.74    1.74 2.8e+00    0.90    1.00    9.28    0.57 8.7e+00 
     21    0.22    2 9.6e-13      20       1     200       0    7.08     193    6.36    1.35    1.35 2.5e+00    1.10    1.00   10.37    0.63 6.5e+00 
     31    0.32    2 2.9e-13      30       1     200       0    7.25     193    6.36     1.1     1.1 2.4e+00    1.28    1.00   11.16    0.69 4.9e+00 
     41    0.42    2 9.5e-14      40       1     200       0    7.43     193    6.36   0.954   0.954 2.3e+00    1.44    1.00   11.74    0.73 3.6e+00 
     51    0.51    2 5.3e-14      50       1     200       0    7.62     192    6.36   0.864   0.864 2.3e+00    1.58    1.00   12.17    0.78 2.6e+00