From 857d5567a2a74bfe4bfdfebc32ad4eebbf3c6772 Mon Sep 17 00:00:00 2001 From: Olivier Sauter <olivier.sauter@epfl.ch> Date: Wed, 5 Jun 2019 20:21:00 +0000 Subject: [PATCH] fix pf_active add some error git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@11985 d63d8f72-b253-0410-a779-e742ad2e26cf --- crpptbx/TCV_IMAS/tcv_ids_coil.m | 28 ++++----- crpptbx/TCV_IMAS/tcv_ids_ip.m | 4 +- .../TCV_IMAS/tcv_ids_pf_active_definition.m | 63 ++++++++++--------- 3 files changed, 49 insertions(+), 46 deletions(-) diff --git a/crpptbx/TCV_IMAS/tcv_ids_coil.m b/crpptbx/TCV_IMAS/tcv_ids_coil.m index f3b5ab97..9cb0af24 100644 --- a/crpptbx/TCV_IMAS/tcv_ids_coil.m +++ b/crpptbx/TCV_IMAS/tcv_ids_coil.m @@ -17,14 +17,14 @@ if exist('gdat_params') && isfield(gdat_params,'error_bar') && ~isempty(gdat_par error_bar = gdat_params.error_bar; end -% 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). -% Elements can be used in the future to refine the spatial -% description of each coil. -% The circular conductor of G-coils approximated by a square of equal +% 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). +% Elements can be used in the future to refine the spatial +% description of each coil. +% The circular conductor of G-coils approximated by a square of equal % crosssectional area. -% Each coil has a positive turnsign. The return current in T_003 is -% dealt with in the circuit description and in the machine mapping. +% Each coil has a positive turnsign. The return current in T_003 is +% dealt with in the circuit description and in the machine mapping. % In practice the dissipated energy in the pf ' % coils is not a relevant limit. mdsopen(shot) @@ -47,7 +47,7 @@ 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('dim_of(_r_c)'); % Set effective turns in T1 and T2 (see J.-M. Moret, et al., RSI 69 (1998) 2333) iT = strmatch('T_001',namepfc); @@ -68,7 +68,7 @@ ids_struct_out(1:sizepfc) = ids_structures; ind_coil_ids = 0; 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}; @@ -76,10 +76,10 @@ for ii=1:ncircuits2ids tmpdata = tdi(mds_paths2ids{ii}); 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.time = tmpdata.dim{1}; + ids_struct_out{ind_coil_ids}.current.time = tmpdata.dim{1}; % Find index on static tree - tmpind = find(strcmp(ids_struct_out{ii}.name, namepfc)); + 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); @@ -102,6 +102,7 @@ switch error_bar 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)); @@ -112,6 +113,7 @@ switch error_bar 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; @@ -123,6 +125,7 @@ switch error_bar 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)); @@ -135,6 +138,3 @@ switch error_bar otherwise error(['tcv_ids_bpol_loop: error_bar option not known: ' error_bar]) end - - - diff --git a/crpptbx/TCV_IMAS/tcv_ids_ip.m b/crpptbx/TCV_IMAS/tcv_ids_ip.m index 14739803..e843cb0a 100644 --- a/crpptbx/TCV_IMAS/tcv_ids_ip.m +++ b/crpptbx/TCV_IMAS/tcv_ids_ip.m @@ -15,7 +15,7 @@ if exist('gdat_params') && isfield(gdat_params,'error_bar') && ~isempty(gdat_par error_bar = gdat_params.error_bar; end -% Get data +% Get data tmp = gdat_tcv( shot, 'ip_trapeze'); time = tmp.dim{1}; data = tmp.data; @@ -34,7 +34,7 @@ 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.1; +fixed_error_diamagnetic_flux = 0.01; switch error_bar case 'delta' ids_struct_out{1}.ip.data_error_upper = fixed_error_ip.*ones(size(ids_struct_out{1}.ip.data)); diff --git a/crpptbx/TCV_IMAS/tcv_ids_pf_active_definition.m b/crpptbx/TCV_IMAS/tcv_ids_pf_active_definition.m index a02ade39..35230de7 100644 --- a/crpptbx/TCV_IMAS/tcv_ids_pf_active_definition.m +++ b/crpptbx/TCV_IMAS/tcv_ids_pf_active_definition.m @@ -1,29 +1,31 @@ function [ combined_structure] = tcv_ids_pf_active_definition() % All circuits are connected in series and has only 1 power supply, so they -% share the same current. +% share the same current. % {Coil name}, [connection side identifier] +error_fixed = 200.; coil_names_and_current_sign = {... - {'A_001'}, [1]; ... % Circuit 1 - {'B_001', 'B_002', 'C_001', 'C_002', 'D_001', 'D_002'}, [1, 1, 1, 1, 1, 1]; ... % Circuit 2 - {'E_001'}, [1]; ... % Circuit 3 - {'E_002'}, [1]; ... % Circuit 4 - {'E_003'}, [1]; ... % Circuit 5 - {'E_004'}, [1]; ... % Circuit 6 - {'E_005'}, [1]; ... % Circuit 7 - {'E_006'}, [1]; ... % Circuit 8 - {'E_007'}, [1]; ... % Circuit 9 - {'E_008'}, [1]; ... % Circuit 10 - {'F_001'}, [1]; ... % Circuit 11 - {'F_002'}, [1]; ... % Circuit 12 - {'F_003'}, [1]; ... % Circuit 13 - {'F_004'}, [1]; ... % Circuit 14 - {'F_005'}, [1]; ... % Circuit 15 - {'F_006'}, [1]; ... % Circuit 16 - {'F_007'}, [1]; ... % Circuit 17 - {'F_008'}, [1]; ... % Circuit 18 - {'G_001', 'G_002', 'G_003', 'G_004', 'G_005', 'G_006'}, [1,1,1,-1,-1,-1]; ... % Circuit 19 Lower coils connected in opposite direcetion - {'T_001', 'T_002', 'T_003'}, [1,1,-1]; ...% Circuit 20 %T003 in opposite direction + {'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 }; power_supply_names_and_current_sign = {... {'OH1'}, [1];... % Circuit 1 @@ -50,6 +52,7 @@ power_supply_names_and_current_sign = {... 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}}; @@ -87,6 +90,7 @@ combined_structure.coil_names = coil_names; combined_structure.power_supply_names = power_supply_names; combined_structure.mds_paths = mds_paths; 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 @@ -104,7 +108,7 @@ end % Each circuit has only 1 power supply-> number of elements per circuit = % number of nodes per circuit= number of coils per circuit + 1; -circuit_struct.nnodespercircuit = circuit_struct.ncoilpercircuit + 1; +circuit_struct.nnodespercircuit = circuit_struct.ncoilpercircuit + 1; circuit_struct.nelementspercircuit = circuit_struct.nnodespercircuit; circuit_struct.ntotelements = sum(circuit_struct.nnodespercircuit); @@ -114,7 +118,7 @@ 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 @@ -124,28 +128,28 @@ for ii=1:circuit_struct.ntotcircuits 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 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 plot_connection_matrix(circuit_connection_matrix, circuit_struct.power_supply_names, circuit_struct.coil_names); end - + end %% Plot connection matrix @@ -172,7 +176,7 @@ for ii=1:numel(psnames) end for ii=1:numel(cnames) for jj=1:numel(cnames{ii}) - + index = index +1; xlab{index} = [cnames{ii}{jj} 'in']; index = index +1; @@ -187,4 +191,3 @@ colormap(bone(2)) xlabel('Element name'); ylabel('Node'); set(ax,'Xtick', xti, 'Ytick', yti, 'XTickLabel', xlab, 'YTickLabel', ylab') - -- GitLab