Skip to content
Snippets Groups Projects
Commit 12680b6e authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

fix outer surface

parent e08ebfc6
No related branches found
No related tags found
No related merge requests found
......@@ -33,15 +33,15 @@ v = newv; Volume(v) = { sl };
Printf("Cuboid v=%g", v);
If( Flag_TransfInf )
//Mesh.Algorithm3D = 4;
//Mesh.Algorithm3D = 4;
// (4=Frontal, 5=Frontal Delaunay, 6=Frontal Hex, 7=MMG3D, 9=R-tree)
For num In { l12:l85 }
For num In { l12:l85 }
Transfinite Line{ num } = 10;
EndFor
For num In { l15:l48 }
For num In { l15:l48 }
Transfinite Line{ num } = 5;
EndFor
For num In { s1:s6 }
For num In { s1:s6 }
Transfinite Surface{ num } ;
EndFor
Transfinite Volume{ v } ;
......@@ -91,9 +91,9 @@ EndIf
// Compute aspect ratio of the Infinite Box
diagInt = Sqrt[ xInt^2 + yInt^2 + zInt^2 ];
pp = 1.2; // pp=1 square InfBox, pp>3 Box and content have the same aspect ratio
xInt *= ratioBox*(diagInt/xInt)^(1/pp);
yInt *= ratioBox*(diagInt/yInt)^(1/pp);
zInt *= ratioBox*(diagInt/zInt)^(1/pp);
xInt *= ratioBox*(diagInt/xInt)^(1/pp);
yInt *= ratioBox*(diagInt/yInt)^(1/pp);
zInt *= ratioBox*(diagInt/zInt)^(1/pp);
// FIXME is there another (better) way to convey the values calculated here to getDP
......@@ -133,19 +133,19 @@ If(Flag_InfiniteBox)
pp7 = newp; Point (pp7) = {xCnt+xExt, yCnt+yExt, zCnt+zExt, lc2inf};
pp8 = newp; Point (pp8) = {xCnt-xExt, yCnt+yExt, zCnt+zExt, lc2inf};
pnt[]={p1,p2,p3,p4,pp1,pp2,pp3,pp4}; Call Cuboid;
pnt[]={p1,p2,p3,p4,pp1,pp2,pp3,pp4}; Call Cuboid;
VolInf[] = v;
// FIXME seems to be forbidden to have the command "VolInf[] = v;"
// on the same line as "Call Cuboid"
pnt[]={p5,p6,p7,p8,pp5,pp6,pp7,pp8}; Call Cuboid;
// FIXME seems to be forbidden to have the command "VolInf[] = v;"
// on the same line as "Call Cuboid"
pnt[]={p5,p6,p7,p8,pp5,pp6,pp7,pp8}; Call Cuboid;
VolInf[] += v;
pnt[]={p1,p2,p6,p5,pp1,pp2,pp6,pp5}; Call Cuboid;
pnt[]={p1,p2,p6,p5,pp1,pp2,pp6,pp5}; Call Cuboid;
VolInf[] += {v};
pnt[]={p3,p4,p8,p7,pp3,pp4,pp8,pp7}; Call Cuboid;
pnt[]={p3,p4,p8,p7,pp3,pp4,pp8,pp7}; Call Cuboid;
VolInf[] += {v};
pnt[]={p2,p3,p7,p6,pp2,pp3,pp7,pp6}; Call Cuboid;
pnt[]={p2,p3,p7,p6,pp2,pp3,pp7,pp6}; Call Cuboid;
VolInf[] += {v};
pnt[]={p4,p1,p5,p8,pp4,pp1,pp5,pp8}; Call Cuboid;
pnt[]={p4,p1,p5,p8,pp4,pp1,pp5,pp8}; Call Cuboid;
VolInf[] += {v};
Physical Volume("InfiniteX", 1) = { VolInf[4], VolInf[5] };
......@@ -159,9 +159,3 @@ InteriorInfBox = v;
For num In {0:#VolInf()-1}
Printf("VolInf %5g", VolInf[num]);
EndFor
......@@ -6,11 +6,10 @@ mm = 1.e-3;
SetFactory("OpenCASCADE");
// set some global Gmsh options
Mesh.Optimize = 1; // optimize quality of tetrahedra
Mesh.VolumeEdges = 0; // Toggle mesh display
Mesh.SurfaceEdges = 0;
Mesh.SurfaceEdges = 0;
Solver.AutoMesh = 2; // always remesh if necessary (don't reuse mesh on disk)
VolMagnets[] = {};
......@@ -27,12 +26,11 @@ For i In {1:NumMagnets}
Rotate { {1,0,0}, {X~{i},Y~{i},Z~{i}}, deg*Rx~{i} } { Volume{ iLabel }; }
Physical Volume(Sprintf("Magnet_%g",i),10*i) = { iLabel };
skin~{i}[] = CombinedBoundary{ Volume{ iLabel }; };
skin~{i}[] = Abs(CombinedBoundary{ Volume{ iLabel }; });
Physical Surface(Sprintf("SkinMagnet_%g",i),10*i+1) = -skin~{i}[]; // magnet skin
VolMagnets[] += { iLabel };
EndFor
Include "InfiniteBox.geo";
// The overall dimensions of the model have been calculated in InfiniteBox.geo
......@@ -40,19 +38,14 @@ Include "InfiniteBox.geo";
Mesh.CharacteristicLengthMin = lc1inf;
Mesh.CharacteristicLengthMax = lc1inf;
AirBox[] = BooleanDifference{
Volume{ InteriorInfBox }; Delete;
}{
Volume{ VolMagnets[] };
};
AirBox[] = BooleanDifference{ Volume{ InteriorInfBox }; Delete; }{
Volume{ VolMagnets[] }; };
Physical Volume("AirBox",4) = { AirBox[] };
Volumes[] = { VolInf[], VolMagnets[], AirBox[] };
vv[] = BooleanFragments{
Volume { Volumes[] }; Delete; }{};
vv[] = BooleanFragments{ Volume { Volumes[] }; Delete; }{};
If( #vv[] > #Volumes[] )
Error("Overlapping magnets");
......@@ -64,12 +57,5 @@ For num In {0:#vv()-1}
Printf("Fragment %5g -> %g", Volumes[num], vv(num));
EndFor
Outer[] = CombinedBoundary{ Volume{ Volumes[] }; };
Outer[] = Abs(CombinedBoundary{ Volume{ : }; });
Physical Surface("OuterSurface", 5) = { Outer[] };
......@@ -35,11 +35,11 @@ For i In {1:NumMagnets}
Name Sprintf("Parameters/Magnet %g/1XZ aspect ration", i),
Visible (M~{i} == 1) },
Rx~{i} = {0, Min -Pi, Max Pi, Step Pi/180, Visible Flag_FullMenu,
Rx~{i} = {0, Min -180, Max 180, Step 1, Visible Flag_FullMenu,
Name Sprintf("Parameters/Magnet %g/2X rotation [deg]", i) },
Ry~{i} = {0, Min -Pi, Max Pi, Step Pi/180, Visible Flag_FullMenu,
Ry~{i} = {0, Min -180, Max 180, Step 1, Visible Flag_FullMenu,
Name Sprintf("Parameters/Magnet %g/2Y rotation [deg]", i) },
Rz~{i} = {0, Min -Pi, Max Pi, Step Pi/180,
Rz~{i} = {0, Min -180, Max 180, Step 1,
Name Sprintf("Parameters/Magnet %g/2Z rotation [deg]", i) },
MUR~{i} = {(i==1)?1.:1000.,
......@@ -49,7 +49,7 @@ For i In {1:NumMagnets}
];
EndFor
//The geometrical parameters of the Infinite box.
//The geometrical parameters of the Infinite box.
DefineConstant[
xInt = {1, Name "Infinite box/xInt", Visible 0}
yInt = {1, Name "Infinite box/yInt", Visible 0}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment