Home    Search    Reference Manuals    Return   

Create track irregularities

Before a call to func wr_coupl_pe0 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_pe0 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_pe0 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 order to make a smooth transition to Coulomb friction at speeds close to 0.(zero), the wheels and/or wheelsets schouldn't have constraints in pitch direction. Therefore all couplings must be connected in the center of the wheelset, or the axleboxes of the wheelsets must be modeled.

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

The vehicle model shouldn't have a longitudinal coupling to any coordinate system. Instead the Euler system should follow the vehicle:

  lsys e_reg_xpos   esys_1  car_1   1.2 1.

Call convenience function wr_coupl_pe0

The convenience function wr_coupl_pe0 creates two massless rails over the track-piece, and all connections between wheels and rails. Function wr_coupl_pe0 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_pe0 [ func wr_coupl_pe0 # $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_pe0 [ 111 ] in_substruct wr_coupl_pe0 [ 112 ] in_substruct wr_coupl_pe0 [ 121 ] in_substruct wr_coupl_pe0 [ 122 ] #[-]} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -