123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- // This mesh file is part of the "Cohomology" example of software "GetDP" (Patrick Dular and Christophe Geuzaine).
- // Only minor adaptations were made to include it as a sparselizard example so all the credit for this great
- // geometry and mesh go to the above mentioned persons.
- lc = 0.02; // Mesh characteristic length
- lc2 = lc;
- lc3 = 0;
- front3d = 0; // Set to 1 if Frontal 3D mesh algorithm is used
- nn = (1./lc)/4.; // Mesh subdivisions per turn, used with Frontal 3D
- If(front3d == 1)
- Mesh.Algorithm3D = 4; // Frontal 3D
- EndIf
- Mesh.Optimize = 1;
- DefineConstant
- [
- turns = {5, Name "Geometry/Number of coil turns"},
- r = {0.11, Name "Geometry/Coil radius"},
- rc = {0.01, Name "Geometry/Coil wire radius"},
- hc = {0.2, Name "Geometry/Coil height"},
- ht = {0.3, Name "Geometry/Tube height"},
- rt1 = {0.081, Name "Geometry/Tube internal radius"},
- rt2 = {0.092, Name "Geometry/Tube external radius"},
- lb = {1, Name "Geometry/Infinite box width"}
- left = {1, Choices{0,1}, Name "Geometry/Terminals on the left?"}
- ];
- // inductor
- p = newp;
- Point(p)={0, -r, -hc/2, lc};
- Point(p+1)={0, -r+rc, -hc/2, lc};
- Point(p+2)={0, -r, -hc/2+rc, lc};
- Point(p+3)={0, -r-rc, -hc/2, lc};
- Point(p+4)={0, -r, -hc/2-rc,lc};
- c = newl;
- Circle(c) = {p+1,p,p+2};
- Circle(c+1) = {p+2,p,p+3};
- Circle(c+2) = {p+3,p,p+4};
- Circle(c+3) = {p+4,p,p+1};
- ll = newll;
- Line Loop(ll) = {c,c+1,c+2,c+3};
- s = news;
- Plane Surface(s) = {ll};
- tmp[] = {s};
- vol_coil[] = {};
- For j In {1:4*turns+(left?2:0)}
- If(front3d == 1)
- tmp[] = Extrude { {0,0,hc/turns/4}, {0,0,1} , {0,0,0} , Pi/2}
- { Surface {tmp[0]}; Layers {nn / 4}; };
- EndIf
- If(front3d == 0)
- tmp[] = Extrude { {0,0,hc/turns/4}, {0,0,1} , {0,0,0} , Pi/2}
- { Surface {tmp[0]}; };
- EndIf
- vol_coil[] += tmp[1];
- EndFor
- If(front3d == 1)
- tmp[] = Extrude {(left?-1:1)*lb/2, 0, 0} { Surface{tmp[0]}; Layers{nn}; };
- EndIf
- If(front3d == 0)
- tmp[] = Extrude {(left?-1:1)*lb/2, 0, 0} { Surface{tmp[0]}; };
- EndIf
- vol_coil[] += tmp[1];
- out = tmp[0];
- If(front3d == 1)
- tmp[] = Extrude {-lb/2, 0, 0} { Surface{s}; Layers{nn}; };
- EndIf
- If(front3d == 0)
- tmp[] = Extrude {-lb/2, 0, 0} { Surface{s}; };
- EndIf
- vol_coil[] += tmp[1];
- in = tmp[0];
- // tube
- p = newp;
- Point(p) = {0, 0, -ht/2, lc2};
- Point(p+1) = {rt1, 0, -ht/2, lc2};
- Point(p+2) = {0, rt1, -ht/2, lc2};
- Point(p+3) = {-rt1, 0, -ht/2, lc2};
- Point(p+4) = {0, -rt1, -ht/2, lc2};
- Point(p+5) = {rt2, 0, -ht/2, lc2};
- Point(p+6) = {0, rt2, -ht/2, lc2};
- Point(p+7) = {-rt2, 0, -ht/2, lc2};
- Point(p+8) = {0, -rt2, -ht/2, lc2};
- c = newc;
- Circle(c) = {p+1, p, p+2};
- Circle(c+1) = {p+2, p, p+3};
- Circle(c+2) = {p+3, p, p+4};
- Circle(c+3) = {p+4, p, p+1};
- Circle(c+4) = {p+5, p, p+6};
- Circle(c+5) = {p+6, p, p+7};
- Circle(c+6) = {p+7, p, p+8};
- Circle(c+7) = {p+8, p, p+5};
- ll = newll;
- Line Loop(ll) = {c+4, c+5, c+6, c+7, -c, -(c+1), -(c+2), -(c+3)};
- s = news;
- Plane Surface(s) = {ll};
- If(front3d == 1)
- tmp[] = Extrude {0,0,ht}{ Surface{s}; Layers{nn}; };
- EndIf
- If(front3d == 0)
- tmp[] = Extrude {0,0,ht}{ Surface{s}; };
- EndIf
- vol_tube = tmp[1];
- // box
- p = newp;
- Point(p) = {-lb/2,-lb/2,-lb/2, lc3};
- Point(p+1) = {lb/2,-lb/2,-lb/2, lc3};
- Point(p+2) = {lb/2,lb/2,-lb/2, lc3};
- Point(p+3) = {-lb/2,lb/2,-lb/2, lc3};
- Point(p+4) = {-lb/2,-lb/2,lb/2, lc3};
- Point(p+5) = {lb/2,-lb/2,lb/2, lc3};
- Point(p+6) = {lb/2,lb/2,lb/2, lc3};
- Point(p+7) = {-lb/2,lb/2,lb/2, lc3};
- l = newl;
- Line(l) = {p,p+1};
- Line(l+1) = {p+1,p+2};
- Line(l+2) = {p+2,p+3};
- Line(l+3) = {p+3,p};
- Line(l+4) = {p+4,p+5};
- Line(l+5) = {p+5,p+6};
- Line(l+6) = {p+6,p+7};
- Line(l+7) = {p+7,p+4};
- Line(l+8) = {p, p+4};
- Line(l+9) = {p+1, p+5};
- Line(l+10) = {p+2, p+6};
- Line(l+11) = {p+3, p+7};
- ll = newll;
- Line Loop(ll) = Boundary {Surface{in}; };
- Line Loop(ll+1) = {l+8, -(l+7), -(l+11), l+3};
- Line Loop(ll+2) = Boundary {Surface{out}; };
- Line Loop(ll+3) = {l+9, l+5, -(l+10), -(l+1)};
- Line Loop(ll+4) = {l,l+1,l+2,l+3};
- Line Loop(ll+5) = {l+4,l+5,l+6,l+7};
- Line Loop(ll+6) = {l+2, l+11, -(l+6), -(l+10)};
- Line Loop(ll+7) = {l, l+9, -(l+4), -(l+8)};
- s = news;
- tmp[] = {ll+1, ll};
- If(left)
- tmp[] += ll+2;
- EndIf
- Plane Surface(s) = tmp[];
- tmp[] = {ll+3};
- If(!left)
- tmp[] += ll+2;
- EndIf
- Plane Surface(s+1) = tmp[];
- Plane Surface(s+2) = {ll+4};
- Plane Surface(s+3) = {ll+5};
- Plane Surface(s+4) = {ll+6};
- Plane Surface(s+5) = {ll+7};
- sl = newsl;
- skin_coil[] = CombinedBoundary{ Volume{vol_coil[]}; };
- skin_coil[] -= {in, out};
- Surface Loop(sl) = {s:s+5,skin_coil[]};
- Surface Loop(sl+1) = CombinedBoundary{ Volume{vol_tube[]}; };
- v = newv;
- Volume(v) = {sl, sl+1};
- COIL = 1;
- TUBE = 2;
- AIR = 3;
- SKIN_COIL = 4;
- SKIN_TUBE = 5;
- IN = 6;
- OUT = 7;
- INF = 8;
- Physical Volume(COIL) = {vol_coil[]};
- Physical Volume(TUBE) = {vol_tube[]};
- Physical Volume(AIR) = {v};
- Physical Surface(SKIN_COIL) = {skin_coil[]};
- Physical Surface(SKIN_TUBE) = CombinedBoundary{ Volume{vol_tube[]}; };
- Physical Surface(IN) = in;
- Physical Surface(OUT) = out;
- Physical Surface(INF) = {s:s+5};
|