diff --git a/matlab/TCV_IMAS/tcv_get_ids_magnetics.m b/matlab/TCV_IMAS/tcv_get_ids_magnetics.m index e1491454cd4214f7e53b1f66b8431c755fd6159b..8f405901f5f4fa16ac9196c991e1c0a6ecef5f91 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_magnetics.m +++ b/matlab/TCV_IMAS/tcv_get_ids_magnetics.m @@ -5,7 +5,7 @@ function [ids_magnetics,ids_magnetics_description,varargout] = tcv_get_ids_magne % gdat_params: gdat_data.gdat_params to get all params passed from original call, in particular error_bar options % -if exist('gdat_params') +if exist('gdat_params','var') [ids_magnetics, params_magnetics] = tcv_ids_headpart(shot, ids_magnetics_empty,'magnetics','homogeneous_time',0, ... 'gdat_params',gdat_params,varargin{:}); else @@ -18,10 +18,13 @@ end [ids_magnetics.flux_loop,ids_magnetics_description.flux_loop]= tcv_ids_flux_loop(params_magnetics.shot, ids_magnetics.flux_loop(1),gdat_params); [ids_magnetics.method,ids_magnetics_description.method]= tcv_ids_ip(params_magnetics.shot, ids_magnetics.method(1),gdat_params); -% make arrays not filled in empty: not the case for magnetics +% make arrays not filled in empty +ids_magnetics.b_field_pol_probe = {}; +ids_magnetics.b_field_tor_probe = {}; +ids_magnetics.rogowski_coil = {}; % cocos automatic transform -if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 +if exist('ids_generic_cocos_nodes_transformation_symbolic','file') [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.error_bar,gdat_params.nverbose); diff --git a/matlab/TCV_IMAS/tcv_get_ids_pf_active.m b/matlab/TCV_IMAS/tcv_get_ids_pf_active.m index a8978b733c0c9e9d2b97084c9fec085298b5c1dd..1df35c1c1f990eff12d6d9bca0fe1403629eb9dc 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_pf_active.m +++ b/matlab/TCV_IMAS/tcv_get_ids_pf_active.m @@ -4,7 +4,7 @@ function [ids_pf_active,ids_pf_active_description,varargout] = tcv_get_ids_pf_ac % % Input pharser -if exist('gdat_params') +if exist('gdat_params','var') [ids_pf_active, params] = tcv_ids_headpart(shot, ids_pf_active_empty,'pf_active','homogeneous_time',0,'gdat_params',gdat_params,varargin{:}); else [ids_pf_active, params] = tcv_ids_headpart(shot, ids_pf_active_empty,'pf_active','homogeneous_time',0,varargin{:}); @@ -21,7 +21,7 @@ end ids_pf_active.vertical_force = {}; % cocos automatic transform -if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 +if exist('ids_generic_cocos_nodes_transformation_symbolic','file') [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.error_bar,gdat_params.nverbose); diff --git a/matlab/TCV_IMAS/tcv_get_ids_tf.m b/matlab/TCV_IMAS/tcv_get_ids_tf.m index 4ce27ae1376038cd1e79fd15adc829ca55145114..9bb067037b2a80b527a9dbb1a961bd07ba509bc2 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_tf.m +++ b/matlab/TCV_IMAS/tcv_get_ids_tf.m @@ -11,7 +11,7 @@ function [ids_tf,ids_tf_description] = tcv_get_ids_tf(shot, ids_tf_empty, gdat_ ids_tf = ids_tf_empty; -if exist('gdat_params') +if exist('gdat_params','var') [ids_tf, params_tf] = tcv_ids_headpart(shot, ids_tf_empty,'tf','homogeneous_time',0,'gdat_params',gdat_params,varargin{:}); params_eff = gdat_params; params_eff.data_request = 'b0'; @@ -26,6 +26,8 @@ if ~ischar(tmp.data) 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_vaccum_r.data_error_upper = 19.2e-6*200; %TODO: Check the 200A value (might be more since TOR goes up to 70kA) + ids_tf_description.b_field_tor_vacuum_r.data_error_upper = ' Error on coil measurement is 200A, b0.r0 is 19.2e-6*iphi'; ids_tf.b_field_tor_vacuum_r.time = tmp.t; else % leave defaults @@ -37,7 +39,7 @@ ids_tf.coil = {}; ids_tf.field_map = {}; % cocos automatic transform -if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 +if exist('ids_generic_cocos_nodes_transformation_symbolic','file') [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,gdat_params.nverbose); diff --git a/matlab/TCV_IMAS/tcv_get_ids_wall.m b/matlab/TCV_IMAS/tcv_get_ids_wall.m index 19404fea23bd1528131bbd96401fded284c8e92b..537e23253e551d43253eefbb3de11726ee20af6c 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_wall.m +++ b/matlab/TCV_IMAS/tcv_get_ids_wall.m @@ -4,8 +4,8 @@ function [ids_wall,ids_wall_description,varargout] = tcv_get_ids_wall(shot, ids_ % gdat_params: gdat_data.gdat_params to get all params passed from original call, in particular error_bar options % -% Input pharser -if exist('gdat_params') +% Input parser +if exist('gdat_params','var') [ids_wall, params] = tcv_ids_headpart(shot, ids_wall_empty,'wall','homogeneous_time',0,'gdat_params',gdat_params,varargin{:}); else [ids_wall, params] = tcv_ids_headpart(shot, ids_wall_empty,'wall','homogeneous_time',0,varargin{:}); @@ -14,19 +14,20 @@ else end % Get data of outline, only static, no need for gdat_params and time_out parameter for example -[ids_wall.description_2d,ids_wall_description.description_2d]= tcv_ids_wall_description_2d(params.shot, ids_wall.description_2d(1)); +[ids_wall.description_2d,ids_wall_description.description_2d]= tcv_ids_wall_description_2d(ids_wall.description_2d(1)); % make arrays not filled in empty: not the case for magnetics ids_wall.global_quantities.neutral = {}; % wall does not work with Antoine's addpath ids_wall.description_ggd = {}; ids_wall.description_2d{1}.mobile.unit = {}; +ids_wall.description_2d{1}.vessel.unit{1}.element = {}; %% TODO ids_description = []; % cocos automatic transform (should have nothing to do for wall) -if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 +if exist('ids_generic_cocos_nodes_transformation_symbolic','file') [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.error_bar,gdat_params.nverbose); diff --git a/matlab/TCV_IMAS/tcv_ids_bpol_probe.m b/matlab/TCV_IMAS/tcv_ids_bpol_probe.m index d5764521e61a01fa450a32a71223c19c334276be..2cb28fae28b146248cbfd4d7a4ded9bf941f754d 100644 --- a/matlab/TCV_IMAS/tcv_ids_bpol_probe.m +++ b/matlab/TCV_IMAS/tcv_ids_bpol_probe.m @@ -11,24 +11,25 @@ function [sub_ids_struct_out,sub_ids_struct_out_description, varargout] = tcv_i % error_bar = 'delta'; -if exist('gdat_params') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar) +if exist('gdat_params','var') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar) error_bar = gdat_params.error_bar; end params_eff_ref = gdat_params; params_eff_ref.doplot=0; -try;params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def) +try params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def) % Get data params_eff = params_eff_ref; params_eff.data_request = '\MAGNETICS::BPOL_003'; tmp = gdat_tcv( shot,params_eff); -tmp_desc = params_eff.data_request; +% tmp_desc = params_eff.data_request; names = tmp.dim{2}; time = tmp.dim{1}; data = tmp.data; params_eff.data_request = 'static("ANG_M")'; -ang_m = gdat_tcv(shot,params_eff); -ang_m_desc = params_eff.data_request; +% ang_m = gdat_tcv(shot,params_eff); +% ang_m_desc = params_eff.data_request; +%TODO find this either in the static or the magnetics tree. % from mapping file from Holger: probes_name={ '001' '002' '003' '004' '005' '006' '007' '008' '009' '010' '011' '012' '013' '014' '015' '016' '017' '018' '019' ... '020' '021' '022' '023' '024' '025' '026' '027' '028' '029' '030' '031' '032' '033' '034' '035' '036' '037' '038'}; @@ -46,6 +47,7 @@ probes_length = [2.400000D-02, 2.400000D-02, 2.400000D-02, 2.400000D-02, 2.40000 % Preallocate output structure Nprobes = size(tmp.data,2); sub_ids_struct_out(1:Nprobes) = ids_structures; +sub_ids_struct_out_description = cell(1,Nprobes); for ii=1:Nprobes sub_ids_struct_out{ii}.name = [names{ii}]; @@ -62,7 +64,7 @@ for ii=1:Nprobes params_eff.data_request = ['static("ANG_M")[$1]'',''' sub_ids_struct_out{ii}.name '']; aa = gdat_tcv(shot,params_eff); sub_ids_struct_out{ii}.poloidal_angle = -aa.data; - ij=strmatch(names{ii},probes_name); + ij=strcmp(names{ii},probes_name); sub_ids_struct_out{ii}.area = probes_area(ij); sub_ids_struct_out{ii}.length = probes_length(ij); sub_ids_struct_out_description{ii}.poloidal_angle = ['from ' aa.data_fullpath]; @@ -71,13 +73,13 @@ for ii=1:Nprobes sub_ids_struct_out_description{ii}.length = 'from array in machine description file'; end -fixed_error = 0.009999999776483; +fixed_error = 0.01; switch error_bar case 'delta' for ii=1:Nprobes sub_ids_struct_out{ii}.field.data_error_upper = fixed_error.*ones(size(sub_ids_struct_out{ii}.field.data));% TO BE FOUND; sub_ids_struct_out_description{ii}.field_data_error_upper = ['from fixed error value in case ' error_bar]; - sub_ids_struct_out_description{ii}.field_data_error_lower = ['not provided since symmetric']; + sub_ids_struct_out_description{ii}.field_data_error_lower = 'not provided since symmetric'; end case 'delta_with_lower' for ii=1:Nprobes diff --git a/matlab/TCV_IMAS/tcv_ids_coil.m b/matlab/TCV_IMAS/tcv_ids_coil.m index 13eb86f0f7d3580ba00cb632fc5fa407f6024323..8fc6ae8171d4beecee6e90c79594b4e02f671b55 100644 --- a/matlab/TCV_IMAS/tcv_ids_coil.m +++ b/matlab/TCV_IMAS/tcv_ids_coil.m @@ -13,11 +13,11 @@ function [ids_struct_out,ids_struct_out_description] = tcv_ids_coil(shot, ids_s % TODO add logic to get the current in the coils only once. error_bar = 'delta'; -if exist('gdat_params') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar) +if exist('gdat_params','var') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar) error_bar = gdat_params.error_bar; end params_eff_ref = gdat_params; params_eff_ref.doplot=0; -try;params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def) +try params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def) % Coils that can be characterized by R, Z and a % crosssectional area are described as distinct coils with a single element, this also corresponds to coils with distinct TCV names). @@ -44,117 +44,118 @@ r_c = mdsvalue('_r_c=static(''r_c'')'); % R position z_c = mdsvalue('_z_c=static(''z_c'')'); % Z position w_c = mdsvalue('static(''w_c'')'); % width rectangular description h_c = mdsvalue('static(''h_c'')'); % height rectangular description -a_c = mdsvalue('static(''a_c'')'); % tilt angle for parallelogram representation ( deprecated representation in IDS) +% a_c = mdsvalue('static(''a_c'')'); % tilt angle for parallelogram representation ( deprecated representation in IDS) nt_c = mdsvalue('static(''nt_c'')'); % number of turns xsect_c = mdsvalue('static(''xsect_c'')'); res_c = mdsvalue('static(''res_c'')'); % resistence of the coil sizepfc = numel(r_c); -namepfc = mdsvalue('dim_of(_r_c)'); +namepfc = mdsvalue('static(''dim_c'')'); % Set effective turns in T1 and T2 (see J.-M. Moret, et al., RSI 69 (1998) 2333) -iT = strmatch('T_001',namepfc); +iT = strcmp('T_001',namepfc); nt_c(iT)=26/68; -iT = strmatch('T_002',namepfc); +iT = strcmp('T_002',namepfc); nt_c(iT)=42/68; -iT = strmatch('T_003',namepfc); % Return current +iT = strcmp('T_003',namepfc); % Return current nt_c(iT)=1; % Approximate circular G-coil conductor with a square of the same crosssection -iG=strmatch('G_00',namepfc); +iG=strcmp('G_00',namepfc); w_c(iG)=sqrt(xsect_c(iG)); h_c(iG)=sqrt(xsect_c(iG)); %% Put data to ids structure ids_struct_out(1:sizepfc) = ids_structures; +ids_struct_out_description = cell(1,sizepfc); ind_coil_ids = 0; params_eff = params_eff_ref; for ii=1:ncircuits2ids - ncoil2ids = numel(coil_names2ids{ii}); % number of coils for a given circuit - - for jj = 1:ncoil2ids - ind_coil_ids = ind_coil_ids +1; - ids_struct_out{ind_coil_ids}.name = coil_names2ids{ii}{jj}; - ids_struct_out_description{ind_coil_ids}.name = ['through aa=tcv_ids_pf_active_definition from aa.coil_names ']; - - % time-varying data - if shot == -1 - tmpdata.dim{1} = []; - tmpdata.data = []; - warning('no time data loaded for shot %d',shot); - else - params_eff.data_request = mds_paths2ids{ii}; - tmpdata = gdat_tcv(shot,params_eff); - end -% $$$ ids_struct_out{ind_coil_ids}.current.data = tmpdata.data; -% $$$ ids_struct_out_description{ind_coil_ids}.current.data = ['from ' mds_paths2ids{ii}]; - ids_struct_out{ind_coil_ids}.current.data = pf_def.coil_current_signs{ii}(jj) .* tmpdata.data; - ids_struct_out_description{ind_coil_ids}.current.data = ['from ' num2str(pf_def.coil_current_signs{ii}(jj)) ' * ' mds_paths2ids{ii}]; -try + ncoil2ids = numel(coil_names2ids{ii}); % number of coils for a given circuit + + for jj = 1:ncoil2ids + ind_coil_ids = ind_coil_ids +1; + ids_struct_out{ind_coil_ids}.name = coil_names2ids{ii}{jj}; + ids_struct_out_description{ind_coil_ids}.name = 'through aa=tcv_ids_pf_active_definition from aa.coil_names '; + + % time-varying data + if shot == -1 + tmpdata.dim{1} = []; + tmpdata.data = []; + warning('no time data loaded for shot %d',shot); + else + params_eff.data_request = mds_paths2ids{ii}; + tmpdata = gdat_tcv(shot,params_eff); + end + % $$$ ids_struct_out{ind_coil_ids}.current.data = tmpdata.data; + % $$$ ids_struct_out_description{ind_coil_ids}.current.data = ['from ' mds_paths2ids{ii}]; + ids_struct_out{ind_coil_ids}.current.data = pf_def.coil_current_signs{ii}(jj) .* tmpdata.data; + ids_struct_out_description{ind_coil_ids}.current.data = ['from ' num2str(pf_def.coil_current_signs{ii}(jj)) ' * ' mds_paths2ids{ii}]; + try ids_struct_out{ind_coil_ids}.current.time = tmpdata.dim{1}; -catch - keyboard - end - - % Find index on static tree - tmpind = find(strcmp(ids_struct_out{ind_coil_ids}.name, namepfc)); - ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.r = r_c(tmpind); - ids_struct_out_description{ind_coil_ids}.element{1}.geometry.rectangle_r = ['from static(''r_c'')']; - ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.z = z_c(tmpind); - ids_struct_out_description{ind_coil_ids}.element{1}.geometry.rectangle_z = ['from static(''z_c'')']; - ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.width = w_c(tmpind); - ids_struct_out_description{ind_coil_ids}.element{1}.geometry.rectangle_width = ['from static(''w_c'')']; - ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.height = h_c(tmpind); - ids_struct_out_description{ind_coil_ids}.element{1}.geometry.rectangle_height = ['from static(''h_c'')']; - ids_struct_out{ind_coil_ids}.element{1}.turns_with_sign = nt_c(tmpind); - ids_struct_out_description{ind_coil_ids}.element{1}.turns_with_sign = ['from static(''nt_c'')']; - ids_struct_out{ind_coil_ids}.element{1}.geometry.geometry_type = 2; % 1 outline, 2 rectangle, 4 arc of circle - ids_struct_out_description{ind_coil_ids}.element{1}.geometry.geometry_type = 'rectangle'; - - ids_struct_out{ind_coil_ids}.resistance = res_c(tmpind); - ids_struct_out_description{ind_coil_ids}.resistance = ['from static(''res_c'')']; + catch + keyboard end + + % Find index on static tree + tmpind = find(strcmp(ids_struct_out{ind_coil_ids}.name, namepfc)); + ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.r = r_c(tmpind); + ids_struct_out_description{ind_coil_ids}.element{1}.geometry.rectangle_r = 'from static(''r_c'')'; + ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.z = z_c(tmpind); + ids_struct_out_description{ind_coil_ids}.element{1}.geometry.rectangle_z = 'from static(''z_c'')'; + ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.width = w_c(tmpind); + ids_struct_out_description{ind_coil_ids}.element{1}.geometry.rectangle_width = 'from static(''w_c'')'; + ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.height = h_c(tmpind); + ids_struct_out_description{ind_coil_ids}.element{1}.geometry.rectangle_height = 'from static(''h_c'')'; + ids_struct_out{ind_coil_ids}.element{1}.turns_with_sign = nt_c(tmpind); + ids_struct_out_description{ind_coil_ids}.element{1}.turns_with_sign = 'from static(''nt_c'')'; + ids_struct_out{ind_coil_ids}.element{1}.geometry.geometry_type = 2; % 1 outline, 2 rectangle, 4 arc of circle + ids_struct_out_description{ind_coil_ids}.element{1}.geometry.geometry_type = 'rectangle'; + + ids_struct_out{ind_coil_ids}.resistance = res_c(tmpind); + ids_struct_out_description{ind_coil_ids}.resistance = 'from static(''res_c'')'; + end end % fixed_error = 200.; ind_coil_ids = 0; switch error_bar - case 'delta' - for ii=1:ncircuits2ids - ncoil2ids = numel(coil_names2ids{ii}); % number of coils for a given circuit - for jj = 1:ncoil2ids - fixed_error = pf_def.coil_current_error{ii}(jj); - ind_coil_ids = ind_coil_ids +1; - ids_struct_out{ind_coil_ids}.current.data_error_upper = fixed_error.*ones(size(ids_struct_out{ind_coil_ids}.current.data)); - ids_struct_out_description{ind_coil_ids}.current_data_error_upper = fixed_error.*ones(size(ids_struct_out{ind_coil_ids}.current.data)); - ids_struct_out_description{ind_coil_ids}.current_data_error_lower = ['not provided since symmetric']; + case 'delta' + for ii=1:ncircuits2ids + ncoil2ids = numel(coil_names2ids{ii}); % number of coils for a given circuit + for jj = 1:ncoil2ids + fixed_error = pf_def.coil_current_error{ii}(jj); + ind_coil_ids = ind_coil_ids +1; + ids_struct_out{ind_coil_ids}.current.data_error_upper = fixed_error.*ones(size(ids_struct_out{ind_coil_ids}.current.data)); + ids_struct_out_description{ind_coil_ids}.current_data_error_upper = fixed_error.*ones(size(ids_struct_out{ind_coil_ids}.current.data)); + ids_struct_out_description{ind_coil_ids}.current_data_error_lower = 'not provided since symmetric'; + end end - end - case 'delta_with_lower' - for ii=1:ncircuits2ids - ncoil2ids = numel(coil_names2ids{ii}); % number of coils for a given circuit - for jj = 1:ncoil2ids - fixed_error = pf_def.coil_current_error{ii}(jj); - ind_coil_ids = ind_coil_ids +1; - ids_struct_out{ind_coil_ids}.current.data_error_upper = fixed_error.*ones(size(ids_struct_out{ind_coil_ids}.current.data)); - ids_struct_out{ind_coil_ids}.current.data_error_lower = ids_struct_out{ind_coil_ids}.current.data_error_upper; - ids_struct_out_description{ind_coil_ids}.current_data_error_upper = ['from fixed error value in case ' error_bar]; - ids_struct_out_description{ind_coil_ids}.current_data_error_lower = ['from fixed error value in case ' error_bar]; + case 'delta_with_lower' + for ii=1:ncircuits2ids + ncoil2ids = numel(coil_names2ids{ii}); % number of coils for a given circuit + for jj = 1:ncoil2ids + fixed_error = pf_def.coil_current_error{ii}(jj); + ind_coil_ids = ind_coil_ids +1; + ids_struct_out{ind_coil_ids}.current.data_error_upper = fixed_error.*ones(size(ids_struct_out{ind_coil_ids}.current.data)); + ids_struct_out{ind_coil_ids}.current.data_error_lower = ids_struct_out{ind_coil_ids}.current.data_error_upper; + ids_struct_out_description{ind_coil_ids}.current_data_error_upper = ['from fixed error value in case ' error_bar]; + ids_struct_out_description{ind_coil_ids}.current_data_error_lower = ['from fixed error value in case ' error_bar]; + end end - end - case 'added' - for ii=1:ncircuits2ids - ncoil2ids = numel(coil_names2ids{ii}); % number of coils for a given circuit - for jj = 1:ncoil2ids - fixed_error = pf_def.coil_current_error{ii}(jj); - ind_coil_ids = ind_coil_ids +1; - ids_struct_out{ind_coil_ids}.current.data_error_upper = ids_struct_out{ind_coil_ids}.current.data ... + case 'added' + for ii=1:ncircuits2ids + ncoil2ids = numel(coil_names2ids{ii}); % number of coils for a given circuit + for jj = 1:ncoil2ids + fixed_error = pf_def.coil_current_error{ii}(jj); + ind_coil_ids = ind_coil_ids +1; + ids_struct_out{ind_coil_ids}.current.data_error_upper = ids_struct_out{ind_coil_ids}.current.data ... + fixed_error.*ones(size(ids_struct_out{ind_coil_ids}.current.data)); - ids_struct_out{ind_coil_ids}.current.data_error_lower = ids_struct_out{ind_coil_ids}.current.data ... + ids_struct_out{ind_coil_ids}.current.data_error_lower = ids_struct_out{ind_coil_ids}.current.data ... - fixed_error.*ones(size(ids_struct_out{ind_coil_ids}.current.data)); - ids_struct_out_description{ind_coil_ids}.current_data_error_upper = ['from data + fixed error value in case ' error_bar]; - ids_struct_out_description{ind_coil_ids}.current_data_error_lower = ['from data - fixed error value in case ' error_bar]; + ids_struct_out_description{ind_coil_ids}.current_data_error_upper = ['from data + fixed error value in case ' error_bar]; + ids_struct_out_description{ind_coil_ids}.current_data_error_lower = ['from data - fixed error value in case ' error_bar]; + end end - end - otherwise - error(['tcv_ids_bpol_loop: error_bar option not known: ' error_bar]) + otherwise + error(['tcv_ids_bpol_loop: error_bar option not known: ' error_bar]) end diff --git a/matlab/TCV_IMAS/tcv_ids_flux_loop.m b/matlab/TCV_IMAS/tcv_ids_flux_loop.m index 5ba7c87c35a45bd1797527370a5d3f4b050290d8..fdd8f1315badc9a7f43454ac788f6e5da1c7ecf1 100644 --- a/matlab/TCV_IMAS/tcv_ids_flux_loop.m +++ b/matlab/TCV_IMAS/tcv_ids_flux_loop.m @@ -11,17 +11,17 @@ function [sub_ids_struct_out,sub_ids_struct_out_description] = tcv_ids_flux_loop % error_bar = 'delta'; -if exist('gdat_params') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar) +if exist('gdat_params','var') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar) error_bar = gdat_params.error_bar; end params_eff_ref = gdat_params; params_eff_ref.doplot=0; -try;params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def) +try params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def) % Get data params_eff = params_eff_ref; params_eff.data_request = 'tcv_idealloop("FLUX")'; tmp = gdat_tcv(shot,params_eff); -tmp_desc = params_eff.data_request; +% tmp_desc = params_eff.data_request; names = tmp.dim{2}; time = tmp.dim{1}; data = tmp.data; @@ -29,6 +29,7 @@ data = tmp.data; % Preallocate output structure Nprobes = size(tmp.data,2); sub_ids_struct_out(1:Nprobes) = ids_structures; +sub_ids_struct_out_description = cell(1,Nprobes); % Put data on ids structure for ii=1:Nprobes @@ -38,21 +39,20 @@ for ii=1:Nprobes sub_ids_struct_out_description{ii}.position_r = ['from ''STATIC("R_F" )[' sub_ids_struct_out{ii}.name ']''']; sub_ids_struct_out{ii}.position{1}.z = mdsvalue('STATIC("Z_F" )[$1]',sub_ids_struct_out{ii}.name); sub_ids_struct_out_description{ii}.position_z = ['from ''STATIC("Z_F" )[' sub_ids_struct_out{ii}.name ']''']; - sub_ids_struct_out{ii}.position{1}.phi = 0.; - sub_ids_struct_out_description{ii}.position_phi = ['assumed 0']; +% sub_ids_struct_out{ii}.position{1}.phi = 0.; % TO BE FOUND +% sub_ids_struct_out_description{ii}.position_phi = 'assumed 0'; sub_ids_struct_out{ii}.flux.data = data(:,ii); sub_ids_struct_out_description{ii}.flux_data = 'from ''tcv_idealloop("FLUX")'''; sub_ids_struct_out{ii}.flux.time = time; - % sub_ids_struct_out{ii}.position.phi = 0; % TO BE FOUND end -fixed_error = 0.001200000056997; +fixed_error = 0.0012*2*pi; % Convert old LIUQE error to Webers switch error_bar case 'delta' for ii=1:Nprobes sub_ids_struct_out{ii}.flux.data_error_upper = fixed_error.*ones(size(sub_ids_struct_out{ii}.flux.data)); sub_ids_struct_out_description{ii}.flux_data_error_upper = ['from fixed error value in case ' error_bar]; - sub_ids_struct_out_description{ii}.flux_data_error_lower = ['not provided since symmetric']; + sub_ids_struct_out_description{ii}.flux_data_error_lower = 'not provided since symmetric'; %(not filled if symmetric) sub_ids_struct_out{ii}.flux.data_error_lower = 0.0012;%.*ones(size(sub_ids_struct_out{ii}.flux.data)); end case 'delta_with_lower' diff --git a/matlab/TCV_IMAS/tcv_ids_ip.m b/matlab/TCV_IMAS/tcv_ids_ip.m index fe1e786ec5b28dc2daaf9eddfd422c1f33251309..dd89754216d7a015f53d8e1b1b66418328e0bf88 100644 --- a/matlab/TCV_IMAS/tcv_ids_ip.m +++ b/matlab/TCV_IMAS/tcv_ids_ip.m @@ -11,22 +11,22 @@ function [ids_struct_out,ids_struct_out_description] = tcv_ids_ip(shot, ids_stru % error_bar = 'delta'; -if exist('gdat_params') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar) +if exist('gdat_params','var') && isfield(gdat_params,'error_bar') && ~isempty(gdat_params.error_bar) error_bar = gdat_params.error_bar; end params_eff_ref = gdat_params; params_eff_ref.doplot=0; -try;params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def) +try params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def) % Get data params_eff = params_eff_ref; params_eff.data_request = 'ip_trapeze'; tmp = gdat_tcv(shot,params_eff); -tmp_desc = params_eff.data_request; +% tmp_desc = params_eff.data_request; time = tmp.dim{1}; data = tmp.data; params_eff.data_request = '\results::dmlcor'; tmpdml = gdat_tcv(shot,params_eff); -tmpdml_desc = params_eff.data_request; +% tmpdml_desc = params_eff.data_request; % Preallocate dimension ids_struct_out = ids_structures; @@ -40,16 +40,16 @@ ids_struct_out{1}.diamagnetic_flux.data = tmpdml.data; ids_struct_out_description{1}.diamagnetic_flux = ['from ' tmpdml.data_fullpath]; ids_struct_out{1}.diamagnetic_flux.time = tmpdml.t; -fixed_error_ip = 2.4e3; -fixed_error_diamagnetic_flux = 0.01; +fixed_error_ip = 24e3; +fixed_error_diamagnetic_flux = 0.13e-3; switch error_bar case 'delta' ids_struct_out{1}.ip.data_error_upper = fixed_error_ip.*ones(size(ids_struct_out{1}.ip.data)); ids_struct_out_description{1}.ip_data_error_upper = ['from fixed error value in case ' error_bar]; - ids_struct_out_description{1}.ip_data_error_lower = ['not provided since symmetric']; + ids_struct_out_description{1}.ip_data_error_lower = 'not provided since symmetric'; ids_struct_out{1}.diamagnetic_flux.data_error_upper = fixed_error_diamagnetic_flux.*ones(size(ids_struct_out{1}.diamagnetic_flux.data)); ids_struct_out_description{1}.diamagnetic_flux_data_error_upper = ['from fixed error value in case ' error_bar]; - ids_struct_out_description{1}.diamagnetic_flux_data_error_lower = ['not provided since symmetric']; + ids_struct_out_description{1}.diamagnetic_flux_data_error_lower = 'not provided since symmetric'; case 'delta_with_lower' ids_struct_out{1}.ip.data_error_upper = fixed_error_ip.*ones(size(ids_struct_out{1}.ip.data)); ids_struct_out{1}.ip.data_error_lower = ids_struct_out{1}.ip.data_error_upper; diff --git a/matlab/TCV_IMAS/tcv_ids_pf_active_definition.m b/matlab/TCV_IMAS/tcv_ids_pf_active_definition.m index 35230de7d17067ce3c7292de7b3cb202203be099..413340424beb1618110ad6bee605be8d466516d6 100644 --- a/matlab/TCV_IMAS/tcv_ids_pf_active_definition.m +++ b/matlab/TCV_IMAS/tcv_ids_pf_active_definition.m @@ -1,87 +1,96 @@ -function [ combined_structure] = tcv_ids_pf_active_definition() +function [ combined_structure] = tcv_ids_pf_active_definition(doplot) % All circuits are connected in series and has only 1 power supply, so they % share the same current. +if nargin < 1, doplot = 0;end + +% NOTE: The sign for T_00* comes from the connection matrix in the static +% tree "T_C_A". +% TODO: We could probably rebuild the connection matrix from the static +% tree node "T_C_A". + % {Coil name}, [connection side identifier] -error_fixed = 200.; +error_fixed = 200.; % This is the error assigned by LIUQE to each circuit/PS + % Since all coils are serially connected to their PS, + % this is also the error for individual coil currents. coil_names_and_current_sign = {... - {'A_001'}, [1], error_fixed*0.007; ... % Circuit 1 - {'B_001', 'B_002', 'C_001', 'C_002', 'D_001', 'D_002'}, [1, 1, 1, 1, 1, 1], ... - error_fixed*[0.03448275862, 0.03448275862, 0.08333333333333, 0.08333333333333, 0.125, 0.125]; ... % Circuit 2 - {'E_001'}, [1], error_fixed*0.02941176470588; ... % Circuit 3 - {'E_002'}, [1], error_fixed*0.02941176470588; ... % Circuit 4 - {'E_003'}, [1], error_fixed*0.02941176470588; ... % Circuit 5 - {'E_004'}, [1], error_fixed*0.02941176470588; ... % Circuit 6 - {'E_005'}, [1], error_fixed*0.02941176470588; ... % Circuit 7 - {'E_006'}, [1], error_fixed*0.02941176470588; ... % Circuit 8 - {'E_007'}, [1], error_fixed*0.02941176470588; ... % Circuit 9 - {'E_008'}, [1], error_fixed*0.02941176470588; ... % Circuit 10 - {'F_001'}, [1], error_fixed*0.02777777777778; ... % Circuit 11 - {'F_002'}, [1], error_fixed*0.02777777777778; ... % Circuit 12 - {'F_003'}, [1], error_fixed*0.02777777777778; ... % Circuit 13 - {'F_004'}, [1], error_fixed*0.02777777777778; ... % Circuit 14 - {'F_005'}, [1], error_fixed*0.02777777777778; ... % Circuit 15 - {'F_006'}, [1], error_fixed*0.02777777777778; ... % Circuit 16 - {'F_007'}, [1], error_fixed*0.02777777777778; ... % Circuit 17 - {'F_008'}, [1], error_fixed*0.02777777777778; ... % Circuit 18 - {'G_001', 'G_002', 'G_003', 'G_004', 'G_005', 'G_006'}, [1,1,1,-1,-1,-1], error_fixed*[1, 1, 1, 1, 1, 1]; ... % Circuit 19 Lower coils connected in opposite direcetion - {'T_001', 'T_002', 'T_003'}, [1,1,-1], error_fixed*[2.61538489704145, 1.619047511111125, 1]; ...% Circuit 20 %T003 in opposite direction -}; + {'A_001'}, 1, error_fixed; ... % Circuit 1 + {'B_001', 'B_002', 'C_001', 'C_002', 'D_001', 'D_002'}, [1, 1, 1, 1, 1, 1], ... + error_fixed*[1, 1, 1, 1, 1, 1]; ... % Circuit 2 + {'E_001'}, 1, error_fixed; ... % Circuit 3 + {'E_002'}, 1, error_fixed; ... % Circuit 4 + {'E_003'}, 1, error_fixed; ... % Circuit 5 + {'E_004'}, 1, error_fixed; ... % Circuit 6 + {'E_005'}, 1, error_fixed; ... % Circuit 7 + {'E_006'}, 1, error_fixed; ... % Circuit 8 + {'E_007'}, 1, error_fixed; ... % Circuit 9 + {'E_008'}, 1, error_fixed; ... % Circuit 10 + {'F_001'}, 1, error_fixed; ... % Circuit 11 + {'F_002'}, 1, error_fixed; ... % Circuit 12 + {'F_003'}, 1, error_fixed; ... % Circuit 13 + {'F_004'}, 1, error_fixed; ... % Circuit 14 + {'F_005'}, 1, error_fixed; ... % Circuit 15 + {'F_006'}, 1, error_fixed; ... % Circuit 16 + {'F_007'}, 1, error_fixed; ... % Circuit 17 + {'F_008'}, 1, error_fixed; ... % Circuit 18 + {'G_001', 'G_002', 'G_003', 'G_004', 'G_005', 'G_006'}, [ 1, 1, 1,-1,-1,-1], error_fixed*[ 1, 1, 1, 1, 1, 1]; ... % Circuit 19 Lower coils connected in opposite direcetion + {'T_001', 'T_002', 'T_003'}, [-1,-1, 1], error_fixed*[1, 1, 1]; ...% Circuit 20 %T003 in opposite direction + }; power_supply_names_and_current_sign = {... -{'OH1'}, [1];... % Circuit 1 -{'OH2'}, [1];... % Circuit 2 -{'E1'}, [1];...% Circuit 3 -{'E2'}, [1];...% Circuit 4 -{'E3'}, [1];... % Circuit 5 -{'E4'}, [1];... % Circuit 6 -{'E5'}, [1];... % Circuit 7 -{'E6'}, [1];... % Circuit 8 -{'E7'}, [1];... % Circuit 9 -{'E8'}, [1];... % Circuit 10 -{'F1'}, [1];... % Circuit 11 -{'F2'}, [1];... % Circuit 12 -{'F3'}, [1];... % Circuit 13 -{'F4'}, [1];... % Circuit 14 -{'F5'}, [1];... % Circuit 15 -{'F6'}, [1];... % Circuit 16 -{'F7'}, [1];... % Circuit 17 -{'F8'}, [1];... % Circuit 18 -{'FPS'}, [1];...% Circuit 19 -{'T'}, [1];... % Circuit 20 -}; - -coil_names = {coil_names_and_current_sign{:,1}}'; -coil_current_sign = {coil_names_and_current_sign{:,2}}; -coil_current_error = {coil_names_and_current_sign{:,3}}; -power_supply_names = {power_supply_names_and_current_sign{:,1}}'; -power_supply_current_sign = {power_supply_names_and_current_sign{:,2}}; + {'OH1'}, 1;... % Circuit 1 + {'OH2'}, 1;... % Circuit 2 + {'E1'}, 1;... % Circuit 3 + {'E2'}, 1;... % Circuit 4 + {'E3'}, 1;... % Circuit 5 + {'E4'}, 1;... % Circuit 6 + {'E5'}, 1;... % Circuit 7 + {'E6'}, 1;... % Circuit 8 + {'E7'}, 1;... % Circuit 9 + {'E8'}, 1;... % Circuit 10 + {'F1'}, 1;... % Circuit 11 + {'F2'}, 1;... % Circuit 12 + {'F3'}, 1;... % Circuit 13 + {'F4'}, 1;... % Circuit 14 + {'F5'}, 1;... % Circuit 15 + {'F6'}, 1;... % Circuit 16 + {'F7'}, 1;... % Circuit 17 + {'F8'}, 1;... % Circuit 18 + {'FPS'}, 1;... % Circuit 19 + {'T'}, 1;... % Circuit 20 + }; + +coil_names = coil_names_and_current_sign(:,1); +coil_current_sign = coil_names_and_current_sign(:,2); +coil_current_error = coil_names_and_current_sign(:,3); +power_supply_names = power_supply_names_and_current_sign(:,1); +power_supply_current_sign = power_supply_names_and_current_sign(:,2); circuit_names = power_supply_names; % mds path to be called with gdat mds_paths = {... - '\magnetics::ipol[*,"OH_001"]';... % Circuit 1 - '\magnetics::ipol[*,"OH_002"]'; ... % Circuit 2 - '\magnetics::ipol[*,"E_001"]';... % Circuit 3 - '\magnetics::ipol[*,"E_002"]';...% Circuit 4 - '\magnetics::ipol[*,"E_003"]';...% Circuit 5 - '\magnetics::ipol[*,"E_004"]';...% Circuit 6 - '\magnetics::ipol[*,"E_005"]';...% Circuit 7 - '\magnetics::ipol[*,"E_006"]';...% Circuit 8 - '\magnetics::ipol[*,"E_007"]';...% Circuit 9 - '\magnetics::ipol[*,"E_008"]'; ...% Circuit 10 - '\magnetics::ipol[*,"F_001"]';...% Circuit 11 - '\magnetics::ipol[*,"F_002"]';...% Circuit 12 - '\magnetics::ipol[*,"F_003"]';...% Circuit 13 - '\magnetics::ipol[*,"F_004"]';...% Circuit 14 - '\magnetics::ipol[*,"F_005"]';...% Circuit 15 - '\magnetics::ipol[*,"F_006"]';...% Circuit 16 - '\magnetics::ipol[*,"F_007"]';...% Circuit 17 - '\magnetics::ipol[*,"F_008"]';... % Circuit 18 - 'is_in("G_001",dim_of(\magnetics::ipol,1)) ? \magnetics::ipol[*,"G_001"] : make_signal(zero(shape(data(\magnetics::ipol))[0],1.0),*,dim_of(\magnetics::ipol,0))';... % G coils % Circuit 19 - '\magnetics::iphi';... % Connection between tf coils % Circuit 20 -}; + '\magnetics::ipol[*,"OH_001"]';... % Circuit 1 + '\magnetics::ipol[*,"OH_002"]'; ... % Circuit 2 + '\magnetics::ipol[*,"E_001"]';... % Circuit 3 + '\magnetics::ipol[*,"E_002"]';...% Circuit 4 + '\magnetics::ipol[*,"E_003"]';...% Circuit 5 + '\magnetics::ipol[*,"E_004"]';...% Circuit 6 + '\magnetics::ipol[*,"E_005"]';...% Circuit 7 + '\magnetics::ipol[*,"E_006"]';...% Circuit 8 + '\magnetics::ipol[*,"E_007"]';...% Circuit 9 + '\magnetics::ipol[*,"E_008"]'; ...% Circuit 10 + '\magnetics::ipol[*,"F_001"]';...% Circuit 11 + '\magnetics::ipol[*,"F_002"]';...% Circuit 12 + '\magnetics::ipol[*,"F_003"]';...% Circuit 13 + '\magnetics::ipol[*,"F_004"]';...% Circuit 14 + '\magnetics::ipol[*,"F_005"]';...% Circuit 15 + '\magnetics::ipol[*,"F_006"]';...% Circuit 16 + '\magnetics::ipol[*,"F_007"]';...% Circuit 17 + '\magnetics::ipol[*,"F_008"]';... % Circuit 18 + 'is_in("G_001",dim_of(\magnetics::ipol,1)) ? \magnetics::ipol[*,"G_001"] : make_signal(zero(shape(data(\magnetics::ipol))[0],1.0),*,dim_of(\magnetics::ipol,0))';... % G coils % Circuit 19 + '\magnetics::iphi';... % Connection between tf coils % Circuit 20 + }; % Combined structure @@ -93,17 +102,18 @@ combined_structure.coil_current_signs = coil_current_sign; combined_structure.coil_current_error = coil_current_error; combined_structure.power_supply_current_signs = power_supply_current_sign; combined_structure.circuit_names = circuit_names; -combined_structure = get_circuiting(combined_structure); %Add circuiting information +combined_structure = get_circuiting(combined_structure,doplot); %Add circuiting information %% Create the connection matrix from the previous information -function circuit_struct = get_circuiting(circuit_struct) +function circuit_struct = get_circuiting(circuit_struct,doplot) +if nargin<2, doplot=0;end % Get dimension of the circuits circuit_struct.ntotcircuits = numel(circuit_struct.circuit_names); circuit_struct.ntotpowersupplies = numel(circuit_struct.power_supply_names); circuit_struct.ntotcoils = numel([circuit_struct.coil_names{1:end}]); circuit_struct.ncoilpercircuit = zeros(1,circuit_struct.ntotcircuits); for ii=1:circuit_struct.ntotcircuits - circuit_struct.ncoilpercircuit(ii) = numel(circuit_struct.coil_names{ii}); + circuit_struct.ncoilpercircuit(ii) = numel(circuit_struct.coil_names{ii}); end % Each circuit has only 1 power supply-> number of elements per circuit = @@ -114,74 +124,72 @@ circuit_struct.ntotelements = sum(circuit_struct.nnodespercircuit); circuit_struct.connection_matrix = struct([]); -power_supply_index = 0; coil_column_index = 2*circuit_struct.ntotpowersupplies ; for ii=1:circuit_struct.ntotcircuits - circuit_connection_matrix = zeros(circuit_struct.nnodespercircuit(ii), 2*circuit_struct.ntotelements); - - % Put power supply connection - power_supply_index = ii; - if circuit_struct.power_supply_current_signs{power_supply_index} == 1 - circuit_connection_matrix(1,2*(power_supply_index-1)+2) = 1; - circuit_connection_matrix(circuit_struct.nnodespercircuit(ii),2*(power_supply_index-1)+1) = 1; - elseif circuit_struct.power_supply_current_signs{power_supply_index} == -1 - circuit_connection_matrix(1,2*(power_supply_index-1)+1) = 1; - circuit_connection_matrix(circuit_struct.nnodespercircuit(ii),2*(power_supply_index-1)+2) = 1; - end - - % Put coil connection - for jj=1:circuit_struct.ncoilpercircuit(ii) - if circuit_struct.coil_current_signs{ii}(jj) == 1 - circuit_connection_matrix(jj, coil_column_index + 2*(jj-1) + 1 ) = 1; - circuit_connection_matrix(jj + 1, coil_column_index + 2*(jj-1) + 2 ) = 1; - - elseif circuit_struct.coil_current_signs{ii}(jj) == -1 - circuit_connection_matrix(jj, coil_column_index + 2*(jj-1) + 2 ) = 1; - circuit_connection_matrix(jj + 1, coil_column_index + 2*(jj-1) + 1 ) = 1; - end + circuit_connection_matrix = zeros(circuit_struct.nnodespercircuit(ii), 2*circuit_struct.ntotelements); + + % Put power supply connection + power_supply_index = ii; + if circuit_struct.power_supply_current_signs{power_supply_index} == 1 + circuit_connection_matrix(1,2*(power_supply_index-1)+2) = 1; + circuit_connection_matrix(circuit_struct.nnodespercircuit(ii),2*(power_supply_index-1)+1) = 1; + elseif circuit_struct.power_supply_current_signs{power_supply_index} == -1 + circuit_connection_matrix(1,2*(power_supply_index-1)+1) = 1; + circuit_connection_matrix(circuit_struct.nnodespercircuit(ii),2*(power_supply_index-1)+2) = 1; + end + + % Put coil connection + for jj=1:circuit_struct.ncoilpercircuit(ii) + if circuit_struct.coil_current_signs{ii}(jj) == 1 + circuit_connection_matrix(jj, coil_column_index + 2*(jj-1) + 1 ) = 1; + circuit_connection_matrix(jj + 1, coil_column_index + 2*(jj-1) + 2 ) = 1; + + elseif circuit_struct.coil_current_signs{ii}(jj) == -1 + circuit_connection_matrix(jj, coil_column_index + 2*(jj-1) + 2 ) = 1; + circuit_connection_matrix(jj + 1, coil_column_index + 2*(jj-1) + 1 ) = 1; end - - coil_column_index = coil_column_index + 2*circuit_struct.ncoilpercircuit(ii); - circuit_struct.connection_matrix{ii} = circuit_connection_matrix; - - % Plot all the connaction matrices as a check - doplot = 0; - if doplot + end + + coil_column_index = coil_column_index + 2*circuit_struct.ncoilpercircuit(ii); + circuit_struct.connection_matrix{ii} = circuit_connection_matrix; + + % Plot all the connaction matrices as a check + if doplot plot_connection_matrix(circuit_connection_matrix, circuit_struct.power_supply_names, circuit_struct.coil_names); - end - + end + end %% Plot connection matrix -function plot_connection_matrix(mat, psnames, cnames, circuitname, circuit ) +function plot_connection_matrix(mat, psnames, cnames) %, circuitname, circuit % Plot the value of a matrix in separated block figure -b = zeros([size(mat)]+1); +b = zeros(size(mat)+1); b(1:end-1, 1:end-1) = mat; pcolor(b) -yti = [1:size(b,1)]+0.5; -xti = [1:size(b,2)]+0.5; +yti = (1:size(b,1))+0.5; +xti = (1:size(b,2))+0.5; -ylab = cellstr(num2str([1:size(b,1)-1]')); +ylab = cellstr(num2str((1:size(b,1)-1).')); index = 0; -xlab = {}; +xlab = cell(1,numel(psnames)); % Get the labels for ii=1:numel(psnames) - index = index +1; - xlab{index} = [psnames{ii}{1} 'in']; - index = index +1; - xlab{index} = [psnames{ii}{1} 'out']; + index = index +1; + xlab{index} = [psnames{ii}{1} 'in']; + index = index +1; + xlab{index} = [psnames{ii}{1} 'out']; end for ii=1:numel(cnames) - for jj=1:numel(cnames{ii}) - - index = index +1; - xlab{index} = [cnames{ii}{jj} 'in']; - index = index +1; - xlab{index} = [cnames{ii}{jj} 'out']; - end + for jj=1:numel(cnames{ii}) + + index = index +1; + xlab{index} = [cnames{ii}{jj} 'in']; + index = index +1; + xlab{index} = [cnames{ii}{jj} 'out']; + end end shg diff --git a/matlab/TCV_IMAS/tcv_ids_wall_description_2d.m b/matlab/TCV_IMAS/tcv_ids_wall_description_2d.m index 8a8ed6aa62d68ae90cd1f9eae0c03388b051d148..e47b89d74ff086d3d13cacf8832ea217280e64ff 100644 --- a/matlab/TCV_IMAS/tcv_ids_wall_description_2d.m +++ b/matlab/TCV_IMAS/tcv_ids_wall_description_2d.m @@ -1,4 +1,4 @@ -function [ids_struct_out,ids_struct_out_description] = tcv_ids_wall_description_2d(shot, ids_structures) +function [ids_struct_out,ids_struct_out_description] = tcv_ids_wall_description_2d(ids_structures) ids_struct_out = ids_structures; @@ -10,9 +10,9 @@ ids_struct_out{1}.type.index = 0; r_l = mdsdata('STATIC("R_T")'); z_l = mdsdata('STATIC("Z_T")'); ids_struct_out{1}.limiter.unit{1}.outline.r = r_l; -ids_struct_out_description{1}.limiter.unit{1}.outline_r = ['from ''STATIC("R_T")']; +ids_struct_out_description{1}.limiter.unit{1}.outline_r = 'from ''STATIC("R_T")'''; ids_struct_out{1}.limiter.unit{1}.outline.z = z_l; -ids_struct_out_description{1}.limiter.unit{1}.outline_z = ['from ''STATIC("Z_T")']; +ids_struct_out_description{1}.limiter.unit{1}.outline_z = 'from ''STATIC("Z_T")'''; % vessel r_v_in = mdsdata('STATIC("R_V:IN")'); @@ -20,13 +20,13 @@ z_v_in = mdsdata('STATIC("Z_V:IN")'); r_v_out = mdsdata('STATIC("R_V:OUT")'); z_v_out = mdsdata('STATIC("Z_V:OUT")'); ids_struct_out{1}.vessel.unit{1}.annular.outline_inner.r = r_v_in ; -ids_struct_out_description{1}.vessel.unit{1}.annular.outline_inner.r = ['from ''STATIC("R_V:IN")']; +ids_struct_out_description{1}.vessel.unit{1}.annular.outline_inner.r = 'from ''STATIC("R_V:IN")'''; ids_struct_out{1}.vessel.unit{1}.annular.outline_inner.z = z_v_in; -ids_struct_out_description{1}.vessel.unit{1}.annular.outline_inner.z = ['from ''STATIC("Z_V:IN")']; +ids_struct_out_description{1}.vessel.unit{1}.annular.outline_inner.z = 'from ''STATIC("Z_V:IN")'''; ids_struct_out{1}.vessel.unit{1}.annular.outline_outer.r = r_v_out; -ids_struct_out_description{1}.vessel.unit{1}.annular.outline_outer.r = ['from ''STATIC("R_V:OUT")']; +ids_struct_out_description{1}.vessel.unit{1}.annular.outline_outer.r = 'from ''STATIC("R_V:OUT")'''; ids_struct_out{1}.vessel.unit{1}.annular.outline_outer.z = z_v_out; -ids_struct_out_description{1}.vessel.unit{1}.annular.outline_outer.z = ['from ''STATIC("Z_V:OUT")']; +ids_struct_out_description{1}.vessel.unit{1}.annular.outline_outer.z = 'from ''STATIC("Z_V:OUT")'''; % The value of the resistivity is taken as an average of the value in Fig.3 % of Jean-Marc LIUQE paper.