Newer
Older
function [ids_struct_out] = tcv_get_ids_coil(shot, ids_structures)
Francesco Carpanese
committed
% 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).
Francesco Carpanese
committed
% 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
Francesco Carpanese
committed
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
% 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