Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
G
gdat
Manage
Activity
Members
Labels
Plan
Issues
38
Issue boards
Milestones
Wiki
Code
Merge requests
11
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
SPC
gdat
Commits
0590752c
Commit
0590752c
authored
5 years ago
by
Francesco Carpanese
Committed by
Olivier Sauter
5 years ago
Browse files
Options
Downloads
Patches
Plain Diff
Clean up versio of the function to generate the discretized filemants
parent
d8ac75dc
No related branches found
Branches containing commit
No related tags found
Tags containing commit
1 merge request
!41
Add corsica liuqe complete ids from meq
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
IDS/gen_filament.m
+182
-0
182 additions, 0 deletions
IDS/gen_filament.m
with
182 additions
and
0 deletions
IDS/gen_filament.m
0 → 100644
+
182
−
0
View file @
0590752c
function
[
discretizationr
,
discretizationz
,
Twc
]
=
eval_trap
(
vvdata
,
num
,
type
,
varargin
)
% Evaluate the trapezoid from vv data structure, and computes the
% discretization
% type = 2 -> rectangle description
% type = 3 -> oblique description
% type = 4 -> contour of the coils are specified varargin = [r, z ]
% contours
% vv data contains R, Z, dR, dZ for type = 2.
% vv data contains R, Z, dR, dZ, AC, AC2 for type = 3 where AC, AC2 are the
% angles of the parallelogram. Refer to GA document for specifications.
if
mod
(
num
,
1
)
~=
0
,
warning
(
'The number of turns must be an integer. Ceil operation on it'
);
end
num
=
ceil
(
num
);
R
=
vvdata
(
1
,
:);
Z
=
vvdata
(
2
,
:);
dR
=
vvdata
(
3
,
:);
dZ
=
vvdata
(
4
,
:);
switch
type
case
1
% outline option
disp
(
'Not yet implemented. It will contain outline option IMAS'
)
return
case
2
% rectangle
AC
=
0
*
ones
(
size
(
R
));
AC2
=
90
*
ones
(
size
(
R
));
case
3
% oblique
AC
=
vvdata
(
5
,
:);
AC2
=
vvdata
(
6
,
:);
case
4
% contour of the polygon
otherwise
disp
(
'case not defined'
)
return
end
% Initialize the extrema of the trapezoid
pointr
=
zeros
(
numel
(
AC
),
4
);
pointz
=
zeros
(
numel
(
AC
),
4
);
discretizationr
=
[];
discretizationz
=
[];
Twc
=
[];
% Grouping matrix from windings to active coil
for
ii
=
1
:
numel
(
AC
)
% loop all the coils
if
AC2
(
ii
)
~=
0
&&
AC
(
ii
)
==
0
DH
=
dZ
(
ii
)/
tand
(
AC2
(
ii
));
pointr
(
ii
,
1
)
=
R
(
ii
)
-
DH
/
2
-
dR
(
ii
)/
2
;
pointr
(
ii
,
2
)
=
R
(
ii
)
+
DH
/
2
-
dR
(
ii
)/
2
;
pointr
(
ii
,
3
)
=
R
(
ii
)
+
DH
/
2
+
dR
(
ii
)/
2
;
pointr
(
ii
,
4
)
=
R
(
ii
)
-
DH
/
2
+
dR
(
ii
)/
2
;
pointz
(
ii
,
1
)
=
Z
(
ii
)
-
dZ
(
ii
)/
2
;
pointz
(
ii
,
2
)
=
Z
(
ii
)
+
dZ
(
ii
)/
2
;
pointz
(
ii
,
3
)
=
Z
(
ii
)
+
dZ
(
ii
)/
2
;
pointz
(
ii
,
4
)
=
Z
(
ii
)
-
dZ
(
ii
)/
2
;
elseif
AC
(
ii
)
~=
0
&&
AC2
(
ii
)
==
0
DH
=
dR
(
ii
)
*
tand
(
AC
(
ii
));
pointr
(
ii
,
1
)
=
R
(
ii
)
-
dR
(
ii
)/
2
;
pointr
(
ii
,
2
)
=
R
(
ii
)
-
dR
(
ii
)/
2
;
pointr
(
ii
,
3
)
=
R
(
ii
)
+
dR
(
ii
)/
2
;
pointr
(
ii
,
4
)
=
R
(
ii
)
+
dR
(
ii
)/
2
;
pointz
(
ii
,
1
)
=
Z
(
ii
)
-
DH
/
2
-
dZ
(
ii
)/
2
;
pointz
(
ii
,
2
)
=
Z
(
ii
)
-
DH
/
2
+
dZ
(
ii
)/
2
;
pointz
(
ii
,
3
)
=
Z
(
ii
)
+
DH
/
2
+
dZ
(
ii
)/
2
;
pointz
(
ii
,
4
)
=
Z
(
ii
)
+
DH
/
2
-
dZ
(
ii
)/
2
;
elseif
AC2
(
ii
)
==
0
&&
AC
(
ii
)
==
0
pointr
(
ii
,
1
)
=
R
(
ii
)
-
dR
(
ii
)/
2
;
pointr
(
ii
,
2
)
=
R
(
ii
)
-
dR
(
ii
)/
2
;
pointr
(
ii
,
3
)
=
R
(
ii
)
+
dR
(
ii
)/
2
;
pointr
(
ii
,
4
)
=
R
(
ii
)
+
dR
(
ii
)/
2
;
pointz
(
ii
,
1
)
=
Z
(
ii
)
-
dZ
(
ii
)/
2
;
pointz
(
ii
,
2
)
=
Z
(
ii
)
+
dZ
(
ii
)/
2
;
pointz
(
ii
,
3
)
=
Z
(
ii
)
+
dZ
(
ii
)/
2
;
pointz
(
ii
,
4
)
=
Z
(
ii
)
-
dZ
(
ii
)/
2
;
end
AD
=
[
pointr
(
ii
,
4
)
-
pointr
(
ii
,
1
),
pointz
(
ii
,
4
)
-
pointz
(
ii
,
1
)];
AB
=
[
pointr
(
ii
,
2
)
-
pointr
(
ii
,
1
),
pointz
(
ii
,
2
)
-
pointz
(
ii
,
1
)];
ex
=
[
1
,
0
];
ey
=
[
0
,
1
];
S
=
([
ex
*
AD
', ex*AB'
;
ey
*
AD
', ey*AB'
]);
%fixed_area = 0.01; %Decide the area represented by each single coils
%area_of_element = abs(AB(1)*AD(2)-AB(2)*AD(1)); %Evaluate the closer area to the element
%num = round(area_of_element/fixed_area); %Find the number of integer
%filaments closer to a fixed desired area for each element.
if
numel
(
num
)
==
1
%selfsimilar equally spaced
pointx
=
zeros
(
num
*
num
,
1
);
pointy
=
zeros
(
num
*
num
,
1
);
% Mode with selfsimilar shape
for
kk
=
1
:
num
for
jj
=
1
:
num
pointx
((
kk
-
1
)
*
num
+
jj
)
=
(
2
*
kk
-
1
)/(
2
*
num
);
%uniform grid in the deformed space defined by the parallelogram
pointy
((
kk
-
1
)
*
num
+
jj
)
=
(
2
*
jj
-
1
)/(
2
*
num
);
tmp
=
S
*
[
pointx
((
kk
-
1
)
*
(
num
)
+
jj
),
pointy
((
kk
-
1
)
*
(
num
)
+
jj
)]
'
;
% evaluate component in the r,z system of reference
discretizationr
(
end
+
1
)
=
pointr
(
ii
,
1
)
+
tmp
(
1
)
;
% translate to the original point
discretizationz
(
end
+
1
)
=
pointz
(
ii
,
1
)
+
tmp
(
2
);
end
end
% Creating the grouping matrix
tmp
=
zeros
(
num
*
num
,
numel
(
AC
));
tmp
(:,
ii
)
=
1
;
Twc
=
[
Twc
;
tmp
];
else
%Depending on the turns and same similar aspect ration
ratio
=
sqrt
(
dot
(
AB
,
AB
)/
dot
(
AD
,
AD
));
nx
=
ceil
(
sqrt
(
num
(
ii
)/
ratio
));
ny
=
ceil
(
nx
*
ratio
);
if
ny
>=
2
pointy
=
linspace
(
1
/(
ny
-
1
)/
2
,
1
-
1
/(
ny
-
1
)/
2
,
ny
);
else
pointy
=
0.5
;
end
if
nx
>=
2
pointx
=
linspace
(
1
/(
nx
-
1
)/
2
,
1
-
1
/(
nx
-
1
)/
2
,
nx
);
else
pointx
=
0.5
;
end
[
pointxx
,
pointyy
]
=
meshgrid
(
pointx
,
pointy
);
for
kk
=
1
:
ny
for
jj
=
1
:
nx
tmp
=
S
*
[
pointxx
(
kk
,
jj
);
pointyy
(
kk
,
jj
)];
% evaluate component in the r,z system of reference
discretizationr
(
end
+
1
)
=
pointr
(
ii
,
1
)
+
tmp
(
1
)
;
% translate to the original point
discretizationz
(
end
+
1
)
=
pointz
(
ii
,
1
)
+
tmp
(
2
);
end
end
% Creating the grouping matrix
tmp
=
zeros
(
nx
*
ny
,
numel
(
num
));
tmp
(:,
ii
)
=
1
;
Twc
=
[
Twc
;
tmp
];
end
end
%% Plot the coils discretization from the original data
%{
figure
hold
on
axis
equal
for
ii
=
1
:
numel
(
AC
)
% loop all the coils
patch
(
pointr
(
ii
,:),
pointz
(
ii
,:),
'red'
);
end
scatter
(
discretizationr
,
discretizationz
,
'.'
);
%}
discretizationr
=
reshape
(
discretizationr
,
numel
(
discretizationr
),
1
);
discretizationz
=
reshape
(
discretizationz
,
numel
(
discretizationz
),
1
);
end
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment