diff --git a/crpptbx/TCV_IMAS/tcv_get_ids_circuit.m b/crpptbx/TCV_IMAS/tcv_get_ids_circuit.m index c6b88e1c19a2586879029609cd3d1a3513bd265d..4fb9bcd9b94b603bc9f932c936c3479206b4b59a 100644 --- a/crpptbx/TCV_IMAS/tcv_get_ids_circuit.m +++ b/crpptbx/TCV_IMAS/tcv_get_ids_circuit.m @@ -2,149 +2,36 @@ function [ids_struct_out] = tcv_get_ids_circuit(shot, ids_structures) mdsopen(shot) %% Get power supply/coils names for each circuit. -[coil_names2ids, power_supply_names2ids, circuit_names2ids, mds_paths2ids, ~] = tcv_ids_pf_active_definition(); +[pf_def] = tcv_ids_pf_active_definition(); + + % Get dimension -ncircuits2ids = numel(circuit_names2ids); +ntotcircuits2ids = numel(circuit_names2ids); +ntotpowersupply = numel(power_supply_names2ids); +ntotcoils = numel([coil_names2ids{1:end}]); +ncoilpercircuit = zeros(1,ntotcircuits2ids); +for ii=1:ntotcircuits2ids + ncoilpercircuit(ii) = numel(coil_names2ids{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; +nnodespercircuit = ncoilpercircuit + 1; +ntotelements = sum(nnodespercircuit); + +% Since all the coils are connected in series it d % Preallocate memory and get data -ids_struct_out(1:ncircuits2ids) = ids_structures; -for ii=1:ncircuits2ids - +ids_struct_out(1:ntotcircuits2ids) = ids_structures; +for ii=1:ntotcircuits2ids tmpdata = tdi(mds_paths2ids{ii}); ids_struct_out{ii}.current.data = tmpdata.data; ids_struct_out{ii}.current.time = tmpdata.dim{1}; - - %ids_struct_out{ii}.connection = % TODO -end - -%% -%{ -% 19 circuits + TF (19 rectifiers power supplies) + FPS -% Same order as power supplies - -% nnodes: Number of nodes used to describe each the circuits. -% If circuit is series connected then nnodes = (ncoils + npowersupply) -% All circuit are series connected in TCV and has only one power supply -% therefore for a given circuit nnode = ncoils +1; -nnodes = [2,7,repmat(2,1,16),7,4]; -value = nnodes; - - -npfs=length(namepfs); % Number of power supplies -npfc=length(namepfc); % Number of coils -ncomponents = npfs + npfc; % 20 supplies + 32 coils = 52 components -value = zeros(ncircuits,max(nnodes),2*ncomponents); % [20 x 7 x 104] - -% Create varibales with indices -for l=1:npfs - eval(sprintf('s%sin=2*%d-1;',namepfs{l},l)); - eval(sprintf('s%sout=2*%d;',namepfs{l},l)); -end -for l=1:npfc - eval(sprintf('c%sin=2*npfs+2*%d-1;',namepfc{l},l)); - eval(sprintf('c%sout=2*npfs+2*%d;',namepfc{l},l)); + ids_struct_out{ii}.connection = zeros(nnodespercircuit(ii),2*ntotelements); end -% OH1 -icircuit=1; -value(icircuit,1,[sOH_001out,cA_001in]) = 1; -value(icircuit,2,[cA_001out,sOH_001in]) = 1; -% OH2 -icircuit=2; -value(icircuit,1,[sOH_002out,cB_001in]) = 1; -value(icircuit,2,[cB_001out, cC_001in]) = 1; -value(icircuit,3,[cC_001out, cD_001in]) = 1; -value(icircuit,4,[cD_001out, cD_002in]) = 1; -value(icircuit,5,[cD_002out, cC_002in]) = 1; -value(icircuit,6,[cC_002out, cB_002in]) = 1; -value(icircuit,7,[cB_002out,sOH_002in]) = 1; -% E_001 -icircuit=3; -value(icircuit,1,[sE_001out,cE_001in]) = 1; -value(icircuit,2,[cE_001out,sE_001in]) = 1; -% E_002 -icircuit=4; -value(icircuit,1,[sE_002out,cE_002in]) = 1; -value(icircuit,2,[cE_002out,sE_002in]) = 1; -% E_003 -icircuit=5; -value(icircuit,1,[sE_003out,cE_003in]) = 1; -value(icircuit,2,[cE_003out,sE_003in]) = 1; -% E_004 -icircuit=6; -value(icircuit,1,[sE_004out,cE_004in]) = 1; -value(icircuit,2,[cE_004out,sE_004in]) = 1; -% E_005 -icircuit=7; -value(icircuit,1,[sE_005out,cE_005in]) = 1; -value(icircuit,2,[cE_005out,sE_005in]) = 1; -% E_006 -icircuit=8; -value(icircuit,1,[sE_006out,cE_006in]) = 1; -value(icircuit,2,[cE_006out,sE_006in]) = 1; -% E_007 -icircuit=9; -value(icircuit,1,[sE_007out,cE_007in]) = 1; -value(icircuit,2,[cE_007out,sE_007in]) = 1; -% E_008 -icircuit=10; -value(icircuit,1,[sE_008out,cE_008in]) = 1; -value(icircuit,2,[cE_008out,sE_008in]) = 1; -% F_001 -icircuit=11; -value(icircuit,1,[sF_001out,cF_001in]) = 1; -value(icircuit,2,[cF_001out,sF_001in]) = 1; -% F_002 -icircuit=12; -value(icircuit,1,[sF_002out,cF_002in]) = 1; -value(icircuit,2,[cF_002out,sF_002in]) = 1; -% F_003 -icircuit=13; -value(icircuit,1,[sF_003out,cF_003in]) = 1; -value(icircuit,2,[cF_003out,sF_003in]) = 1; -% F_004 -icircuit=14; -value(icircuit,1,[sF_004out,cF_004in]) = 1; -value(icircuit,2,[cF_004out,sF_004in]) = 1; -% F_005 -icircuit=15; -value(icircuit,1,[sF_005out,cF_005in]) = 1; -value(icircuit,2,[cF_005out,sF_005in]) = 1; -% F_006 -icircuit=16; -value(icircuit,1,[sF_006out,cF_006in]) = 1; -value(icircuit,2,[cF_006out,sF_006in]) = 1; -% F_007 -icircuit=17; -value(icircuit,1,[sF_007out,cF_007in]) = 1; -value(icircuit,2,[cF_007out,sF_007in]) = 1; -% F_008 -icircuit=18; -value(icircuit,1,[sF_008out,cF_008in]) = 1; -value(icircuit,2,[cF_008out,sF_008in]) = 1; -% G_001/FPS -icircuit=19; -value(icircuit,1,[sG_001out, cG_001in]) = 1; -value(icircuit,2,[cG_001out,cG_002in]) = 1; -value(icircuit,3,[cG_002out,cG_003in]) = 1; -value(icircuit,4,[cG_003out,cG_004out])= 1; % Lower coils connected in the -value(icircuit,5,[cG_004in,cG_005out]) = 1; % opposite direction -value(icircuit,6,[cG_005in,cG_006out]) = 1; -value(icircuit,7,[cG_006in, sG_001in]) = 1; -% BCOIL -icircuit=20; -value(icircuit,1,[sBCOILout, cT_001in]) = 1; -value(icircuit,2,[cT_001out, cT_002in]) = 1; -value(icircuit,3,[cT_002out,cT_003out]) = 1; % T_003 connected in the opposite -value(icircuit,4,[cT_003in, sBCOILin]) = 1; % direction! -%} end -function connection = create_connection_matrix() - - -end - diff --git a/crpptbx/TCV_IMAS/tcv_get_ids_coil.m b/crpptbx/TCV_IMAS/tcv_get_ids_coil.m index 7280ee9ab8ff203653e73ec468729d7c151b30aa..f7d6842dfeade27f9c3ebb069f8dc4bc9468eeb3 100644 --- a/crpptbx/TCV_IMAS/tcv_get_ids_coil.m +++ b/crpptbx/TCV_IMAS/tcv_get_ids_coil.m @@ -16,7 +16,10 @@ function [ids_struct_out] = tcv_get_ids_coil(shot, ids_structures) mdsopen(shot) %% Get power supply/coils names for each circuit. -[coil_names2ids, ~, ~, mds_paths2ids, ~] = tcv_ids_pf_active_definition(); +[pf_def] = tcv_ids_pf_active_definition(); +coil_names2ids = pf_def.coil_names; +mds_paths2ids = pf_def.mds_paths; + ncircuits2ids = numel(coil_names2ids); %% Get geometrical data from the static tree diff --git a/crpptbx/TCV_IMAS/tcv_ids_pf_active_definition.m b/crpptbx/TCV_IMAS/tcv_ids_pf_active_definition.m index 780f77d69142ec6523151aab75feea83ac6d8c1f..86d7c913b8b10da7692275d70df2f8ba4bb4620d 100644 --- a/crpptbx/TCV_IMAS/tcv_ids_pf_active_definition.m +++ b/crpptbx/TCV_IMAS/tcv_ids_pf_active_definition.m @@ -1,53 +1,60 @@ -function [coil_names, power_supply_names, circuit_names, mds_paths, combined_structure] = tcv_ids_pf_active_definition() +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_names = {... - {'A_001'}; ... % Circuit 1 - {'B_001', 'B_002', 'C_001', 'C_002', 'D_001', 'D_002'}; ... % Circuit 2 - {'E_001'}; ... % Circuit 3 - {'E_002'}; ... % Circuit 4 - {'E_003'}; ... % Circuit 5 - {'E_004'}; ... % Circuit 6 - {'E_005'}; ... % Circuit 7 - {'E_006'}; ... % Circuit 8 - {'E_007'}; ... % Circuit 9 - {'E_008'}; ... % Circuit 10 - {'F_001'}; ... % Circuit 11 - {'F_002'}; ... % Circuit 12 - {'F_003'}; ... % Circuit 13 - {'F_004'}; ... % Circuit 14 - {'F_005'}; ... % Circuit 15 - {'F_006'}; ... % Circuit 16 - {'F_007'}; ... % Circuit 17 - {'F_008'}; ... % Circuit 18 - {'G_001', 'G_002', 'G_003', 'G_004', 'G_005', 'G_006'}; ... % Circuit 19 - {'T_001', 'T_002', 'T_003'}; ...% Circuit 20 - }; - -power_supply_names = {... -'OH1';... % Circuit 1 -'OH2';... % Circuit 2 -'E1';...% Circuit 3 -'E2';...% Circuit 4 -'E3';... % Circuit 5 -'E4';... % Circuit 6 -'E5';... % Circuit 7 -'E6';... % Circuit 8 -'E7';... % Circuit 9 -'E8';... % Circuit 10 -'F1';... % Circuit 11 -'F2';... % Circuit 12 -'F3';... % Circuit 13 -'F4';... % Circuit 14 -'F5';... % Circuit 15 -'F6';... % Circuit 16 -'F7';... % Circuit 17 -'F8';... % Circuit 18 -'FPS';...% Circuit 19 -'T';... % Circuit 20 +% {Coil name}, [connection side identifier] +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 + {'T_001', 'T_002', 'T_003'}, [1,1,1]; ...% Circuit 20 }; +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}}; +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 @@ -75,15 +82,40 @@ mds_paths = {... }; -% conbined_structure(icircuit). -% .coil_names -% .power_supply_name -% .mds_path +% Combined structure combined_structure = struct(); -for ii=1:numel(coil_names) - combined_structure(ii).coil_names = coil_names{ii}; - combined_structure(ii).power_supply_name = power_supply_names{ii}; - combined_structure(ii).mds_path = mds_paths{ii}; +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.power_supply_current_signs = power_supply_current_sign; +combined_structure.circuit_names = circuit_names; +combined_structure = get_circuiting(combined_struct); %Add circuiting information + +end + +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.ntotcoils = numel([circuit_struct.coil_names{1:end}]); +circuit_struct.ncoilpercircuit = zeros(1,ntotcircuits); +for ii=1: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.ntotelements = sum(circuit_struct.nnodespercircuit); + +connection_matrix = struct([]); +for ii=1:circuit_struct.ntotcircuits + circuit_connetion_matrix = zeros(circuit_struct.nnodespercircuit(ii), 2*circuit_struct.ntotelements); + +end + +end + +