Professional Documents
Culture Documents
Designing of Horizontal Alignment of Highway connecting two cities and passing through an obligatory point. The Horizontal Alignment design will be carried out while adhering to the standards stipulated by Indian Roads Congress. The code to solve the optimisation problem will be developed and executed in C++ environment. The final output would be presented in a tabulated form containing x and y coordinates.
Literature Review
While undertaking the research-work for the project we have used concepts and methodologies from several sources as below: Studied the standards for Horizontal Alignment of Highways as prescribed in the Manual of Specification & Standards published by the Planning Commission of India, New Delhi (IRC:SP:73-2007). Reviewed chapters on Horizontal Highway Alignment in the NPTEL- IIT Bombay module written by Prof. Tom V. Matthew and Prof. K.V.K. Rao. Analysed the relevant material in the book Introduction to Transportation Engineering written by James H. Banks.
TS: point of change from tangent to spiral SC: point of change from spiral to circle CS: point of change from circle to spiral ST: point of change from spiral to tangent l: spiral arc length from TS to any point on the spiral ls: total length of spiral from TS to SC Thetas: the spiral angle = central angle of spiral arc l s Delta: total central angle of the circular curve p: offset from the initial tangent to the PC of the shifted circular curve
Where cmin= 0.5, cmax=0.8 Rate of introduction of super-elevation Raise (E) of the outer edge with respect to inner edge is given by E = eB = e(W +We). The rate of change of this raise from 0 to E is achieved gradually with a gradient of 1 in N over the length of the transition curve (typical range of N is 60-150). Therefore, the length of the transition curve Ls2 is: Ls2 = Ne*(W +We)
Empirical formula IRC suggests a minimum length of the transition curve for a plain and rolling terrain:
#include <iostream> #include<stdio.h> #include<conio.h> #include<math.h> using namespace std; int main() { float v,e,f,y,flag,td=10000000,x2,y2,a; float flag1=td,thetar,st,ls; flag=td; cout<<"This Program calculates the minimum path length between 2 cities 10 kms apart"<<endl<<"with an obligatory point between them. The X coordinate of the obligatory point is assumed to be 5. "; cout <<endl<<endl<< "Enter design speed (kmph) : "; cin >> v; cout << "Enter superelevation: "; cin >> e; cout << "Enter friction co-efficient: "; cin >> f; cout << "Enter the y co-ordinate of the obligatory point (in km): "; cin >> y; y=y*1000; // converting km to metres float theta,r,rmin=(v*v)/(127*(e+f)); // Finding the ruling minimum radius in metres cout<<endl<<"OUTPUT:"<<endl; cout << "The Ruling minimum radius is: " <<rmin; r=rmin; theta=0.1; float x,x1,y1,cx,cy; v=v*5/18; do { do { thetar=theta*(3.14159/180); x=5000; x1= x-r*sin(thetar); y1= y-r*(1-cos(thetar)); float ls1=(v*v*v*(75+3.6*v))/(r*80); float ls2=150*e*7.5/2; float ls3=35*v*v/r; ls=max(ls1,ls2);
ls=max(ls,ls3); float a=r*ls; float x2,y2; x2=(ls-(pow(ls,5)/(40*a*a))+(pow(ls,9)/(3456*a*a*a*a))); y2=((pow(ls,3)/(6*a))(pow(ls,7)/(336*a*a*a))+(pow(ls,11)/(42240*pow(a,5)))); cx=x1-x2; cy=y1-y2; st=sqrt((cx*cx)+(cy*cy)); td= (st+ls+(r*thetar)); if(td>flag) break; flag=min(flag,td); theta=theta+0.1; } while(theta<=90); if(flag>flag1) break; r=r+1; theta=0.1; flag1=min(flag1,flag); } while(r<=1000); float ans=flag1; cout<<endl<<"Total minimum distance : "<<ans*2; theta=0.1; flag=1000000; flag1=flag; r=rmin; do { do { thetar=theta*(3.14159/180); x=5000; x1= x-r*sin(thetar); y1= y-r*(1-cos(thetar)); float ls1=(v*v*v*(75+3.6*v))/(r*80); float ls2=150*e*7.5/2; float ls3=35*v*v/r; ls=max(ls1,ls2); ls=max(ls,ls3); a=r*ls; x2=(ls-(pow(ls,5)/(40*a*a))+(pow(ls,9)/(3456*a*a*a*a)));
y2=((pow(ls,3)/(6*a))(pow(ls,7)/(336*a*a*a))+(pow(ls,11)/(42240*pow(a,5)))); cx=x1-x2; cy=y1-y2; st=sqrt((cx*cx)+(cy*cy)); td= (st+ls+(r*thetar)); if(td==ans) break; flag=min(flag,td); theta=theta+0.1; } while(theta<=90); if(td==ans) break; r=r+1; theta=0.1; flag1=min(flag1,flag); } while(r<=1000); cout<<endl<<"Arc Angle : "<<theta<<" degrees"; cout<<endl<<"Radius : "<<r<<" metres"; cout<< endl<<"Straight Part : "<<st; cout<<endl<<"Transition Curve: "<<ls; cout<<endl<<"Circular part: "<<r*thetar; cout<<endl<<"Total distance : "<<(st+ls+(r*thetar))*2; cout<<endl<<"Coordinates of the Transition curve : "; cout<<endl<<"X"<<" "<<"Y"; cout<<endl<<cx<<" "<<cy; float end=ls; ls=1; while(ls<=end) { x2=(ls-(pow(ls,5)/(40*a*a))+(pow(ls,9)/(3456*a*a*a*a))); y2=((pow(ls,3)/(6*a))(pow(ls,7)/(336*a*a*a))+(pow(ls,11)/(42240*pow(a,5)))); cout<<endl<<x2+cx<<" "<<y2+cy; ls++; } getch(); return 0; } //End of Code