diff --git a/matlab/TCV_IMAS/tcv2ids2database.m b/matlab/TCV_IMAS/tcv2ids2database.m index 56191700b26f000722037c0c3c2e7b6227ea73f6..a95cf90ad9f09d02d7a1d52110ed0b5de6fddf45 100644 --- a/matlab/TCV_IMAS/tcv2ids2database.m +++ b/matlab/TCV_IMAS/tcv2ids2database.m @@ -98,7 +98,18 @@ params_not_in_tcv2ids = {'run_out','occurence','tree_user','tree_tokamak','tree_ params_tcv2ids = rmfield(params_tcv2ids2database,params_not_in_tcv2ids); [ids_from_tcv,idsok] = tcv2ids(shot,params_tcv2ids); ids_from_tcv.params_tcv2ids2database = params_tcv2ids2database; -ids_from_tcv.params_tcv2ids2database + +% check that coreprofiles is ok, could mean anaprofs did not succeed +if isfield(ids_from_tcv,'core_profiles') + if isempty(ids_from_tcv.core_profiles.time) + warning([char(10) '*************' char(10) ... + 'core_profiles.time is empty, probably no data in CONF nodes for TCV, check with hldsi(shot) command on SPC-EPFL lacs computers' ... + char(10) '*************' char(10)]); + return + end +end + + %% can plot with: [plotids_H] = plotids([],idsok.ids{1},idsok.ids{2}); if isfield(ids_from_tcv,'tf') % avoid present problem of not saving data if ids_from_tcv.tf.field_map{1}.time is not set diff --git a/matlab/TCV_IMAS/tcv_get_ids_core_profiles.m b/matlab/TCV_IMAS/tcv_get_ids_core_profiles.m index fab451e78777c16dd266f126a5a415624667d7e8..a3ddde2490987680f1566b787e7a72c3f701bd95 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_core_profiles.m +++ b/matlab/TCV_IMAS/tcv_get_ids_core_profiles.m @@ -291,5 +291,5 @@ end % cocos automatic transform if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 [ids_core_profiles,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_core_profiles,'core_profiles',gdat_params.cocos_in, ... - gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in); + gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in,gdat_params.error_bar); end diff --git a/matlab/TCV_IMAS/tcv_get_ids_ec_antennas.m b/matlab/TCV_IMAS/tcv_get_ids_ec_antennas.m index 8203da416158472b12799698989ac8aa0b31a18b..b7a15132d0318a4b31cb5f23d800f140648c5a13 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_ec_antennas.m +++ b/matlab/TCV_IMAS/tcv_get_ids_ec_antennas.m @@ -34,6 +34,8 @@ end % $$$ ids_ec_antennas_description.time = 'time from power'; [r_phi0,z_phi0,r1,z1,rc,zc,thetphi_L,thetphi_tor,raysbylauncher,powers,fname,z_axis,launch_params] = ... toray_raygeom_TCV(shot,pow.ec.t(1:10:end)); +ids_ec_antennas_description.launch_params = launch_params; + for iant=1:nb_antennas ids_ec_antennas.antenna{iant}.identifier = ['L' num2str(iant)]; @@ -74,17 +76,30 @@ for iant=1:nb_antennas ids_ec_antennas.antenna{iant}.launching_position.r.time(i) = time_launch; ids_ec_antennas.antenna{iant}.launching_position.z.time(i) = time_launch; ids_ec_antennas.antenna{iant}.launching_position.phi.time(i) = time_launch; - ids_ec_antennas.antenna{iant}.launching_angle_pol.data(i) = launch_params{iant}{it_ok{iant}(i)}.theta_toray * pi/180.; + kz = cos(launch_params{iant}{it_ok{iant}(i)}.theta_toray*pi/180.); + kmr = -sin(launch_params{iant}{it_ok{iant}(i)}.theta_toray*pi/180.).*cos(launch_params{iant}{it_ok{iant}(i)}.phi_toray*pi/180.); + kphi = sin(launch_params{iant}{it_ok{iant}(i)}.theta_toray*pi/180.).*sin(launch_params{iant}{it_ok{iant}(i)}.phi_toray*pi/180.); %*sigma_Rphiz (=+1 for TCV cocos=17) + if (kz==0 && kmr==0) + ids_ec_antennas.antenna{iant}.launching_angle_pol.data(i) = 0.; + else + ids_ec_antennas.antenna{iant}.launching_angle_pol.data(i) = atan2(-kz,kmr); + end ids_ec_antennas.antenna{iant}.launching_angle_pol.time(i) = time_launch; - ids_ec_antennas.antenna{iant}.launching_angle_tor.data(i) = launch_params{iant}{it_ok{iant}(i)}.phi_toray * pi/180.; + ids_ec_antennas.antenna{iant}.launching_angle_tor.data(i) = asin(kphi); ids_ec_antennas.antenna{iant}.launching_angle_tor.time(i) = time_launch; - ids_ec_antennas.antenna{iant}.beam.spot.size.data(i,1:2) = 0.05.*ones(size(time_launch)); +% $$$ ids_ec_antennas.antenna{iant}.beam.spot.size.data(i,1) = 0.023; +% $$$ ids_ec_antennas.antenna{iant}.beam.spot.size.data(i,2) = 0.012; + ids_ec_antennas.antenna{iant}.beam.spot.size.data(1,i) = 0.023; + ids_ec_antennas.antenna{iant}.beam.spot.size.data(2,i) = 0.012; ids_ec_antennas.antenna{iant}.beam.spot.size.time(i) = time_launch; - ids_ec_antennas.antenna{iant}.beam.spot.angle.data(i,1:2) = 0.0.*ones(size(time_launch)); + ids_ec_antennas.antenna{iant}.beam.spot.angle.data(i) = 0.0; ids_ec_antennas.antenna{iant}.beam.spot.angle.time(i) = time_launch; - ids_ec_antennas.antenna{iant}.beam.phase.angle.data(i,1:2) = 0.0.*ones(size(time_launch)); +% $$$ ids_ec_antennas.antenna{iant}.beam.phase.curvature.data(i,1) = 1./1.88; +% $$$ ids_ec_antennas.antenna{iant}.beam.phase.curvature.data(i,2) = 1./-0.95; % negative in launch_params... + ids_ec_antennas.antenna{iant}.beam.phase.curvature.data(1,i) = 1./1.88; + ids_ec_antennas.antenna{iant}.beam.phase.curvature.data(2,i) = 1./-0.95; % negative in launch_params... + ids_ec_antennas.antenna{iant}.beam.phase.angle.data(i) = 0.0; ids_ec_antennas.antenna{iant}.beam.phase.angle.time(i) = time_launch; - ids_ec_antennas.antenna{iant}.beam.phase.curvature.data(i,1:2) = 1.0.*ones(size(time_launch)); ids_ec_antennas.antenna{iant}.beam.phase.curvature.time(i) = time_launch; end end @@ -93,5 +108,5 @@ end % cocos automatic transform if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 [ids_ec_antennas,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_ec_antennas,'ec_antennas',gdat_params.cocos_in, ... - gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in); + gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in,gdat_params.error_bar); end diff --git a/matlab/TCV_IMAS/tcv_get_ids_equilibrium.m b/matlab/TCV_IMAS/tcv_get_ids_equilibrium.m index 001d44a0ab6ea5f572c11b7c43dc666287a0e373..f283c6db2fc4f83ad4f61baee71d83d28055312c 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_equilibrium.m +++ b/matlab/TCV_IMAS/tcv_get_ids_equilibrium.m @@ -376,5 +376,5 @@ end % cocos automatic transform if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 [ids_equilibrium,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_equilibrium,'equilibrium',gdat_params.cocos_in, ... - gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in); + gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in,gdat_params.error_bar); end diff --git a/matlab/TCV_IMAS/tcv_get_ids_magnetics.m b/matlab/TCV_IMAS/tcv_get_ids_magnetics.m index 7af8b1c624706540ed2991359f78ae92af769e3d..cecb76c60ba8cc90f38bd7e31aa4d6a264ad6e6c 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_magnetics.m +++ b/matlab/TCV_IMAS/tcv_get_ids_magnetics.m @@ -16,5 +16,5 @@ function [ids_magnetics,ids_magnetics_description,varargout] = tcv_get_ids_magne % cocos automatic transform if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 [ids_magnetics,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_magnetics,'magnetics',gdat_params.cocos_in, ... - gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in); + gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in,gdat_params.error_bar); end diff --git a/matlab/TCV_IMAS/tcv_get_ids_nbi.m b/matlab/TCV_IMAS/tcv_get_ids_nbi.m index 5515cf928901f1767c9f93d35dd3cb49f42f5c8a..b4c5e644df21a911fcac62a9a5f976c12a0adb62 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_nbi.m +++ b/matlab/TCV_IMAS/tcv_get_ids_nbi.m @@ -15,6 +15,7 @@ ids_nbi_description=''; nb_units = 2; % assume 2 units: 1st NBH and DNBI +nb_units = 1; % assume 2 units: 1st NBH 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 @@ -51,11 +52,11 @@ beamlets_group.divergence(2).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*1e-2; % in [m]?? OS -beamlets_group.position(1).z = 0.; % in [m]?? OS +beamlets_group.position(1).r = 4.5889; +beamlets_group.position(1).z = 0.; beamlets_group.position(2).phi = 295.2416*pi/180.; -beamlets_group.position(2).r = 4.9274*1e-2; % in [m]?? OS -beamlets_group.position(2).z = 0.; % in [m]?? OS +beamlets_group.position(2).r = 4.9274; +beamlets_group.position(2).z = 0.; for iunit=1:nb_units ids_nbi.unit{iunit}.identifier = unit_identifier{iunit}; @@ -75,14 +76,14 @@ for iunit=1:nb_units ids_nbi.unit{iunit}.beam_power_fraction.time = p_frac.t; ids_nbi_description.unit{iunit}.beam_power_fraction = ['from \results::' results_subname{iunit} ':fraction']; if ~isempty(p_frac.data) && size(p_frac.data,2)>=3 - ids_nbi.unit{iunit}.beam_power_fraction.data = p_frac.data(:,1:3)*0.01; + ids_nbi.unit{iunit}.beam_power_fraction.data = p_frac.data(:,1:3)'*0.01; i_frac = p_frac.data(:,1:3).*repmat([1 2 3],size(p_frac.data,1),1); % to be compatible with older matlab version .*[1 2 3] not ok i_frac = i_frac.*1./repmat(sum(i_frac),size(p_frac.data,1),1); else ids_nbi.unit{iunit}.beam_power_fraction.data = p_frac.data; i_frac = p_frac.data; end - ids_nbi.unit{iunit}.beam_current_fraction.data = i_frac; + ids_nbi.unit{iunit}.beam_current_fraction.data = i_frac'; ids_nbi.unit{iunit}.beam_current_fraction.time = p_frac.t; %% species ids_nbi.unit{iunit}.species.a = species.a(iunit); @@ -124,5 +125,5 @@ end % cocos automatic transform if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 [ids_nbi,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_nbi,'nbi',gdat_params.cocos_in, ... - gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in); + gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in,gdat_params.error_bar); end diff --git a/matlab/TCV_IMAS/tcv_get_ids_pf_active.m b/matlab/TCV_IMAS/tcv_get_ids_pf_active.m index 13c95b450a779010163beedb7254d8d23d07381e..4ffa647cf27ac53292c1e347d2f052fae3a34d7b 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_pf_active.m +++ b/matlab/TCV_IMAS/tcv_get_ids_pf_active.m @@ -17,5 +17,5 @@ ids_pf_active.vertical_force = {}; % cocos automatic transform if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 [ids_pf_active,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_pf_active,'pf_active',gdat_params.cocos_in, ... - gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in); + gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in,gdat_params.error_bar); end diff --git a/matlab/TCV_IMAS/tcv_get_ids_tf.m b/matlab/TCV_IMAS/tcv_get_ids_tf.m index a25c054870685ca47d2d38befd016c2988a3d9bd..03650ac456ddda72224002ca71afb7ab3f808d6c 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_tf.m +++ b/matlab/TCV_IMAS/tcv_get_ids_tf.m @@ -15,11 +15,11 @@ ids_tf = ids_tf_empty; tmp = gdat_tcv(shot, 'b0'); if ~ischar(tmp.data) - ids_tf.b_field_tor_vacuum_r.data = tmp.data; - ids_tf.b_field_tor_vacuum_r.time = tmp.t; ids_tf.r0 = tmp.r0; - ids_tf_description.b_field_tor_vacuum_r.data = ' gdat_tcv(shot, ''b0'')'; ids_tf_description.r0 = ' b0.r0 from gdat_tcv(shot, ''b0'')'; + ids_tf.b_field_tor_vacuum_r.data = tmp.data .* ids_tf.r0; + ids_tf_description.b_field_tor_vacuum_r.data = ' gdat_tcv(shot, ''b0'') * .r0'; + ids_tf.b_field_tor_vacuum_r.time = tmp.t; else % leave defaults ids_tf_description = struct([]); @@ -31,7 +31,6 @@ ids_tf.field_map = {}; % cocos automatic transform if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 - cocos_in=17; - cocos_out=11; - [ids_tf,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_tf,'tf',cocos_in,cocos_out); + [ids_tf,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_tf,'tf',gdat_params.cocos_in, ... + gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in,gdat_params.error_bar); end diff --git a/matlab/TCV_IMAS/tcv_get_ids_wall.m b/matlab/TCV_IMAS/tcv_get_ids_wall.m index e78ced53cc404ae34b089c05791650249612d34c..506dc5c7e38fcc0216e2dc165aee550d7f84681c 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_wall.m +++ b/matlab/TCV_IMAS/tcv_get_ids_wall.m @@ -22,5 +22,5 @@ ids_description = []; % cocos automatic transform (should have nothing to do for wall) if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 [ids_wall,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_wall,'wall',gdat_params.cocos_in, ... - gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in); + gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in,gdat_params.error_bar); end