diff --git a/matlab/TCV_IMAS/tcv_get_ids_nbi.m b/matlab/TCV_IMAS/tcv_get_ids_nbi.m index e4d15d27664f6d733a1bed5fed935a65c1e2efcd..6eae1073c89c2ce97f89a8defe12c9036cc0bbc5 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_nbi.m +++ b/matlab/TCV_IMAS/tcv_get_ids_nbi.m @@ -9,6 +9,7 @@ function [ids_nbi,ids_nbi_description,varargout] = tcv_get_ids_nbi(shot,ids_nbi_ % Most information taken from NBI and NB_Model wiki pages: % https://spcwiki.epfl.ch/wiki/NBI % https://spcwiki.epfl.ch/wiki/NB_Model +i_nbi1=1; i_nbi2=2; i_dnbi=3; if exist('gdat_params') [ids_nbi, params_nbi] = tcv_ids_headpart(shot,ids_nbi_empty,'nbi','homogeneous_time',0,'gdat_params',gdat_params,varargin{:}); @@ -27,15 +28,20 @@ ids_nbi_description=''; % nb_units = 3; % assume 3 units: 1st NB1. 2nd NB2 and DNBI -ids_nbi.unit(1:nb_units) = ids_nbi.unit(1); % copy empty structure for all units, then fill in - % create lists of what is different for each units so that can scan through units unit_identifier = {'NB1', 'NB2', 'DNBI'}; unit_name = {'25keV 1st NBH source', '50keV 2nd NBH source', 'diagnostic NBI'}; results_subname = {'nb1', 'nb2', 'dnbi'}; + if shot<70811 - results_subname = {'nbh', 'nb2', 'dnbi'}; + unit_identifier = {'NB1', 'DNBI'}; + unit_name = {'25keV 1st NBH source', 'diagnostic NBI'}; + results_subname = {'nbh','dnbi'}; + nb_units = 2; % assume 2 units: 1st NBI and DNBI end +nbi_indices=1:nb_units; +ids_nbi.unit(nbi_indices) = ids_nbi.unit(1); % copy empty structure for all units, then fill in + species.a = [2., 2., 1.]; species.z_n = [1., 1., 1.]; species.label = {'D', 'D','H'}; @@ -46,45 +52,45 @@ beamlets_group.width_horizontal = [250, 250, 87.2]*1e-3; beamlets_group.width_vertical = [250, 250, 87.2]*1e-3; beamlets_group.focus(1:nb_units)=struct('focal_length_horizontal',[],'focal_length_vertical',[],'width_min_horizontal',[],'width_min_vertical',[]); -beamlets_group.focus(1).focal_length_horizontal = 3.76; -beamlets_group.focus(1).focal_length_vertical = 3.98; -beamlets_group.focus(1).width_min_horizontal = 21.6*1e-2; -beamlets_group.focus(1).width_min_vertical = 9.4*1e-2; +beamlets_group.focus(i_nbi1).focal_length_horizontal = 3.76; +beamlets_group.focus(i_nbi1).focal_length_vertical = 3.98; +beamlets_group.focus(i_nbi1).width_min_horizontal = 21.6*1e-2; +beamlets_group.focus(i_nbi1).width_min_vertical = 9.4*1e-2; % So far NB2 parameters are merely a copy of NB1 parameters -beamlets_group.focus(2).focal_length_horizontal = 3.76; -beamlets_group.focus(2).focal_length_vertical = 3.98; -beamlets_group.focus(2).width_min_horizontal = 21.6*1e-2; -beamlets_group.focus(2).width_min_vertical = 9.4*1e-2; -beamlets_group.focus(3).focal_length_horizontal = 1.8; -beamlets_group.focus(3).focal_length_vertical = 1.8; -beamlets_group.focus(3).width_min_horizontal = 12.1*1e-2; -beamlets_group.focus(3).width_min_vertical = 12.1*1e-2; +beamlets_group.focus(i_nbi2).focal_length_horizontal = 3.76; +beamlets_group.focus(i_nbi2).focal_length_vertical = 3.98; +beamlets_group.focus(i_nbi2).width_min_horizontal = 21.6*1e-2; +beamlets_group.focus(i_nbi2).width_min_vertical = 9.4*1e-2; +beamlets_group.focus(i_dnbi).focal_length_horizontal = 1.8; +beamlets_group.focus(i_dnbi).focal_length_vertical = 1.8; +beamlets_group.focus(i_dnbi).width_min_horizontal = 12.1*1e-2; +beamlets_group.focus(i_dnbi).width_min_vertical = 12.1*1e-2; beamlets_group.divergence(1:nb_units) = struct('particle_fraction',[],'vertical',[],'horizontal',[]); -beamlets_group.divergence(1).particle_fraction = 1.; -beamlets_group.divergence(1).vertical = 0.59 *pi/180.; -beamlets_group.divergence(1).horizontal = 1.4 *pi/180.; -beamlets_group.divergence(2).particle_fraction = 1.; -beamlets_group.divergence(2).vertical = 0.59 *pi/180.; -beamlets_group.divergence(2).horizontal = 1.4 *pi/180.; -beamlets_group.divergence(3).particle_fraction = 1.; -beamlets_group.divergence(3).vertical = 0.53 *pi/180.; -beamlets_group.divergence(3).horizontal = 0.53 *pi/180.; +beamlets_group.divergence(i_nbi1).particle_fraction = 1.; +beamlets_group.divergence(i_nbi1).vertical = 0.59 *pi/180.; +beamlets_group.divergence(i_nbi1).horizontal = 1.4 *pi/180.; +beamlets_group.divergence(i_nbi2).particle_fraction = 1.; +beamlets_group.divergence(i_nbi2).vertical = 0.59 *pi/180.; +beamlets_group.divergence(i_nbi2).horizontal = 1.4 *pi/180.; +beamlets_group.divergence(i_dnbi).particle_fraction = 1.; +beamlets_group.divergence(i_dnbi).vertical = 0.53 *pi/180.; +beamlets_group.divergence(i_dnbi).horizontal = 0.53 *pi/180.; %dcd_NBH = psitbxdcd(4.5889, 0.0, 211.9535*pi/180, 0.0, -9.2308*pi/180); beamlets_group.position(1:nb_units) = struct('phi',[],'r',[],'z',[]); -beamlets_group.position(1).phi = 211.9535*pi/180.; -beamlets_group.position(1).r = 4.5889; -beamlets_group.position(1).z = 0.; -beamlets_group.position(2).phi = 58.8255*pi/180.; -beamlets_group.position(2).r = 4.5889; -beamlets_group.position(2).z = 0.; -beamlets_group.position(3).phi = 295.2416*pi/180.; -beamlets_group.position(3).r = 4.9274; -beamlets_group.position(3).z = 0.; +beamlets_group.position(i_nbi1).phi = 211.9535*pi/180.; +beamlets_group.position(i_nbi1).r = 4.5889; +beamlets_group.position(i_nbi1).z = 0.; +beamlets_group.position(i_nbi2).phi = 58.8255*pi/180.; +beamlets_group.position(i_nbi2).r = 4.5889; +beamlets_group.position(i_nbi2).z = 0.; +beamlets_group.position(i_dnbi).phi = 295.2416*pi/180.; +beamlets_group.position(i_dnbi).r = 4.9274; +beamlets_group.position(i_dnbi).z = 0.; params_eff = params_eff_ref; -for iunit=1:nb_units +for iunit=nbi_indices ids_nbi.unit{iunit}.identifier = unit_identifier{iunit}; ids_nbi.unit{iunit}.name = unit_name{iunit}; %% power @@ -131,21 +137,9 @@ for iunit=1:nb_units % https://spcwiki.epfl.ch/wiki/NB_Model ids_nbi.unit{iunit}.beamlets_group{1}.direction = beamlets_group.direction(iunit); %clockwise ids_nbi.unit{iunit}.beamlets_group{1}.tangency_radius = beamlets_group.tangency_radius(iunit); - % ids_nbi.unit{iunit}.beamlets_group{1}.tangency_radius_error_index: -999999999 - % ids_nbi.unit{iunit}.beamlets_group{1}.tangency_radius_error_lower: -9.0000e+40 - % ids_nbi.unit{iunit}.beamlets_group{1}.tangency_radius_error_upper: -9.0000e+40 ids_nbi.unit{iunit}.beamlets_group{1}.angle = beamlets_group.angle(iunit); %injection parallel to midplane - % ids_nbi.unit{iunit}.beamlets_group{1}.angle_error_index: -999999999 - % ids_nbi.unit{iunit}.beamlets_group{1}.angle_error_lower: -9.0000e+40 - % ids_nbi.unit{iunit}.beamlets_group{1}.angle_error_upper: -9.0000e+40 ids_nbi.unit{iunit}.beamlets_group{1}.width_horizontal = beamlets_group.width_horizontal(iunit); - % ids_nbi.unit{iunit}.beamlets_group{1}.width_horizontal_error_index: -999999999 - % ids_nbi.unit{iunit}.beamlets_group{1}.width_horizontal_error_lower: -9.0000e+40 - % ids_nbi.unit{iunit}.beamlets_group{1}.width_horizontal_error_upper: -9.0000e+40 ids_nbi.unit{iunit}.beamlets_group{1}.width_vertical = beamlets_group.width_vertical(iunit); - % ids_nbi.unit{iunit}.beamlets_group{1}.width_vertical_error_index: -999999999 - % ids_nbi.unit{iunit}.beamlets_group{1}.width_vertical_error_lower: -9.0000e+40 - % ids_nbi.unit{iunit}.beamlets_group{1}.width_vertical_error_upper: -9.0000e+40 % Should always copy "leaves" only to avoid deleting non-filled in values like error_bars fields_to_copy = fieldnames(beamlets_group.focus(iunit));