Application Center - Maplesoft

App Preview:

Torus pipe Developing

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application


 

Image 

Torus pipe Developing 

Branko Malesevic
Faculty of Electrical Engineering
 University of Belgrade, Serbia
malesevic@etf.bg.ac.yu 

Ratko Obradovic
Faculty of Technical Sciences
University of Novi Sad, Serbia
obrad_r@uns.ns.ac.yu 

 

Introduction 

In this paper a calculation which gives a possibility to make a torus pipe from plain piece of material (usually a piece of metal) is shown. There is only one parallel which does not have any deformation during making torus pipe. Each other torus parallel has plastic deformations and we can calculate deformation of each parallel.

From mathematics point of view the measurement of deformations of torus parallels (circles normal to torus' axis) was determined. Namely, a possibility for torus developing is given.  By using some plastic deformation we can transform this plain piece of metal (developing torus) from 2D to 3D, i.e. we can make a torus pipe.
 

Surface area of the part of the torus & area of the annulus sector 

 

Let R0 be the great radius and let r be the small radius of a torus. Using polar coordinates, we can transform one quarter of annulus P[0;R0-r,R0+r] (see 2D figure) to the lower  part of torus which is in the first octant (see 3D figure).  

 

> restart;
 

> with(linalg):
 

Warning, the protected names norm and trace have been redefined and unprotected
 

> assume(R0>r,r>0);
 

 

Surface area of the part of the torus. 

 

> z:=(x,y)->r-sqrt(r^2-(R0-sqrt(x^2+y^2))^2);
 

`:=`(z, proc (x, y) options operator, arrow; `+`(r, `-`(sqrt(`+`(`*`(`^`(r, 2)), `-`(`*`(`^`(`+`(R0, `-`(sqrt(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)))))), 2))))))) end proc) (2.1)
 

> printf("\n   Torus' great radius is R0");printf("\n   Torus' small radius is r");printf("\n");
 

 

  Torus' great radius is R0
 

 

  Torus' small radius is r
 

 

> G:=(x,y)->simplify(sqrt(1+(diff(z(x,y),x))^2+(diff(z(x,y),y))^2));
 

`:=`(G, proc (x, y) options operator, arrow; simplify(sqrt(`+`(1, `*`(`^`(diff(z(x, y), x), 2)), `*`(`^`(diff(z(x, y), y), 2))))) end proc) (2.2)
 

 

 

> g:=rho->algsubs(x^2+y^2=rho^2,G(x,y));
 

`:=`(g, proc (rho) options operator, arrow; algsubs(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))) = `*`(`^`(rho, 2)), G(x, y)) end proc) (2.3)
 

> simplify(g(rho));
 

`*`(r, `*`(`^`(`/`(1, `*`(`+`(`*`(`^`(r, 2)), `-`(`*`(`^`(R0, 2))), `*`(2, `*`(R0, `*`(csgn(rho), `*`(rho)))), `-`(`*`(`^`(rho, 2)))))), `/`(1, 2)))) (2.4)
 

 

One eighth of surface area of the torus : 

 

> Int(Int(rho*g(rho),rho=R0-r..R0+r),phi=0..Pi/2);
 

Int(Int(`*`(rho, `*`(r, `*`(`^`(`+`(`-`(`/`(1, `*`(`+`(`-`(`*`(`^`(r, 2))), `*`(`^`(R0, 2)), `-`(`*`(2, `*`(R0, `*`(`^`(`*`(`^`(rho, 2)), `/`(1, 2)))))), `*`(`^`(rho, 2))))))), `/`(1, 2))))), rho = `+... (2.5)
 

> A:=int(int(rho*g(rho),rho=R0-r..R0+r),phi=0..Pi/2);
 

`:=`(A, `+`(`/`(`*`(R0, `*`(r, `*`(`^`(Pi, 2)))), `*`(2)))) (2.6)
 

Surface area of outer part: 

 

> Int(Int(rho*g(rho),rho=R0..R0+r),phi=0..Pi/2);
 

Int(Int(`*`(rho, `*`(r, `*`(`^`(`+`(`-`(`/`(1, `*`(`+`(`-`(`*`(`^`(r, 2))), `*`(`^`(R0, 2)), `-`(`*`(2, `*`(R0, `*`(`^`(`*`(`^`(rho, 2)), `/`(1, 2)))))), `*`(`^`(rho, 2))))))), `/`(1, 2))))), rho = R0... (2.7)
 

> A1:=int(int(rho*g(rho),rho=R0..R0+r),phi=0..Pi/2);
 

`:=`(A1, `+`(`*`(`/`(1, 2), `*`(`*`(`^`(r, 2), `*`(Pi)))), `*`(`/`(1, 4), `*`(`*`(R0, `*`(r, `*`(`^`(Pi, 2)))))))) (2.8)
 

 

Surface area of inner part: 

 

> Int(Int(rho*g(rho),rho=R0-r..R0),phi=0..Pi/2);
 

Int(Int(`*`(rho, `*`(r, `*`(`^`(`+`(`-`(`/`(1, `*`(`+`(`-`(`*`(`^`(r, 2))), `*`(`^`(R0, 2)), `-`(`*`(2, `*`(R0, `*`(`^`(`*`(`^`(rho, 2)), `/`(1, 2)))))), `*`(`^`(rho, 2))))))), `/`(1, 2))))), rho = `+... (2.9)
 

> A2:=int(int(rho*g(rho),rho=R0-r..R0),phi=0..Pi/2);
 

`:=`(A2, `+`(`*`(`/`(1, 4), `*`(`*`(R0, `*`(r, `*`(`^`(Pi, 2)))))), `-`(`*`(`/`(1, 2), `*`(`*`(`^`(r, 2), `*`(Pi))))))) (2.10)
 

    Lemma 1: 

 

> A=A1+A2;
 

`+`(`/`(`*`(R0, `*`(r, `*`(`^`(Pi, 2)))), `*`(2))) = `+`(`/`(`*`(R0, `*`(r, `*`(`^`(Pi, 2)))), `*`(2))) (2.11)
 

> printf("\n   Plane radius is R_:");R_:=(r*Pi)/2;
 

(2.12)
 

  Plane radius is R_: (2.12)
 

`:=`(R_, `+`(`/`(`*`(r, `*`(Pi)), `*`(2)))) (2.12)
 

Area of the annulus sector: 

 

> B:=((R0+R_)^2-(R0-R_)^2)*Pi/4;
 

`:=`(B, `+`(`/`(`*`(`+`(`*`(`^`(`+`(R0, `/`(`*`(r, `*`(Pi)), `*`(2))), 2)), `-`(`*`(`^`(`+`(R0, `-`(`/`(`*`(r, `*`(Pi)), `*`(2)))), 2)))), `*`(Pi)), `*`(4)))) (2.13)
 

 

Area of  the outer part: 

 

> B1:=((R_+R0)^2-(R_)^2)*Pi/4;
 

`:=`(B1, `+`(`/`(`*`(`+`(`*`(`^`(`+`(R0, `/`(`*`(r, `*`(Pi)), `*`(2))), 2)), `-`(`/`(`*`(`^`(r, 2), `*`(`^`(Pi, 2))), `*`(4)))), `*`(Pi)), `*`(4)))) (2.14)
 

Area of the inner part: 

 

> B2:=((R_)^2-(R_-R0)^2)*Pi/4;
 

`:=`(B2, `+`(`/`(`*`(`+`(`/`(`*`(`^`(r, 2), `*`(`^`(Pi, 2))), `*`(4)), `-`(`*`(`^`(`+`(`/`(`*`(r, `*`(Pi)), `*`(2)), `-`(R0)), 2)))), `*`(Pi)), `*`(4)))) (2.15)
 

    Lemma 2: 

 

> B=B1+B2;
 

`+`(`/`(`*`(`+`(`*`(`^`(`+`(R0, `/`(`*`(r, `*`(Pi)), `*`(2))), 2)), `-`(`*`(`^`(`+`(R0, `-`(`/`(`*`(r, `*`(Pi)), `*`(2)))), 2)))), `*`(Pi)), `*`(4))) = `+`(`/`(`*`(`+`(`*`(`^`(`+`(R0, `/`(`*`(r, `*`(P... (2.16)
 

 

    Statement: 

 

> A=B;
 

`+`(`/`(`*`(R0, `*`(r, `*`(`^`(Pi, 2)))), `*`(2))) = `+`(`/`(`*`(`+`(`*`(`^`(`+`(R0, `/`(`*`(r, `*`(Pi)), `*`(2))), 2)), `-`(`*`(`^`(`+`(R0, `-`(`/`(`*`(r, `*`(Pi)), `*`(2)))), 2)))), `*`(Pi)), `*`(4)... (2.17)
 

 

    Partial deformations: 

 

> A1/B1;
 

`+`(`/`(`*`(4, `*`(`+`(`*`(`/`(1, 2), `*`(`*`(`^`(r, 2), `*`(Pi)))), `*`(`/`(1, 4), `*`(`*`(R0, `*`(r, `*`(`^`(Pi, 2))))))))), `*`(`+`(`*`(`^`(`+`(R0, `/`(`*`(r, `*`(Pi)), `*`(2))), 2)), `-`(`/`(`*`(`... (2.18)
 

> simplify(A1/B1);
 

`/`(`*`(r, `*`(`+`(`*`(2, `*`(r)), `*`(R0, `*`(Pi))))), `*`(R0, `*`(`+`(R0, `*`(r, `*`(Pi)))))) (2.19)
 

> A2/B2;
 

`+`(`/`(`*`(4, `*`(`+`(`*`(`/`(1, 4), `*`(`*`(R0, `*`(r, `*`(`^`(Pi, 2)))))), `-`(`*`(`/`(1, 2), `*`(`*`(`^`(r, 2), `*`(Pi)))))))), `*`(`+`(`/`(`*`(`^`(r, 2), `*`(`^`(Pi, 2))), `*`(4)), `-`(`*`(`^`(`+... (2.20)
 

> simplify(A2/B2);
 

`/`(`*`(r, `*`(`+`(`*`(R0, `*`(Pi)), `-`(`*`(2, `*`(r)))))), `*`(R0, `*`(`+`(`*`(r, `*`(Pi)), `-`(R0))))) (2.21)
 

> with(plots):
 

Warning, the name changecoords has been redefined
 

 

3-D Drawing 

 

> r:=1;
 

`:=`(r, 1) (2.1.1)
 

> R0:=2;
 

`:=`(R0, 2) (2.1.2)
 

> printf("\n   Condition of existence R0 - r := %1.2f > 0 ?",R0-r);printf("\n");
 

 

  Condition of existence R0 - r := 1.00 > 0 ?
 

 

> printf("\n   Torus' great radius is R0 := %1.2f",R0);printf("\n   Torus' small radius is r := %1.2f",r);printf("\n");
 

 

  Torus' great radius is R0 := 2.00
 

 

  Torus' small radius is r := 1.00
 

 

> printf("\n   R0 : r = %1.2f : %1.2f",R0,r);printf("\n");
 

 

  R0 : r = 2.00 : 1.00
 

 

> printf("\n   One eighth of the torus area Pt := %1.2f",((2*Pi*R0)*(2*Pi*r))/8);printf("\n");
 

 

  One eighth of the torus area Pt := 9.87
 

 

> N:=5;M:=5;
 

`:=`(N, 5) (2.1.3)
 

`:=`(M, 5) (2.1.3)
 

> printf("\n  One eighth of the torus area has %d*%d=%d cells",N-1,2*M-2,(N-1)*(2*M-2));printf("\n");
 

 

 One eighth of the torus area has 4*8=32 cells
 

 

> # interface(plotdevice);plotsetup(cps,plotoutput=`3D-Figure.ps`,plotoptions=`noborder,portrait,width=16cm,height=12cm,shrinkby=0`);
 

> for i from 0 by 1 to (N-1) do
 

> x[i]:=R0*cos(Pi/2*i/(N-1));y[i]:=sqrt(R0^2-x[i]^2);
 

> a1[i]:=plot3d([(x[i]+x[i]*r/R0*cos(t),y[i]+y[i]*r/R0*cos(t),r+r*sin(t))],t=-Pi/2..0,y=0..2*Pi,grid=[100,100],color=black,thickness=2,style=WIREFRAME,axes=NORMAL,tickmarks=[0,0,0],labels=[``,``,``],scaling=CONSTRAINED):
 

> a2[i]:=plot3d([x[i]-x[i]*r/R0*cos(t),y[i]-y[i]*r/R0*cos(t),r-r*sin(t)],t=0..Pi/2,y=0..2*Pi,grid=[100,100],color=black,thickness=2,style=WIREFRAME,axes=NORMAL,tickmarks=[0,0,0],labels=[``,``,``],scaling=CONSTRAINED):
 

> end do:
 

> for j from (-(M-1)) by 1 to 1 do
 

> b[j]:=plot3d([(R0+r*sin(Pi/2*j/(M-1)))*cos(t),(R0+r*sin(Pi/2*j/(M-1)))*sin(t),r*(1-cos(Pi/2*j/(M-1)))],t=0..Pi/2,y=0..2*Pi,grid=[100,100],color=maroon,thickness=2,style=WIREFRAME,axes=NORMAL,tickmarks=[0,0,0],labels=[``,``,``],scaling=CONSTRAINED):
 

> end do:
 

> for j from 1 by 1 to (M-1) do
 

> b[j]:=plot3d([(R0+r*sin(Pi/2*j/(M-1)))*cos(t),(R0+r*sin(Pi/2*j/(M-1)))*sin(t),r*(1-cos(Pi/2*j/(M-1)))],t=0..Pi/2,y=0..2*Pi,grid=[100,100],color=blue,thickness=2,style=WIREFRAME,axes=NORMAL,tickmarks=[0,0,0],labels=[``,``,``],scaling=CONSTRAINED):
 

> end do:
 

> b[0]:=plot3d([R0*cos(t),R0*sin(t),0],t=0..Pi/2,y=0..2*Pi,grid=[100,100],color=black,thickness=2,style=WIREFRAME,axes=NORMAL,tickmarks=[0,0,0],labels=[``,``,``],scaling=CONSTRAINED):
 

> ARR1:=arrow(<2.1*R0,0,0>,shape=cylindrical_arrow,length=(2.1*R0),width=0.01,head_length=0.2,head_width=0.1,color=black):
 

> ARR2:=arrow(<0,2.1*R0,0>,shape=cylindrical_arrow,length=(2.1*R0),width=0.01,head_length=0.2,head_width=0.1,color=black):
 

> ARR3:=arrow(<0,0,2.5*r>,shape=cylindrical_arrow,length=(2.5*r),width=0.02,head_length=0.25,head_width=0.1,color=black):
 

> display({seq(a1[i],i=0..(N-1)),seq(a2[i],i=0..(N-1)),seq(b[j],j=(-(M-1))..(M-1)),ARR1,ARR2,ARR3},view=[-0.4*R0..2.1*R0,-0.4*R0..2.1*R0,-0.4*r..2.5*r],orientation=[-30,70]);
 

Plot
 

2D-Drawing 

 

> R_:=(r*Pi)/2;printf("\n   Plain radius is R_ = %1.2f",R_);printf("\n");
 

`:=`(R_, `+`(`/`(`*`(Pi), `*`(2)))) (2.1.1.1)
 

(2.1.1.1)
 

  Plain radius is R_ = 1.57 (2.1.1.1)
 

(2.1.1.1)
 

> printf("\n   Condition of existence R0 - r*Pi/2 := %1.2f > 0 ?",R0-r*Pi/2);printf("\n");
 

 

  Condition of existence R0 - r*Pi/2 := 0.43 > 0 ?
 

 

> printf("\n   Torus' great radius is R0 := %1.2f",R0);printf("\n   Torus' small radius is r := %1.2f",r);printf("\n");
 

 

  Torus' great radius is R0 := 2.00
 

 

  Torus' small radius is r := 1.00
 

 

> printf("\n   R0 : r = %1.2f : %1.2f",R0,r);printf("\n");
 

 

  R0 : r = 2.00 : 1.00
 

 

> printf("\n   Annulus sector area is B := %1.2f",((R0+R_)^2-(R0-R_)^2)*Pi/4);printf("\n");
 

 

  Annulus sector area is B := 9.87
 

 

> N:=5;M:=5;
 

`:=`(N, 5) (2.1.1.2)
 

`:=`(M, 5) (2.1.1.2)
 

> printf("\n  Annulus sector has %d*%d=%d cells",N-1,2*M-2,(N-1)*(2*M-2));printf("\n");
 

 

 Annulus sector has 4*8=32 cells
 

 

> # interface(plotdevice);plotsetup(cps,plotoutput=`2D-Figure.ps`,plotoptions=`noborder,portrait,width=16cm,height=12cm,shrinkby=0`);
 

> c0:=plot([R0*cos(t),R0*sin(t),t=0..Pi/2],numpoints=100,color=black,thickness=2,axes=NORMAL,tickmarks=[0,0],labels=[``,``],scaling=UNCONSTRAINED):
 

> for i from 1 by 1 to (N-1) do
 

> w[i]:=i/(N-1);
 

> c1[i]:=plot([(R0+w[i]*R_)*cos(t),(R0+w[i]*R_)*sin(t),t=0..Pi/2],numpoints=100,color=blue,thickness=2,axes=NORMAL,tickmarks=[0,0],labels=[``,``],scaling=UNCONSTRAINED):
 

> c2[i]:=plot([(R0-w[i]*R_)*cos(t),(R0-w[i]*R_)*sin(t),t=0..Pi/2],numpoints=100,color=navy,thickness=2,axes=NORMAL,tickmarks=[0,0],labels=[``,``],scaling=UNCONSTRAINED):
 

> end do:
 

> for j from 0 by 1 to (M-1) do
 

> d[j]:=plot([[(R0-R_)*cos(j/(M-1)*Pi/2),(R0-R_)*sin(j/(M-1)*Pi/2)],[(R0+R_)*cos(j/(M-1)*Pi/2),(R0+R_)*sin(j/(M-1)*Pi/2)]],numpoints=100,color=black,thickness=2,axes=NORMAL,tickmarks=[0,0],labels=[``,``],scaling=UNCONSTRAINED):
 

> end do:
 

> ARR1:=arrow(<3*R_.5,0>,shape=arrow,length=3.5*R_,width=0.01,head_length=0.2,head_width=0.1,color=black):
 

> ARR2:=arrow(<0,3.5*R_>,shape=arrow,length=3.5*R_,width=0.01,head_length=0.2,head_width=0.1,color=black):
 

> display({c0,seq(c1[i],i=1..(N-1)),seq(c2[i],i=1..(N-1)),seq(d[j],j=0..(M-1)),ARR1,ARR2},view=[-3*R_..3.5*R_,-3*R_..3.5*R_]);
 

Plot_2d
 

 

Partial deformations: 

 

> AA1:=evalf(1/2*r^2*Pi+1/4*R0*r*Pi^2):BB1:=evalf(((R_+R0)^2-(R_)^2)*Pi/4):printf(`\n  A1 = %f`,AA1);printf(`\n  B1 = %f`,BB1);printf(`\n  A1/B1 = %f`,evalf(r*(2*r+R0*Pi)/R0/(R0+r*Pi)));printf(`\n`);
 

 

 A1 = 6.505599
 

 

 B1 = 8.076395
 

 

 A1/B1 = 0.805508
 

 

> AA2:=evalf(1/4*R0*r*Pi^2-1/2*r^2*Pi):BB2:=evalf(((R_)^2-(R_-R0)^2)*Pi/4):printf(`\n  A2 = %f`,AA2);printf(`\n  B2 = %f`,BB2);printf(`\n  A2/B2 = %f`,evalf(r*(R0*Pi-2*r)/R0/(r*Pi-R0)));
 

 

 A2 = 3.364006
 

 

 B2 = 1.793210
 

 

 A2/B2 = 1.875969
 

 

> # AA1+AA2=BB1+BB2;
 

Conclusions 

Torus surface has a great implementation in technique especially in car industry. Problem of connecting two pipes with different axes and same diameter are usual and for its solving we are using pipe with circular axis. Namely, in that case we are using torus pipe or pipe which is made by connecting several torus pipes. We can use torus surfaces for exhaust made in small series in car industry.  

 

Legal Notice: The copyright for this application is owned by the author(s). Neither Maplesoft nor the author are responsible for any errors contained within and are not liable for any damages resulting from the use of this material. This application is intended for non-commercial, non-profit use only. Contact the author for permission if you wish to use this application in for-profit activities.
 

Image