From 94abd1ec21b28a055fc62569323c775b6868e4ec Mon Sep 17 00:00:00 2001 From: Francesco Carpanese <francesco.carpanese@epfl.ch> Date: Tue, 5 Feb 2019 14:30:25 +0000 Subject: [PATCH] Connection matrix implemented git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@11390 d63d8f72-b253-0410-a779-e742ad2e26cf --- .../TCV_IMAS/tcv_ids_pf_active_definition.m | 97 +++++++++++++++++-- 1 file changed, 88 insertions(+), 9 deletions(-) diff --git a/crpptbx/TCV_IMAS/tcv_ids_pf_active_definition.m b/crpptbx/TCV_IMAS/tcv_ids_pf_active_definition.m index 86d7c913..7abb4862 100644 --- a/crpptbx/TCV_IMAS/tcv_ids_pf_active_definition.m +++ b/crpptbx/TCV_IMAS/tcv_ids_pf_active_definition.m @@ -22,8 +22,8 @@ coil_names_and_current_sign = {... {'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 - {'T_001', 'T_002', 'T_003'}, [1,1,1]; ...% Circuit 20 + {'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 }; power_supply_names_and_current_sign = {... @@ -90,32 +90,111 @@ combined_structure.mds_paths = mds_paths; combined_structure.coil_current_signs = coil_current_sign; combined_structure.power_supply_current_signs = power_supply_current_sign; combined_structure.circuit_names = circuit_names; -combined_structure = get_circuiting(combined_struct); %Add circuiting information +combined_structure = get_circuiting(combined_structure); %Add circuiting information end +%% Create the connection matrix from the previous information function circuit_struct = get_circuiting(circuit_struct) % Get dimension of the circuits circuit_struct.ntotcircuits = numel(circuit_struct.circuit_names); -circuit_struct.ntotpowersupply = numel(circuit_struct.power_supply_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,ntotcircuits); -for ii=1:ntotcircuits +circuit_struct.ncoilpercircuit = zeros(1,circuit_struct.ntotcircuits); +for ii=1:circuit_struct.ntotcircuits circuit_struct.ncoilpercircuit(ii) = numel(circuit_struct.coil_names{ii}); end -% Each circuit has only 1 power supply, number of elements per circuit = +% 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.nelementspercircuit = circuit_struct.nnodespercircuit; circuit_struct.ntotelements = sum(circuit_struct.nnodespercircuit); -connection_matrix = struct([]); +circuit_struct.connection_matrix = struct([]); + +power_supply_index = 0; +coil_column_index = 2*circuit_struct.ntotpowersupplies ; for ii=1:circuit_struct.ntotcircuits - circuit_connetion_matrix = zeros(circuit_struct.nnodespercircuit(ii), 2*circuit_struct.ntotelements); + 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 + 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 end +%% Plot connection matrix +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(1:end-1, 1:end-1) = mat; + +pcolor(b) + +yti = [1:size(b,1)]+0.5; +xti = [1:size(b,2)]+0.5; + +ylab = cellstr(num2str([1:size(b,1)-1]')); +index = 0; +xlab = {}; +% 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']; +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 +end + +shg +axis ij +ax = gca; +colormap(bone(2)) +xlabel('Element name'); +ylabel('Node'); +set(ax,'Xtick', xti, 'Ytick', yti, 'XTickLabel', xlab, 'YTickLabel', ylab') + +end + + -- GitLab