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
+
+