diff --git a/matlab/IMAS/complete_IDS_CORSICA.m b/matlab/IMAS/complete_IDS_CORSICA.m index 306f18c0533010eb8345a4b4ae282160a7543fb5..de1cb3c518148d0b051a669c1032070c5fa34d6a 100644 --- a/matlab/IMAS/complete_IDS_CORSICA.m +++ b/matlab/IMAS/complete_IDS_CORSICA.m @@ -1,9 +1,11 @@ -function IDS_out = complete_IDS_CORSICA(IDS_in,varargin) +%function IDS_out = complete_IDS_CORSICA(IDS_in,varargin) % % + % -doread = 0; -dosave = 0; +doread = 1; +dosave = 1; + if doread % $$$ clear all @@ -15,7 +17,7 @@ if doread 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_COCOS17.mat'; + data_path_out = '/NoTivoli/carpanes/LIU_RAP_ITER/CORSICA_ids/CORSICA_130510_extended_COCOS17_trial.mat'; % Load the IDS_in file IDS_out = load(data_path_in); @@ -43,7 +45,6 @@ L = liuc(Pliuqe,G); %% -------------------- ADD the missing information on the existing IDS_out 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_out.pf_active.coil) @@ -61,30 +62,33 @@ for ii = 1:numel(tmp.names) end %% Add the data to the circuit +tmp = data_circuits(); +Ncircuits = size(tmp,1); Ncoils = numel(IDS_out.pf_active.coil); -for ii=1:Ncoils-2 - IDS_out.pf_active.circuit{ii}.name = IDS_out.pf_active.coil{ii}.name; - IDS_out.pf_active.supply{ii}.name = IDS_out.pf_active.coil{ii}.name; - IDS_out.pf_active.circuit{ii}.current.data = IDS_out.pf_active.coil{ii}.current.data/IDS_out.pf_active.coil{ii}.element{1}.turns_with_sign; - IDS_out.pf_active.circuit{ii}.current.time = IDS_out.pf_active.coil{ii}.current.time; - IDS_out.pf_active.circuit{ii}.connections = zeros(2, 4*Ncoils); - IDS_out.pf_active.circuit{ii}.connections(1, 2*ii) =1; - IDS_out.pf_active.circuit{ii}.connections(2, 2*ii-1) = 1; - IDS_out.pf_active.circuit{ii}.connections(1, 2*Ncoils + 2*ii-1) =1; - IDS_out.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_out.pf_active.circuit{ii}.name = IDS_out.pf_active.coil{ii}.name; - IDS_out.pf_active.supply{ii}.name = IDS_out.pf_active.coil{ii}.name; - IDS_out.pf_active.circuit{ii}.name = IDS_out.pf_active.coil{ii}.name; - IDS_out.pf_active.circuit{ii}.current.data = zeros(LXC.nt, 1); - IDS_out.pf_active.circuit{ii}.current.time = LXC.t; - IDS_out.pf_active.circuit{ii}.connections = zeros(2, 4*Ncoils); - IDS_out.pf_active.circuit{ii}.connections(1, 2*ii) =1; - IDS_out.pf_active.circuit{ii}.connections(2, 2*ii-1) = 1; - IDS_out.pf_active.circuit{ii}.connections(1, 2*Ncoils + 2*ii-1) =1; - IDS_out.pf_active.circuit{ii}.connections(2, 2*Ncoils + 2*ii) =1; +for ii=1:Ncircuits + IDS_out.pf_active.circuit{ii}.name = tmp{ii,1}{1}; + IDS_out.pf_active.supply{ii}.name = tmp{ii,1}{1}; + % Find index of the coils belonging to ii circuit + index_coil = []; + for jj =1:Ncoils + if any(strcmp(tmp{ii,2}, IDS_out.pf_active.coil{jj}.name)) + index_coil = [index_coil jj]; + end + end + % Add the current data to the circuit from the data on the coils. + % The coils must share the same current in the circuit so just take the first one. + IDS_out.pf_active.circuit{ii}.current.data = IDS_out.pf_active.coil{index_coil(1)}.current.data/IDS_out.pf_active.coil{index_coil(1)}.element{1}.turns_with_sign; + IDS_out.pf_active.circuit{ii}.current.time = IDS_out.pf_active.coil{index_coil(1)}.current.time; + + IDS_out.pf_active.circuit{ii}.connections = zeros(2*numel(index_coil) -1 , 2*Ncircuits + 2*Ncoils); + for jj = 1:numel(index_coil) + IDS_out.pf_active.circuit{ii}.connections( jj , 2*Ncircuits + 2*(index_coil(jj)-1) +1) = 1; + IDS_out.pf_active.circuit{ii}.connections( jj +1 , 2*Ncircuits + 2*(index_coil(jj)-1) +2) = 1; + end + + % Add the connection to the power supply + IDS_out.pf_active.circuit{ii}.connections(1, 2*ii -1) = 1; + IDS_out.pf_active.circuit{ii}.connections(end, 2*ii ) =1; end %% Limiter description @@ -92,7 +96,6 @@ tmp = data_limiter(); IDS_out.wall.description_2d{1}.limiter.unit{1}.outline.r = tmp.r; IDS_out.wall.description_2d{1}.limiter.unit{1}.outline.z = tmp.z; - %% Vessel description % Understand what I need to do for the double layer vessel @@ -195,7 +198,7 @@ IDS_out.magnetics.method{1}.diamagnetic_flux.data = -LXC.Ft; IDS_out.magnetics.method{1}.diamagnetic_flux.time = LXC.t; %% rBt -%IDS_out.tf.time = LXC.t; +IDS_out.tf.time = LXC.t; IDS_out.tf.b_field_tor_vacuum_r.time = LXC.t; IDS_out.tf.b_field_tor_vacuum_r.data = LXC.rBt; diff --git a/matlab/IMAS/data_circuits.m b/matlab/IMAS/data_circuits.m new file mode 100644 index 0000000000000000000000000000000000000000..18871a7009970fe6d5a6a68d5a2adcca44f3906f --- /dev/null +++ b/matlab/IMAS/data_circuits.m @@ -0,0 +1,24 @@ +function data_struct = data_circuits() +% Describe which coils belongs to which circuit +% Information not available in the xls file. +% CREATE data consistent with this + +% data structure is { {name circuit} , {coils in the circuit}} + +data_struct = { + {'CS1'}, {'CS1U','CS1L'}, ; + {'CS2U'}, {'CS2U'}; + {'CS2L'}, {'CS2L'}; + {'CS3U'}, {'CS3U'}; + {'CS3L'}, {'CS3L'}; + {'PF1'}, {'PF1'}; + {'PF2'}, {'PF2'}; + {'PF3'}, {'PF3'}; + {'PF4'}, {'PF4'}; + {'PF5'}, {'PF5'}; + {'PF6'}, {'PF6'}; + {'VS'}, {'VSU', 'VSL'}; + }; + + +end \ No newline at end of file