Home    Search    Reference Manuals    Return   

Create track irregularities

Before a call to func wr_coupl_pe3 can be made, the memory fields lat_trac, vert_trac, spv_trac and fi_trac must be defined. Also the scaling factors YMtrac, ZMtrac, GMtrac and CMtrac must defined before the call to func wr_coupl_pe3 can be made.

### ### Track irregularities ### ==========================================================
func char ctrack_irreg= Ideal_track # Output in header lines #[-]{ func const bo_ = 0.75 # Lateral semi-distance between the nominal rolling circles of the wheels func const Track_Gauge= 1435. # Gauge to be used in the intpl_track_irr-commands # if_then_char_init ctrack_irreg .eq. "Ideal_track" # {{ func const YMtrac= 1e-3 # From mm to m; Scale factor 1.00; Lateral irregularities func const ZMtrac= 1e-3 # From mm to m; Scale factor 1.00; Vertical irregularities func const GMtrac= 1e-3 # From mm to m; Scale factor 1.00; Gauge irregularities func const CMtrac= 1e-3/(2*bo_) # From mm to rad; Scale factor 1.00; Cant irregularities func const Xtrac_start= 0. func const Xtrac_stop= 30000. func intpl_track_irr2 Xtrac_start Xtrac_stop Ideal_track Track_Gauge # elseif_then_char_init ctrack_irreg .eq. "UIC518_wheel_unloading" # }{ func const YMtrac= 1e-3 # From mm to m; Scale factor 1.00; Lateral irregularities func const ZMtrac= 1e-3 # From mm to m; Scale factor 1.00; Vertical irregularities func const GMtrac= 1e-3 # From mm to m; Scale factor 1.00; Gauge irregularities func const CMtrac= 1e-3/(2*bo_) # From mm to rad; Scale factor 1.00; Cant irregularities func const Xtrac_start= 0. func const Xtrac_stop= 3000. func const worstPos= 66. func intpl_r lat_trac -100.0 0.0 Xtrac_stop 0.0 func intpl_r vert_trac # vertical alignment in mm -100.0 0.0 -10.0 0.0 -9.0 0.0 -8.0 0.0 0.0 0.0 worstPos-6-.1 0.0 worstPos-6-.00006 0.0 # Several points in order to avoid ringing in the spline interpolation worstPos-6-.00004 0.0 worstPos-6-.00003 0.0 worstPos-6-.00001 0.0 worstPos-6 0.0 worstPos-6+0.0003 0.0005 worstPos-6+0.0006 0.001 worstPos-6+0.006 0.01 worstPos-0.006 9.99 worstPos-0.0006 9.999 worstPos-0.0003 9.9995 worstPos 10.0 # 20 dip on high rail worstPos+0.0003 9.9995 # 6 m semi-span worstPos+0.0006 9.999 worstPos+0.006 9.99 worstPos+6-0.006 0.01 worstPos+6-0.0006 0.001 worstPos+6-0.0003 0.0005 worstPos+6 0.0 worstPos+6+.00001 0.0 worstPos+6+.00003 0.0 worstPos+6+.00004 0.0 worstPos+6+.00006 0.0 Xtrac_stop 0.0 func intpl_r spv_trac # track gauge in mm -100.0 1435. Xtrac_stop 1435. func intpl_r fi_trac # cant in mm -100.0 0.0 -10.0 0.0 -9.0 0.0 -8.0 0.0 0.0 0.0 worstPos-6-.1 0.0 worstPos-6-.00006 0.0 # Several points in order to avoid ringing in the spline interpolation worstPos-6-.00004 0.0 worstPos-6-.00003 0.0 worstPos-6-.00001 0.0 worstPos-6 0.0 worstPos-6+0.0003 -0.001 worstPos-6+0.0006 -0.002 worstPos-6+0.006 -0.02 worstPos-0.006 -19.98 worstPos-0.0006 -19.998 worstPos-0.0003 -19.999 worstPos -20.0 # 20 dip on high rail worstPos+0.0003 -19.999 # 6 m semi-span worstPos+0.0006 -19.998 worstPos+0.006 -19.98 worstPos+6-0.006 -0.02 worstPos+6-0.0006 -0.002 worstPos+6-0.0003 -0.001 worstPos+6 0.0 worstPos+6+.00001 0.0 worstPos+6+.00003 0.0 worstPos+6+.00004 0.0 worstPos+6+.00006 0.0 Xtrac_stop 0.0 # elseif_then_char_init ctrack_irreg .eq. "track_irr4" # }{ func const YMtrac 0.000650 # from mm to m, and factor 0.65 func const ZMtrac 0.000800 # from mm to m, and factor 0.80 func const GMtrac 0.001000 # from mm to m, and factor 0.65 func const CMtrac 0.000533 # from mm to rad, and factor 0.80 func const Xtrac_start= 0. func const Xtrac_stop= 2003. func intpl_track_irr2 Xtrac_start Xtrac_stop track/track_irr4.trax Track_Gauge # elseif_then_char_init ctrack_irreg .eq. "track_V120a" # }{ func const YMtrac= 1e-3 # From mm to m; Scale factor 1.00; Lateral irregularities func const ZMtrac= 1e-3 # From mm to m; Scale factor 1.00; Vertical irregularities func const GMtrac= 1e-3 # From mm to m; Scale factor 1.00; Gauge irregularities func const CMtrac= 1e-3/(2*bo_) # From mm to rad; Scale factor 1.00; Cant irregularities func const Xtrac_start= 1400. func const Xtrac_stop= 3100. func intpl_track_irr2 Xtrac_start Xtrac_stop track/track_V120a.trax Track_Gauge # elseif_then_char_init ctrack_irreg .eq. "track_V120b" # }{ func const YMtrac= 1e-3 # From mm to m; Scale factor 1.00; Lateral irregularities func const ZMtrac= 1e-3 # From mm to m; Scale factor 1.00; Vertical irregularities func const GMtrac= 1e-3 # From mm to m; Scale factor 1.00; Gauge irregularities func const CMtrac= 1e-3/(2*bo_) # From mm to rad; Scale factor 1.00; Cant irregularities func const Xtrac_start= 1050. func const Xtrac_stop= 3000. func intpl_track_irr2 Xtrac_start Xtrac_stop track/track_V120b.trax Track_Gauge # elseif_then_char_init ctrack_irreg .eq. "track_V160a" # }{ func const YMtrac= 1e-3 # From mm to m; Scale factor 1.00; Lateral irregularities func const ZMtrac= 1e-3 # From mm to m; Scale factor 1.00; Vertical irregularities func const GMtrac= 1e-3 # From mm to m; Scale factor 1.00; Gauge irregularities func const CMtrac= 1e-3/(2*bo_) # From mm to rad; Scale factor 1.00; Cant irregularities func const Xtrac_start= 700. func const Xtrac_stop= 4200. func intpl_track_irr2 Xtrac_start Xtrac_stop track/track_V160a.trac Track_Gauge # elseif_then_char_init ctrack_irreg .eq. "track_V200a" # }{ func const YMtrac= 1e-3 # From mm to m; Scale factor 1.00; Lateral irregularities func const ZMtrac= 1e-3 # From mm to m; Scale factor 1.00; Vertical irregularities func const GMtrac= 1e-3 # From mm to m; Scale factor 1.00; Gauge irregularities func const CMtrac= 1e-3/(2*bo_) # From mm to rad; Scale factor 1.00; Cant irregularities func const Xtrac_start= 0. func const Xtrac_stop= 4997. func intpl_track_irr2 Xtrac_start Xtrac_stop track/track_V200a.trac Track_Gauge # else func print06_char_init " " func print06_char_init " ***ERROR*** In Input Reading" func print06_char_init " Unvalid value given for character variable ctrack_irreg" func stop endif # }} # s_var scalar_0 Xtrac_start # Save start coordinate as a scalar for post processing s_var scalar_0 Xtrac_stop # Save stop coordinate as a scalar for post processing #[-]} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Create the two variables gauge_average and gauge_dev_$1$2$3

These two variables controls the gauge of the track

### ### 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 Xavg 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. # Gauge to be removed from the track irregularity file # func const gauge_dev_=-0.008 # Make the track 8 mm tighter # func const gauge_dev_=-0.004 # Make the track 4 mm tighter func const gauge_dev_= 0.000 # Do not change the gauge # func const gauge_dev_= 0.004 # Make the track 4 mm wider # func const gauge_dev_= 0.008 # Make the track 8 mm wider #[-]} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Create wheel/rail-geometry functions

Precalculated wheel/rail-geometry functions must be defined before a call to func wr_coupl_pe3 can be made. The precalculated wheel/rail-geometry functions are created by preprocessor kpf.

### ### Wheel-rail geometry functions ### ==========================================================
func char ckpfr= ENS1002t32.5_uic60i40 #[-]{ if_then_char_init ckpfr .eq. "ckona_fl" func copy_init lambda0= 0.025 # Rail inclination 1/40 func copy_init lambda = 0.30 # Effective conicity s_var scalar_0 lambda func operp_init epsilon= 50.7 * ( lambda - lambda0 ) # Contact angle difference parameter insert file $genkpf/kpf_ckona_fl.kpfr in_substruct kpf_ckona [ " " lambda lambda0 epsilon ] # elseif_then_char_init ckpfr .eq. "rkona" insert file $genkpf/kpf_rkona.kpfr in_substruct kpf_rkona [ " " 0. ] # elseif_then_char_init ckpfr .eq. "ENS1002t32.5_uic60i40" insert file $genkpf/ENS1002t32.5_uic60i40.kpfr in_substruct ENS1002t32.5_uic60i40 [ " " ] # elseif_then_char_init ckpfr .eq. "ENS1002t32.5_uic60i30" insert file $genkpf/ENS1002t32.5_uic60i30.kpfr in_substruct ENS1002t32.5_uic60i30 [ " " ] # elseif_then_char_init ckpfr .eq. "ENS1002t32.5_uic60i20" insert file $genkpf/ENS1002t32.5_uic60i20.kpfr in_substruct ENS1002t32.5_uic60i20 [ " " ] # elseif_then_char_init ckpfr .eq. "SjNormalt33_uic60i40" insert file $genkpf/SjNormalt33_uic60i40.kpfr in_substruct SjNormalt33_uic60i40 [ " " ] # elseif_then_char_init ckpfr .eq. "SjNormalt33_uic60i20" insert file $genkpf/SjNormalt33_uic60i20.kpfr in_substruct SjNormalt33_uic60i20 [ " " ] # elseif_then_char_init ckpfr .eq. "Variable_W/R-geom" insert file $genkpf/S1002t32.5_bv50i30.kpfr insert file $genkpf/S1002t32.5_bv50i30_worn_r3.kpfr insert file $genkpf/S1002t32.5_bv50i30_worn_l3.kpfr in_substruct S1002t32.5_bv50i30 [ tangtrc ] in_substruct S1002t32.5_bv50i30_worn_r3 [ Rcurve ] in_substruct S1002t32.5_bv50i30_worn_l3 [ Lcurve ] # func kpf_variable_1 " " -100.0 tangtrc 0.0 tangtrc 5.0 Rcurve 300.0 Rcurve 305.0 tangtrc 320.0 tangtrc 325.0 Lcurve 620.0 Lcurve 625.0 tangtrc 1000.0 tangtrc # else func print06_char_init " " func print06_char_init " ***ERROR*** In Input Reading" func print06_char_init " Unvalid value given for character variable ckpfr" func stop endif #[-]} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Constrains to wheels and/or wheelsets in pitch-direction

In reality all wheels and wheelsets have bearings and axle-boxes. Why the mathematical model also should have axle-boxes. However it is possible to avoid modelling of axle-boxes, if all dampers are attached in the center of the wheel/wheelset and the pitch angle of the wheelsets is constrained to 0.(zero).

   constr fix_free_1  axl_$1.k= 0.

Set initial values to wheels and/or wheelsets

In order to adapt for a varying wheel radius, the pitch degree of freedom in speed must be free. To avoid initial vibration in the wheelsets, the pitch velocity must be given an initial value.

   initval set_var    axl_$1.vk= -Vo/ro_$1

Longitudinal speed regulator

A railway vehicle do not have a longitudinal stiffness between vehicles and track. The vehicles rolls freely along the track. In reality the locomotive of the train-set has a speed regulator which controls the speed of the vehicles. Also in the mathematical model it is necessary to have a speed regulator of the vehicles, otherwise they will gradually loose their speed. The regulator in the mathematical model can be simple or complex. Below shows two examples:

### ### Regulate the longitudinal position of the vehicle #[-]{ ==========================================================
## ## Longitudinal stiffness connecting the carbody to the lsc_1 coordinate system ## ============================================================================ func const mvhe_1= mc_1+mb_11+mb_12+ma_111+Jka_111/ro_111^2+ma_112+Jka_112/ro_112^2+ma_121+Jka_121/ro_121^2+ma_122+Jka_122/ro_122^2 coupl k kxcg1 car_1 0 0 -hccg_1*.6 grd_1 0 0 -hccg_1*.6 (2*pi*.25)^2*mvhe_1 esys_1 x # fo= 0.25[Hz] coupl c cxcg1 car_1 0 0 -hccg_1*.6 grd_1 0 0 -hccg_1*.6 4*pi*.7*.25*mvhe_1 esys_1 x # zeta=0.7 ## ## Apply pitch moment on the wheelsets ## ========================================================== # func const fxcg= 0.25 # func const mvhe_1= mc_1+mb_11+mb_12+ma_111+Jka_111/ro_111^2+ma_112+Jka_112/ro_112^2+ma_121+Jka_121/ro_121^2+ma_122+Jka_122/ro_122^2 # func const Kreg_1= (2*pi*fxcg)^2*mvhe_1*ro_1/4 # func const Creg_1= 4*pi*.70*fxcg*mvhe_1*ro_1/4 # func operp car_.x = ( car_1.x * mc_1 + bog_11.x * mb_11 + bog_12.x * mb_12 + # axl_111.x * ma_111 + axl_112.x * ma_112 + axl_121.x * ma_121 + axl_122.x * ma_122 ) / mvhe_1 # func operp car_.vx= ( car_1.vx * mc_1 + bog_11.vx * mb_11 + bog_12.vx * mb_12 + # axl_111.vx * ma_111 + axl_112.vx * ma_112 + axl_121.vx * ma_121 + axl_122.vx * ma_122 ) / mvhe_1 ## # func mul MtractionK_1= Kreg_1 car_.x # func mul MtractionC_1= Creg_1 car_.vx # func add Mtraction_1= MtractionK_1 MtractionC_1 # func lpass2_0 MtractionF1_1= Mtraction_1 5. .9239 # Second order low pass filter, start value equal to 0(zero) # func lpass2_0 MtractionF2_1= MtractionF1_1 5. .3827 # Second order low pass filter, start value equal to 0(zero) ## # func incr axl_111.Mk= MtractionF2_1 # func incr axl_112.Mk= MtractionF2_1 # func incr axl_121.Mk= MtractionF2_1 # func incr axl_122.Mk= MtractionF2_1 #[-]} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Call convenience function wr_coupl_pe3

The convenience function wr_coupl_pe0m creates two massless rails over the track-piece, and all connections between wheels and rails. Function wr_coupl_pe0m also creates stiffnesses and dampers between rails and track-piece.

### ### Contact between wheels and rails #[-]{ ==========================================================
## ## Coefficient of friction between wheel and rail ## ========================================================== func const mu_ = 0.50 ## ## Variable vertical rail-track stiffness due to .65[m] sleeper spacing ## ==================================================================== # func const kzrtF0_= 0. # -kmbaF0_+ma_/2*9.81 # Vertical prestress force rail - track # # func add axl_111.X= lsa_111.pn axl_111.x # func add axl_112.X= lsa_112.pn axl_112.x # func add axl_121.X= lsa_121.pn axl_121.x # func add axl_122.X= lsa_122.pn axl_122.x # # func operp kzrt_111 = 230e6 + 27e6 * sin( 9.666438934 * axl_111.X ) #- .25 * 25e6 * cos( 19.33287787 * axl_111.X ) # func operp kzrt_112 = 230e6 + 27e6 * sin( 9.666438934 * axl_112.X ) #- .25 * 25e6 * cos( 19.33287787 * axl_112.X ) # func operp kzrt_121 = 230e6 + 27e6 * sin( 9.666438934 * axl_121.X ) #- .25 * 25e6 * cos( 19.33287787 * axl_121.X ) # func operp kzrt_122 = 230e6 + 27e6 * sin( 9.666438934 * axl_122.X ) #- .25 * 25e6 * cos( 19.33287787 * axl_122.X ) ## ## Calculation of creep and creepforces between wheels and rails ## ================================================================ substruct wr_coupl_pe3 [ func wr_coupl_pe3 # $1 # Name/number of the wheelset lsa_$1 # Name of the linear local coordinate system # lat_trac vert_trac spv_trac fi_trac # Track irregularities memory fields YMtrac ZMtrac GMtrac CMtrac # Multiplication factors for track irregularities gauge_average # Average gauge of spv_trac gauge_dev_$1 # Modify average gauge for a different conicity 1 # Type of contact normal to the contact surface # axl_$1 # Body wheel right side axl_$1 # Body wheel left side trc_$1 # Body track right side trc_$1 # Body track left side ro_$1r # Nominal wheel radius right wheel 17e6 # kyrt_$1r # Lateral stiffness rail - track 230e6 # kzrt_$1r # Vertical stiffness rail - track -kmbaF0_$1+ma_$1/2*9.81 # kzrtF0_$1r # Vertical prestress force rail - track 10e3 # cyrt_$1r # Lateral damping rail - track 50e3 # czrt_$1r # Vertical damping rail - track bo_$1r # Lateral semi-distance to nominal running circle, right side ro_$1l # Nominal wheel radius left wheel 17e6 # kyrt_$1l # Lateral stiffness rail - track 230e6 # kzrt_$1l # Vertical stiffness rail - track -kmbaF0_$1+ma_$1/2*9.81 # kzrtF0_$1l # Vertical prestress force rail - track 10e3 # cyrt_$1l # Lateral damping rail - track 50e3 # czrt_$1l # Vertical damping rail - track -bo_$1l # Lateral semi-distance to nominal running circle, left side # cp1_$1r # Name of contact point #1 right side trc_$1 cp1_$1r.ksi cp1_$1r.bo 0. # Contact on track axl_$1 0. cp1_$1r.bo 0. # Contact on wheel/wheelset mu_$1r1 # Coefficient of friction 2.05e11 .3 # Modulus of elasticity and Poisson's ratio mu_$1r1/.6 mu_$1r1/.6 mu_$1r1/.6 # Creepage reduction due to contaminated rail surface # -kmbaF0_$1+ma_$1/2*9.81 2400e6 # Prestress force and stiffness normal to the surface 0. 2400e6 # Prestress force and stiffness normal to the surface # cp1_$1l trc_$1 cp1_$1l.ksi cp1_$1l.bo 0. # Contact on track axl_$1 0. cp1_$1l.bo 0. # Contact on wheel/wheelset mu_$1l1 # Coefficient of friction 2.05e11 .3 # Modulus of elasticity and Poisson's ratio mu_$1l1/.6 mu_$1l1/.6 mu_$1l1/.6 # Creepage reduction due to contaminated rail surface # -kmbaF0_$1+ma_$1/2*9.81 2400e6 # Prestress force and stiffness normal to the surface 0. 2400e6 # Prestress force and stiffness normal to the surface # # cp2_$1r trc_$1 cp2_$1r.ksi cp2_$1r.bo 0. # Contact on track axl_$1 0. cp2_$1r.bo 0. # Contact on wheel/wheelset mu_$1r2 # Coefficient of friction 2.05e11 .3 # Modulus of elasticity and Poisson's ratio mu_$1r2/.6 mu_$1r2/.6 mu_$1r2/.6 # Creepage reduction due to contaminated rail surface 0. 2400e6 # Prestress force and stiffness normal to the surface # cp2_$1l trc_$1 cp2_$1l.ksi cp2_$1l.bo 0. # Contact on track axl_$1 0. cp2_$1l.bo 0. # Contact on wheel/wheelset mu_$1l2 # Coefficient of friction 2.05e11 .3 # Modulus of elasticity and Poisson's ratio mu_$1l2/.6 mu_$1l2/.6 mu_$1l2/.6 # Creepage reduction due to contaminated rail surface 0. 2400e6 # Prestress force and stiffness normal to the surface # # cp3_$1r trc_$1 cp3_$1r.ksi cp3_$1r.bo 0. # Contact on track axl_$1 0. cp3_$1r.bo 0. # Contact on wheel/wheelset mu_$1r3 # Coefficient of friction 2.05e11 .3 # Modulus of elasticity and Poisson's ratio mu_$1r3/.6 mu_$1r3/.6 mu_$1r3/.6 # Creepage reduction due to contaminated rail surface 0. 2400e6 # Prestress force and stiffness normal to the surface # cp3_$1l trc_$1 cp3_$1l.ksi cp3_$1l.bo 0. # Contact on track axl_$1 0. cp3_$1l.bo 0. # Contact on wheel/wheelset mu_$1l3 # Coefficient of friction 2.05e11 .3 # Modulus of elasticity and Poisson's ratio mu_$1l3/.6 mu_$1l3/.6 mu_$1l3/.6 # Creepage reduction due to contaminated rail surface 0. 2400e6 # Prestress force and stiffness normal to the surface ] in_substruct wr_coupl_pe3 [ 111 ] in_substruct wr_coupl_pe3 [ 112 ] in_substruct wr_coupl_pe3 [ 121 ] in_substruct wr_coupl_pe3 [ 122 ] #[-]} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -