diff --git a/crpptbx/TCV_IMAS/get_ids.m b/crpptbx/TCV_IMAS/get_ids.m
new file mode 100644
index 0000000000000000000000000000000000000000..ce31b641f60f66e46cef1f438d1e3704a67f499d
--- /dev/null
+++ b/crpptbx/TCV_IMAS/get_ids.m
@@ -0,0 +1,13 @@
+function [ids_structures] =  get_ids(shot)
+
+load('ids_structures_20190128.mat')
+addpath(genpath(pwd))
+
+ids_structures.magnetics.bpol_probe = imasget_bpol_probe(shot, ids_structures);
+ids_structures.magnetics.flux_loop = imasget_flux_loop(shot, ids_structures);
+ids_structures.magnetics.method = imasget_ip(shot, ids_structures);
+ids_structures.pf_active.circuit = imasget_circuit(shot, ids_structures);
+ids_structures.pf_active.coil = imasget_coil(shot, ids_structures);
+ids_structures.wall.description_2d = imasget_description_2d(shot, ids_structures);
+
+end
\ No newline at end of file
diff --git a/crpptbx/TCV_IMAS/magnetics/imasget_bpol_probe.m b/crpptbx/TCV_IMAS/magnetics/imasget_bpol_probe.m
new file mode 100644
index 0000000000000000000000000000000000000000..fa2704316276c406b2b24ad8f66cbd5e138a91bf
--- /dev/null
+++ b/crpptbx/TCV_IMAS/magnetics/imasget_bpol_probe.m
@@ -0,0 +1,33 @@
+function [ids_struct_out] =  imasget_bpol_probe(shot, ids_structures)
+% Get bpol probes
+
+ids_struct_out = {};
+mdsopen(shot);
+tmp = gdat( shot, '\MAGNETICS::BPOL_003');
+
+% Get dimension
+Nprobes = size(tmp.data,2);
+Ntime   = size(tmp.data,1);
+names = tmp.dim{2};
+time = tmp.dim{1};
+data = tmp.data;
+
+% Preallocate dimension
+ids_struct_out(1:Nprobes) = ids_structures.magnetics.bpol_probe(1);
+
+
+for ii=1:Nprobes
+    ids_struct_out{ii} = ids_structures.magnetics.bpol_probe{1};
+    ids_struct_out{ii}.name  = [names{ii}];  
+    ids_struct_out{ii}.position.r  = mdsvalue('STATIC("R_M"  )[$1]',ids_struct_out{ii}.name);
+    ids_struct_out{ii}.position.z  = mdsvalue('STATIC("Z_M"  )[$1]',ids_struct_out{ii}.name); 
+    
+    ids_struct_out{ii}.field.data  =  data(:,ii);
+    ids_struct_out{ii}.field.time  =  time; 
+    
+    %ids_struct_out{ii}.position.toroidal_angle  =  mdsdata('STATIC("ANG_M"  )[$1]',ids_struct_out{ii}.position.name); 
+    %ids_struct_out{ii}.position.poloidal_angle  =  0; % TO BE FOUND   
+    %ids_struct_out{ii}.position.field.data_error_upper = % TO BE FOUND;   
+    %ids_struct_out{ii}.position.field.data_error_upper = % TO BE FOUND;    
+end
+
diff --git a/crpptbx/TCV_IMAS/magnetics/imasget_flux_loop.m b/crpptbx/TCV_IMAS/magnetics/imasget_flux_loop.m
new file mode 100644
index 0000000000000000000000000000000000000000..4bdfa150d05e8d6b4b2ef88445673968ede3bd5a
--- /dev/null
+++ b/crpptbx/TCV_IMAS/magnetics/imasget_flux_loop.m
@@ -0,0 +1,30 @@
+function ids_struct_out = imasget_flux_loop(shot, ids_structures)
+% Get the bpol_probe signals into IDS structure
+
+ids_struct_out = {};
+mdsopen(shot);
+tmp = gdat(shot, 'tcv_idealloop("FLUX")');
+
+% Get dimension
+Nprobes = size(tmp.data,2);
+Ntime   = size(tmp.data,1);
+names = tmp.dim{2};
+time = tmp.dim{1};
+data = tmp.data;
+
+% Preallocate dimension
+ids_struct_out(1:Nprobes) = ids_structures.magnetics.flux_loop(1);
+
+% Get all the data
+for ii=1:Nprobes
+    ids_struct_out{ii}.name  = [names{ii}];
+    ids_struct_out{ii}.position{1}.r  = mdsvalue('STATIC("R_F"  )[$1]',ids_struct_out{ii}.name);
+    ids_struct_out{ii}.position{1}.z  = mdsvalue('STATIC("Z_F"  )[$1]',ids_struct_out{ii}.name);
+    ids_struct_out{ii}.flux.data  =  data(:,ii);
+    ids_struct_out{ii}.flux.time  =  time;
+    
+    %ids_struct_out{ii}.position.phi  =  0; % TO BE FOUND
+    %ids_struct_out{ii}.flux.data_error_upper = % TO BE FOUND;
+    %ids_struct_out{ii}.flux.data_error_lower = % TO BE FOUND;
+end
+
diff --git a/crpptbx/TCV_IMAS/magnetics/imasget_ip.m b/crpptbx/TCV_IMAS/magnetics/imasget_ip.m
new file mode 100644
index 0000000000000000000000000000000000000000..46bf07d4cb90a457ba2044db60c1c8870632d7c1
--- /dev/null
+++ b/crpptbx/TCV_IMAS/magnetics/imasget_ip.m
@@ -0,0 +1,17 @@
+function [ids_struct_out] = imasget_ip(shot, ids_structures)
+% Get the bpol_probe signals into IDS structure
+
+mdsopen(shot);
+tmp = gdat( shot, 'ip_trapeze');
+
+% Get dimension
+Ntime   = size(tmp.data,1);
+time = tmp.dim{1};
+data = tmp.data;
+
+% Preallocate dimension
+ids_struct_out = ids_structures.magnetics.method(1);
+ids_struct_out{1}.ip.data = data;
+ids_struct_out{1}.ip.time = time;
+
+
diff --git a/crpptbx/TCV_IMAS/pf_active/imasget_circuit.m b/crpptbx/TCV_IMAS/pf_active/imasget_circuit.m
new file mode 100644
index 0000000000000000000000000000000000000000..eefd036bc38dde0a6e99780b72ea31bc5d059b24
--- /dev/null
+++ b/crpptbx/TCV_IMAS/pf_active/imasget_circuit.m
@@ -0,0 +1,154 @@
+function [ids_struct_out] =  imasget_circuit(shot, ids_structures)
+
+mdsopen(shot)
+%% Get power supply/coils names for each circuit.
+[coil_names2ids, power_supply_names2ids, circuit_names2ids, mds_paths2ids, ~] =  pf_active_definition();
+% Get dimension
+ncircuits2ids = numel(circuit_names2ids);
+
+ids_struct_out(1:ncircuits2ids) = ids_structures.pf_active.circuit(1);
+for ii=1:ncircuits2ids
+    
+    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 = 
+    
+    
+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));
+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/pf_active/imasget_coil.m b/crpptbx/TCV_IMAS/pf_active/imasget_coil.m
new file mode 100644
index 0000000000000000000000000000000000000000..2f72aeefdcde37c978f21ff2b1f1a3535375ddf0
--- /dev/null
+++ b/crpptbx/TCV_IMAS/pf_active/imasget_coil.m
@@ -0,0 +1,81 @@
+function [ids_struct_out] =  imasget_coil(shot, ids_structures)
+%  pf_active coils
+
+% TODO add logic to get the current in the coils only onces.
+
+% 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. 
+% In practice the dissipated energy in the pf '
+% coils is not a relevant limit.
+mdsopen(shot)
+
+%% Get power supply/coils names for each circuit.
+[coil_names2ids, ~, ~, mds_paths2ids, ~] =  pf_active_definition();
+ncircuits2ids = numel(coil_names2ids);
+
+%% Get geometrical data from the static tree
+% Information from the static tree - Z-zeroed with respect to coils
+r_c     = mdsvalue('_r_c=static(''r_c'')'); % R position
+z_c     = mdsvalue('_z_c=static(''z_c'')'); % Z position
+w_c     = mdsvalue('static(''w_c'')'); % width rectangular description
+h_c     = mdsvalue('static(''h_c'')'); % height rectangular description
+a_c     = mdsvalue('static(''a_c'')'); % tilt angle for parallelogram representation ( deprecated representation in IDS)
+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)'); 
+
+% Set effective turns in T1 and T2 (see J.-M. Moret, et al., RSI 69 (1998) 2333)
+iT = strmatch('T_001',namepfc);
+nt_c(iT)=26/68;
+iT = strmatch('T_002',namepfc);
+nt_c(iT)=42/68;
+iT = strmatch('T_003',namepfc);      % Return current
+nt_c(iT)=1;
+
+% Approximate circular G-coil conductor with a square of the same crosssection
+iG=strmatch('G_00',namepfc);
+w_c(iG)=sqrt(xsect_c(iG));
+h_c(iG)=sqrt(xsect_c(iG));
+
+
+%% Put data to ids structure
+ids_struct_out(1:sizepfc) = ids_structures.pf_active.coil(1);
+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};
+    
+    tmpdata = tdi(mds_paths2ids{ii});
+    ids_struct_out{ind_coil_ids}.current.data = tmpdata.data;
+    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));
+    ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.r = r_c(tmpind);
+    ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.z = z_c(tmpind);
+    ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.width = w_c(tmpind);
+    ids_struct_out{ind_coil_ids}.element{1}.geometry.rectangle.height = h_c(tmpind);
+    ids_struct_out{ind_coil_ids}.element{1}.turns_with_sign = nt_c(tmpind);
+    ids_struct_out{ind_coil_ids}.element{1}.geometry.geometry_type = 2; % 1 outline, 2 rectangle, 4 arc of circle
+    %ids_struct_out{ind_coil_ids}.current.data_error_upper = % TO BE FOUND;
+    %ids_struct_out{ind_coil_ids}.current.data_error_lower = % TO BE FOUND;
+    end
+end
+
+
+
+end 
+
+
+
diff --git a/crpptbx/TCV_IMAS/pf_active/imasget_supply.m b/crpptbx/TCV_IMAS/pf_active/imasget_supply.m
new file mode 100644
index 0000000000000000000000000000000000000000..61682fa79cf4bbe53f38f00a46f18e7408a23b4e
--- /dev/null
+++ b/crpptbx/TCV_IMAS/pf_active/imasget_supply.m
@@ -0,0 +1,48 @@
+function [ids_struct_out] =  imasget_supply(shot, ids_structures)
+
+% TODO
+
+%{
+% ./pfsupplies/
+
+% ./desc_supply/
+namepfs = {'OH_001','OH_002', ...
+    'E_001','E_002','E_003','E_004','E_005','E_006','E_007','E_008', ...
+    'F_001','F_002','F_003','F_004','F_005','F_006','F_007','F_008', ...
+    'G_001','BCOIL'};
+
+name  = 'pfsupplies/desc_supply/name';
+value = namepfs;
+status= xmlWriteElement(xNodek,name,value,'Quiet',quiet);
+
+name = 'pfsupplies/desc_supply/id';
+
+name = 'pfsupplies/desc_supply/type';
+
+name = 'pfsupplies/desc_supply/delay';
+
+name = 'pfsupplies/desc_supply/filter';
+
+name  = 'pfsupplies/desc_supply/imin';  % Source: http://crpplocal.epfl.ch/wiki/Supply_scheme
+value = [repmat(-31e3,1,2),repmat(-7.7e3,1,8),repmat(-7.7e3,1,8),-2e3,-78e3];
+status= xmlWriteElement(xNodek,name,value,'Quiet',quiet);
+
+name = 'pfsupplies/desc_supply/imax';    % Source: http://crpplocal.epfl.ch/wiki/Supply_scheme
+value = [ repmat(31e3,1,2), repmat(7.7e3,1,8), repmat(7.7e3,1,8), 2e3,78e3];
+status= xmlWriteElement(xNodek,name,value,'Quiet',quiet);
+
+name = 'pfsupplies/desc_supply/res';
+
+name = 'pfsupplies/desc_supply/umin';    % Source: http://crpplocal.epfl.ch/wiki/Supply_scheme
+value = [repmat(-1400,1,2),repmat(-648,1,8),repmat(-1250,1,8),-566, -626];
+status= xmlWriteElement(xNodek,name,value,'Quiet',quiet);
+
+name = 'pfsupplies/desc_supply/umax';    % Source: http://crpplocal.epfl.ch/wiki/Supply_scheme
+value = [ repmat(1400,1,2), repmat(648,1,8), repmat(1250,1,8), 566, 626];
+status= xmlWriteElement(xNodek,name,value,'Quiet',quiet);
+
+name = 'pfsupplies/desc_supply/emax';  % Not a relevant limit
+% ../ END of desc_supply
+% ../ END of pfsupplies
+
+%}
\ No newline at end of file
diff --git a/crpptbx/TCV_IMAS/pf_active_definition.m b/crpptbx/TCV_IMAS/pf_active_definition.m
new file mode 100644
index 0000000000000000000000000000000000000000..c416283597ced7a51c6da6f5d3762d057f79e4ee
--- /dev/null
+++ b/crpptbx/TCV_IMAS/pf_active_definition.m
@@ -0,0 +1,90 @@
+function [coil_names, power_supply_names, circuit_names, mds_paths, combined_structure] =  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
+};
+
+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
+};
+
+
+% conbined_structure(icircuit).
+%                             .coil_names
+%                             .power_supply_name
+%                             .mds_path
+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};
+end
+
+
diff --git a/crpptbx/TCV_IMAS/wall/imasget_description_2d.m b/crpptbx/TCV_IMAS/wall/imasget_description_2d.m
new file mode 100644
index 0000000000000000000000000000000000000000..7a912c030e9c19f29697bde8864128ea1cfec6c1
--- /dev/null
+++ b/crpptbx/TCV_IMAS/wall/imasget_description_2d.m
@@ -0,0 +1,18 @@
+function [ids_struct_out] =  description_2d(shot, ids_structures)
+
+
+mdsopen(shot)
+% Vessel
+r_l = mdsdata('STATIC("R_T")');
+z_l = mdsdata('STATIC("Z_T")');
+
+ids_struct_out =  ids_structures.wall;
+ids_struct_out.description_2d{1}.limiter.unit{1}.outline.r = r_l;
+ids_struct_out.description_2d{1}.limiter.unit{1}.outline.z = z_l;
+
+
+end
+
+
+
+