RAPTOR tutorial: ITER scenario with alpha particle heating
In this tutorial we simulate the alpha particle heating for a standard ITER scenario.
Contents
ITER scenario parameters
clear; close all hidden; run(fullfile(pwd,'..','RAPTOR_path.m')); % add RAPTOR path % ramp function rampfun = @(t,tmin,ymin,tmax,ymax) max(ymin,min((ymax-ymin)/(tmax-tmin)*(t-tmin),ymax-ymin)+ymin); % anonymous function for ramps [config] = RAPTOR_config('ITER'); % load default ITER params % RAPTOR run options config.numerics.restol = 1e-8; config.debug.iterplot = 0; config.debug.iterdisp = 10; % Physics modules for standard ITER scenario % chi_e config.chi_e = chi_e('BgB'); config.chi_e.params.cneo = 0.3; config.chi_e.params.aegb = 1.8 * config.chi_e.params.aegb; config.chi_e.params.aeb = 0.3 * config.chi_e.params.aeb; config.pbrem.active = 1; config.pei.active = 1; config.prad.active = 0; % ECHCD config.echcd = echcd('echcd_gaussian'); config.echcd.params.active = true; config.echcd.params.rdep = [0.05 0.2 0.3]; % config.echcd.params.wdep = [.1 .15 .15]; % config.echcd.params.cd_eff = [5 5 15]; % current drive efficiency factor config.echcd.params.uindices = [3 4 5]; % index of power for each actuator in input vector % NBI % add physics-based NBI module config.nbhcd = nbhcd('nbhcd_gaussian'); config.nbhcd.params.uindices=[2]; config.nbhcd.params.rdep = [0.23]; % config.nbhcd.params.wdep = [0.15]; % broad heating config.nbhcd.params.wdep_out = [1.1]; % broad heating config.nbhcd.params.cd_eff = [4]; % current drive config.nbhcd.params.active = true; config.nbhcd.params.frac_to_electrons = 0.72; % switch on alpha heating config.palpha.active = 1; config.palpha.calpha = 1.0; % factor scaling alpha power (see P_alpha.m for details) config.palpha.check = 0; % optional check of alpha particle module derivatives % Timing t_0 = 0.0; t_end = 140; t_flattop = 100; % flattop current time t_nbistart = 85; t_nbimax = 110; % NBI timing % H mode t_LH = 100; % LH transition time d_LH = 10; % LH transition duration % define time grid Ts1 = 0.2; % fastest sample time Ts2 = 1; % slow sample time % time grid config.grid.tgrid = unique([t_0 :Ts1 :t_0+1,... t_0+1:Ts2 :t_LH,... t_LH:Ts1:t_LH+2,... t_LH+2:Ts2:t_end]); % spatial grid nrho=21; config.grid.rhogrid = linspace(0,1,nrho); config.grid.rhogrid = [0:0.05:0.9,0.925:0.025:1]; config.te.BCval = 300; config.ni.method = 'nescal'; config.ti.method = 'tescal'; % Hmode config.hmode.active = true; config.hmode.KTeped = 1; % feedback gain on pedestal height config.hmode.rhoped = .90; config.hmode.Teped = 4.3e3; % pedestal height config.hmode.chiefact = 1; % core transport decrease during Hmode config.hmode.check = false; config.saw.active=false; % Build model % generate model, params, init, geometry g, kinetic profiles v [model,params,init,g,v,U] = build_RAPTOR_model(config);
Actuator inputs
plasma current
Ip0 = 4e6; Ipflattop = 12e6; U(1,:) = rampfun(params.tgrid,t_0,Ip0,t_flattop,Ipflattop); % NBI Pnb_max = 33e6; U(2,:) = rampfun(params.tgrid,t_nbistart,0,t_nbimax,Pnb_max); % NBI % ECCD % rdep = [0.05 0.2 0.3]; % U(3,:) = interp1([40 60 95 105],[0e6 2e6 0 0],params.tgrid,'linear',0); U(4,:) = interp1([40 60 95 105],[5e6 5e6 14e6 0],params.tgrid,'linear',0); U(5,:) = interp1([95 105 140],[0 18e6 37e6],params.tgrid,'linear',0);
Kinetic profile settings
initial conditions
init.newidth = 2; init.ni0scal = 0.9; init.niescal = 0.9; init.ti0scal = 1; init.tiescal = 1; init.te0 = 2e3; init.tewidth = 0.6; init.ze0 = 1.6; init.zee = 1.6; init.jpow = 1; init.Ip0 = U(1,1); % Construct kinetic profiles according to the new settings. v = build_kinetic_profiles(model,init); % Define the initial condition x0 = RAPTOR_initial_conditions(model,init,g(:,1),v(:,1)); % Assign V vmod = v*ones(1,numel(params.tgrid)); % density, assign by hand to V neparam = neHmodeEvo; % LH transition effect on ne evolution neparam.LHtime = t_LH; neparam.LHduration = d_LH; % duration neparam.HLtime = t_end+10; % not in simulation neparam.peaking = 1; neparam.neL_t = rampfun(params.tgrid,t_LH,3e19,t_LH+d_LH,6.5e19); neparam.neH_t = 6.5e19; ne = neHmodeEvo(model,params,neparam); vmod(model.ne.vind,:) = model.ne.Lamgauss\ne; % hmode timing vmod(model.hmode.vind,:) = rampfun(params.tgrid,t_LH,0,t_LH+d_LH,1);
Run RAPTOR
H-mode simulation
simres = RAPTOR_predictive(x0,g,vmod,U,model,params);
% output
out = RAPTOR_out(simres,model,params);
it telaps newt res t[ s] dt[ s] Ip[MA] Icd[MA] Ibs[MA] Ioh[MA] qe qmin q0 Vl[V] Te0[keV] Ti0[keV] ne0[e19] f_ss
1 0.066 4 2.8e-12 0 0.2 4 0 0.154 3.85 15 2.67 2.67 2.3e-01 1.92 1.92 3.00 3.6e+00
11 0.46 2 6.6e-09 6 1 4.48 0 0.134 4.35 13.4 2.17 2.17 7.1e-01 1.80 1.80 3.00 1.4e+00
21 0.73 2 2.5e-11 16 1 5.28 0 0.15 5.13 11.4 1.87 1.87 7.8e-01 2.04 2.04 3.00 1.9e+00
31 1 2 1.3e-11 26 1 6.08 0 0.166 5.91 9.9 1.65 1.65 8.0e-01 2.35 2.35 3.00 2.1e+00
41 1.3 2 8.8e-12 36 1 6.88 0 0.178 6.7 8.75 1.45 1.45 8.0e-01 2.69 2.69 3.00 2.2e+00
51 1.7 3 1.6e-11 46 1 7.68 0.111 0.445 7.12 7.84 1.37 1.37 5.6e-01 8.34 8.34 3.00 2.5e+00
61 2 2 4.0e-11 56 1 8.48 0.162 0.492 7.83 7.1 1.35 1.35 5.1e-01 10.47 10.47 3.00 2.3e+00
71 2.3 2 3.7e-11 66 1 9.28 0.235 0.536 8.51 6.49 1.21 1.24 4.7e-01 12.19 12.19 3.00 2.2e+00
81 2.6 2 3.5e-11 76 1 10.1 0.337 0.585 9.16 5.97 1.12 1.12 4.3e-01 13.67 13.67 3.00 2.0e+00
91 2.9 3 3.1e-11 86 1 10.9 0.457 0.627 9.8 5.53 1.06 1.06 3.9e-01 15.11 15.11 3.00 1.9e+00
101 3.2 3 5.8e-11 96 1 11.7 2.01 0.773 8.89 5.15 1.03 1.03 2.8e-01 17.96 17.96 3.00 1.4e+00
111 3.6 3 3.1e-11 101 0.2 12 3.54 1.08 7.38 5.01 1.04 1.04 3.9e-02 17.09 17.09 3.79 1.0e+00
121 4 3 3.5e-11 108 1 12 4.22 2.05 5.73 5.01 1.05 1.05 -8.2e-03 18.30 18.30 6.36 7.8e-01
131 4.3 2 4.9e-11 118 1 12 5.06 2.41 4.54 5.01 1.06 1.06 1.3e-02 20.15 20.15 6.50 5.3e-01
141 4.6 2 8.7e-10 128 1 12 5.52 2.49 3.99 5.01 1.05 1.05 2.0e-02 21.02 21.02 6.50 4.9e-01
151 4.9 2 2.9e-11 138 1 12 6.02 2.57 3.42 5.01 1.05 1.05 2.2e-02 21.84 21.84 6.50 5.0e-01
Plot results
subplot(321); plot(out.time,out.U(1,:)/1e6); title('Ip [MA]'); subplot(322); plot(out.time,out.U(2,:)/1e6); title('P_{aux} [MW]') subplot(323); plot(out.time,out.Palpha(end,:)/1e6); title('P_{alpha} [MW]') subplot(324); plot(out.time,out.f_ss); title('f_{ss} (steady stateness)') subplot(325); [cs,h] = contour(out.time,out.rho,out.q,[1 3/2 2 3 4],'color','k'); clabel(cs,h,'labelspacing',72); title('rational q locations'); xlabel('t [s]'); ylabel('\rho'); subplot(326); [cs,h] = contour(out.time,out.rho,out.te/1e3,[0.5 1 2 4 8 16 32],'color','k'); clabel(cs,h,'labelspacing',72); title('T_e contours [keV]') xlabel('t [s]'); ylabel('\rho');