# Designed track geometry

The track consists of tangent track sections and circular curves, and in between theses sections there are transition curves. Curvature
• In the tutorial examples the curvature is defined via a memory field named "ro_trac_design"
• Tangent track is defined by setting the curvature equal to 0.(zero)
• The decription of a track must always start with of a tangent track section (s_1 to s0)
• A positive curvature leads to a right handed curve, and a negative curvature leads to a left handed curve
• The interpolation between the defined nodes above depends on the type of Euler coordinate system given under command lsys

Cant
• In the tutorial examples the cant is defined via a memory field named "f_trac_design".
• The cant of the track follows a curve similar as curvature above
• The cant of the track is defined as the height difference between right and left rail
• A right handed curve has normally a positive cant, and a left handed curve has normally a negative cant
• The interpolation between the defined nodes above depends on the type of Euler coordinate system given under command lsys

Z-lift
Track center line may move, depending on how the cant is created. If the cant is created by rotating the track around track center line and top of rail, Z-lift will always be 0.(zero). However, often the cant is created by rotating the track around the inner rail, this causes the track center line to move upwards in curves. The upward lift will correspond to cant/2.
• In the tutorial examples the Z-lift is defined via a memory field named "z_trac_design"
• The Z-lift is normally never positive because the track normally is rotated around the inner rail
• The interpolation between the defined nodes above depends on the type of Euler coordinate system given under command lsys

## Input data example

```
###
###     Designed(nominal) track geometry
###     ==========================================================
func const CurveCant=   0.100                # Cant of track in [m]
#[-]{
#
func intpl_r ro_trac_design  -100.+Xtrac_start  0.
40.+Xtrac_start  0.
680.+Xtrac_start  0.
10000.+Xtrac_start  0.
func intpl_r f_trac_design   -100.+Xtrac_start  0.
40.+Xtrac_start  0.
160.+Xtrac_start  CurveCant/(2*bo_)
240.+Xtrac_start  CurveCant/(2*bo_)
680.+Xtrac_start  0.
10000.+Xtrac_start  0.
func intpl_r z_trac_design   -100.+Xtrac_start  0.
40.+Xtrac_start  0.
160.+Xtrac_start -abs(CurveCant)/2.
240.+Xtrac_start -abs(CurveCant)/2.
680.+Xtrac_start  0.
10000.+Xtrac_start  0.
s_var scalar_0 CurveCant

func const  Curve_TC_beg1=  40+Xtrac_start    # Beginning of transition curve
func const  Curve_TC_end1= 160+Xtrac_start    # End of transition curve
s_var scalar_0 Curve_TC_beg1                  # Store for evaluation
s_var scalar_0 Curve_TC_end1                  # of PCT

#[-]}   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
```

Lateral acceleration
The lateral acceleration caused by the curve can be calculated in the following formula:
``` Y_cp=     Vo2     –  CurveCant * g
``` Vo= √CurveRadius*(Y_cp + CurveCant/(2*bo_)*g)