Home    Search    Reference Manuals    Return





Users Manual for Program KPF





Table of Contents

Introduction
Command line options
Wheel profile input data
Rail profile input data
Creation of wheel or rail profiles
Wheel/rail interface
Input data commands
Error messages
Output data
Equivalent Conicity
Radial Steering Index
Animate the wheel/rail interface in program GPLOT
Examples




Introduction

KPF is an abbreviation from Swedish for C(K)ontact Point Function. The program creates wheel-rail geometry functions to be used in Gensys. It creates the functions from measured or designed wheel and rail profiles. The program reads wheel and rail profiles from files where the data are organized in a standardized way. These input files are described in sects. 2) and 3) below.




Command line options


Following command line options are understood:

-h = Display help information
-M = Create a Master input data file 
arg(1) = Input data file

If the input data file "arg(1)" has the file extension ".kpff", implies that the ident name $ident will be given the value of "arg(1)" with the extension ".kpff" removed.




Wheel profile input data

The wheel profile is described in Y- and Z- coordinates. Positive direction for the Y-coordinate is toward the center of the track for both wheels. Positive direction for the Z-coordinate is downwards. The origo of the Y-coordinates should be at the radius where the wheel diameter of the wheel is measured, this diameter is sometimes also called the Nominal Running Circle.

Example of a data file describing the wheel profile:

 -60.00000   -2.63568
 -59.90000   -2.62901   # Start as far out on the tread as possible.
 -59.80000   -2.62234
 -59.70000   -2.61568
 -59.60000   -2.60901
 -59.50000   -2.60234
 -59.40000   -2.59568
 -59.30000   -2.58901
 -59.20000   -2.58234
 -59.10000   -2.57568
 -59.00000   -2.56901
 -58.90000   -2.56234
 -58.80000   -2.55568
 -58.70000   -2.54901
 -58.60000   -2.54234
 -58.50000   -2.53568
 -58.40000   -2.52901
 -58.30000   -2.52234
     .          .
     .          .
     .          .
  -0.60000   -0.01959
  -0.50000   -0.01640
  -0.40000   -0.01319
  -0.30000   -0.00994
  -0.20000   -0.00665
  -0.10000   -0.00334
   0.00000    0.00000   #  Origin  Located bo from track center line
   0.10000    0.00337
   0.20000    0.00678   
   0.30000    0.01022   
   0.40000    0.01369   
   0.50000    0.01719
   0.60000    0.02072
     .          .
     .          .
     .          .
  68.80000   16.43012
  68.90000   16.14421
  69.00000   15.84381
  69.10000   15.52675
  69.20000   15.19024
  69.30000   14.83057
  69.40000   14.44267
  69.50000   14.01926   # Stop as far up on the flange as possible.
  69.60000   13.54915   # If the wheel profile is described to the
  69.70000   13.01354   # inside of the wheel, a derailment situation
  69.80000   12.37583   # can be analysed.
  69.90000   11.54163
sketches/Wheel_profile.png



Rail profile input data

The rail profile is described in Y- and Z- coordinates. Positive direction for the Y-coordinate is toward the center of the track for both rails. Positive direction for the Z-coordinate is downwards. The origo of the Y-coordinates should be located at the same lateral spacing as for the wheelset (The Nominal Running Circle), if the lateral spacing between the two rails are correct. If the rails are worn in a way so the gauge has been changed, the location of the origo of the coordinate system of the rail should move the same distance, because gauge deviation should be considered as a track alignment irregularity. Therefore is the origo of the rail profile is defined relative to the Gauge Measuring Point. This point is a point on the rail that is closest to the track center line and is located on the surface of the rail profile and somewhere between Top of Rail and GAUGE_MEAS_INTERVAL beneath Top of Rail.

Example of a data file describing the rail profile:

 -4.09200E+01   3.38029E+01
 -4.09000E+01   3.35366E+01     # Data start on the rail head, as far out
 -4.08800E+01   3.32703E+01     # from track center line as possible.
 -4.08600E+01   3.30041E+01
 -4.08400E+01   3.27379E+01
 -4.08200E+01   3.24716E+01
 -4.08000E+01   3.22053E+01
 -4.07800E+01   3.19390E+01
 -4.07600E+01   3.16727E+01
 -4.07400E+01   3.14064E+01
 -4.07200E+01   3.11401E+01
 -4.07000E+01   3.08739E+01
 -4.06800E+01   3.06076E+01
 -4.06600E+01   3.03413E+01
 -4.06400E+01   3.00750E+01
 -4.06200E+01   2.98087E+01
 -4.06000E+01   2.95424E+01
 -4.05800E+01   2.92761E+01
 -4.05600E+01   2.90099E+01
     .            .
     .            .
     .            .
 -1.07400E+01  -1.84914E-01
 -1.07200E+01  -1.84927E-01
 -1.07000E+01  -1.84939E-01
 -1.06800E+01  -1.84949E-01
 -1.06600E+01  -1.84957E-01
 -1.06400E+01  -1.84965E-01
 -1.06200E+01  -1.84972E-01
 -1.06000E+01  -1.84978E-01
 -1.05800E+01  -1.84981E-01
 -1.05600E+01  -1.84984E-01
 -1.05400E+01  -1.84984E-01     #  Top of Rail
 -1.05200E+01  -1.84984E-01
 -1.05000E+01  -1.84982E-01
 -1.04800E+01  -1.84980E-01
 -1.04600E+01  -1.84976E-01
 -1.04400E+01  -1.84970E-01
 -1.04200E+01  -1.84963E-01
 -1.04000E+01  -1.84954E-01
 -1.03800E+01  -1.84945E-01
 -1.03600E+01  -1.84934E-01
 -1.03400E+01  -1.84922E-01
 -1.03200E+01  -1.84909E-01
 -1.03000E+01  -1.84894E-01
     .            .
     .            .
     .            .
 -2.80000E-01  -9.70667E-03
 -2.60000E-01  -9.02203E-03
 -2.40000E-01  -8.33606E-03
 -2.20000E-01  -7.64875E-03
 -2.00000E-01  -6.96009E-03
 -1.80000E-01  -6.27011E-03
 -1.60000E-01  -5.57879E-03
 -1.40000E-01  -4.88614E-03
 -1.20000E-01  -4.19215E-03
 -1.00000E-01  -3.49683E-03
 -8.00000E-02  -2.80017E-03
 -6.00000E-02  -2.10217E-03
 -4.00000E-02  -1.40283E-03
 -2.00000E-02  -7.02173E-04
  0.00000E+00   0.00000E+00     #  Origin  Located bo from track center line
  2.00000E-02   7.03178E-04
  4.00000E-02   1.40785E-03
  6.00000E-02   2.11386E-03
  8.00000E-02   2.82121E-03
  1.00000E-01   3.52990E-03
  1.20000E-01   4.23991E-03
  1.40000E-01   4.95126E-03
  1.60000E-01   5.66395E-03
  1.80000E-01   6.37798E-03
  2.00000E-01   7.09335E-03
  2.20000E-01   7.81005E-03
  2.40000E-01   8.52808E-03
  2.60000E-01   9.24746E-03
  2.80000E-01   9.96816E-03
     .            .
     .            .
     .            .
  3.23000E+01   1.26487E+01
  3.23200E+01   1.27417E+01
  3.23400E+01   1.28383E+01
  3.23600E+01   1.29387E+01
  3.23800E+01   1.30435E+01
  3.24000E+01   1.31533E+01
  3.24200E+01   1.32690E+01
  3.24400E+01   1.33913E+01
  3.24600E+01   1.35218E+01
  3.24800E+01   1.36622E+01
  3.25000E+01   1.38150E+01     #  Gauge Measuring Point  Located at ORIGIN_TO_GAUGE
  3.25200E+01   1.39845E+01     
  3.25400E+01   1.41774E+01
  3.25600E+01   1.44078E+01
  3.25800E+01   1.47174E+01
  3.26000E+01   1.52784E+01
  3.26200E+01   1.60357E+01
  3.26400E+01   1.68367E+01
  3.26600E+01   1.76377E+01
  3.26800E+01   1.84385E+01
  3.27000E+01   1.92394E+01
  3.27200E+01   2.00402E+01     # Data ends on the rail head, as far
  3.27400E+01   2.08412E+01     # to the track center line as possible.
  3.27600E+01   2.16420E+01     # If the inside of the rail have a vertical
  3.27800E+01   2.24429E+01     # slope manually a fake point can be given
  3.28000E+01   2.32438E+01     # several meters under the ground

Program kpf_rot can be used for zero-setting the rail profile. sketches/Rail_profile.png




Creation of wheel or rail profiles


To create a rail profile from a drawing is showed in document create_UIC60.html


Translation of measured profiles can be made in one of the following programs:


conv_RS2009_to_kpf_rail
Converts rail profiles measured by the RailScan profile measuring instrument into a format suitable for program KPF.

conv_WS2009_to_kpf_wheel
Converts wheel profiles measured by the WheelScan profile measuring instrument into a format suitable for program KPF.

conv_miniprof2kpf_rail
Converts rail profiles measured by the miniprof profile measuring instrument into a format suitable for program KPF.

conv_miniprof2kpf_wheel
Converts wheel profiles measured by the miniprof profile measuring instrument into a format suitable for program KPF.

conv_strix2kpf
Converts rail profiles measured by the STRIX track recording car into a format suitable for program KPF.



Wheel/rail interface

There are a number of dimensions that define the wheelset and track geometry. Following figure shows how they are defined:

kpf/Wheelset-Track-Geometry.png

Top of Rail is the line you get, when placing a ruler across the rails.

N.B. In the figure above it looks like the origin of Rail and origin of Wheel are located at the same point. But in most cases they are not. Only in very rare cases the contact point coinside with the two origins, and in those cases the two origins are located in the same point.

For the rail:

Origin of Rail is defined to be on surface of the rail, located a lateral distance of bo from track center line.
(See: Rail profile input data)

The Gauge Measuring Point is a point between Top of Rail and GAUGE_MEAS_INTERVAL beneath Top of Rail. The points on right and left side shall be chosen in a way that gives the shortest distance between the rails.

For the wheel:

Origin of Wheel is defined to be on the surface of the wheel, located at a lateral distance of bo from track center line.
(See: Wheel profile input data)

Flange thickness is measured at height FLANGE_THICK_HEIGHT relative to origin of wheel.

Kpf input data:

The following lateral distances must be set in a kpf input data file:

BO = Distance between the Nominal Running Circles
ORIGIN_TO_GAUGE = Distance from the Gauge Measuring Point to theNominal Running Circle
GAUGE_MEAS_INTERVAL = Vertical interval for finding the Gauge Measuring Point
ORIGIN_TO_IWHEEL = Distance between inside wheel and Nominal Running Circle
WPROF_LAT_SHIFT = Possibility to laterally shift the wheels on the axle. E.g. simulating a thin or thick flange.

Broad Gauge 1520 mm

Broad gauge track 1520 (4' 11 5/6") are used in many countries formerly belonging to the Soviet Union.
The following data are valid for the track:

BO = 790 mm
ORIGIN_TO_GAUGE = 30 mm
ORIGIN_TO_IWHEEL = 70 mm

Normal Gauge 1435 mm

Normal gauge track is also sometimes called Standard gauge or Stephenson gauge. The distance between inside rail on tangent track is nominally 1435 mm (4' 8 1/2").
The following data are valid for normal gauge track:

BO = 750 mm
ORIGIN_TO_GAUGE = 32.5 mm
ORIGIN_TO_IWHEEL= 70 mm

Narrow Gauge 891 mm

The following data are valid:

BO = 470 mm
ORIGIN_TO_GAUGE = 24.5 mm
ORIGIN_TO_IWHEEL = 56 mm




Input data commands

Summary of all commands:

BO = Lateral distance from track center line to the origins of the wheel and rail profiles.
BO_MEASURED_AXLE = Defines the lateral semi spacing between the contact points on measured axle.
BL_AXLE = Defines the lateral semi spacing between the journals.
BL_MEASURED_AXLE = Defines the lateral semi spacing between the journals on measured wheelset.
C_FILE = Output file for average radius of contact area.
CHI_MEASURED_AXLE = Angle chi between a vertical line and the profile measuring device.
CONN_BEG_RIGHT = Lateral start displacement, when creating the connection diagram; right side
CONN_BEG_LEFT = Lateral start displacement, when creating the connection diagram; left side
CONN_END_RIGHT = Lateral stop displacement, when creating the connection diagram; right side
CONN_END_LEFT = Lateral stop displacement, when creating the connection diagram; left side
CONN_FILE = Output file for the locations of the connection points
CONN_START = Max negative displacement of wheelset, when creating the wheel/rail-geometry functions
CONN_STOP = Max positive displacement of wheelset, when creating the wheel/rail-geometry functions
DYEFFCON = Vector containing wheelset lateral amplitudes for which wheelset conicities shall be calculated.
EOF = Command which terminates further input data reading
E_MODULUS = The combined modulus of elasticity in wheel and rail.
FLANGE_THICK_HEIGHT = Height above nominal running circle, where the thickness of the flange shall be measured.
FZHR = Vertical load used for smoothening the surface of wheel and rail.
FZHR_MEASURED_AXLE = Vertical wheel load acting on the wheelset during wheel profile measurements.
FI_AXLE_FILE = Output file for the rolling motion of the axle.
FITEPS = Permitted maximum error between calculated points and regression curve.
GAUGE_EFFCON = Vector containing different gauges for which wheelset conicities shall be calculated.
GAUGE_MEAS_INTERVAL = Vertical interval for finding the Gauge Measuring Point.
GPDAT_FILE = Create .gp-file for animation in program GPLOT.
HFIL = The input data file for the wheel profiles.
I2KP = Flag controlling the number of simultaneous contact areas.
IDENT = Three ident lines written to output lists and plots.
IBORDER = Flag, indicating how the boundaries on rail- and wheel profiles shall be treated.
ILASER = Indicator for writing the graphs to a printer.
INTP_STEP = Lateral steps when moving the axle over the track.
IPLOT_GRID = Flag controlling the plotting of grid patterns.
IPLOT_LTHICK = Setting the line thickness in the output diagrams.
IPLOT_SIGMA = Flag controlling the plotting of the size of the contact point and the maximum contact pressure.
IPLOT3 = Flag controlling the plotting of contact pressure and connection diagrams.
IPLOTG = Flag controlling the plotting of wheel and rail geometries.
IPLOTK = Flag controlling the plotting of wheel/rail-geometry functions.
IROLL = Flag governing if the roll motion of the wheelset shall be considered.
IZERO = Flag that controls the zero-setting of DRFN and ZFN.
KAPPA_FILE = Coefficient of contact angle difference KAPPA.
KPFR_FILE = Output file for the created wheel-rail geometry functions.
KPFR_TYPE = Type of kpfr-file to be written.
LAMBDA_FILE = Conicity table output file.
ORIGIN_TO_GAUGE = The distance between the Gauge Measuring Point and the origin of the rail profile.
ORIGIN_TO_IWHEEL = Distance from inside wheel to the origo of the wheel profile.
POISSON = The combined Poisson's ratio in wheel and rail.
POSTFI = Graphical output file to be sent to the printer.
PRE_CONTACT_P = Wheelset angle of attack written to file pre_contactf
PRE_CONTACT_Y = Wheelset lateral displacement written to file pre_contactf
R_AXLE = Defines the radius of the axle of the wheelset.
R_LAT_FILE = Output file for the lateral radiuses in the contact point.
R_MEASURED_AXLE = Defines the radius of the axle on the measured wheelset.
R_WHEEL = Defines the nominal radius of the wheels on the wheelset.
RFIL = Input data file containing the description of the rail profiles.
RLFILE = Input data file separate for the left rail profile.
RRFILE = Input data file separate for the right rail profile.
RR_RL_FILE = Output file for the rolling radius differences.
RSI_FILE = Max rolling radius difference without flange contact.
SIGMA_FILE = Output file for maximum contact stress.
SYMBOLS_CP = Symbols to be plotted for each lateral position of the wheelset.
SYMBOLS_CP_KPFR = Symbols showing the break points of the wheel-rail geometry function.
UIC519_FILE = UIC519/EN15302 conicity table output file.
WPROF_LAT_SHIFT = Shift the wheel profile in lateral direction
WLFILE = Input data file separate for the left wheel profile.
WRFILE = Input data file separate for the right wheel profile.
X_MID = Sets the value of the X-axis at the midpoint of the axis.
XINT/CM = Sets the scale factor in X-direction
Y_CP1 = Lateral shift of wheelset, where cp1 shall be the active contact point.
YH2CP = Lateral coordinate on the wheel which separates the tread contact surface from the flange contact surface.

Below follows a description of all input commands in alphabetical order and their default values:


BO
Lateral distance from track center line to the origins of the wheel and rail profiles.
For standard Stephenson gauge 1435[mm] BO equals 750 [mm]. For other gauges see under Wheel/rail interface.
Declared= Real*4    Default= 750 [mm]

BO_MEASURED_AXLE
Defines the lateral semi spacing between the two contact points on each wheel. For normal gauge BO_MEASURED_AXLE should be 0.75. Parameter BO_MEASURED_AXLE is used for estimating the bending of the axle on which the profile measurements WRFILE, WLFILE took place.
This input data is used when WRFILE and/or WLFILE consists of measured data, and the axle was bending during the measurements due to applied vertical load. How much the measured axle was bending is controlled in the input data R_MEASURED_AXLE and FZHR_MEASURED_AXLE.
More input data related to the bending of the axle of the measured wheelset are: CHI_MEASURED_AXLE, R_MEASURED_AXLE, BO_MEASURED_AXLE, BL_MEASURED_AXLE and FZHR_MEASURED_AXLE.
Declared= Real*4    Default= 0.75 [m]

BL_AXLE
Defines the lateral semi spacing between the center of the journals at the wheelset. More input data related to the bending of the axle are: R_AXLE, BO and R_WHEEL.
Declared= Real*4    Default= 1. [m]

BL_MEASURED_AXLE
Defines the lateral semi spacing between the center of the journals at the wheelset on which the profile measurements WRFILE, WLFILE took place.
This input data is used when WRFILE and/or WLFILE consists of measured data, and the axle was bending during the measurements due to applied vertical load. How much the measured axle was bending is controlled in the input data R_MEASURED_AXLE and FZHR_MEASURED_AXLE.
This input data is used when WRFILE and/or WLFILE consists of measured data, and the axle was bending during the measurements due to applied vertical load. How much the measured axle was bending is controlled in the input data R_MEASURED_AXLE and FZHR_MEASURED_AXLE.
More input data related to the bending of the axle of the measured wheelset are: CHI_MEASURED_AXLE, R_MEASURED_AXLE, BO_MEASURED_AXLE, BL_MEASURED_AXLE and FZHR_MEASURED_AXLE.
Declared= Real*4    Default= 1. [m]

C_FILE
Command C_FILE gives two tables:
  1. Geometric mean of the contact ellipse semi-axles c= √ a⋅b 
  2. Contact ellipse a/b-ratio
Table #1 consists of the following columns:
  1. Lateral displacement of wheelset
  2. Geometric mean c contact area #1, left wheel
  3. Geometric mean c contact area #2, left wheel
  4. Geometric mean c contact area #3, left wheel
  5. Geometric mean c contact area #1, right wheel
  6. Geometric mean c contact area #2, right wheel
  7. Geometric mean c contact area #3, right wheel
Table #2 consists of the following columns:
  1. Lateral displacement of wheelset
  2. Contact ellipse a/b-ratio area #1, left wheel
  3. Contact ellipse a/b-ratio area #2, left wheel
  4. Contact ellipse a/b-ratio area #3, left wheel
  5. Contact ellipse a/b-ratio area #1, right wheel
  6. Contact ellipse a/b-ratio area #2, right wheel
  7. Contact ellipse a/b-ratio area #3, right wheel
The output is canceled if C_FILE= '  ' (Space)
Declared= Character*132    Default= '  '

CHI_MEASURED_AXLE
Angle chi between a vertical line and the profile measuring device.
When using a measuring device e.g. miniprof, the device cannot be mounted directly under the wheelset. Therefore often the measuring device is measuring the wheel profile in an angle chi relative to a vertical line, which leads to that the rotation angle which is caused by applied vertical load on the journals of the wheelset will be reduced to some extent.
This input data is used when WRFILE and/or WLFILE consists of measured data, and the axle was bending during the measurements due to applied vertical load. How much the measured axle was bending is controlled in the input data R_MEASURED_AXLE and FZHR_MEASURED_AXLE.
More input data related to the bending of the axle of the measured wheelset are: CHI_MEASURED_AXLE, R_MEASURED_AXLE, BO_MEASURED_AXLE, BL_MEASURED_AXLE and FZHR_MEASURED_AXLE.
Declared= Real*4    Default= 0.

CONN_BEG_RIGHT
Lateral start displacement dy, when creating the wheel/rail interconnection diagram. For the right wheel and rail.
Declared= Real*4    Default= -987.(which stands for auto)

CONN_BEG_LEFT
Lateral start displacement dy, when creating the wheel/rail interconnection diagram. For the left wheel and rail.
Declared= Real*4    Default= -987.(which stands for auto)

CONN_END_RIGHT
Lateral start displacement dy, when creating the wheel/rail interconnection diagram. For the right wheel and rail.
Declared= Real*4    Default= -987.(which stands for auto)

CONN_END_LEFT
Lateral start displacement dy, when creating the wheel/rail interconnection diagram. For the left wheel and rail.
Declared= Real*4    Default= -987.(which stands for auto)

CONN_FILE
Command CONN_FILE gives four tables:
  1. Contact point connections wheels, lateral coordinates:
  2. Contact point connections wheels, vertical coordinates:
  3. Contact point connections rails, lateral coordinates:
  4. Contact point connections rails, vertical coordinates:
The value 1.00001E+05 in the columns means that the point is undefined.
The output is canceled if CONN_FILE= '  ' (Space)
Declared= Character*132    Default= '  '

CONN_START
Max negative displacement of wheelset, when creating the wheel/rail-geometry functions.
Declared= Real*4    Default= -190.

CONN_STOP
Max positive displacement of wheelset, when creating the wheel/rail-geometry functions.
Declared= Real*4    Default= 190.

DYEFFCON
Vector containing wheelset lateral amplitudes for which wheelset conicities shall be calculated. The results for the different lateral amplitudes are presented in the diagrams: LAMBDA, KAPPA, EPS and RollAC.
Declared= Real*4(100)    Default= 1, 2, 3

E_MODULUS
The combined modulus of elasticity in wheel and rail.
Declared= Real*4    Default= 2.e11

FLANGE_THICK_HEIGHT
Height above nominal running circle, where the thickness of the flange shall be measured. The value of the flange thickness is shown in standard output and in diagram Wheel/rail interconnections.
Declared= Real*4    Default= 10.

FZHR
Vertical load used for smoothening the surface of the wheel and the rail, and the bending of the axle causing a rotation and a translation of the wheel profile.
Declared= Real*4    Default= 70.e3

FZHR_MEASURED_AXLE
Vertical wheel load under which the wheelset was subjected to when the measurements of the wheel profiles WRFILE, WLFILE took place.
This input data is used when WRFILE and/or WLFILE consists of measured data, and the axle was bending during the measurements due to applied vertical load.
More input data related to the bending of the axle of the measured wheelset are: CHI_MEASURED_AXLE, R_MEASURED_AXLE, BO_MEASURED_AXLE, BL_MEASURED_AXLE and FZHR_MEASURED_AXLE.
Declared= Real*4    Default= 70.e3

FI_AXLE_FILE
Output file for the rolling motion of the axle.
When the axle translates laterally over the track, the axle performs a rotation around the X-axle. To file FI_AXLE_FILE is the rotation angle in [rad] v.s. lateral displacement [mm], printed to a ASCII-file consisting of two columns. The output is canceled if FI_AXLE_FILE= '  ' (Space)
Declared= Character*132    Default= '  '

FITEPS
Permitted maximum error between calculated points and regression curve adapted according to the min square value method.
Declared= Real*4    Default= .25e-2

GAUGE_EFFCON
Vector containing different gauges for which wheelset conicities shall be calculated.
The results for the different gauges are presented in the following diagrams: RR-RL, UIC519, LAMBDA, KAPPA, EPS and RollAC. All other diagrams produced by KPF are presented at nominal track gauge.
Declared= Real*4(20)    Default= 1431, 1435, 1439 [mm]

GAUGE_MEAS_INTERVAL
Vertical interval relative to Top of Rail when finding the Gauge Measuring Point. This point is a point on the rail that is closest to the track center line, and is located on the surface of the rail between Top of Rail and GAUGE_MEAS_INTERVAL beneath.
Declared= Real*4    Default= 14. [mm]

GPDAT_FILE
Create .gp-file for later animation in program GPLOT.
The following runf_model can be used: runf/kpfr_animation.tsimf
If GPDAT_FILE is set equal to '  ' (space), the writing of the .gp-file will be suppressed.
If GPDAT_FILE is set equal to 'auto', the name of the .gp-file will be automatically generated.
Declared= Character*132    Default= 'auto'

HFIL
The input data file for the wheel profile.
If the wheel- and rail- profile is defined in HFIL and RFIL, the two wheels of the wheelset is considered to be equal and only one set of wheel-rail geometry functions is written to the output file KPFR_FILE. If the wheel profiles are defined in WRFILE and WLFILE, two sets of wheel-rail geometry functions will be written to the output file, one for the right wheel and one for the left wheel. Lines in HFIL beginning with the # character are treated as comments.
For more information please look for file extension .wheel.
Declared= Character*132    Default= '  ' (Space)

I2KP
Flag, governing the calculation of two point contact.
The I2KP-variable can be given the following values:
0 = Calculation of wheel-rail geometry functions with one-point contact approximation.
1 = Calculation of wheel-rail geometry functions with two-point contact approximation. In this mode the border between tread and flange must be given in the input data variable YH2CP.
2 = Calculation of wheel-rail geometry functions with two-point simultaneous contact approximation. Program KPF automatically detects the different contact surfaces. In this mode the input data variable Y_CP1 controls for which wheelset lateral shift tread point contact should be present.
3 = Calculation of wheel-rail geometry functions with three-point simultaneous contact approximation. Program KPF automatically detects the different contact surfaces. In this mode the input data variable Y_CP1 controls for which wheelset lateral shift cp1-point contact should be present.
Declared= Integer*4    Default= 3

IDENT1, IDENT2, IDENT3
Three header lines that are written to the output list and to plots.
Declared= Character*80    Default= Blank

IBORDER
Flag, indicating how the boundaries on rail- and wheel profiles shall be treated. IBORDER can be given the following values:
0 = Yields that the entire contact pressure must be within the boundaries that are given by the profiles. When the contact pressure in the contact surface reaches a boundary, the calculation is interrupted, and thereby the wheel-rail geometry function.
1 = Permits the contact pressure to reach the inner edge of the rail. The boundary that interrupts the wheel-rail geometry function will be governed by the boundary of the wheel flange (when the flange hits the inner edge).
Declared= Integer*4    Default= 0

ILASER
Format for graphic output. Valid values for ILASER are intro_common_commands.html#jILASER
Declared= Integer*4    Default= 9

INTP_STEP
Lateral steps when moving the axle over the track.
The wheel-rail geometry functions are generated by moving the axle over the track in small steps. The lateral steps should be small, in order to make it possible for program KPF to decide if there is one or multiple point contact.
Declared= Real*4    Default= 0.02 [mm]

IPLOT_GRID
Flag controlling the plotting of grid patterns.
–1 = Suppresses plotting a grid pattern.
0 = Plot a frame around the diagram.
>0 = Plots a grid line every 0.5*IPLOT_GRID [cm].
Declared= Integer*4    Default= 1

IPLOT_LTHICK
Setting the line thickness in the output diagrams.
Declared= Integer*4    Default= 1

IPLOT_SIGMA
Flag controlling the plotting of the size of the contact point and the maximum contact pressure.
When calculating the size of the contact point and the maximum contact pressure, the radius of wheel is read from the input data parameter R_WHEEL and the contact force is read from the input data parameter FZHR . However these diagrams are not transfered to the CALC-program. During analysis in program CALC the wheel radius ro_ and the actual wheel/rail contact force will be used when evaluating the actual size and contact pressure in the contact area. These three diagrams generated by IPLOT_SIGMA shuld only be considered as extra information.
IPLOT_SIGMA can be given the following values:
0 = Suppresses plotting of the above described diagrams.
1 = Plots the size of the contact area and maximum contact pressure.
Declared= Integer*4    Default= 1

IPLOT3
Flag controlling the plotting of the wheel/rail-connection diagrams and the contact pressure diagrams. IPLOT3 can be given the following values:
0 = Suppresses plotting of the above described diagrams.
1 = Plot only the wheel/rail-connection diagrams.
2 = Plot the wheel/rail-connection diagram and a contour plot of the contact pressure.
3 = Plot the wheel/rail-connection diagram and a number of small diagrams showing the wheel/rail-contact pressure v.s. lateral displacement of the wheelset.
4 = Plot the wheel/rail-connection diagram and a contour plot and small diagrams showing the wheel/rail-contact pressure.
Declared= Integer*4    Default= 2

IPLOTG
Flag controlling the plotting of wheel and rail geometries. IPLOTG can be given the following values:
0 = Suppresses plotting of the wheel and rail geometries.
1 = Plots the wheel and rail geometries.
Declared= Integer*4    Default= 1

IPLOTK
Flag controlling the plotting of wheel/rail-geometry functions. IPLOTK can be given the following values:
0 = Suppresses plotting of wheel/rail-geometry functions.
1 = Plots all wheel/rail-geometry functions.
2 = Plots only the conicity diagram LAMBDA.
Declared= Integer*4    Default= 1

IROLL
Flag governing if the roll motion of the wheelset shall be considered or not. The roll motion of the axle can be written into result file FI_AXLE_FILE. IROLL can be given the following values:
0 = The roll motion of the wheelset is not considered.
1 = The roll motion of the wheelset is considered.
Declared= Integer*4    Default= 1

IZERO
Flag that tells if the wheel-rail geometry functions DRFN and ZFN shall be forced to be zero when the lateral displacement between wheel and rail is zero. IZERO can be given the following values:
0 = DRFN and ZFN intercept the origo when DRFN or ZFN are plotted toward the lateral displacement between wheel and rail.
1 = No impact on the curves. The wheel radius and the wheel lift are plotted with the values that wheel and rail data provide.
Declared= Integer*4    Default= 0

KAPPA_FILE
Coefficient of contact angle difference KAPPA.
The same information which are printed in the header of diagram KAPPA can also be written to an ASCII-file. Gauges for which calculations are carried out is explained under GAUGE_EFFCON. Lateral amplitudes for the wheelset are defined under DYEFFCON. The output is canceled if KAPPA_FILE= '  ' (Space)
Declared= Character*132    Default= '  '

KPFR_FILE
Output file for the generated wheel-rail geometry functions.
Declared= Character*132    Default= '$ident.kpfr'

KPFR_TYPE
Type of kpfr-file to be written.
Until release.0703 only two simultaneous contact areas per wheel was possible to take into consideration. In newer releases of GENSYS three or more simultaneous contact areas are possible. In previous releases of GENSYS the contact area was named cpt for contact point tread and cpf for contact point flange. In rel.0803 and newer releases of GENSYS the contact areas are denoted cp1, cp2 and cp3 The main calculation program CALC in GENSYS handle several contact areas, however current release of KPF only generates three simultaneous contact areas per wheel.
For backward compatibility reasons the user can choose the names of the wheel/rail-geometry functions. KPFR_TYPE can be given the following two values:
cpt The wheel/rail-geom functions are named: cpt and cpf.
cp1 The wheel/rail-geom functions are named: cp1, cp2 and cp3.
Declared= Character*4    Default= 'cp1'

LAMBDA_FILE
Conicity table output file. The same information which are printed in the header of diagram LAMBDA can also be written to an ASCII-file.
Gauges for which calculations are carried out is explained under GAUGE_EFFCON.
Lateral amplitudes for the wheelset are defined under DYEFFCON.
The output is canceled if LAMBDA_FILE= '  ' (Space)
Declared= Character*132    Default= '  '

ORIGIN_TO_GAUGE
The distance between the Gauge Measuring Point and the origin of the rail profile.
More input data related to the axle and rail geometry are: BO and ORIGIN_TO_IWHEEL.
Declared= Real*4    Default= 32.5 [mm]

ORIGIN_TO_IWHEEL
The distance from the inside of the wheel to the Nominal Running Circle of the wheel.
More input data related to the axle and rail geometry are: BO and ORIGIN_TO_GAUGE.
Declared= Real*4    Default= 70 [mm]

POISSON
The combined Poisson's ratio in wheel and rail.
Declared= Real*4    Default= 0.3

POSTFI
Graphical output file to be sent to the printer.
The default extension of the file depends on chosen graphical format, in command ILASER.
Declared= Character*80    Default= '$ident.ext'

PRE_CONTACT_P
Wheelset angle of attack written to file pre_contactf.
If this command is defined in input data, program kpf will generate an input data file for program PRE_CONTACT.
N.B. The left wheel will be analyzed in pre_contact. For a stiff bogie with flange wear, angle PRE_CONTACT_P should be negative.
Declared= Real*4    Default= 0. [mRad]

PRE_CONTACT_Y
Wheelset lateral displacement written to file pre_contactf.
If this command is defined in input data, program kpf will generate an input data file for program PRE_CONTACT. Command PRE_CONTACT_Y must be an even multiple of INTP_STEP.
N.B. The left wheel will be analyzed in pre_contact, if you are interested in flange contact conditions PRE_CONTACT_Y should be negative.
Declared= Real*4    Default= 0. [mm]

R_AXLE
Defines the radius of the axle of the wheelset.
This input data is used for calculating the static bending of the axle due to static vertical load applied in the journals. The bending of the axle tilts the wheels, causing a rotation av a translation of the wheel profile. More input data related to the bending of the axle are: BO, BL_AXLE and R_WHEEL. The bending of the axle of the wheelset is only considered if R_AXLE is given a value less than 1.e20.
Declared= Real*4    Default= 1.e30 [m]

R_LAT_FILE
Output file for the lateral radiuses in the contact point.
The output is written into an ASCII-file, and consists of the following columns:
  1. Lateral displacement of wheelset
  2. Lateral radius, contact area #1, left wheel
  3. Lateral radius, contact area #2, left wheel
  4. Lateral radius, contact area #3, left wheel
  5. Lateral radius, contact area #1, left rail
  6. Lateral radius, contact area #2, left rail
  7. Lateral radius, contact area #3, left rail
  8. Lateral radius, contact area #1, right wheel
  9. Lateral radius, contact area #2, right wheel
  10. Lateral radius, contact area #3, right wheel
  11. Lateral radius, contact area #1, right rail
  12. Lateral radius, contact area #2, right rail
  13. Lateral radius, contact area #3, right rail
The output is canceled if R_LAT_FILE= '  ' (Space)
Declared= Character*132    Default= '  '

R_MEASURED_AXLE
Defines the radius of the axle on the wheelset on which the actual wheel profiles was measured on.
This input data is used for calculating the static bending of the axle on which the wheel profiles WRFILE and WLFILE was measured on. Program KPF will remove the rotation of the wheel profiles due to that the wheelset was subjected to a vertical load during the measurements of the wheel profiles.
This input data is used when WRFILE and/or WLFILE consists of measured data, and the axle was bending during the measurements due to applied vertical load.
More input data related to the bending of the axle of the measured wheelset are: BO_MEASURED_AXLE, BL_MEASURED_AXLE and FZHR_MEASURED_AXLE. The bending of the axle of the measured wheelset is only considered if R_MEASURED_AXLE is given a value less than 1.e20.
Declared= Real*4    Default= 1.e30 [m]

R_WHEEL
Defines the nominal radius of the wheels on the wheelset.
The nominal radius of the wheels is the radius measured on the Nominal Running Circle of the wheels.
Declared= Real*4    Default= 0.5 [m]

RFIL
Input data file containing the description of the rail profile.
If the wheel- and rail- profile is defined in HFIL and RFIL, the two wheels of the wheelset is considered to be equal and only one set of wheel-rail geometry functions is written to the output file KPFR_FILE. If the rail profiles are defined in RRFILE and RLFILE, two sets of wheel-rail geometry functions will be written to the output file, one for the right wheel and one for the left wheel. Lines in RFIL beginning with the # character are treated as comments.
For more information please look for file extension .rail.
Declared= Character*132    Default= Blank

RLFILE
The input data file for the left rail profile. If RLFILE not is defined, RFIL will be used.
Lines in RLFILE beginning with the # character are treated as comments.
For more information please look at intro_file_ext.html#j*.rail or under Rail profile input data.
Declared= Character*132    Default= RFIL

RRFILE
The input data file for the right rail profile. If RRFILE not is defined, RFIL will be used.
Lines in RRFILE beginning with the # character are treated as comments.
For more information please look at intro_file_ext.html#j*.rail or under Rail profile input data.
Declared= Character*132    Default= RFIL

RR_RL_FILE
Output file for the rolling radius differences.
The output is written into an ASCII-file, and consists of the following columns:
1)    Lateral displacement of wheelset
2)    Rolling radius right wheel minus rolling radius left wheel at nominal gauge
The output is canceled if RR_RL_FILE= '  ' (Space)
Declared= Character*132    Default= '  '

RSI_FILE
Max rolling radius difference without flange contact.
The same information which are printed in the header of diagramRR-RL can also be written to an ASCII-file. Gauges for which calculations are carried out is explained under GAUGE_EFFCON. The output is canceled if RSI_FILE= '  ' (Space)
Declared= Character*132    Default= '  '

SIGMA_FILE
Output file for maximum contact stress in equivalent contact ellipses, according to Hertz.
The output is written into an ASCII-file, and consists of the following columns:
1)    Lateral displacement of wheelset
2)    Max. contact stress, contact area #1, left wheel
3)    Max. contact stress, contact area #2, left wheel
4)    Max. contact stress, contact area #3, left wheel
5)    Max. contact stress, contact area #1, right wheel
6)    Max. contact stress, contact area #2, right wheel
7)    Max. contact stress, contact area #3, right wheel
The output is canceled if SIGMA_FILE= '  ' (Space)
Declared= Character*132    Default= '  '

SYMBOLS_CP (1:3)
Symbols to be plotted for each lateral shift of the wheelset. Three values are given under command SYMBOLS_CP, one value for each contact area zone. Valid values for SYMBOLS_CP are described here: intro_common_commands.html#jDOT_TYPE
To only draw the curve, and supress the symbols, set SYMBOLS_CP= 0 0 0
Declared= Integer*4(3)    Default= 401 601 801

SYMBOLS_CP_KPFR (1:3)
Symbols to be plotted at each break point of the wheel-rail geometry function. Three values are given under command SYMBOLS_CP_KPFR, one value for each contact area zone. Valid values for SYMBOLS_CP_KPFR are described here: intro_common_commands.html#jDOT_TYPE
To supress the symbols, set SYMBOLS_CP_KPFR= 0 0 0
Declared= Integer*4(3)    Default= 403 603 803

UIC519_FILE
UIC519/EN15302 conicity table output file. The same information which are printed in the header of diagramUIC519 can also be written to an ASCII-file. Gauges for which calculations are carried out is explained under GAUGE_EFFCON. Lateral amplitudes for the wheelset are defined under DYEFFCON. The output is canceled if UIC519_FILE= '  ' (Space)
Declared= Character*132    Default= '  '

WPROF_LAT_SHIFT
Shifts both wheel profiles laterally on the axle.
A positive value moves the wheels further out. More input data related to the axle and rail geometry are: BO and ORIGIN_TO_IWHEEL.
Declared= Real*4    Default= 0 [mm]

WLFILE
The input data file for the left wheel profile. If WLFILE not is defined, HFIL will be used.
Lines in WLFILE beginning with the # character are treated as comments.
For more information please look at intro_file_ext.html#j*.wheel or under Wheel profile input data.
Declared= Character*132    Default= HFIL

WRFILE
The input data file for the right wheel profile. If WRFILE not is defined, HFIL will be used.
Lines in WRFILE beginning with the # character are treated as comments.
For more information please look at intro_file_ext.html#j*.wheel or under Wheel profile input data.
Declared= Character*132    Default= HFIL

X_MID
Sets the value of the X-axis at the midpoint of the axis, for all wheel-rail geometry functions.
Declared= Real*4    Default= 0.

XINT/CM
Sets the scale factor in X-direction, for all wheel-rail geometry functions.
Declared= Real*4    Default= 2.

Y_CP1
Lateral shift of wheelset, where cp1 shall be the active contact point. Command Y_CP1 requires two values, first value for left and second value for right side.
N.B. The value of Y_CP1 for the left side shall be given with opposite/negative sign.
Declared= Real*4    Default= -18,-18

YH2CP
Lateral coordinate on the wheel which separates the tread contact surface from the flange contact surface. If one argument is given after command YH2CP the same separation coordinate will be used for both wheels. If two arguments are gives after command YH2CP, the first argument defines the separation coordinate on the left wheel and the second argument defines the separation coordinate on the right wheel. Command YH2CP will only be read if input data variable I2KP has been set equal to 1.
Declared= Real*4(2)    Default= 70., 70.

EOF
Command which terminates further input data reading.



Error messages

More wheel and/or rail coordinates needed
This message indicates that the part of the wheel and/or rail that have been digitized is to small, making the area of penetration to cover the entire range that have been given. This makes it impossible for the program to calculate any curves. To ensure that there is information enough available about the profiles, the program demands that the outermost points on the wheel or rail not are parts of the penetration area. If so would be allowed there could be more point further out that also should be taken into account.


RYZH has been smaller then RYZR at some occasion and has at that occasion been set to RYZR+1 (i.e. two point contact)
It may happen that the digitalization of the profiles becomes slightly rough, which could lead to a higher curvature of the wheel profile becomes larger then the curvature of the rail profile at the point of contact. In reality, the lateral curvature of the rail is always larger then the wheel curvature, at least in the contact area. That is the reason why the program assumes that wheel and rail curvatures are very close to each other around the contact point.




Output data

The output data of the program consists of plots and a result file. The plots show the wheel-rail geometry functions for all lateral displacements between wheel and rail. Wheel-rail geometry functions are stored in file KPFR_FILE.

Generated plots:




Equivalent Conicity

The standards UIC 519 and EN 15302 defines equivalent conicity from the length of the sinusoidal motion:

kpf_plottar/UIC519_method.png



From Klingel's Formula the conicity can be obtained:

kpf_plottar/Klingels_Formula.png


kpf_plottar/./Klingels_Formula_html_m13c61f2d.gif

Where:
λ =Cone angle
b0 =Lateral semi-distance between contact points (Normal Gauge: .75[m])
r0 =Nominal Wheel Radius
L =Wave length


The standards UIC 519 and EN 15302 both contains appendixes with verification examples. Comparisons between KPF and the standards are shown below.

On the Y-axis is the equivalent conicity.
On the X-axis is the amplitude of the wheelset.

The small green crosses marks the results calculated by program KPF.
The read line marks the results from the standards.
The green line marks the upper tolerance
The blue line marks the lower tolerance




WheelA RailA

kpf_UIC519_WheelA_RailA.png



WheelB RailA

kpf_UIC519_WheelB_RailA.png



WheelH RailA

kpf_UIC519_WheelH_RailA.png



WheelI RailA

kpf_UIC519_WheelI_RailA.png



WheelA(-2 mm on left wheel diameter) RailA

kpf_UIC519_WheelA-2_RailA.png



WheelB(-2 mm on left wheel diameter) RailA

kpf_UIC519_WheelB-2_RailA.png



WheelH(-2 mm on left wheel diameter) RailA

kpf_UIC519_WheelH-2_RailA.png



WheelI(-2 mm on left wheel diameter) RailA

kpf_UIC519_WheelI-2_RailA.png



(Right Wheel A - Left Wheel B) RailA

kpf_UIC519_WheelAB_RailA.png



As can be seen above, all results are well within the tolerance limits.




Radial Steering Index

The radial steering index or RSI is defined as:

kpf/RSI_definition.png
Where: RE = is the smallest possible curve radius for which it is possible for the wheelset to steer without flange contact.
  R = is the actual curve radius

When qE ≤ 1, radial steering is possible

When qE > 1, radial steering is not possible

RE can be derived from the following inequality:

kpf/RSI_RE_inequality_1.png
Where: router = Rolling radius of outer wheel
  rinner = Rolling radius of inner wheel
  R = Curve radius
  e = Lateral distance between the Nominal Running Circles. (For normal gauge e= 1.5m)

By removing everything except first order effects the inequality can be rewritten as:

kpf/RSI_RE_inequality_2.png

Variable RE can be defined as:

kpf/RSI_RE_inequality_3.png
Where: r0 = Nominal rolling radius of the wheel
  e = Lateral distance between the Nominal Running Circles. (For normal gauge e= 1.5m)
  Δ rE = The rolling radius difference to be found in diagram RR-RL

The above is valid only for a free wheelset rolling along the track. If the wheelset is mounted in a bogie, considerations must be taken in how much the bogie allow the wheelset to steer. To calculate minimum steering curve radius when mounted in a bogie, see lubrication formula




Animate the wheel/rail interface in program GPLOT

Program KPF also writes an output file in GPdat-format. This file can be used to animate the motion of the wheelset when it translates over the track.
Following runf-model of the wheelset can be used for the animation:


##
##
##      Headlines
##      ==========================================================
  head 2 "Single axle modeled with coupling creep_lookuptable_1; Speed=$Vo"

# idebug= 1      # If idebug>0 a memory dump will be writen to file "idebug_file"
# idebug_file= "calc.out"

##
##      Define variables used in the wheel-rail coupling substructure
##      =============================================================
# func const    vkmh=  160          # The initial speed of the vehicle in km/h
# func div_init Vo  = vkmh 3.6      # The initial speed of the vehicle in km/h
  func const    Vo  =  10.
  func const    bo  =  0.75         # Lateral semi-distance between the nominal rolling circles of the wheels

  func const sstart_1= -10.5        # start position vehicle #1
  func const sstart_2= -44          # start position vehicle #2
  func const sstart_3= -68          # start position vehicle #3

  func const     mu_ =  0.5         # Coefficient of friction between wheel and rail

##
##      Define wheel-rail geometry functions
##      ==========================================================
  insert file  $genkpf/S1002t32.5_uic60i40.kpfr
  in_substruct S1002t32.5_uic60i40 [ " " ]      # All wheels in the vehicle
# insert file  $genkpf/cylindric.kpfr
# in_substruct kpf_cylindric [ " " ]            # All wheels in the vehicle
# insert file  $genkpf/kpf_rkona.kpfr
# in_substruct kpf_rkona [ 1 .1 ]

##
##      Pre- & Post- Processing
##      ==========================================================
   if_then_char_init  CalcType .eq. TSIM  .or.
                      CalcType .eq. MODAL
#   pre_process=  'sed s!runf/Master.runf!$CURRENT_FILE! npickf/Master.npickf > npickf/$IDENT.npickf'
#   pre_process=  'npick npickf/$IDENT.npickf'
#   pre_process=  'quasi $CURRENT_FILE'
#   post_process= 'mplot mplotf/Tsim_Safe_OneIdent.mplotf $IDENT'
#   post_process= 'mplot mplotf/critSpeed.mplotf $IDENT'
#   post_process= 'mgv   diags/$IDENT.ps'
   endif

##
##      Define designed track geometry
##      ==========================================================
  func char ctrack_design= Tangent_Track
# func char ctrack_design= Curve_R200_h150_t120
# insert file track/trc_design.ins

  func intpl_r ro_trac_design -100 0.  0 0.   #20. .01    200 .01
  func intpl_r f_trac_design  -100 0.  0 0.   #20. .02    200 .02
  func intpl_r z_trac_design  -100 0.  0 0.   #40. .01    200 .01

##
##      Define track irregularities
##      ==========================================================
  func char ctrack_irreg= Ideal_track
# func char ctrack_irreg Vertdip_sharp_L20_A10
# func char ctrack_irreg= TwistKink.001
# insert file track/trc_irreg.ins

 if_then_char_init ctrack_irreg .eq. Ideal_track
  func const YMtrac 0.001000    # Multiplying factor for lateral irregularities, from mm to m
  func const ZMtrac 0.001000    # Multiplying factor for vertical irregularities, from mm to m
  func const GMtrac 0.001000    # Multiplying factor for gauge irregularities, from mm to m
  func const CMtrac 0.000667    # Multiplying factor for cant irregularities, from mm to rad
  func const Xtrac_start=   0.
  func const Xtrac_stop=  500.
  func intpl_track_irr2 Xtrac_start Xtrac_stop Ideal_track 1435.
 endif

##
##      Modify track gauge
##      ==========================================================
## The average gauge of the track can be modified in two ways:
##
## 1) Automatically by defining the gauge in variable track_width
#  func const track_width= 1435.
#  func mean_r2_init  slask gauge_average spv_trac  Xtrac_start Xtrac_stop
#  func print06_char_init ' '
#  func print06_init gauge_average
#  func operp_init   gauge_dev= 0.001 * ( track_width - 1435. )
##
## 2) Manually by defining the variables gauge_average and gauge_dev
##
    func const gauge_average=1435. # Set the average gauge of the track
 #  func const gauge_dev_=-0.004    # -4 mm narrower track
    func const gauge_dev_= 0.000    #  Do not change the gauge of the track
 #  func const gauge_dev_= 0.004    #  4 mm wider track

##
##      Insertion of standard commands 
##      ==========================================================
  fresp_param  Fourier_CG1 1.e-4  fstart= .05  fstop= 20.   fstep= -1.04
  modal_param  Schur_fact1 1.e-4
  quasi_param  Damped_Tens 1.e-4  1. 20 2.
  tsim_param   heun_u           tstart= .0   tstop= 4.  tstep= 0.001  tout= 0.005
##
  s_var gpdat_r1		# Create a gp-file for animation in gplot
#
  insert file $gensys/calc/insert_files/save_axl1.ins

##
##      Properties
##      ==========================================================
##
  func const acb=    8.0    # half bogie pivot distance (longitudinal)
  func const aba=    1.5    # half wheelset distance within a bogie (long.)
## Carbody (c)
  func const mc=   52000    # mass
## Bogie frames (b)
  func const mb=   10000    # mass
## Wheelsets (w)
  func const ro_=   0.50    # centre of gravity pos., vert. (wheel radius)
  func const mw=    2000    # mass
  func const Jfw=   1200    # moment of inertia, roll
  func const Jkw=    200    # moment of inertia, pitch
  func const Jpw=   1200    # moment of inertia, yaw
##
## Track pieces (t)
  func const mt  1000        # mass
  func const Jft  500        # mass

##
##  Primary suspension
##  ----------------------------------------------------------------
## Primary springs (kzba)
  func const bkzba=   1.0   # spring position, lateral
  func const hkzba=  0.43   # spring position, vertical (for lateral stif.)
##
  func operp_init kzbap.F0= accel.z * ( mc / 8 + mb / 4 ) # Nominal vertical load
  func print06_init kzbap.F0
  coupl p_lin kxbap_    0.0      20e6   # stiffness, longitudinal
  coupl p_lin kybap_    0.0      20e6   # stiffness, lateral
# coupl p_lin kzbap_ -kzbap.F0 1200e3   # stiffness, vertical
  coupl p_lin kzbap_ -kzbap.F0    0e3   # stiffness, vertical
  coupl p_lin cxbap_    0.0       2e3   # viscous damping in spring, longitudinal
  coupl p_lin cybap_    0.0      20e3   # viscous damping in spring, lateral
##
## Lateral bumpstops (kybas, symmetric)
  func const hkybas=   0.4              # bumpstop position, vertical
  coupl p_nlin_s kybasp_ 0.             # bumpstop non-linear stiffness
                 0.025 0.0  0.050 1e6
##
## Primary dampers (czba, hydraulic, vertical)
  func const bczba=  1.0        # damper position, lateral
  func const hczbab= 1.0        # damper position, vertical in bogie
  func const hczbaa= 0.5        # damper position, vertical in wheelset
  coupl p_lin czbap_ 0.0 30e3   # viscous damping

##
##  Wheel-rail contact 
##  Linearized Hertzian stiffness perpendicular to the contact surface
##  ----------------------------------------------------------------
 func operp_init knwr.F0_= ( mc + 2 * mb + 4 * mw ) * accel.z / 8.   # Nominal load
 func print06_init knwr.F0_

 func  const pknwr= 1
 func  intpl_r knwr_     # Stiffness Tread-Rail all wheels
 -1.57     600e6
  0.       600e6
  1.57     600e6
 func  intpl_r cnwr_     # Damping Tread-Rail all wheels
 -1.57     600e3
  0.       600e3
  1.57     600e3
 func  intpl_r knfr_     # Stiffness Flange-Rail all wheels
 -1.57     600e6
  0.       600e6
  1.57     600e6
 func  intpl_r cnfr_     # Damping Flange-Rail all wheels
 -1.57     600e3
  0.       600e3
  1.57     600e3
 func const_block
  kyrt_   =  44.3e6      # Compensation for 600e6 in rail-
  kzrt_   = 232e6        # head
  kzrt.F0_= knwr.F0_
  cyrt_   = 416025
  czrt_   = 416025 #250e3
 end_block

##
##  Track flexibility
##  ----------------------------------------------------------------
  coupl p_lin  kytgp_  0.0   30e6       # Stiffness between track and ground
  coupl p_lin  cytgp_  0.0  175e3       # Damping between track and ground
  coupl p_lin  kztgp_ -knwr.F0_  180e6  # Stiffness between track and ground
  coupl p_lin  cztgp_  0.0  250e3       # Damping between track and ground


##
##      Constraints
##      ==========================================================
  substruct constr_tot [        
  constr fix_rigid_1 $1 x 0.    
  constr fix_rigid_1 $1 y 0.    
  constr fix_rigid_1 $1 z 0.    
  constr fix_rigid_1 $1 f 0.    
  constr fix_rigid_1 $1 k 0.    
  constr fix_rigid_1 $1 p 0.    
   ]

##
##      Model
##      ==========================================================
##
 substruct vhe_model_1 [   # Arg. $1= Number of the vehicle                                     
##                                                                                              
##                                                                                              
## Moving local coordinate systems                                                              
## ===============================                                                              
##                                                                                              
## lsys e_abs_bendrf  l_name   speed      start_pos   curvature      cant          vert_lift    
## ------------------------------------------------------------------------------------------   
# func  intpl_r       Speed_field  insert free_form '(a,a)' track/Speed.txt  # Vo speed in m/s  
# lsys  e_abs_bendrf  esys_$1 Speed_field sstart_1   ro_trac_design f_trac_design z_trac_design 
  lsys  e_abs_bendrf  esys_$1    Vo       sstart_$1  ro_trac_design f_trac_design z_trac_design 
                                                     4 4            4 4           4 4           
##                                                                                              
## lsys l_local  l_name    esys       a     b     h                                             
## -------------------------------------------------                                            
  lsys  l_local  lsc_$1    esys_$1   0.0   0.0   0.0                                            
  lsys  l_local  lsb_$11   lsc_$1    acb   0.0   0.0                                            
  lsys  l_local  lsb_$12   lsc_$1   -acb   0.0   0.0                                            
  lsys  l_local  lsa_$111  lsb_$11   aba   0.0   0.0                                            
  lsys  l_local  lsa_$112  lsb_$11  -aba   0.0   0.0                                            
  lsys  l_local  lsa_$121  lsb_$12   aba   0.0   0.0                                            
  lsys  l_local  lsa_$122  lsb_$12  -aba   0.0   0.0                                            
#                                                                                               
  s_var sngl  lsc_$1.b  s_var sngl  lsc_$1.c  s_var sngl  lsc_$1.h                              
  s_var sngl  lsc_$1.x  s_var sngl  lsc_$1.y  s_var sngl  lsc_$1.z                              
  s_var sngl  lsc_$1.f  s_var sngl  lsc_$1.k  s_var sngl  lsc_$1.p                              
  s_var sngl  lsc_$1.vx s_var sngl  lsc_$1.vy s_var sngl  lsc_$1.vz                             
  s_var sngl  lsc_$1.vf s_var sngl  lsc_$1.vk s_var sngl  lsc_$1.vp                             
  s_var sngl  lsc_$1.ax s_var sngl  lsc_$1.ay s_var sngl  lsc_$1.az                             
  s_var sngl  lsc_$1.af s_var sngl  lsc_$1.ak s_var sngl  lsc_$1.ap                             
#                                                                                               
  s_var sngl  lsb_$11.b  s_var sngl  lsb_$11.c  s_var sngl  lsb_$11.h                           
  s_var sngl  lsb_$11.x  s_var sngl  lsb_$11.y  s_var sngl  lsb_$11.z                           
  s_var sngl  lsb_$11.f  s_var sngl  lsb_$11.k  s_var sngl  lsb_$11.p                           
  s_var sngl  lsb_$11.vx s_var sngl  lsb_$11.vy s_var sngl  lsb_$11.vz                          
  s_var sngl  lsb_$11.vf s_var sngl  lsb_$11.vk s_var sngl  lsb_$11.vp                          
  s_var sngl  lsb_$11.ax s_var sngl  lsb_$11.ay s_var sngl  lsb_$11.az                          
  s_var sngl  lsb_$11.af s_var sngl  lsb_$11.ak s_var sngl  lsb_$11.ap                          
#                                                                                               
  s_var sngl  lsa_$111.b  s_var sngl  lsa_$111.c  s_var sngl  lsa_$111.h                        
  s_var sngl  lsa_$111.x  s_var sngl  lsa_$111.y  s_var sngl  lsa_$111.z                        
  s_var sngl  lsa_$111.f  s_var sngl  lsa_$111.k  s_var sngl  lsa_$111.p                        
  s_var sngl  lsa_$111.vx s_var sngl  lsa_$111.vy s_var sngl  lsa_$111.vz                       
  s_var sngl  lsa_$111.vf s_var sngl  lsa_$111.vk s_var sngl  lsa_$111.vp                       
  s_var sngl  lsa_$111.ax s_var sngl  lsa_$111.ay s_var sngl  lsa_$111.az                       
  s_var sngl  lsa_$111.af s_var sngl  lsa_$111.ak s_var sngl  lsa_$111.ap                       

##                                                                                              
## Vehicle and track masses                                                                     
## ========================                                                                     
##                                                                                              
## mass m_rigid_6  m_name    lsys     acg  bcg  hcg   m   m   m   Jf  Jk  Jp                    
## --------------------------------------------------------------------------                   
  mass m_rigid_6   axl_$111  lsa_$111 0.0  0.0 -ro_   mw  mw  mw  Jfw Jkw Jpw    # axles        
  mass m_rigid_6f  ral_$111r lsa_$111 0.0  .75  0.0   0.0 mt  mt  Jft 0.0 0.0    # rail-pieces  
  mass m_rigid_6f  ral_$111l lsa_$111 0.0 -.75  0.0   0.0 mt  mt  Jft 0.0 0.0    # rail-pieces  
  mass m_rigid_6f  trc_$111  lsa_$111 0.0  0.0  0.0   0.0 mt  mt  Jft 0.0 0.0    # track-pieces 
# mass fixpoint_6  grd_$1    lsc_$1   0.0  0.0  0.0                              # ground points
  mass fixpoint_6  grd_$11   lsb_$11  0.0  0.0  0.0                                             
  mass fixpoint_6  grd_$111  lsa_$111 0.0  0.0  0.0                                             
#                                                                                               
  func operp  axl_$111r.vz= axl_$111.vz + axl_$111.vf                                           
  func operp  axl_$111l.vz= axl_$111.vz - axl_$111.vf                                           
  s_var sngl  axl_$111r.vz                                                                      
  s_var sngl  axl_$111l.vz                                                                      
#                                                                                               
  s_var sngl  axl_$111.Ax                                                                       
  s_var sngl  axl_$111.Ay                                                                       
  s_var sngl  axl_$111.Az                                                                       
  s_var sngl  axl_$111.Af                                                                       
  s_var sngl  axl_$111.Ak                                                                       
  s_var sngl  axl_$111.Ap                                                                       
#                                                                                               
  constr fix_free_1  axl_$111.k=   0.                                                           
  initval set_var    axl_$111.vk -Vo/ro_                                                        
#                                                                                               
  in_substruct constr_tot [ trc_$111  ]                                                         
  in_substruct constr_tot [ ral_$111r ]                                                         
  in_substruct constr_tot [ ral_$111l ]                                                         

##                                                                                              
## Primary suspension:                                                                          
## ===========================                                                                  
  func  intpl_l b_offset= time 0 0  1. .010   #2. .010 #8 .060                                  
  func  operp   b_offset_r= bkzba # + b_offset                                                  
  func  operp   b_offset_l= bkzba # - b_offset                                                  
  s_var sngl    b_offset                                                                        
  s_var sngl    b_offset_r                                                                      
  s_var sngl    b_offset_l                                                                      
  coupl k       kxba$111r grd_$11  aba                      bkzba -ro_   axl_$111 0.0  bkzba -ro_   kxbap_$111r esys_$1  x
  coupl k       kxba$111l grd_$11  aba                     -bkzba -ro_   axl_$111 0.0 -bkzba -ro_   kxbap_$111l esys_$1  x
  coupl k       kyba$111r grd_$11  aba  b_offset_r     -hkzba axl_$111 0.0  bkzba -hkzba kybap_$111r esys_$1  y
  coupl k       kyba$111l grd_$11  aba -b_offset_l     -hkzba axl_$111 0.0 -bkzba -hkzba kybap_$111l esys_$1  y
  coupl k       kzba$111r grd_$11  aba  bkzba  -ro_  axl_$111 0.0  bkzba  -ro_  kzbap_$111r esys_$1  z
  coupl k       kzba$111l grd_$11  aba -bkzba  -ro_  axl_$111 0.0 -bkzba  -ro_  kzbap_$111l esys_$1  z
#                                                                                               
  s_var sngl kxba$111r.dx  s_var var_0 kxba$111r.vx                                             
  s_var sngl kxba$111l.dx  s_var var_0 kxba$111l.vx                                             
  s_var sngl kxba$111r.dy  s_var var_0 kxba$111r.vy                                             
  s_var sngl kxba$111l.dy  s_var var_0 kxba$111l.vy                                             
  s_var sngl kxba$111r.dz  s_var var_0 kxba$111r.vz                                             
  s_var sngl kxba$111l.dz  s_var var_0 kxba$111l.vz                                             
#                                                                                               
  s_var sngl kyba$111r.dx  s_var var_0 kyba$111r.vx                                             
  s_var sngl kyba$111l.dx  s_var var_0 kyba$111l.vx                                             
  s_var sngl kyba$111r.dy  s_var var_0 kyba$111r.vy                                             
  s_var sngl kyba$111l.dy  s_var var_0 kyba$111l.vy                                             
  s_var sngl kyba$111r.dz  s_var var_0 kyba$111r.vz                                             
  s_var sngl kyba$111l.dz  s_var var_0 kyba$111l.vz                                             
#                                                                                               
  s_var sngl kzba$111r.dx  s_var var_0 kzba$111r.vx                                             
  s_var sngl kzba$111l.dx  s_var var_0 kzba$111l.vx                                             
  s_var sngl kzba$111r.dy  s_var var_0 kzba$111r.vy                                             
  s_var sngl kzba$111l.dy  s_var var_0 kzba$111l.vy                                             
  s_var sngl kzba$111r.dz  s_var var_0 kzba$111r.vz                                             
  s_var sngl kzba$111l.dz  s_var var_0 kzba$111l.vz                                             
#                                                                                               
  s_var sngl  kxba$111r.F2x  s_var sngl  kxba$111r.F2y  s_var sngl  kxba$111r.F2z               
  s_var sngl  kxba$111r.M2f  s_var sngl  kxba$111r.M2k  s_var sngl  kxba$111r.M2p               
  s_var sngl  kxba$111l.F2x  s_var sngl  kxba$111l.F2y  s_var sngl  kxba$111l.F2z               
  s_var sngl  kxba$111l.M2f  s_var sngl  kxba$111l.M2k  s_var sngl  kxba$111l.M2p               
  s_var sngl  kyba$111r.F2x  s_var sngl  kyba$111r.F2y  s_var sngl  kyba$111r.F2z               
  s_var sngl  kyba$111r.M2f  s_var sngl  kyba$111r.M2k  s_var sngl  kyba$111r.M2p               
  s_var sngl  kyba$111l.F2x  s_var sngl  kyba$111l.F2y  s_var sngl  kyba$111l.F2z               
  s_var sngl  kyba$111l.M2f  s_var sngl  kyba$111l.M2k  s_var sngl  kyba$111l.M2p               
  s_var sngl  kzba$111r.F2x  s_var sngl  kzba$111r.F2y  s_var sngl  kzba$111r.F2z               
  s_var sngl  kzba$111r.M2f  s_var sngl  kzba$111r.M2k  s_var sngl  kzba$111r.M2p               
  s_var sngl  kzba$111l.F2x  s_var sngl  kzba$111l.F2y  s_var sngl  kzba$111l.F2z               
  s_var sngl  kzba$111l.M2f  s_var sngl  kzba$111l.M2k  s_var sngl  kzba$111l.M2p               
#                                                                                               
  coupl c      cxba$111r  grd_$11 aba  bkzba  -ro_   axl_$111 0.0  bkzba  -ro_   cxbap_$111r esys_$1  x
  coupl c      cxba$111l  grd_$11 aba -bkzba  -ro_   axl_$111 0.0 -bkzba  -ro_   cxbap_$111l esys_$1  x
  coupl c      cyba$111r  grd_$11 aba  bkzba  -ro_   axl_$111 0.0  bkzba  -ro_   cybap_$111r esys_$1  y
  coupl c      cyba$111l  grd_$11 aba -bkzba  -ro_   axl_$111 0.0 -bkzba  -ro_   cybap_$111l esys_$1  y
  coupl c      czba$111r  grd_$11 aba  bkzba  -ro_   axl_$111 0.0  bkzba  -ro_   czbap_$111r esys_$1  z
  coupl c      czba$111l  grd_$11 aba -bkzba  -ro_   axl_$111 0.0 -bkzba  -ro_   czbap_$111l esys_$1  z
#                                                                                               
  s_var sngl cxba$111r.dx  s_var var_0 cxba$111r.vx                                             
  s_var sngl cxba$111l.dx  s_var var_0 cxba$111l.vx                                             
  s_var sngl cxba$111r.dy  s_var var_0 cxba$111r.vy                                             
  s_var sngl cxba$111l.dy  s_var var_0 cxba$111l.vy                                             
  s_var sngl cxba$111r.dz  s_var var_0 cxba$111r.vz                                             
  s_var sngl cxba$111l.dz  s_var var_0 cxba$111l.vz                                             
#                                                                                               
  s_var sngl cyba$111r.dx  s_var var_0 cyba$111r.vx                                             
  s_var sngl cyba$111l.dx  s_var var_0 cyba$111l.vx                                             
  s_var sngl cyba$111r.dy  s_var var_0 cyba$111r.vy                                             
  s_var sngl cyba$111l.dy  s_var var_0 cyba$111l.vy                                             
  s_var sngl cyba$111r.dz  s_var var_0 cyba$111r.vz                                             
  s_var sngl cyba$111l.dz  s_var var_0 cyba$111l.vz                                             
#                                                                                               
  s_var sngl czba$111r.dx  s_var var_0 czba$111r.vx                                             
  s_var sngl czba$111l.dx  s_var var_0 czba$111l.vx                                             
  s_var sngl czba$111r.dy  s_var var_0 czba$111r.vy                                             
  s_var sngl czba$111l.dy  s_var var_0 czba$111l.vy                                             
  s_var sngl czba$111r.dz  s_var var_0 czba$111r.vz                                             
  s_var sngl czba$111l.dz  s_var var_0 czba$111l.vz                                             
#                                                                                               
  s_var sngl  cxba$111r.F2x  s_var sngl  cxba$111r.F2y  s_var sngl  cxba$111r.F2z               
  s_var sngl  cxba$111r.M2f  s_var sngl  cxba$111r.M2k  s_var sngl  cxba$111r.M2p               
  s_var sngl  cxba$111l.F2x  s_var sngl  cxba$111l.F2y  s_var sngl  cxba$111l.F2z               
  s_var sngl  cxba$111l.M2f  s_var sngl  cxba$111l.M2k  s_var sngl  cxba$111l.M2p               
  s_var sngl  cyba$111r.F2x  s_var sngl  cyba$111r.F2y  s_var sngl  cyba$111r.F2z               
  s_var sngl  cyba$111r.M2f  s_var sngl  cyba$111r.M2k  s_var sngl  cyba$111r.M2p               
  s_var sngl  cyba$111l.F2x  s_var sngl  cyba$111l.F2y  s_var sngl  cyba$111l.F2z               
  s_var sngl  cyba$111l.M2f  s_var sngl  cyba$111l.M2k  s_var sngl  cyba$111l.M2p               
  s_var sngl  czba$111r.F2x  s_var sngl  czba$111r.F2y  s_var sngl  czba$111r.F2z               
  s_var sngl  czba$111r.M2f  s_var sngl  czba$111r.M2k  s_var sngl  czba$111r.M2p               
  s_var sngl  czba$111l.F2x  s_var sngl  czba$111l.F2y  s_var sngl  czba$111l.F2z               
  s_var sngl  czba$111l.M2f  s_var sngl  czba$111l.M2k  s_var sngl  czba$111l.M2p               

##                                                                                              
## Couplings between wheels and rails                                                           
## ===========================================                                                  
#                                                                                               
  func tral_interp_spline $111                                                                  
  func operp cpa_$111r.ao= axl_$111.x - axl_$111.p * bo                                         
  func operp cpa_$111l.ao= axl_$111.x + axl_$111.p * bo                                         
#                                                                                               
  coupl creep_lookuptable_1 cp1_$111r axl_$111  0.0  bo  0.0  ral_$111r cpa_$111r.ao  bo  0.0   esys_$1  m
               tral$111r.y tral$111r.z tral$111r.vy tral$111r.vz                                
                 mu_$111r1/0.6  mu_$111r1/0.6  mu_$111r1/0.6      # mulfact                     
               { cp1_zfn_$111r     | cp1_zfn_r }                                                
               { cp1_drfn_$111r    | cp1_drfn_r }                                               
               { cp1_gamfn_$111r   | cp1_gamfn_r }                                              
               { cp1_rofn_$111r    | cp1_rofn_r }                                               
               { cp1_poswfn_$111r  | cp1_poswfn_r }                                             
               { cp1_posrfn_$111r  | cp1_posrfn_r }                                             
                 knwr.F0_cp1$111r  knwr_$111r1  cnwr_$111r1                                     
                 2.05e11 .3                                                                     
                  mu_$111r1 ro_$111r                                                            
                  1e99                     # Vertical radius of rail                            
  coupl creep_lookuptable_1 cp1_$111l axl_$111 0.0 -bo  0.0   ral_$111l cpa_$111l.ao -bo  0.0   esys_$1  m
               tral$111l.y tral$111l.z tral$111l.vy tral$111l.vz                                
                 mu_$111l1/0.6  mu_$111l1/0.6  mu_$111l1/0.6      # mulfact                     
               { cp1_zfn_$111l     | cp1_zfn_l    }                                             
               { cp1_drfn_$111l    | cp1_drfn_l   }                                             
               { cp1_gamfn_$111l   | cp1_gamfn_l  }                                             
               { cp1_rofn_$111l    | cp1_rofn_l   }                                             
               { cp1_poswfn_$111l  | cp1_poswfn_l }                                             
               { cp1_posrfn_$111l  | cp1_posrfn_l }                                             
                 knwr.F0_cp1$111l  knwr_$111l1  cnwr_$111l1                                     
                 2.05e11 .3                                                                     
                  mu_$111l1 ro_$111l                                                            
                  1e99                     # Vertical radius of rail                            
#                                                                                               
  coupl creep_lookuptable_1 cp2_$111r axl_$111  0.0  bo  0.0  ral_$111r cpa_$111r.ao  bo  0.0   esys_$1  m
               tral$111r.y tral$111r.z tral$111r.vy tral$111r.vz                                
                 mu_$111r2/0.6  mu_$111r2/0.6  mu_$111r2/0.6      # mulfact                     
               { cp2_zfn_$111r     | cp2_zfn_r    }                                             
               { cp2_drfn_$111r    | cp2_drfn_r   }                                             
               { cp2_gamfn_$111r   | cp2_gamfn_r  }                                             
               { cp2_rofn_$111r    | cp2_rofn_r   }                                             
               { cp2_poswfn_$111r  | cp2_poswfn_r }                                             
               { cp2_posrfn_$111r  | cp2_posrfn_r }                                             
                 knwr.F0_cp2$111r  knwr_$111r2  cnwr_$111r2                                     
                 2.05e11 .3                                                                     
                  mu_$111r2 ro_$111r                                                            
                  1e99                     # Vertical radius of rail                            
  coupl creep_lookuptable_1 cp2_$111l axl_$111 0.0 -bo  0.0   ral_$111l cpa_$111l.ao -bo  0.0   esys_$1  m
               tral$111l.y tral$111l.z tral$111l.vy tral$111l.vz                                 
                 mu_$111l2/0.6  mu_$111l2/0.6  mu_$111l2/0.6      # mulfact                     
               { cp2_zfn_$111l     | cp2_zfn_l    }                                             
               { cp2_drfn_$111l    | cp2_drfn_l   }                                             
               { cp2_gamfn_$111l   | cp2_gamfn_l  }                                             
               { cp2_rofn_$111l    | cp2_rofn_l   }                                             
               { cp2_poswfn_$111l  | cp2_poswfn_l }                                             
               { cp2_posrfn_$111l  | cp2_posrfn_l }                                             
                 knwr.F0_cp2$111l  knwr_$111l2  cnwr_$111l2                                     
                 2.05e11 .3                                                                     
                  mu_$111l2 ro_$111l                                                            
                  1e99                     # Vertical radius of rail                            
#                                                                                               
  coupl creep_lookuptable_1 cp3_$111r axl_$111  0.0  bo  0.0  ral_$111r cpa_$111r.ao  bo  0.0   esys_$1  m
               tral$111r.y tral$111r.z tral$111r.vy tral$111r.vz                                
                 mu_$111r3/0.6  mu_$111r3/0.6  mu_$111r3/0.6      # mulfact                     
               { cp3_zfn_$111r     | cp3_zfn_r    }                                             
               { cp3_drfn_$111r    | cp3_drfn_r   }                                             
               { cp3_gamfn_$111r   | cp3_gamfn_r  }                                             
               { cp3_rofn_$111r    | cp3_rofn_r   }                                             
               { cp3_poswfn_$111r  | cp3_poswfn_r }                                             
               { cp3_posrfn_$111r  | cp3_posrfn_r }                                             
                 knwr.F0_cp3$111r  knwr_$111r3  cnwr_$111r3                                     
                 2.05e11 .3                                                                     
                  mu_$111r3 ro_$111r                                                            
                  1e99                     # Vertical radius of rail                            
  coupl creep_lookuptable_1 cp3_$111l axl_$111 0.0 -bo  0.0   ral_$111l cpa_$111l.ao -bo  0.0   esys_$1  m
               tral$111l.y tral$111l.z tral$111l.vy tral$111l.vz                                
                 mu_$111l3/0.6  mu_$111l3/0.6  mu_$111l3/0.6      # mulfact                     
               { cp3_zfn_$111l     | cp3_zfn_l    }                                             
               { cp3_drfn_$111l    | cp3_drfn_l   }                                             
               { cp3_gamfn_$111l   | cp3_gamfn_l  }                                             
               { cp3_rofn_$111l    | cp3_rofn_l   }                                             
               { cp3_poswfn_$111l  | cp3_poswfn_l }                                             
               { cp3_posrfn_$111l  | cp3_posrfn_l }                                             
                 knwr.F0_cp3$111l  knwr_$111l3  cnwr_$111l3                                     
                 2.05e11 .3                                                                     
                  mu_$111l3 ro_$111l                                                            
                  1e99                     # Vertical radius of rail                            
#                                                                                               
  s_var sngl cp1_$111r.dx  s_var sngl cp1_$111r.vx                                              
  s_var sngl cp1_$111r.dy  s_var sngl cp1_$111r.vy                                              
  s_var sngl cp1_$111r.dz  s_var sngl cp1_$111r.vz                                              
  s_var sngl cp1_$111r.df  s_var sngl cp1_$111r.vf                                              
  s_var sngl cp1_$111r.dk  s_var sngl cp1_$111r.vk                                              
  s_var sngl cp1_$111r.dp  s_var sngl cp1_$111r.vp                                              
#                                                                                               
  s_var sngl cp1_$111l.dx  s_var sngl cp1_$111l.vx                                              
  s_var sngl cp1_$111l.dy  s_var sngl cp1_$111l.vy                                              
  s_var sngl cp1_$111l.dz  s_var sngl cp1_$111l.vz                                              
  s_var sngl cp1_$111l.df  s_var sngl cp1_$111l.vf                                              
  s_var sngl cp1_$111l.dk  s_var sngl cp1_$111l.vk                                              
  s_var sngl cp1_$111l.dp  s_var sngl cp1_$111l.vp                                              
#                                                                                               
  s_var sngl cp1_$111r.F1x  s_var sngl cp1_$111r.F1y  s_var sngl cp1_$111r.F1z                  
  s_var sngl cp1_$111r.M1f  s_var sngl cp1_$111r.M1k  s_var sngl cp1_$111r.M1p                  
  s_var sngl cp1_$111r.F2x  s_var sngl cp1_$111r.F2y  s_var sngl cp1_$111r.F2z                  
  s_var sngl cp1_$111r.M2f  s_var sngl cp1_$111r.M2k  s_var sngl cp1_$111r.M2p                  
#                                                                                               
  s_var sngl cp1_$111l.F1x  s_var sngl cp1_$111l.F1y  s_var sngl cp1_$111l.F1z                  
  s_var sngl cp1_$111l.M1f  s_var sngl cp1_$111l.M1k  s_var sngl cp1_$111l.M1p                  
  s_var sngl cp1_$111l.F2x  s_var sngl cp1_$111l.F2y  s_var sngl cp1_$111l.F2z                  
  s_var sngl cp1_$111l.M2f  s_var sngl cp1_$111l.M2k  s_var sngl cp1_$111l.M2p                  

##                                                                                              
## Lateral couplings between track and ground.                                                  
## ===========================================                                                  
##                                                                                              
## coupl k c_name    body1    a1 b1 h1  body2    a2 b2 h2  prop   esys   dire                   
## ----------------------------------------------------------------------------                 
  coupl k  kytg$111  trc_$111 0. -.25 0.172  grd_$111 0. 0.25 0.172  kytgp_ esys_$1  cy         
  coupl c  cytg$111  trc_$111 0. -.25 0.172  grd_$111 0. 0.25 0.172  cytgp_ esys_$1   y         

##                                                                                              
## Vertical couplings between track and ground.                                                 
## ===========================================                                                  
##                                                                                              
## coupl k c_name     body1    a1  b1  h1  body2    a2  b2  h2  prop   esys   dire              
## ------------------------------------------------------------------------------               
  coupl k  kztg$111r  trc_$111 0. 0.75 0.172  grd_$111 0. 0.75 0.672  kztgp_ esys_$1  cz        
  coupl c  cztg$111r  trc_$111 0. 0.75 0.172  grd_$111 0. 0.75 0.672  cztgp_ esys_$1   z        
  coupl k  kztg$111l  trc_$111 0. -.75 0.172  grd_$111 0. -.75 0.672  kztgp_ esys_$1  cz        
  coupl c  cztg$111l  trc_$111 0. -.75 0.172  grd_$111 0. -.75 0.672  cztgp_ esys_$1   z        

##                                                                                              
##  Graphical representation of the bodies                                                      
##  **********************************************                                              
##                                                                                              
## body type        m_name            geometry                                                  
## ---------------------------------------------------------------------------                  
  body whe_set_mass  axl_$111   ro_   bo                                                        
  body box_mass      ral_$111r 0.5 -.5  0.05 -.05 0.172 0.                                      
  body box_mass      ral_$111l 0.5 -.5  0.05 -.05 0.172 0.                                      
            func const B_trc_$1= 2.                                                             
  body figure_mass trc_$111  1 5  0.5  B_trc_$1 0.172                                           
                                  0.5 -B_trc_$1 0.172                                           
                                 -0.5 -B_trc_$1 0.172                                           
                                 -0.5  B_trc_$1 0.172                                           
                                  0.5  B_trc_$1 0.172                                           
#                                                                                               
  s_var gpdat_r1                                                                                
#                                                                                               
  s_var gpdat_force1    cp1_$111r.F1x   # Acting with positive sign                             
  s_var gpdat_force1    cp1_$111r.F1y   # on wheelset                                           
  s_var gpdat_force1    cp1_$111r.F1z                                                           
  s_var gpdat_force1    cp1_$111l.F1x                                                           
  s_var gpdat_force1    cp1_$111l.F1y                                                           
  s_var gpdat_force1    cp1_$111l.F1z                                                           
#                                                                                               
  s_var gpdat_force1    kxba$111r.F2x   # Acting with positive sign                             
  s_var gpdat_force1    kyba$111r.F2y   # on wheelset                                           
  s_var gpdat_force1    kzba$111r.F2z                                                           
  s_var gpdat_force1    kxba$111l.F2x                                                           
  s_var gpdat_force1    kyba$111l.F2y                                                           
  s_var gpdat_force1    kzba$111l.F2z                                                           
#                                                                                               
  s_var gpdat_wheel_info $111l  lsa_$111.b  $genkpf/../w_prof/EN13715.2006/ENS1002t32.5.wheel   
  s_var gpdat_wheel_info $111r  lsa_$111.b  $genkpf/../w_prof/EN13715.2006/ENS1002t32.5.wheel   
#                                                                                               
  s_var gpdat_rail_info_left                                                                    
                         0.,     $genkpf/../r_prof/uic60/uic60i40.rail                          
                       100.,     $genkpf/../r_prof/uic60/uic60i40.rail                          
  s_var gpdat_rail_info_right                                                                   
                         0.,     $genkpf/../r_prof/uic60/uic60i40.rail                          
                       100.,     $genkpf/../r_prof/uic60/uic60i40.rail                          
#                                                                                               
  in_substruct save_axl1 [ $111 ]                                                               
 ]

  in_substruct vhe_model_1 [ 1 ]   # Arg. $1= Number of the vehicle

  s_var sngl cp1_111r.vux
  s_var sngl cp1_111r.vuy
  s_var sngl cp1_111r.vuz
  s_var var_0 cp1_111r.eta
  s_var var_0 cp1_111r.nux
  s_var var_0 cp1_111r.nuy
  s_var var_0 cp1_111r.spin
  s_var var_0 cp1_111r.a
  s_var var_0 cp1_111r.b
  s_var var_0 cp1_111r.a/b
#
  s_var sngl cp1_111l.vux
  s_var sngl cp1_111l.vuy
  s_var sngl cp1_111l.vuz
  s_var var_0 cp1_111l.eta
  s_var var_0 cp1_111l.nux
  s_var var_0 cp1_111l.nuy
  s_var var_0 cp1_111l.spin
  s_var var_0 cp1_111l.a
  s_var var_0 cp1_111l.b
  s_var var_0 cp1_111l.a/b
#
  s_var sngl cp1_111r.z
  s_var sngl cp1_111r.irx
  s_var sngl cp1_111r.iry
  s_var sngl cp1_111r.posw
  s_var sngl cp1_111l.z
  s_var sngl cp1_111l.irx
  s_var sngl cp1_111l.iry
  s_var sngl cp1_111l.posw
#
  func operp cp1_111r.Ft= sqrt( cp1_111r.Fx * cp1_111r.Fx - cp1_111r.Fy * cp1_111r.Fy )
  func operp cp1_111r.my= cp1_111r.Ft / cp1_111r.Fn
  s_var sngl cp1_111r.Ft
  s_var sngl cp1_111r.my
  func operp cp1_111l.Ft= sqrt( cp1_111l.Fx * cp1_111l.Fx - cp1_111l.Fy * cp1_111l.Fy )
  func operp cp1_111l.my= cp1_111l.Ft / cp1_111l.Fn
  s_var sngl cp1_111l.Ft
  s_var sngl cp1_111l.my

#  if_then_char_init  CalcType .eq. TSIM  .or.
#                     CalcType .eq. MODAL
#   initval read_gpdat gp/$IDENT.gp 1
#  endif

  func operp cp1_111.F1y= cp1_111r.F1y + cp1_111l.F1y
  func operp kxba111.F2y= kxba111r.F2y + kxba111l.F2y
  func operp kyba111.F2y= kyba111r.F2y + kyba111l.F2y
  func operp kzba111.F2y= kzba111r.F2y + kzba111l.F2y
  func operp cxba111.F2y= cxba111r.F2y + cxba111l.F2y
  func operp cyba111.F2y= cyba111r.F2y + cyba111l.F2y
  func operp czba111.F2y= czba111r.F2y + czba111l.F2y
#
  s_var sngl cp1_111.F1y
  s_var sngl kxba111.F2y
  s_var sngl kyba111.F2y
  s_var sngl kzba111.F2y
  s_var sngl cxba111.F2y
  s_var sngl cyba111.F2y
  s_var sngl czba111.F2y

  func operp cp1_111.F1z= cp1_111r.F1z + cp1_111l.F1z
  func operp kxba111.F2z= kxba111r.F2z + kxba111l.F2z
  func operp kyba111.F2z= kyba111r.F2z + kyba111l.F2z
  func operp kzba111.F2z= kzba111r.F2z + kzba111l.F2z
  func operp cxba111.F2z= cxba111r.F2z + cxba111l.F2z
  func operp cyba111.F2z= cyba111r.F2z + cyba111l.F2z
  func operp czba111.F2z= czba111r.F2z + czba111l.F2z
#
  s_var sngl cp1_111.F1z
  s_var sngl kxba111.F2z
  s_var sngl kyba111.F2z
  s_var sngl kzba111.F2z
  s_var sngl cxba111.F2z
  s_var sngl cyba111.F2z
  s_var sngl czba111.F2z

  func operp cp1_111.M1f= cp1_111r.M1f + cp1_111l.M1f
  func operp kxba111.M2f= kxba111r.M2f + kxba111l.M2f
  func operp kyba111.M2f= kyba111r.M2f + kyba111l.M2f
  func operp kzba111.M2f= kzba111r.M2f + kzba111l.M2f
  func operp cxba111.M2f= cxba111r.M2f + cxba111l.M2f
  func operp cyba111.M2f= cyba111r.M2f + cyba111l.M2f
  func operp czba111.M2f= czba111r.M2f + czba111l.M2f
#
  s_var sngl cp1_111.M1f
  s_var sngl kxba111.M2f
  s_var sngl kyba111.M2f
  s_var sngl kzba111.M2f
  s_var sngl cxba111.M2f
  s_var sngl cyba111.M2f
  s_var sngl czba111.M2f

eof



Examples:

Example 1)

Masterfile for a typical calculation of wheel-rail geometry. The same wheel- and rail- profiles are used on both sides.


##
##      Input data for program KPF
##

  ident1= 'Right wheel:S1002t32.5.wheel   Left wheel:S1002t32.5.wheel',
  hfil  = '$genkpf/../w_prof/S1002/S1002t32.5.wheel',

  ident2= 'Right rail:uic60 incl.1/40  Left rail:uic60 incl.1/40',
  rfil  = '$genkpf/../r_prof/uic60/uic60i40.rail',

  iscren= 0,            # Select screen display
  ilaser= 6,            # Select laser printer output

  fzhr = 70000          # Vertical load on contact surface when evaluating the
                        # wheel-rail geometry functions.

  ident3='wprof_lat_shift= 0    Gauge= 1425-1441'

  kpfr_type= 'cp1'

  bo       =  750.       # Nominal contact patches distance
  origin_to_gauge = 32.5 # Gauge Measuring Point to nom.running circle(origo), lateral distance
  origin_to_iwheel= 70.  # Inside wheel to nom.running circle(origo), lateral distance

  wprof_lat_shift = 0.   # Wheel profile lateral shift, positive outwards


  iplotg= 1,            # Plot of the wheel and rail geometry
  iplot3= 4,            # Connection plot and contour contact pressure
  iplotk= 1,            # Plot the wheel-rail geometry functions

  iborder= 1            # Don't stop the calculation if the rail profile file has
                        # unsufficent data describing the inside of the rail head.
  izero = 0             # Zero-set DRKP and ZKP at eta=0.
  fiteps= .25e-2        # Set the accuracy how well the wheel-rail geometry
                        # functions shall be fitted to the calculated points.

  gauge_effcon= 1425 1427 1429 1431 1433 1435 1437 1439 1441

  dyeffcon=.1,.5,2,3,4,6 # Amplitudes for which the conicity shall be printed
                         # in the conicity diagram

# i2kp= 0                # One-point contact
# i2kp= 1 yh2cp=25,25    # Manual setting of two-point contact
# i2kp= 2                # Automatic detection of two-point contact
  i2kp= 3                # Automatic detection of three-point contact

##
##  Considering the roll angle of the wheel profiles due to a flexible axle
##  the following data must be supplied.
##  -----------------------------------------------------------------------
  r_axle = 1e30                 # Radius of the axle
# r_axle = 0.08                 # Radius of the axle
  bl_axle= 1.                   # Lateral distance to the journal
  r_wheel= 0.50                 # Radius of the wheels.

  r_measured_axle = 1e30        # Radius of the measured axle
# r_measured_axle = 0.08        # Radius of the measured axle
  bo_measured_axle= 0.75        # Lateral distance to the contact point
  bl_measured_axle= 1.          # Lateral distance to the journal
  fzhr_measured_axle= 70000     # Static wheel load on measured axle
  chi_measured_axle= 0.1745     # Pitch angle between a vertical line and
                                # the measuring device [rad]

Example 2)

Masterfile for a typical calculation of wheel-rail geometry. Different wheel- and/or rail- profiles on left and right side.


##
##      Input data for program KPF
##

  ident1= 'Right wheel:S1002t32.5.wheel   Left wheel:S1002t32.5.wheel',
  wrfile= '$genkpf/../w_prof/S1002/S1002t32.5.wheel',   # Different profiles
  wlfile= '$genkpf/../w_prof/S1002/S1002t32.5.wheel',   # on the two wheels

  ident2= 'Right rail:uic60 incl.1/40  Left rail:uic60 incl.1/40',
  rrfile= '$genkpf/../r_prof/uic60/uic60i40.rail',      # Different profiles
  rlfile= '$genkpf/../r_prof/uic60/uic60i40.rail',      # on the rails

  iscren= 0,            # Select screen display
  ilaser= 6,            # Select laser printer output

  fzhr = 70000          # Vertical load on contact surface when evaluating the
                        # wheel-rail geometry functions.

  ident3='wprof_lat_shift= 0    Gauge= 1425-1441'

  kpfr_type= 'cp1'

  bo       =  750.       # Nominal contact patches distance
  origin_to_gauge = 32.5 # Gauge Measuring Point to nom.running circle(origo), lateral distance
  origin_to_iwheel= 70.  # Inside wheel to nom.running circle(origo), lateral distance

  wprof_lat_shift = 0.   # Wheel profile lateral shift, positive outwards


  iplotg= 1,            # Plot of the wheel and rail geometry
  iplot3= 4,            # Connection plot and contour contact pressure
  iplotk= 1,            # Plot the wheel-rail geometry functions

  iborder= 1            # Don't stop the calculation if the rail profile file has
                        # unsufficent data describing the inside of the rail head.
  izero = 0             # Zero-set DRKP and ZKP at eta=0.
  fiteps= .25e-2        # Set the accuracy how well the wheel-rail geometry
                        # functions shall be fitted to the calculated points.

  gauge_effcon= 1425 1427 1429 1431 1433 1435 1437 1439 1441

  dyeffcon=.1,.5,2,3,4,6 # Amplitudes for which the conicity shall be printed
                         # in the conicity diagram

# i2kp= 0                # One-point contact
# i2kp= 1 yh2cp=25,25    # Manual setting of two-point contact
# i2kp= 2                # Automatic detection of two-point contact
  i2kp= 3                # Automatic detection of three-point contact

##
##  Considering the roll angle of the wheel profiles due to a flexible axle
##  the following data must be supplied.
##  -----------------------------------------------------------------------
  r_axle = 1e30                 # Radius of the axle
# r_axle = 0.08                 # Radius of the axle
  bl_axle= 1.                   # Lateral distance to the journal
  r_wheel= 0.50                 # Radius of the wheels.

  r_measured_axle = 1e30        # Radius of the measured axle
# r_measured_axle = 0.08        # Radius of the measured axle
  bo_measured_axle= 0.75        # Lateral distance to the contact point
  bl_measured_axle= 1.          # Lateral distance to the journal
  fzhr_measured_axle= 70000     # Static wheel load on measured axle
  chi_measured_axle= 0.1745     # Pitch angle between a vertical line and
                                # the measuring device [rad]



Home    Reference Manuals