Tutorial on adding the ion temperature to the list of solved equations
By default only psi, Te are solved. Let's add Ti as well.
run(fullfile(pwd,'..','RAPTOR_path.m')); % add RAPTOR path close all hidden; clear; [config] = RAPTOR_config; % load default params config.debug.iterdisp = 10; config.grid.tgrid = [0:2e-3:0.4];
Use BgB transport model since that outputs ion and electron transport coefficients separately
config.chi_e = chi_e('BgB');
Ti defined as independent state to be solved for
config.ti.method = 'state'; config.ti.BCtype = 'Te'; % prescribe edge temperature config.ti.BCval = config.te.BCval; % same edge temperature as electrons config.pei.active = true; % source electron-ion equipartitions, switch it on. [model,params,init,g,v,U] = build_RAPTOR_model(config); % generate model structure for these params.
Inputs
params.echcd.active = true; params.nbhcd.active = true; params.nbhcd.frac_to_electrons = 0.5; rampfun = @(t,tmin,ymin,tmax,ymax) ... max(ymin,min((ymax-ymin)/(tmax-tmin)*(t-tmin),ymax-ymin)+ymin); % anonymous function for ramps U(1,:) = rampfun(params.tgrid,0,80e3,0.2,150e3); % input Ip trace: constant 80kA U(params.echcd.uindices(1),params.tgrid>=0.1 & params.tgrid<=0.15) = 500e3; % briefly add some ECH (electron only) U(params.nbhcd.uindices,:) = rampfun(params.tgrid,0.2,0e3,0.25,500e3); % input NBI: heat those ions init.Ip0 = U(1); % initial condition for current x0 = RAPTOR_initial_conditions(model,init,g(:,1),v(:,1)); % Define the initial condition
run RAPTOR and get outputs
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.089 6 1.1e-11 0 2 80 0 1.41 78.5 15.3 5.42 5.42 2.1e+00 0.28 0.17 1.00 4.6e+00
11 0.38 2 1.3e-12 20 2 87 0 5.02 81.9 14.1 2.88 2.88 1.5e+00 0.57 0.10 1.00 2.8e+00
21 0.63 2 6.2e-14 40 2 94 0 5.63 88.3 13 2.05 2.05 1.4e+00 0.72 0.11 1.00 2.1e+00
31 0.87 2 6.9e-15 60 2 101 0 6.04 94.9 12.1 1.67 1.67 1.3e+00 0.83 0.11 1.00 1.8e+00
41 1.1 2 7.1e-15 80 2 108 0 6.34 102 11.4 1.46 1.46 1.2e+00 0.93 0.11 1.00 1.6e+00
51 1.4 6 7.1e-11 100 2 115 0 6.59 108 10.7 1.32 1.32 8.3e-01 2.79 0.09 1.00 2.7e+00
61 1.7 2 2.0e-14 120 2 122 0 20.9 101 10.1 1.24 1.24 4.5e-01 3.61 0.07 1.00 1.3e+00
71 1.9 2 1.4e-14 140 2 129 0 20.6 108 9.51 1.16 1.16 4.6e-01 3.71 0.07 1.00 1.3e+00
81 2.3 3 3.6e-12 160 2 136 0 8.42 128 9.02 1.1 1.1 1.0e+00 1.32 0.10 1.00 1.5e+00
91 2.5 2 3.2e-14 180 2 143 0 7.23 136 8.58 1.04 1.04 1.1e+00 1.26 0.12 1.00 1.5e+00
101 2.8 2 3.4e-14 200 2 150 0 7.34 143 8.18 0.985 0.985 1.1e+00 1.33 0.12 1.00 1.4e+00
111 3 2 2.5e-12 220 2 150 0 10.8 139 8.18 0.94 0.94 7.0e-01 1.75 0.84 1.00 8.6e-01
121 3.2 2 2.7e-12 240 2 150 0 14.6 135 8.18 0.908 0.908 5.0e-01 2.17 1.55 1.00 5.1e-01
131 3.5 2 2.3e-13 260 2 150 0 16.9 133 8.18 0.886 0.886 4.2e-01 2.40 1.91 1.00 3.3e-01
141 3.7 1 8.1e-09 280 2 150 0 16.9 133 8.18 0.867 0.867 4.1e-01 2.41 1.94 1.00 2.7e-01
151 3.9 1 3.7e-09 300 2 150 0 16.9 133 8.18 0.85 0.85 4.1e-01 2.42 1.96 1.00 2.1e-01
161 4 1 2.1e-09 320 2 150 0 16.8 133 8.18 0.836 0.836 4.0e-01 2.43 1.98 1.00 1.7e-01
171 4.2 1 1.3e-09 340 2 150 0 16.8 133 8.18 0.826 0.826 4.0e-01 2.43 1.99 1.00 1.3e-01
181 4.4 1 7.5e-10 360 2 150 0 16.8 133 8.18 0.817 0.817 4.0e-01 2.44 2.00 1.00 1.0e-01
191 4.5 1 4.5e-10 380 2 150 0 16.8 133 8.18 0.81 0.81 3.9e-01 2.44 2.01 1.00 8.0e-02
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
201 4.7 1 2.7e-10 400 2 150 0 16.8 133 8.18 0.805 0.805 3.9e-01 2.44 2.01 1.00 6.2e-02
Plots
subplot(211) plot(out.time,out.Ip(end,:)/1e6,'b',... out.time,out.Pec/1e6,'k--',... out.time,out.Pnbe/1e6,'k',... out.time,out.ne(1,:)/1e19,'m'); legend('I_p [MA]','P_{EC} [MW]','P_{NB,el} [MW]','n_{e0,19}'); subplot(212) plot(out.time,out.te(1,:),'b',out.time,out.ti(1,:),'r');legend('T_{e0}','T_{i0}');