Home    Search    Reference Manuals    Return   



##
## Vehicle model of a four axle bogie vehicle
## ==========================================

##
## Side-view
## ===========================================
!
!
!          _________________________________________________|_________________________________________________
!         /                                                 |                                                 \
!        /                                                  |                                                  \
!       /                                                   |                                                   \
!      /                                                    |                                                    \
!     /                                                     |                                                     \
!    /                                                      |                                                      \
!   /                                                       | mc_, Jfc_, Jkc_, Jpc_                                 \
!   \                                                      -O-------------------------------------------------------/---------
!    \______________________________________________________|______________________________________________________/       ^
!         _____________|______________                      |                      _____________|______________            |
!         |            |             |                      |                      |            |mb_,Jfb_,Jkb_,Jpb_        |hccg_
!         |            |             |                      |                      |           -O----------------------    |
!         |____________|_____________|                      |                      |____________|_____________|   ^        |
!             ___      |       ___                          |                          ___      |       ___       |        |
!            /   \     |      /   \                         |                         /   \     |      /   \      |hbcg_   |
!           |  +  |    |     |  +  |                        |                        |  +  |    |     |  +  |     |        |
! _r.l.______\___/_____|______\___/_________________________|_________________________\___/_____|______\_|_/______|________|____
!                      |                                    |                                   |        |
!            lsa_122 lsb_12   lsa_121                     lsc_1                       lsa_112 lsb_11   lsa_111
!                      |                                    |                                   |        |
!                      |                                    |         acb_                      |  aba_  |
!                      |                                    |---------------------------------->|------->|
!                                                           |
!                                                         esys_1
!

##
## 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
  s_var sngl esys_1.b   # Curvature
  s_var sngl esys_1.c   # Cant
  s_var sngl esys_1.x   # Position of esys expressed in fsys
  s_var sngl esys_1.y
  s_var sngl esys_1.z
#
##
## 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_1    0.0   0.0
  lsys  l_local  lsb_12   lsc_1   -acb_1    0.0   0.0
  lsys  l_local  lsa_111  lsb_11   aba_11   0.0   0.0
  lsys  l_local  lsa_112  lsb_11  -aba_11   0.0   0.0
  lsys  l_local  lsa_121  lsb_12   aba_12   0.0   0.0
  lsys  l_local  lsa_122  lsb_12  -aba_12   0.0   0.0

##
## Vehicle and track masses
## ========================
##
## mass m_rigid_6  m_name   lsys    acg    bcg  hcg       m      m      m      Jf     Jk     Jp
## ------------------------------------------------------------------------------------------------
  mass m_rigid_6   car_1    lsc_1   accg_1 0.0 -hccg_1    mc_1   mc_1   mc_1   Jfc_1  Jkc_1  Jpc_1      # car-body
  mass m_rigid_6   bog_11   lsb_11  0.0    0.0 -hbcg_11   mb_11  mb_11  mb_11  Jfb_11 Jkb_11 Jpb_11     # bogies
  mass m_rigid_6   bog_12   lsb_12  0.0    0.0 -hbcg_12   mb_12  mb_12  mb_12  Jfb_12 Jkb_12 Jpb_12
#
  mass fixpoint_6  grd_1   lsc_1    0.0  0.0  0.0       # ground points
  mass fixpoint_6  grd_111 lsa_111  0.0  0.0  0.0
  mass fixpoint_6  grd_112 lsa_112  0.0  0.0  0.0
  mass fixpoint_6  grd_121 lsa_121  0.0  0.0  0.0
  mass fixpoint_6  grd_122 lsa_122  0.0  0.0  0.0

##
## Create wheelsets
## ==============================================================
  substruct create_axl [ 
   mass   m_rigid_6   axl_$1  lsa_$1 0. 0. -ro_$1  ma_$1 ma_$1 ma_$1  Jfa_$1 Jka_$1 Jpa_$1
   constr fix_free_1  axl_$1.k= 0.
   initval set_var    axl_$1.vk= -Vo/ro_$1
  ]
  in_substruct create_axl [ 111 ]
  in_substruct create_axl [ 112 ]
  in_substruct create_axl [ 121 ]
  in_substruct create_axl [ 122 ]

##
## Create track-pieces
## ==============================================================
  substruct create_trc [
   mass m_rigid_6f  trc_$1 lsa_$1  0. 0. 0.   0. myt_$1 mzt_$1  Jft_$1 0. 0.
   constr fix_rigid_1 trc_$1  x 0.                                   constr fix_rigid_1 trc_$1  z 0.
   constr fix_rigid_1 trc_$1  f 0.  constr fix_rigid_1 trc_$1  k 0.  constr fix_rigid_1 trc_$1  p 0.
  ]
  in_substruct create_trc [ 111 ]
  in_substruct create_trc [ 112 ]
  in_substruct create_trc [ 121 ]
  in_substruct create_trc [ 122 ]

##
## 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
       ro_$1r                                   # Nominal wheel radius right wheel
       42e6                      # kyrt_$1r     # Lateral stiffness rail - track
       75e6                      # kzrt_$1r     # Vertical stiffness rail - track
      -kmba.F0_$1+ma_$1/2*9.81   # kzrt.F0_$1r  # Vertical prestress force rail - track
       400e3                     # cyrt_$1r     # Lateral damping rail - track
       1600e3                    # czrt_$1r     # Vertical damping rail - track
       bo_$1r                                   # Lateral semi-distance to nominal running circle, right side
       ro_$1l                                   # Nominal wheel radius left wheel
       42e6                      # kyrt_$1l     # Lateral stiffness rail - track
       75e6                      # kzrt_$1l     # Vertical stiffness rail - track
      -kmba.F0_$1+ma_$1/2*9.81   # kzrt.F0_$1l  # Vertical prestress force rail - track
       400e3                     # cyrt_$1l     # Lateral damping rail - track
       1600e3                    # 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
      -kmba.F0_$1+ma_$1/2*9.81   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
      -kmba.F0_$1+ma_$1/2*9.81   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 ]

##
## Animate track irregularities in GPLOT
## ======================================
  substruct animate_rails [
   mass fixpoint_6  rail_$1$2 lsa_$1  0. $3bo_ 0.
   no_warning func copy rail_$1$2.y= tral$1$2.y
   no_warning func copy rail_$1$2.z= tral$1$2.z
   no_warning func copy rail_$1$2.k= tral$1$2.k
   no_warning func copy rail_$1$2.p= tral$1$2.p
  ]
  in_substruct animate_rails [ 111 l - ]
  in_substruct animate_rails [ 111 r + ]
  in_substruct animate_rails [ 112 l - ]
  in_substruct animate_rails [ 112 r + ]
  in_substruct animate_rails [ 121 l - ]
  in_substruct animate_rails [ 121 r + ]
  in_substruct animate_rails [ 122 l - ]
  in_substruct animate_rails [ 122 r + ]

##
##  Read speed from external file
##  ===============================================================
# func intpl_r  Speed_field  insert free_form '(a,a)' vhedat/Speed.txt
# func create_l vkmh= Speed_field  lsc_1.pn     # Linear interpolation in a memory field
# no_warning func div Vo= vkmh 3.6              # Vo speed in [m/s]

##
## Longitudinal stiffness connecting the car-body to the lsc_1 coordinate system.
## (In order to keep the speed up during long simulations)
## ===================================================================================
  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

##
## Longitudinal stiffness connecting the car-body to the lsc_1 coordinate system.
## (In order to keep the speed up during long simulations)
## ===================================================================================
# 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


##
## Acceleration response points on car-body floor
## ==============================================
  func  accp_bodyf    car_1b1  car_1   acb_1  0.0  -hfloor
  func  accp_bodyf    car_1.m  car_1   0.0    0.0  -hfloor
  func  accp_bodyf    car_1b2  car_1  -acb_1  0.0  -hfloor

##
## Pantograph sway
## ===============================================
  func  pos_rlsys2 car_1b1  car_1  lsb_11    acb_1  0.0  -5.6
  func  pos_rlsys2 car_1b2  car_1  lsb_12   -acb_1  0.0  -5.6

##
## Graphical representation of the bodies
## ==============================================
  body box_mass_733 car_1            acb_1+2.25   1.43  0.7   acb_1+1.38   1.2 -1.7
                                     acb_1+2.25  -1.43  0.7   acb_1+1.38  -1.2 -1.7
                                   -(acb_1+2.25)  1.43  0.7 -(acb_1+2.25)  1.2 -1.7
                                   -(acb_1+2.25) -1.43  0.7 -(acb_1+2.25) -1.2 -1.7
  insert file vhedat/body_car_X2000.ins
# insert file vhedat/body_car_Rc.ins
#
  body box_mass bog_11  aba_11+.25 -aba_11-.25  1. -1.  0.15 -.2
  body box_mass bog_12  aba_12+.25 -aba_12-.25  1. -1.  0.15 -.2

##
## body type         m_name    ro      bo
## ---------------------------------------
  body whe_set_mass  axl_111   ro_111  bo_
  body whe_set_mass  axl_112   ro_112  bo_
  body whe_set_mass  axl_121   ro_121  bo_
  body whe_set_mass  axl_122   ro_122  bo_
#
  body opengl_mass  axl_111  1 1 1 1  CYL_W_DISK .35 13  .45  .55   # radius N H1 H2   brake disks
  body opengl_mass  axl_111  1 1 1 1  CYL_W_DISK .35 13 -.45 -.55   # radius N H1 H2
  body opengl_mass  axl_112  1 1 1 1  CYL_W_DISK .35 13  .45  .55   # radius N H1 H2
  body opengl_mass  axl_112  1 1 1 1  CYL_W_DISK .35 13 -.45 -.55   # radius N H1 H2
  body opengl_mass  axl_121  1 1 1 1  CYL_W_DISK .35 13  .45  .55   # radius N H1 H2
  body opengl_mass  axl_121  1 1 1 1  CYL_W_DISK .35 13 -.45 -.55   # radius N H1 H2
  body opengl_mass  axl_122  1 1 1 1  CYL_W_DISK .35 13  .45  .55   # radius N H1 H2
  body opengl_mass  axl_122  1 1 1 1  CYL_W_DISK .35 13 -.45 -.55   # radius N H1 H2

##
## body type       m_name     polygon
## ------------------------------------------------------------------------------
  func const B_trc_1= 1.2675    # Semi-length of sleepers
  body box_mass    trc_111    0.5 -.5  B_trc_1 -B_trc_1  0.340 0.172
  body box_mass    rail_111r  0.5 -.5  0.0325 -.0325 0.172 0.
  body box_mass    rail_111l  0.5 -.5  0.0325 -.0325 0.172 0.
  body box_mass    trc_112    0.5 -.5  B_trc_1 -B_trc_1  0.340 0.172
  body box_mass    rail_112r  0.5 -.5  0.0325 -.0325 0.172 0.
  body box_mass    rail_112l  0.5 -.5  0.0325 -.0325 0.172 0.
  body box_mass    trc_121    0.5 -.5  B_trc_1 -B_trc_1  0.340 0.172
  body box_mass    rail_121r  0.5 -.5  0.0325 -.0325 0.172 0.
  body box_mass    rail_121l  0.5 -.5  0.0325 -.0325 0.172 0.
  body box_mass    trc_122    0.5 -.5  B_trc_1 -B_trc_1  0.340 0.172
  body box_mass    rail_122r  0.5 -.5  0.0325 -.0325 0.172 0.
  body box_mass    rail_122l  0.5 -.5  0.0325 -.0325 0.172 0.


##
##  Calculate wear and RCF indexes
##  (substruct wear_RCF is defined in file vhedat/std_inserts.ins)
##  ==============================================================
  in_substruct wear_RCF [ 111l ]  
  in_substruct wear_RCF [ 111r ]
  in_substruct wear_RCF [ 112l ]  
  in_substruct wear_RCF [ 112r ]

##
##  Write to GPdat-file for animations in program GPLOT
##  ==============================================================
  s_var gpdat_r1		# Create a gp-file for animation in gplot
#
# s_var gpdat_force1    kzcb11r.F1y
# s_var gpdat_force1    kzcb11l.F1y
#
  if_then_init .exist. cp1_111r.Fx
   s_var gpdat_force1  cp1_111r.Fx   s_var gpdat_force1  cp1_111r.Fy   s_var gpdat_force1  cp1_111r.Fz
   s_var gpdat_force1  cp1_111l.Fx   s_var gpdat_force1  cp1_111l.Fy   s_var gpdat_force1  cp1_111l.Fz
   s_var gpdat_force1  cp1_112r.Fx   s_var gpdat_force1  cp1_112r.Fy   s_var gpdat_force1  cp1_112r.Fz
   s_var gpdat_force1  cp1_112l.Fx   s_var gpdat_force1  cp1_112l.Fy   s_var gpdat_force1  cp1_112l.Fz
  endif
  if_then_init .exist. cp2_111r.Fx
   s_var gpdat_force1  cp2_111r.Fx   s_var gpdat_force1  cp2_111r.Fy   s_var gpdat_force1  cp2_111r.Fz
   s_var gpdat_force1  cp2_111l.Fx   s_var gpdat_force1  cp2_111l.Fy   s_var gpdat_force1  cp2_111l.Fz
   s_var gpdat_force1  cp2_112r.Fx   s_var gpdat_force1  cp2_112r.Fy   s_var gpdat_force1  cp2_112r.Fz
   s_var gpdat_force1  cp2_112l.Fx   s_var gpdat_force1  cp2_112l.Fy   s_var gpdat_force1  cp2_112l.Fz
  endif
  if_then_init .exist. cp3_111r.Fx
   s_var gpdat_force1  cp3_111r.Fx   s_var gpdat_force1  cp3_111r.Fy   s_var gpdat_force1  cp3_111r.Fz
   s_var gpdat_force1  cp3_111l.Fx   s_var gpdat_force1  cp3_111l.Fy   s_var gpdat_force1  cp3_111l.Fz
   s_var gpdat_force1  cp3_112r.Fx   s_var gpdat_force1  cp3_112r.Fy   s_var gpdat_force1  cp3_112r.Fz
   s_var gpdat_force1  cp3_112l.Fx   s_var gpdat_force1  cp3_112l.Fy   s_var gpdat_force1  cp3_112l.Fz
  endif
#
  s_var gpdat_wheel_info  111r  lsa_111.b  $genkpf/../w_prof/EN13715.2006/S1002t32.5_EN13715.wheel
  s_var gpdat_wheel_info  111l  lsa_111.b  $genkpf/../w_prof/EN13715.2006/S1002t32.5_EN13715.wheel
  s_var gpdat_wheel_info  112r  lsa_112.b  $genkpf/../w_prof/EN13715.2006/S1002t32.5_EN13715.wheel
  s_var gpdat_wheel_info  112l  lsa_112.b  $genkpf/../w_prof/EN13715.2006/S1002t32.5_EN13715.wheel
#
  if_then_char_init ckpfr .eq. "Variable_W/R-geom"
   s_var gpdat_rail_info_right -100 $genkpf/../r_prof/bv50/bv50i30.rail
                                  0 $genkpf/../r_prof/bv50/bv50i30.rail
                                  5 $genkpf/../r_prof/bv50_worn/worn_rail_low3.rail
                                300 $genkpf/../r_prof/bv50_worn/worn_rail_low3.rail
                                305 $genkpf/../r_prof/bv50/bv50i30.rail
                                320 $genkpf/../r_prof/bv50/bv50i30.rail
                                325 $genkpf/../r_prof/bv50_worn/worn_rail_high3.rail
                                620 $genkpf/../r_prof/bv50_worn/worn_rail_high3.rail
                                625 $genkpf/../r_prof/bv50/bv50i30.rail
                                750 $genkpf/../r_prof/bv50/bv50i30.rail
#
   s_var gpdat_rail_info_left  -100 $genkpf/../r_prof/bv50/bv50i30.rail
                                  0 $genkpf/../r_prof/bv50/bv50i30.rail
                                  5 $genkpf/../r_prof/bv50_worn/worn_rail_high3.rail
                                300 $genkpf/../r_prof/bv50_worn/worn_rail_high3.rail
                                305 $genkpf/../r_prof/bv50/bv50i30.rail
                                320 $genkpf/../r_prof/bv50/bv50i30.rail
                                325 $genkpf/../r_prof/bv50_worn/worn_rail_low3.rail
                                620 $genkpf/../r_prof/bv50_worn/worn_rail_low3.rail
                                625 $genkpf/../r_prof/bv50/bv50i30.rail
                                750 $genkpf/../r_prof/bv50/bv50i30.rail
  else
   s_var gpdat_rail_info_right -100 $genkpf/../r_prof/uic60/uic60i40.rail
                               3000 $genkpf/../r_prof/uic60/uic60i40.rail
   s_var gpdat_rail_info_left  -100 $genkpf/../r_prof/uic60/uic60i40.rail
                               3000 $genkpf/../r_prof/uic60/uic60i40.rail
  endif


##
##  Write to MPdat-file for later postprocessing in program MPLOT
##  ==============================================================
  in_substruct save_car1 [ 1 ]
#
  in_substruct save_bog1 [ 11 ]
  in_substruct save_bog1 [ 12 ]
#
  in_substruct save_axl1 [ 111 ]
  in_substruct save_axl1 [ 112 ]
  in_substruct save_axl1 [ 121 ]
  in_substruct save_axl1 [ 122 ]
#
  in_substruct save_creep1 [ 111l ]
  in_substruct save_creep1 [ 111r ]

##
##  Add couplings between the masses
##  ==============================================================


##
## Secondary suspension: Coil springs
## ==================================
  coupl k3_l  kzcb11r                           # Name, first spring, right side
              car_1    acb_1  kzcb.B -kzcb.H    # Body #1 and its attachment point
              bog_11   0.0    kzcb.B -kzcb.H    # Body #2 and its attachment point
              kxcb_11r kycb_11r kzcb_11r        # Properties
              kzcb.hs  .5                       # Height of spring
              esys_1  m                         # Coordinate system and direction of action
              bog_11.f  bog_11.k bog_11.p       # Spring tilted according to the bogie
#
  coupl k3_l  kzcb11l                           # Name, first spring, left side
              car_1    acb_1 -kzcb.B -kzcb.H    # Body #1 and its attachment point
              bog_11   0.0   -kzcb.B -kzcb.H    # Body #2 and its attachment point
              kxcb_11l kycb_11l kzcb_11l        # Properties
              kzcb.hs  .5                       # Height of spring
              esys_1  m                         # Coordinate system and direction of action
              bog_11.f  bog_11.k bog_11.p       # Spring tilted according to the bogie
#
  coupl k3_l  kzcb12r                           # Name, second spring, right side
              car_1   -acb_1  kzcb.B -kzcb.H    # Body #1 and its attachment point
              bog_12   0.0    kzcb.B -kzcb.H    # Body #2 and its attachment point
              kxcb_12r kycb_12r kzcb_12r        # Properties
              kzcb.hs  .5                       # Height of spring
              esys_1  m                         # Coordinate system and direction of action
              bog_12.f  bog_12.k bog_12.p       # Spring tilted according to the bogie
#
  coupl k3_l  kzcb12l                           # Name, second spring, left side
              car_1   -acb_1 -kzcb.B -kzcb.H    # Body #1 and its attachment point
              bog_12   0.0   -kzcb.B -kzcb.H    # Body #2 and its attachment point
              kxcb_12l kycb_12l kzcb_12l        # Properties
              kzcb.hs  .5                       # Height of spring
              esys_1  m                         # Coordinate system and direction of action
              bog_12.f  bog_12.k bog_12.p       # Spring tilted according to the bogie

##
## Secondary suspension: Anti-roll bars
## ====================================
##
## coupl k c_name   body1   a1    b1   h1     body2    a2   b2   h2     prop     esys   dire
## -----------------------------------------------------------------------------------------
  coupl k  kfcb11   car_1  acb_1 0.0 -kfcb.H  bog_11   0.0  0.0 -kfcb.H kfcb_11  esys_1  f
  coupl k  kfcb12   car_1 -acb_1 0.0 -kfcb.H  bog_12   0.0  0.0 -kfcb.H kfcb_12  esys_1  f

##
## Secondary suspension: Traction rods
## ===================================
##
##         c_name body1   a1     b1      h1     body2    a2     b2      h2     prop    esys   dire
## -----------------------------------------------------------------------------------------------
  coupl k  ktr11  car_1  ktr.Ac ktr.Bc -ktr.Hc  bog_11  ktr.Ab ktr.Bb -ktr.Hb  ktr_11  esys_1  c
  coupl k  ktr12  car_1 -ktr.Ac ktr.Bc -ktr.Hc  bog_12 -ktr.Ab ktr.Bb -ktr.Hb  ktr_12  esys_1  c
  coupl c  ctr11  car_1  ktr.Ac ktr.Bc -ktr.Hc  bog_11  ktr.Ab ktr.Bb -ktr.Hb  ctr_11  esys_1  c
  coupl c  ctr12  car_1 -ktr.Ac ktr.Bc -ktr.Hc  bog_12 -ktr.Ab ktr.Bb -ktr.Hb  ctr_12  esys_1  c

##
## Secondary suspension: Lateral bumpstops
## =======================================
##
## coupl k c_name  body1  a1    b1   h1       body2  a2  b2   h2       prop     esys   dire
## ----------------------------------------------------------------------------------------
  coupl k  kycbs11 car_1  acb_1 0.0 -kycbs.H  bog_11 0.0 0.0 -kycbs.H  kycbs_11 esys_1  y
  coupl k  kycbs12 car_1 -acb_1 0.0 -kycbs.H  bog_12 0.0 0.0 -kycbs.H  kycbs_12 esys_1  y
#
  s_var sngl kycbs11.d
  s_var sngl kycbs12.d
  s_var sngl kycbs11.F
  s_var sngl kycbs12.F

##
## Secondary suspension: Vertical bumpstops
## ========================================
##
## coupl k c_name   body1  a1             b1       h1       body2   a2       b2       h2       prop      esys   dire
## -----------------------------------------------------------------------------------------------------------------
  coupl k  kzcbs11r car_1  acb_1+kzcbs.A  kzcbs.B -kzcbs.H  bog_11  kzcbs.A  kzcbs.B -kzcbs.H  kzcbs_11r esys_1  z
  coupl k  kzcbs11l car_1  acb_1+kzcbs.A -kzcbs.B -kzcbs.H  bog_11  kzcbs.A -kzcbs.B -kzcbs.H  kzcbs_11l esys_1  z
  coupl k  kzcbs12r car_1 -acb_1-kzcbs.A  kzcbs.B -kzcbs.H  bog_12 -kzcbs.A  kzcbs.B -kzcbs.H  kzcbs_12r esys_1  z
  coupl k  kzcbs12l car_1 -acb_1-kzcbs.A -kzcbs.B -kzcbs.H  bog_12 -kzcbs.A -kzcbs.B -kzcbs.H  kzcbs_12l esys_1  z
#
  s_var sngl kzcbs11r.d  s_var sngl kzcbs11l.d
  s_var sngl kzcbs12r.d  s_var sngl kzcbs12l.d
  s_var sngl kzcbs11r.F  s_var sngl kzcbs11l.F
  s_var sngl kzcbs12r.F  s_var sngl kzcbs12l.F

##
## Secondary suspension: Lateral viscous dampers
## =============================================
##
## coupl c c_name   body1   a1            b1       h1      body2    a2      b2       h2      prop     esys   dire
## --------------------------------------------------------------------------------------------------------------
  coupl c  cycb11r  car_1  acb_1+cycb.A  cycb.Bc -cycb.Hc  bog_11  cycb.A  cycb.Bb -cycb.Hb cycb_11r  esys_1  c
  coupl c  cycb11l  car_1  acb_1+cycb.A -cycb.Bc -cycb.Hc  bog_11  cycb.A -cycb.Bb -cycb.Hb cycb_11l  esys_1  c
  coupl c  cycb12r  car_1 -acb_1-cycb.A  cycb.Bc -cycb.Hc  bog_12 -cycb.A  cycb.Bb -cycb.Hb cycb_12r  esys_1  c
  coupl c  cycb12l  car_1 -acb_1-cycb.A -cycb.Bc -cycb.Hc  bog_12 -cycb.A -cycb.Bb -cycb.Hb cycb_12l  esys_1  c

##
## Secondary suspension: Vertical viscous dampers
## ==============================================
##
## coupl c c_name   body1    a1           b1      h1      body2    a2      b2      h2       prop     esys   dire
## -------------------------------------------------------------------------------------------------------------
  coupl c  czcb11r  car_1  acb_1+czcb.A  czcb.B -czcb.Hc  bog_11  czcb.A  czcb.B -czcb.Hb  czcb_11r  esys_1  z
  coupl c  czcb11l  car_1  acb_1+czcb.A -czcb.B -czcb.Hc  bog_11  czcb.A -czcb.B -czcb.Hb  czcb_11l  esys_1  z
  coupl c  czcb12r  car_1 -acb_1-czcb.A  czcb.B -czcb.Hc  bog_12 -czcb.A  czcb.B -czcb.Hb  czcb_12r  esys_1  z
  coupl c  czcb12l  car_1 -acb_1-czcb.A -czcb.B -czcb.Hc  bog_12 -czcb.A -czcb.B -czcb.Hb  czcb_12l  esys_1  z

##
## Secondary suspension: Yaw viscous dampers
## =========================================
##
##         c_name   body1   a1       b1       h1      body2    a2       b2       h2      prop_k   prop_c    esys  dire
## -------------------------------------------------------------------------------------------------------------------
  coupl kc cccb11r  car_1  cccb.Ac  cccb.Bc -cccb.Hc  bog_11  cccb.Ab  cccb.Bb -cccb.Hb  kccb_11r cccb_11r  esys_1 c
  coupl kc cccb11l  car_1  cccb.Ac -cccb.Bc -cccb.Hc  bog_11  cccb.Ab -cccb.Bb -cccb.Hb  kccb_11l cccb_11l  esys_1 c
  coupl kc cccb12r  car_1 -cccb.Ac  cccb.Bc -cccb.Hc  bog_12 -cccb.Ab  cccb.Bb -cccb.Hb  kccb_12r cccb_12r  esys_1 c
  coupl kc cccb12l  car_1 -cccb.Ac -cccb.Bc -cccb.Hc  bog_12 -cccb.Ab -cccb.Bb -cccb.Hb  kccb_12l cccb_12l  esys_1 c

##
## Primary suspension: Springs
## ===========================
##
##         c_name    body1    a1      b1      h1      body2   a2    b2      h2     prop       esys  dire
## -------------------------------------------------------------------------------------------------------
  coupl k  kmba111r  bog_11  aba_11  kmba.B -ro_111   axl_111 0.0  kmba.B -ro_111  kmba_111r  esys_1 m
  coupl k  kmba111l  bog_11  aba_11 -kmba.B -ro_111   axl_111 0.0 -kmba.B -ro_111  kmba_111l  esys_1 m
  coupl k  kmba112r  bog_11 -aba_11  kmba.B -ro_112   axl_112 0.0  kmba.B -ro_112  kmba_112r  esys_1 m
  coupl k  kmba112l  bog_11 -aba_11 -kmba.B -ro_112   axl_112 0.0 -kmba.B -ro_112  kmba_112l  esys_1 m
  coupl k  kmba121r  bog_12  aba_12  kmba.B -ro_121   axl_121 0.0  kmba.B -ro_121  kmba_121r  esys_1 m
  coupl k  kmba121l  bog_12  aba_12 -kmba.B -ro_121   axl_121 0.0 -kmba.B -ro_121  kmba_121l  esys_1 m
  coupl k  kmba122r  bog_12 -aba_12  kmba.B -ro_122   axl_122 0.0  kmba.B -ro_122  kmba_122r  esys_1 m
  coupl k  kmba122l  bog_12 -aba_12 -kmba.B -ro_122   axl_122 0.0 -kmba.B -ro_122  kmba_122l  esys_1 m
#
  coupl c  cmba111r  bog_11  aba_11  kmba.B -ro_111   axl_111 0.0  kmba.B -ro_111  cmba_111r  esys_1 m
  coupl c  cmba111l  bog_11  aba_11 -kmba.B -ro_111   axl_111 0.0 -kmba.B -ro_111  cmba_111l  esys_1 m
  coupl c  cmba112r  bog_11 -aba_11  kmba.B -ro_112   axl_112 0.0  kmba.B -ro_112  cmba_112r  esys_1 m
  coupl c  cmba112l  bog_11 -aba_11 -kmba.B -ro_112   axl_112 0.0 -kmba.B -ro_112  cmba_112l  esys_1 m
  coupl c  cmba121r  bog_12  aba_12  kmba.B -ro_121   axl_121 0.0  kmba.B -ro_121  cmba_121r  esys_1 m
  coupl c  cmba121l  bog_12  aba_12 -kmba.B -ro_121   axl_121 0.0 -kmba.B -ro_121  cmba_121l  esys_1 m
  coupl c  cmba122r  bog_12 -aba_12  kmba.B -ro_122   axl_122 0.0  kmba.B -ro_122  cmba_122r  esys_1 m
  coupl c  cmba122l  bog_12 -aba_12 -kmba.B -ro_122   axl_122 0.0 -kmba.B -ro_122  cmba_122l  esys_1 m

##
## Primary suspension: Lateral bumpstops
## ======================================
##
##         c_name    body1    a1    b1   h1       body2   a2  b2   h2      prop       esys   dire
## ------------------------------------------------------------------------------------------------
  coupl k  kybas111  bog_11  aba_11 0.0 -kybas.H  axl_111 0.0 0.0 -kybas.H  kybas_111  esys_1  y
  coupl k  kybas112  bog_11 -aba_11 0.0 -kybas.H  axl_112 0.0 0.0 -kybas.H  kybas_112  esys_1  y
  coupl k  kybas121  bog_12  aba_12 0.0 -kybas.H  axl_121 0.0 0.0 -kybas.H  kybas_121  esys_1  y
  coupl k  kybas122  bog_12 -aba_12 0.0 -kybas.H  axl_122 0.0 0.0 -kybas.H  kybas_122  esys_1  y
#
  s_var sngl kybas111.d
  s_var sngl kybas112.d
  s_var sngl kybas121.d
  s_var sngl kybas122.d
  s_var sngl kybas111.F
  s_var sngl kybas112.F
  s_var sngl kybas121.F
  s_var sngl kybas122.F

##
## Primary suspension: Vertical bumpstops
## ======================================
##
##         c_name    body1    a1             b1       h1       body2    a2       b2       h2       prop       esys   dire
## -----------------------------------------------------------------------------------------------------------------------
  coupl k  kzbas111r bog_11  aba_11+kzbas.A  kzbas.B -kzbas.H  axl_111  kzbas.A  kzbas.B -kzbas.H  kzbas_111r esys_1  z
  coupl k  kzbas112r bog_11 -aba_11-kzbas.A  kzbas.B -kzbas.H  axl_112 -kzbas.A  kzbas.B -kzbas.H  kzbas_112r esys_1  z
  coupl k  kzbas121r bog_12  aba_12+kzbas.A  kzbas.B -kzbas.H  axl_121  kzbas.A  kzbas.B -kzbas.H  kzbas_121r esys_1  z
  coupl k  kzbas122r bog_12 -aba_12-kzbas.A  kzbas.B -kzbas.H  axl_122 -kzbas.A  kzbas.B -kzbas.H  kzbas_122r esys_1  z
  coupl k  kzbas111l bog_11  aba_11+kzbas.A -kzbas.B -kzbas.H  axl_111  kzbas.A -kzbas.B -kzbas.H  kzbas_111l esys_1  z
  coupl k  kzbas112l bog_11 -aba_11-kzbas.A -kzbas.B -kzbas.H  axl_112 -kzbas.A -kzbas.B -kzbas.H  kzbas_112l esys_1  z
  coupl k  kzbas121l bog_12  aba_12+kzbas.A -kzbas.B -kzbas.H  axl_121  kzbas.A -kzbas.B -kzbas.H  kzbas_121l esys_1  z
  coupl k  kzbas122l bog_12 -aba_12-kzbas.A -kzbas.B -kzbas.H  axl_122 -kzbas.A -kzbas.B -kzbas.H  kzbas_122l esys_1  z
#
  s_var sngl kzbas111r.d  s_var sngl kzbas111l.d
  s_var sngl kzbas112r.d  s_var sngl kzbas112l.d
  s_var sngl kzbas121r.d  s_var sngl kzbas121l.d
  s_var sngl kzbas122r.d  s_var sngl kzbas122l.d
  s_var sngl kzbas111r.F  s_var sngl kzbas111l.F
  s_var sngl kzbas112r.F  s_var sngl kzbas112l.F
  s_var sngl kzbas121r.F  s_var sngl kzbas121l.F
  s_var sngl kzbas122r.F  s_var sngl kzbas122l.F

##
## Primary suspension: Vertical viscous damper
## ===========================================
##
##         c_name    body1     a1         b1       h1       body2    a2      b2       h2       prop      esys  dire
## -----------------------------------------------------------------------------------------------------------------
  coupl c  czba111r  bog_11  aba_11+czba.A  czba.Bb -czba.Hb  axl_111 +czba.A  czba.Ba -czba.Ha  czba_111r  esys_1 c
  coupl c  czba111l  bog_11  aba_11+czba.A -czba.Bb -czba.Hb  axl_111 +czba.A -czba.Ba -czba.Ha  czba_111l  esys_1 c
  coupl c  czba112r  bog_11 -aba_11-czba.A  czba.Bb -czba.Hb  axl_112 -czba.A  czba.Ba -czba.Ha  czba_112r  esys_1 c
  coupl c  czba112l  bog_11 -aba_11-czba.A -czba.Bb -czba.Hb  axl_112 -czba.A -czba.Ba -czba.Ha  czba_112l  esys_1 c
  coupl c  czba121r  bog_12  aba_12+czba.A  czba.Bb -czba.Hb  axl_121 +czba.A  czba.Ba -czba.Ha  czba_121r  esys_1 c
  coupl c  czba121l  bog_12  aba_12+czba.A -czba.Bb -czba.Hb  axl_121 +czba.A -czba.Ba -czba.Ha  czba_121l  esys_1 c
  coupl c  czba122r  bog_12 -aba_12-czba.A  czba.Bb -czba.Hb  axl_122 -czba.A  czba.Ba -czba.Ha  czba_122r  esys_1 c
  coupl c  czba122l  bog_12 -aba_12-czba.A -czba.Bb -czba.Hb  axl_122 -czba.A -czba.Ba -czba.Ha  czba_122l  esys_1 c