[EMAIL PROTECTED] wrote:
Bonjour,

at first: sorry for the terrible long geo file ...

I like to have areas on the surface of a sphere. I decide to
layout these areas as plane surfaces (see Plane Surface(221)).

Im _rather_ sure that all points of 221 are mathematically on the surface
of the
sphere, but gmsh seems to have an other opinion (221 does not fit to 223).

Can you give me a hint?

Hi Thomas - it's part of the legacy of our wonderful old interpolation
code ;-)

"Ruled surfaces" are actually interpolated using transfinite
interpolation--which cannot represent a sphere. As David said, there is
a hack in the interpolation code to check if all the bounding curves are
circle arcs with the same center... in which case we consider that the
patch is on a sphere.

I've just added another quick and dirty hack to always force a patch to
be spherical (see attached file): this will be available in tomorrow's
nightly snapshots.

PS: at the moment, for complex trimmed surfaces, you might be better off
using a "real" CAD system, export to STEP, then import the STEP back in
Gmsh to do the meshing.


BTW
I'm am really happy that you still developing further gmsh!
How about a u3d export function :) (ah! too many people
bore you with long geo chunks ...):

Thanks in advance
Thomas



|| Thomas Bock c/o Physikalisch-Technische Bundesanstalt
|| Abbestr. 2-12, D-10587 Berlin, Germany
|| Tel/Fax: ++49-30-3481-7354/7490, email: [EMAIL PROTECTED]


_______________________________________________
gmsh mailing list
[email protected]
http://www.geuz.org/mailman/listinfo/gmsh




--
Prof. Christophe Geuzaine
University of Liege, Electrical Engineering and Computer Science
http://www.montefiore.ulg.ac.be/~geuzaine



//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
size = 5;

R=315.0/2.0; //Radius

Point(0)  = {0, 0, 0, size};

// Blende C1 ==============================

C1Psi = Pi/2;
C1Phi = Pi;
alC1 = Asin(33.5/2.0/R);

x1=R*Cos(alC1)*Sin(C1Psi)*Cos(C1Phi);
y1=R*Cos(alC1)*Sin(C1Psi)*Sin(C1Phi);
z1=R*Cos(alC1)*Cos(C1Psi);

Point(100)  = {x1,y1,z1,size};

x2 =  R*Sin(C1Psi+alC1)*Cos(C1Phi);
y2 = R*Sin(C1Psi+alC1)*Sin(C1Phi);
z2 = R*Cos(C1Psi+alC1);

Point(200)  = {x2,y2,z2,size};

Rotate { {x1,y1,z1} , {0,0,0}, Pi/2} {Duplicata {  Point{200} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, -Pi/2} {Duplicata {  Point{200} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, Pi} {Duplicata {  Point{200} ; }}

Circle(1) = {201,100,203};
Circle(2) = {203,100,202};
Circle(3) = {202,100,200};
Circle(4) = {200,100,201};

// Blende C01 ==============================

C01Psi = Pi/2;
C01Phi = Pi/2;
alC01 = Asin(7.5/2.0/R);

x1=R*Cos(alC01)*Sin(C01Psi)*Cos(C01Phi);
y1=R*Cos(alC01)*Sin(C01Psi)*Sin(C01Phi);
z1=R*Cos(alC01)*Cos(C01Psi);

Point(300)  = {x1,y1,z1,size};

x2 =  R*Sin(C01Psi+alC01)*Cos(C01Phi);
y2 = R*Sin(C01Psi+alC01)*Sin(C01Phi);
z2 = R*Cos(C01Psi+alC01);

Point(400)  = {x2,y2,z2,size};

Rotate { {x1,y1,z1} , {0,0,0}, Pi/2} {Duplicata {  Point{400} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, -Pi/2} {Duplicata {  Point{400} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, Pi} {Duplicata {  Point{400} ; }}

Circle(5) = {401,300,403};
Circle(6) = {403,300,402};
Circle(7) = {402,300,400};
Circle(8) = {400,300,401};

// Port1 ==============================

P1Psi =  Asin((20.0+34.0)/R);// noch nachmessen!
P1Phi = 0;
alP1 = Asin(34.0/2.0/R);

x1=R*Cos(alP1)*Sin(P1Psi)*Cos(P1Phi);
y1=R*Cos(alP1)*Sin(P1Psi)*Sin(P1Phi);
z1=R*Cos(alP1)*Cos(P1Psi);

Point(500)  = {x1,y1,z1,size};

x2 =  R*Sin(P1Psi+alP1)*Cos(P1Phi);
y2 = R*Sin(P1Psi+alP1)*Sin(P1Phi);
z2 = R*Cos(P1Psi+alP1);


Point(600)  = {x2,y2,z2,size};

Rotate { {x1,y1,z1} , {0,0,0}, Pi/2} {Duplicata {  Point{600} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, -Pi/2} {Duplicata {  Point{600} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, Pi} {Duplicata {  Point{600} ; }}

Circle(9) = {601,500,603};
Circle(10) = {603,500,602};
Circle(11) = {602,500,600};
Circle(12) = {600,500,601};

// Port2 ==============================

P2Psi =  0;//
P2Phi = 0;
alP2 = Asin(34.0/2.0/R);

x1=R*Cos(alP2)*Sin(P2Psi)*Cos(P2Phi);
y1=R*Cos(alP2)*Sin(P2Psi)*Sin(P2Phi);
z1=R*Cos(alP2)*Cos(P2Psi);

Point(700)  = {x1,y1,z1,size};

x2 =  R*Sin(P2Psi+alP2)*Cos(P2Phi);
y2 = R*Sin(P2Psi+alP2)*Sin(P2Phi);
z2 = R*Cos(P2Psi+alP2);

Point(800)  = {x2,y2,z2,size};

Rotate { {x1,y1,z1} , {0,0,0}, Pi/4} {Duplicata {   Point{800} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, Pi/2} {Duplicata {   Point{800} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, Pi*3/4} {Duplicata {  Point{800} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, Pi} {Duplicata {     Point{800} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, -Pi*3/4} {Duplicata {  Point{800} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, -Pi/2} {Duplicata {  Point{800} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, -Pi/4} {Duplicata {  Point{800} ; }}

//Circle(120) =  {800,700,801};
Circle(130) =  {801,700,803};
//Circle(140) = {802,700,803};
//Circle(150) = {803,700,804};
Circle(160) = {803,700,805};
Circle(170) = {805,700,807};
//Circle(180) = {806,700,807};
Circle(190) = {807,700,801};

// Port3 ==============================

P3Psi =  -Asin((20.0+34.0)/R);// auch noch nachmessen!
P3Phi = 0;
alP3 = Asin(34.0/2.0/R);

x1=R*Cos(alP3)*Sin(P3Psi)*Cos(P3Phi);
y1=R*Cos(alP3)*Sin(P3Psi)*Sin(P3Phi);
z1=R*Cos(alP3)*Cos(P3Psi);

Point(900)  = {x1,y1,z1,size};

x2 =  R*Sin(P3Psi+alP3)*Cos(P3Phi);
y2 = R*Sin(P3Psi+alP3)*Sin(P3Phi);
z2 = R*Cos(P3Psi+alP3);

Point(1000)  = {x2,y2,z2,size};

Rotate { {x1,y1,z1} , {0,0,0}, Pi/2} {Duplicata {   Point{1000} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, -Pi/2} {Duplicata {  Point{1000} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, Pi} {Duplicata {     Point{1000} ; }}

Circle(17) = {1001,900,1003};
Circle(18) = {1003,900,1002};
Circle(19) = {1002,900,1000};
Circle(20) = {1000,900,1001};

// TempSen1 ==============================

TS1Psi = Pi/2 ;
TS1Phi = -Pi/2 ;
alTS1 = Asin(5/R);

x1=R*Cos(alTS1)*Sin(TS1Psi)*Cos(TS1Phi);
y1=R*Cos(alTS1)*Sin(TS1Psi)*Sin(TS1Phi);
z1=R*Cos(alTS1)*Cos(TS1Psi);

Point(1100)  = {x1,y1,z1,size};

x2 =  R*Sin(TS1Psi+alTS1)*Cos(TS1Phi);
y2 = R*Sin(TS1Psi+alTS1)*Sin(TS1Phi);
z2 = R*Cos(TS1Psi+alTS1);

Point(1200)  = {x2,y2,z2,size};

Rotate { {x1,y1,z1} , {0,0,0}, Pi/2} {Duplicata {   Point{1200} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, -Pi/2} {Duplicata {  Point{1200} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, Pi} {Duplicata {     Point{1200} ; }}

Circle(21) = {1201,1100,1203};
Circle(22) = {1203,1100,1202};
Circle(23) = {1202,1100,1200};
Circle(24) = {1200,1100,1201};

// TempSen2 ==============================

TS2Psi = Pi/2 ;
TS2Phi = 0 ;
alTS2 = Asin(5/R);

x1=R*Cos(alTS2)*Sin(TS2Psi)*Cos(TS2Phi);
y1=R*Cos(alTS2)*Sin(TS2Psi)*Sin(TS2Phi);
z1=R*Cos(alTS2)*Cos(TS2Psi);

Point(1300)  = {x1,y1,z1,size};

x2 =  R*Sin(TS2Psi+alTS2)*Cos(TS2Phi);
y2 = R*Sin(TS2Psi+alTS2)*Sin(TS2Phi);
z2 = R*Cos(TS2Psi+alTS2);

Point(1400)  = {x2,y2,z2,size};

Rotate { {x1,y1,z1} , {0,0,0}, Pi/2} {Duplicata {   Point{1400} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, -Pi/2} {Duplicata {  Point{1400} ; }}
Rotate { {x1,y1,z1} , {0,0,0}, Pi} {Duplicata {     Point{1400} ; }}

Circle(25) = {1401,1300,1403};
Circle(26) = {1403,1300,1402};
Circle(27) = {1402,1300,1400};
Circle(28) = {1400,1300,1401};

// Punkt der unteren Späre ==============================

pUsPsi = Pi ;
pUsPhi = 0 ;

x1=R*Sin(pUsPsi)*Cos(pUsPhi);
y1=R*Sin(pUsPsi)*Sin(pUsPhi);
z1=R*Cos(pUsPsi);

Point(1500)  = {x1,y1,z1,size};

// Stützpunkte Äquator ==============================

Sp1Psi = Pi/3;
Sp1Phi = 0.0;

x2 =  R*Sin(Sp1Psi)*Cos(Sp1Phi);
y2 = R*Sin(Sp1Psi)*Sin(Sp1Phi);
z2 = R*Cos(Sp1Psi);

Point(2000)  = {x2,y2,z2,size};
Point(2030)  = {x2,y2,-z2,size};

x1 = 0;
y1 = 0;
z1=R*Cos(Sp1Psi);

Point(1600)  = {x1,y1,z1,size};
Point(1700)  = {x1,y1,-z1,size};

Rotate { {x1,y1,z1} ,{0,0,0},  Pi/4} {Duplicata {   Point{2000} ; }}
Rotate { {x1,y1,z1} ,{0,0,0},  Pi*3/4} {Duplicata {  Point{2000} ; }}
Rotate { {x1,y1,z1} ,{0,0,0},  -Pi/4} {Duplicata {   Point{2000} ; }}
Rotate { {x1,y1,z1} ,{0,0,0},  -Pi*3/4} {Duplicata {  Point{2000} ; }}

Rotate { {x1,y1,z1} ,{0,0,0},  Pi/4} {Duplicata    {   Point{2030} ; }}
Rotate { {x1,y1,z1} ,{0,0,0},  Pi*3/4} {Duplicata  {   Point{2030} ; }}
Rotate { {x1,y1,z1} ,{0,0,0},  -Pi/4} {Duplicata   {   Point{2030} ; }}
Rotate { {x1,y1,z1} ,{0,0,0},  -Pi*3/4} {Duplicata {   Point{2030} ; }}

//Circle(29) = {1703,1700,1704};
//Circle(30) = {1603,1600,1604};
//Circle(31) = {1703,0,1603};
//Circle(32) = {1604,0,1704};

Circle(200) = {1500,0,2035};
Circle(201) = {1500,0,2036};
Circle(202) = {1500,0,2037};
Circle(203) = {1500,0,2038};

Circle(204) = {2035,1700,2037};
Circle(205) = {2037,1700,2038};
Circle(206) = {2038,1700,2036};
Circle(207) = {2036,1700,2035};

Circle(208) = {2031,0,2035};
Circle(209) = {2033,0,2037};
Circle(210) = {2034,0,2038};
Circle(211) = {2032,0,2036};

Circle(212) = {2031,1600,2032};
Circle(213) = {2032,1600,2034};
Circle(214) = {2034,1600,2033};
Circle(215) = {2033,1600,2031};

Circle(216) = {2031,0,801};
Circle(217) = {2033,0,807};

Circle(218) = {2032,0,803};
Circle(219) = {2034,0,805};
//

Line Loop(220) = {4,1,2,3};
Ruled Surface(221) = {220} In Sphere{0};
Line Loop(222) = {213,210,206,-211};
Ruled Surface(223) = {222,220} In Sphere{0};
_______________________________________________
gmsh mailing list
[email protected]
http://www.geuz.org/mailman/listinfo/gmsh

Reply via email to