From ef84f93c545d98912eadd995f3dcf0d9a17c3d9a Mon Sep 17 00:00:00 2001 From: Francesco Carpanese <francesco.carpanese@epfl.ch> Date: Wed, 30 Jan 2019 17:41:58 +0000 Subject: [PATCH] First commit of routines to get data from TCV mds and put in ids structures. Started with the minimum requests. Need to have a file with the empty structures. git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@11358 d63d8f72-b253-0410-a779-e742ad2e26cf --- crpptbx/TCV_IMAS/get_ids.m | 13 ++ .../TCV_IMAS/magnetics/imasget_bpol_probe.m | 33 ++++ .../TCV_IMAS/magnetics/imasget_flux_loop.m | 30 ++++ crpptbx/TCV_IMAS/magnetics/imasget_ip.m | 17 ++ crpptbx/TCV_IMAS/pf_active/imasget_circuit.m | 154 ++++++++++++++++++ crpptbx/TCV_IMAS/pf_active/imasget_coil.m | 81 +++++++++ crpptbx/TCV_IMAS/pf_active/imasget_supply.m | 48 ++++++ crpptbx/TCV_IMAS/pf_active_definition.m | 90 ++++++++++ .../TCV_IMAS/wall/imasget_description_2d.m | 18 ++ 9 files changed, 484 insertions(+) create mode 100644 crpptbx/TCV_IMAS/get_ids.m create mode 100644 crpptbx/TCV_IMAS/magnetics/imasget_bpol_probe.m create mode 100644 crpptbx/TCV_IMAS/magnetics/imasget_flux_loop.m create mode 100644 crpptbx/TCV_IMAS/magnetics/imasget_ip.m create mode 100644 crpptbx/TCV_IMAS/pf_active/imasget_circuit.m create mode 100644 crpptbx/TCV_IMAS/pf_active/imasget_coil.m create mode 100644 crpptbx/TCV_IMAS/pf_active/imasget_supply.m create mode 100644 crpptbx/TCV_IMAS/pf_active_definition.m create mode 100644 crpptbx/TCV_IMAS/wall/imasget_description_2d.m diff --git a/crpptbx/TCV_IMAS/get_ids.m b/crpptbx/TCV_IMAS/get_ids.m new file mode 100644 index 00000000..ce31b641 --- /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 00000000..fa270431 --- /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 00000000..4bdfa150 --- /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 00000000..46bf07d4 --- /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 00000000..eefd036b --- /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 00000000..2f72aeef --- /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 00000000..61682fa7 --- /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 00000000..c4162835 --- /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 00000000..7a912c03 --- /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 + + + + -- GitLab