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. % {Coil name}, [connection side identifier] error_fixed = 200.; 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 }; 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}}; 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 }; % Combined structure combined_structure = struct(); 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 %% 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.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}); 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.nelementspercircuit = circuit_struct.nnodespercircuit; 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 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 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')