123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- pi = 3.14159265359;
- // Rotor [1] or stator [0] part of the geometry:
- isrotor = 1;
- // Central shaft radius [m]:
- rshaft = 0.025;
- // Rotor magnetic material radius [m]:
- rrotmagmat = 0.055;
- // Rotor permanent magnet radial length [m]:
- drpermmag = 0.003;
- // Permanent magnet angular coverage [degrees]:
- alphapermmag = 33;
- // Rotor-stator gap radial length [m]:
- drrotstatgap = 0.001;
- // Stator radius [m]:
- rstat = 0.1;
- // Stator winding slots (3 in total, one per phase):
- wdopen = 0.004;
- wdopendepth = 0.0012;
- wddepth = 0.02;
- wdwidthsmall = 0.006;
- wdwidthlarge = 0.012;
- // Curvature radius at the end of the winding slot:
- rcurv = 0.003;
- // Mesh sizes at shaft, permanent magnet, rotor-stator gap and stator:
- msshaft = 0.006;
- mspm = 0.0015;
- msrsg = 0.0008;
- msstat = 0.006;
- // R is the current drawing radius:
- R = 0;
- Point(1) = {0, 0, 0, msshaft};
- R = rshaft;
- Point(2) = {R, 0, 0, msshaft};
- Point(3) = {R*Cos(pi/4), R*Sin(pi/4), 0, msshaft};
- R = rrotmagmat;
- Point(6) = {R, 0, 0, mspm};
- Point(7) = {R*Cos(pi/4), R*Sin(pi/4), 0, mspm};
- Point(8) = {R*Cos( (pi/4+alphapermmag*pi/180)/2 ), R*Sin( (pi/4+alphapermmag*pi/180)/2 ), 0, mspm};
- Point(9) = {R*Cos( (pi/4-alphapermmag*pi/180)/2 ), R*Sin( (pi/4-alphapermmag*pi/180)/2 ), 0, mspm};
- R = rrotmagmat+drpermmag;
- Point(10) = {R, 0, 0, msrsg};
- Point(11) = {R*Cos(pi/4), R*Sin(pi/4), 0, msrsg};
- Point(12) = {R*Cos( (pi/4+alphapermmag*pi/180)/2 ), R*Sin( (pi/4+alphapermmag*pi/180)/2 ), 0, msrsg};
- Point(13) = {R*Cos( (pi/4-alphapermmag*pi/180)/2 ), R*Sin( (pi/4-alphapermmag*pi/180)/2 ), 0, msrsg};
- R = rrotmagmat+drpermmag+drrotstatgap/2;
- Point(14) = {R, 0, 0, msrsg};
- Point(15) = {R*Cos(pi/4), R*Sin(pi/4), 0, msrsg};
- R = rrotmagmat+drpermmag+drrotstatgap;
- Point(16) = {R, 0, 0, msrsg};
- Point(17) = {R*Cos(pi/4), R*Sin(pi/4), 0, msrsg};
- R = rstat;
- Point(18) = {R, 0, 0, msstat};
- Point(19) = {R*Cos(pi/4), R*Sin(pi/4), 0, msstat};
- // Stator winding slots (3 in total, one per phase):
- For i In {0:2}
- alpharot = pi/4 / 3 /2 + i * pi/4 / 3;
- // Slot open:
- R = rrotmagmat+drpermmag+drrotstatgap;
- alpha1 = Atan(0.5*wdopen / R) + alpharot;
- alpha2 = -Atan(0.5*wdopen / R) + alpharot;
- Point(20+12*i) = {R*Cos(alpha1),R*Sin(alpha1),0, msrsg};
- Point(21+12*i) = {R*Cos(alpha2),R*Sin(alpha2),0, msrsg};
- R = rrotmagmat+drpermmag+drrotstatgap+wdopendepth;
- Point(22+12*i) = {R*Cos(alpha1),R*Sin(alpha1),0, msrsg};
- Point(23+12*i) = {R*Cos(alpha2),R*Sin(alpha2),0, msrsg};
- // Winding open:
- R = rrotmagmat+drpermmag+drrotstatgap+wdopendepth+0.5*wdopendepth;
- alpha1 = Atan(0.5*wdwidthsmall / R) + alpharot;
- alpha2 = -Atan(0.5*wdwidthsmall / R) + alpharot;
- Point(24+12*i) = {R*Cos(alpha1),R*Sin(alpha1),0, msrsg};
- Point(25+12*i) = {R*Cos(alpha2),R*Sin(alpha2),0, msrsg};
- R = rrotmagmat+drpermmag+drrotstatgap+wdopendepth+wddepth;
- alpha1 = Atan(0.5*wdwidthlarge / R) + alpharot;
- alpha2 = -Atan(0.5*wdwidthlarge / R) + alpharot;
- Point(26+12*i) = {R*Cos(alpha1),R*Sin(alpha1),0, msstat};
- Point(27+12*i) = {R*Cos(alpha2),R*Sin(alpha2),0, msstat};
-
- R = rrotmagmat+drpermmag+drrotstatgap+wdopendepth+wddepth;
- alpha1 = Atan((0.5*wdwidthlarge-rcurv) / R) + alpharot;
- alpha2 = -Atan((0.5*wdwidthlarge-rcurv) / R) + alpharot;
- Point(28+12*i) = {R*Cos(alpha1),R*Sin(alpha1),0, msstat};
- Point(29+12*i) = {R*Cos(alpha2),R*Sin(alpha2),0, msstat};
-
- R = rrotmagmat+drpermmag+drrotstatgap+wdopendepth+wddepth+rcurv;
- alpha1 = Atan((0.5*wdwidthlarge-rcurv) / R) + alpharot;
- alpha2 = -Atan((0.5*wdwidthlarge-rcurv) / R) + alpharot;
- Point(30+12*i) = {R*Cos(alpha1),R*Sin(alpha1),0, msstat};
- Point(31+12*i) = {R*Cos(alpha2),R*Sin(alpha2),0, msstat};
- EndFor
- Circle(1) = {2, 1, 3};
- Circle(2) = {6, 1, 9};
- Circle(3) = {9, 1, 8};
- Circle(4) = {8, 1, 7};
- Circle(5) = {10, 1, 13};
- Circle(6) = {13, 1, 12};
- Circle(7) = {12, 1, 11};
- Circle(8) = {14, 1, 15};
- Circle(9) = {16, 1, 21};
- Circle(10) = {21, 1, 20};
- Circle(11) = {20, 1, 33};
- Circle(12) = {33, 1, 32};
- Circle(13) = {32, 1, 45};
- Circle(14) = {45, 1, 44};
- Circle(15) = {44, 1, 17};
- Circle(16) = {18, 1, 19};
- Line(17) = {2, 6};
- Line(18) = {6, 10};
- Line(19) = {10, 14};
- Line(20) = {14, 16};
- Line(21) = {16, 18};
- Line(22) = {3, 7};
- Line(23) = {7, 11};
- Line(24) = {11, 15};
- Line(25) = {15, 17};
- Line(26) = {17, 19};
- Line(27) = {9, 13};
- Line(28) = {8, 12};
- Line(29) = {21, 23};
- Line(30) = {23, 25};
- Line(31) = {25, 27};
- Line(32) = {31, 30};
- Line(33) = {26, 24};
- Line(34) = {24, 22};
- Line(35) = {22, 20};
- Line(36) = {33, 35};
- Line(37) = {35, 37};
- Line(38) = {37, 39};
- Line(39) = {43, 42};
- Line(40) = {38, 36};
- Line(41) = {36, 34};
- Line(42) = {34, 32};
- Line(43) = {45, 47};
- Line(44) = {47, 49};
- Line(45) = {49, 51};
- Line(46) = {55, 54};
- Line(47) = {50, 48};
- Line(48) = {48, 46};
- Line(49) = {46, 44};
- Line(50) = {23, 22};
- Line(51) = {35, 34};
- Line(52) = {47, 46};
- Circle(53) = {27, 29, 31};
- Circle(54) = {30, 28, 26};
- Circle(55) = {39, 41, 43};
- Circle(56) = {42, 40, 38};
- Circle(57) = {51, 53, 55};
- Circle(58) = {54, 52, 50};
- Line Loop(1) = {1, 22, -4, -3, -2, -17};
- Plane Surface(1) = {1};
- Line Loop(2) = {2, 27, -5, -18};
- Plane Surface(2) = {2};
- Line Loop(3) = {3, 28, -6, -27};
- Plane Surface(3) = {3};
- Line Loop(4) = {4, 23, -7, -28};
- Plane Surface(4) = {4};
- Line Loop(5) = {5, 6, 7, 24, -8, -19};
- Plane Surface(5) = {5};
- Line Loop(6) = {8, 25, -15, -14, -13, -12, -11, -10, -9, -20};
- Plane Surface(6) = {6};
- Line Loop(7) = {10, -35, -50, -29};
- Plane Surface(7) = {7};
- Line Loop(8) = {12, -42, -51, -36};
- Plane Surface(8) = {8};
- Line Loop(9) = {14, -49, -52, -43};
- Plane Surface(9) = {9};
- Line Loop(10) = {50, -34, -33, -54, -32, -53, -31, -30};
- Plane Surface(10) = {10};
- Line Loop(11) = {51, -41, -40, -56, -39, -55, -38, -37};
- Plane Surface(11) = {11};
- Line Loop(12) = {52, -48, -47, -58, -46, -57, -45, -44};
- Plane Surface(12) = {12};
- Line Loop(13) = {21, 16, -26, -15, -49, -48, -47, -58, -46, -57, -45, -44, -43, -13, -42, -41, -40, -56, -39, -55, -38, -37, -36, -11, -35, -34, -33, -54, -32, -53, -31, -30, -29, -9};
- Plane Surface(13) = {13};
- // Physical region tags:
- rotmagmat = 1; magnet = 2; magnetgap = 3; gaprot = 4; gapstat = 5; statmagmat = 6; windslot = 7; winda = 8; windb = 9; windc = 10;
- gammarot = 11; gammastat = 12; gamma1rot = 13; gamma2rot = 14; gamma1stat = 15; gamma2stat = 16; inarc = 17; outarc = 18;
- If (isrotor == 1)
- Physical Surface(1) = {1};
- Physical Surface(2) = {3};
- Physical Surface(3) = {2,4};
- Physical Surface(4) = {5};
-
- Physical Line(11) = {8};
- Physical Line(13) = {17,18,19};
- Physical Line(14) = {22,23,24};
- Physical Line(17) = {1};
- Else
- Physical Surface(5) = {6};
- Physical Surface(6) = {13};
- Physical Surface(7) = {7,8,9};
- Physical Surface(8) = {10};
- Physical Surface(9) = {11};
- Physical Surface(10) = {12};
-
- Physical Line(12) = {8};
- Physical Line(15) = {20,21};
- Physical Line(16) = {25,26};
- Physical Line(18) = {16};
- EndIf
|