diff --git a/IDS/complete_IDS_CORSICA.m b/IDS/complete_IDS_CORSICA.m
new file mode 100644
index 0000000000000000000000000000000000000000..f988d4c392b7e2fe21c6db5a37560eb4cf895416
--- /dev/null
+++ b/IDS/complete_IDS_CORSICA.m
@@ -0,0 +1,129 @@
+clear all
+close all
+clc
+
+% This script will complete the IDS of CORSICA with the missing fields recomputing the missing quantities from available information
+
+data_path_in = '/NoTivoli/carpanes/LIU_RAP_ITER/CORSICA_ids/CORSICA_130510.mat';
+%path_IDS = '/NoTivoli/carpanes/LIU_RAP_ITER/CORSICA_ids/CORSICA_130506.mat';
+
+data_path_out = '/NoTivoli/carpanes/LIU_RAP_ITER/CORSICA_ids/CORSICA_130510_extended.mat';
+
+% Load the IDS file
+IDS = load(data_path_in);
+
+G = G_ITER_generator;
+% Get the structure from generating files
+P = liupiter(1000,'uuu',ones(G.na,1),'vvv',ones(G.nm,1), 'www', ones(G.nf,1)); % Some default setting that could be removed probably to use the liupiter directly
+G = liug(G,P);
+L = liuc(P,G);
+
+% Extract information from CORSICA IDS
+[LC,LXC,LYC] = liux_IDS_corsica(L, IDS);
+
+%%  -------------------- ADD the missing information on the existing IDS CORSICA -----------------------
+
+%% Consider each circuit to be composed by only one coil
+% TODO NEED TO ADD THE VERTICAL STABILIZATION COIL STILL
+tmp = data_coils();
+for ii = 1:numel(tmp.names)
+    for jj=1:numel(IDS.pf_active.coil)
+        % Remove strange character in coil names
+        IDS.pf_active.coil{jj}.name = regexprep(IDS.pf_active.coil{jj}.name,'[\n\r]+','');
+        if strcmp(tmp.names{ii},IDS.pf_active.coil{jj}.name)
+            IDS.pf_active.coil{jj}.element{1}.geometry.geometry_type = 2; % Rectangle description
+            IDS.pf_active.coil{jj}.element{1}.geometry.rectangle.r = tmp.R(ii); 
+            IDS.pf_active.coil{jj}.element{1}.geometry.rectangle.z = tmp.Z(ii); 
+            IDS.pf_active.coil{jj}.element{1}.geometry.rectangle.width = tmp.dR(ii);
+            IDS.pf_active.coil{jj}.element{1}.geometry.rectangle.height = tmp.dZ(ii);
+            IDS.pf_active.coil{jj}.element{1}.turns_with_sign = tmp.N(ii);
+        end
+    end
+end
+
+%% Add the data to the circuit
+Ncoils = numel(IDS.pf_active.coil);
+for ii=1:Ncoils-2
+    IDS.pf_active.circuit{ii}.name = IDS.pf_active.coil{ii}.name;
+    IDS.pf_active.supply{ii}.name = IDS.pf_active.coil{ii}.name;
+    IDS.pf_active.circuit{ii}.current.data = IDS.pf_active.coil{ii}.current.data/IDS.pf_active.coil{ii}.element{1}.turns_with_sign;
+    IDS.pf_active.circuit{ii}.current.time = IDS.pf_active.coil{ii}.current.time;
+    IDS.pf_active.circuit{ii}.connections = zeros(2, 4*Ncoils);
+    IDS.pf_active.circuit{ii}.connections(1, 2*ii) =1;
+    IDS.pf_active.circuit{ii}.connections(2, 2*ii-1) = 1;
+    IDS.pf_active.circuit{ii}.connections(1, 2*Ncoils + 2*ii-1) =1;
+    IDS.pf_active.circuit{ii}.connections(2, 2*Ncoils + 2*ii) =1;
+end
+% Vertical stabilization coil needs to be added still
+for ii=(Ncoils-1):Ncoils
+    IDS.pf_active.circuit{ii}.name = IDS.pf_active.coil{ii}.name;
+    IDS.pf_active.supply{ii}.name = IDS.pf_active.coil{ii}.name;
+    IDS.pf_active.circuit{ii}.name = IDS.pf_active.coil{ii}.name;
+    IDS.pf_active.circuit{ii}.current.data = zeros(LXC.nt, 1);
+    IDS.pf_active.circuit{ii}.current.time = LXC.t;
+    IDS.pf_active.circuit{ii}.connections = zeros(2, 4*Ncoils);
+    IDS.pf_active.circuit{ii}.connections(1, 2*ii) =1;
+    IDS.pf_active.circuit{ii}.connections(2, 2*ii-1) = 1;
+    IDS.pf_active.circuit{ii}.connections(1, 2*Ncoils + 2*ii-1) =1;
+    IDS.pf_active.circuit{ii}.connections(2, 2*Ncoils + 2*ii) =1;
+end
+
+%% Limiter description
+tmp = data_limiter();
+IDS.wall.description_2d{1}.limiter.unit{1}.outline.r = tmp.r;
+IDS.wall.description_2d{1}.limiter.unit{1}.outline.z = tmp.z;
+
+
+%% Vessel description
+% Understand what I need to do for the double layer vessel
+
+%%  -------------- Synthetic diagnostics------------ Need to be recomputed from CORSICA flux map
+
+IDS.magnetics.method{1}.ip.time = LXC.t; 
+IDS.magnetics.method{1}.ip.data = LXC.Ip;
+
+%% Ff
+tmp = data_Ff();
+for ii=1:numel(tmp.r)
+    IDS.magnetics.flux_loop{ii}.position{1}.r = tmp.r(ii);
+    IDS.magnetics.flux_loop{ii}.position{1}.z = tmp.z(ii);
+    IDS.magnetics.flux_loop{ii}.name = tmp.name{ii};
+end
+
+for ii=1:numel(tmp.r)
+    IDS.magnetics.flux_loop{ii}.flux.data = -LXC.Ff(ii,:)';
+    IDS.magnetics.flux_loop{ii}.flux.time = LXC.t;
+end
+
+%% Bm
+tmp = data_Bm();
+for ii=1:numel(tmp.name)
+    IDS.magnetics.bpol_probe{ii}.position.r = tmp.r(ii);
+    IDS.magnetics.bpol_probe{ii}.position.z = tmp.z(ii);
+    IDS.magnetics.bpol_probe{ii}.poloidal_angle = tmp.am(ii);
+    IDS.magnetics.bpol_probe{ii}.name = tmp.name{ii};
+end
+
+for ii=1:numel(tmp.name)
+    IDS.magnetics.bpol_probe{ii}.field.data = LXC.Bm(ii,:)';
+    IDS.magnetics.bpol_probe{ii}.field.time = LXC.t;
+end
+
+%% Ft 
+IDS.magnetics.method{1}.diamagnetic_flux.data = -LXC.Ft;
+IDS.magnetics.method{1}.diamagnetic_flux.time = LXC.t;
+
+%% rBt
+IDS.tf.time = LXC.t;
+IDS.tf.b_field_tor_vacuum_r.time  = LXC.t;
+IDS.tf.b_field_tor_vacuum_r.data  = LXC.rBt;
+
+%% Store the resulting data
+save(data_path_out, '-struct', 'IDS')
+fprintf('\n wrote file %s \n', data_path_out);
+
+
+
+
+
+