Home    Search    Up    Reference Manuals    Return    Calc menu    Input Data Menu   


`coupl`= `c_type`, input(*)

(Alt. `coupl_para`= `c_type`, input(*))



Defines a property or a coupling between masses.

The user can choose to define the coupling with main command `coupl` or `coupl_para`. If defined with command `coupl` the coupling forces will be calculated sequentially together with the other commands in the model. If defined with command `coupl_para` the coupling forces will be calculated in parallel in the end of every timestep.

The OMP_NUM_THREADS environment variable specifies the number of threads to use for parallel regions. If OMP_NUM_THREADS is undefined, all threads in the CPU will be used. If you want to limit the number of used threads you can start a calculation in program CALC according to the following example:

OMP_NUM_THREADS=4 tsim runf/tang_ideal.tsimf

The underscore letter "_" in coupling names has a very special meaning. See Fallback Values

E.g. The underscore letter can be used in the following way:

_111l or _111r => Wheel specific name
_111 => Axle specific name
_11l or _11r => Bogie side specific name
_11 => Bogie specific name
_1 => Vehicle specific name
_ => Fallback value for the whole train-set if no specific name can be found

Please start to look in the theory manual, for the definition of deformations in couplings.

Available couplings:

p_lin Defines a linear property
p_lin36 Defines a linear 6x6-matrix property
p_lin144 Defines a linear 12x12-matrix property
p_nlin Defines a non-linear property
p_nlin_s Defines an asymmetric non-linear property
p_nlin_t Defines a non-linear property given by tangential values
p_nlin_st Defines an asymmetric non-linear property given by tangential values
p_kfrkc Property designed for coupling kfrkc
beam_1 Defines an Euler-Bernoulli beam connected to many masses
beam_3 Defines an Euler-Bernoulli beam with variable bending stiffness
beam_3e A beam similar to beam_3, but it has a finite length
beam_4 Similar to beam_3 but takes more effects into consideration.
c Defines damper with a pre-defined property
c_l Damper similar to c, oriented a small angle relative to esys
c_r Damper similar to c, oriented a large angle relative to esys
c_vs_d Defines a displacement-controlled damper
c12_b1 Defines a damping coupling between two masses of type m_rigid_12
c12_f Defines a damping coupling between two masses of type m_rigid_12
c_magic_1 Defines a rolling contact between two masses according to the Magic Formula
creep_contact_1 Defines a rolling contact between two masses according to CONTACT
creep_contact_6 A wheel/rail-contact that utilizes the new features in CONTACT v23.2
creep_fasim_1 Defines a rolling contact between two masses. The normal contact is solved in a linear spring. The tangential contact is solved with Kalker's fasim routine.
creep_fasim_2 Similar to creep_fasim_1, but the creepages are modulated according formulas developed by: Maksym Spiryagin , Oldrich Polach & Colin Cole; Vehicle System Dynamics, 13 Aug 2013.
creep_fasim_4 Similar to creep_fasim_1, but this wheel/rail-coupling uses the wheel and rail profiles directly.
creep_fastrip_1 Defines a rolling contact between two masses according to ANALYN and FaStrip.
creep_fastrip_3 Defines a rolling contact between two masses according using FaStrip for the tangential problem.
creep_lookuptable_1 Defines a rolling contact between two masses
creep_lookuptable_2 Defines a rolling contact between two masses
creep_polach_2 Defines a rolling contact between two masses. The normal contact is solved in a linear spring. The tangential contact is solved with O.Polach's ADH-routine.
creep_tanel_springs_1 Defines a rolling contact between two masses
coupler_1 Car-car coupler, buffer and/or draw-gear
coupler_2 Car-car coupler, buffer and/or draw-gear
derailm_2 Defines a contact element between two bodies
k, k_preZ Defines stiffness with a pre-defined property
k_l, k_l_preZ Similar to coupl k, but rotated a small angle relative to esys
k_r, k_r_preZ Similar to coupl k, but rotated a large angle relative to esys
k12_b1 Defines a stiffness coupling between two masses of type m_rigid_12
k12_f Defines a stiffness coupling between two masses of type m_rigid_12
k3, k3_preZ Defines stiffness with 3 pre-defined properties
k3_l, k3_l_preZ Similar to coupl k3, but rotated a small angle relative to esys
k3_r, k3_r_preZ Similar to coupl k3, but rotated a large angle relative to esys
km, km_preZ Similar to coupl k, but the user can control if the coupling shall generate moments on attached masses or not
km_l, km_l_preZ Similar to coupl km, but rotated a small angle relative to esys
km_r, km_r_preZ Similar to coupl km, but rotated a large angle relative to esys
k_air3_exp A coupling for modeling airbags with exponential smooth friction in the horizontal plane.
k_air3_mawa A coupling for modeling airbags in railway vehicles, using equations for viscous flow in pipes in vertical direction.
k_air3_mawa2 A coupling for modeling airbags as in coupling k_air3_mawa, but with two auxiliary air reservoirs in parallel.
k_air4 A coupling for modeling of airbags.
k_coil3 A coupling for modeling of vertically standing coil springs.
kc Defines a spring in series with a damper.
kce Defines a spring in series with a damper with an exponent factor.
kckc Defines a coupling consisting of two dampers and two springs. The first spring and damper are connected in parallel with each other
kf Defines a friction block with series flexibility
kf_l Similar to coupl kf, but rotated a small angle relative to esys
kf_r Similar to coupl kf, but rotated a large angle relative to esys
kf2 Defines a two-dimensional friction block with two perpendicular serial flexibilities
kf2_l Similar to coupl kf2, but rotated a small angle relative to esys
kf2_r Similar to coupl kf2, but rotated a large angle relative to esys
kf3 Defines a three-dimensional friction block with three perpendicular serial flexibilities
kfrkc Defines a coupling with smooth friction and viscous damping
kf_exp1 Defines a coupling comprising a stiffness with exponential friction
kf_exp2 A stiffness coupling with a exponential shaped friction added on
kf_exp3 A stiffness coupling with a smooth friction added on
m_flex_1 Links a coupling to a flexible body
m_flex_m6 Links a coupling to a flexible body with a moving attachment point
cuser# Defines a coupling whose properties are defined in an own supplied subroutine CUSER# (# is a number between 0 and 9)
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

□

c_type = `p_lin`


Defines a linear coupling property.




 coupl p_lin  `p_name'  +-`F0  +-`v1

p_name = Assigning a name to this property.
F0 = The force which the property will produce on zero displacement. F0 is used to define a preloaded spring. Positive value in F0 will lead to a positive force on body no.1 at zero displacement.
F0 has no significance when the coupling property is used in dampers.
The value can either be constant or a previously defined variable. By using a variable, this coupling property can describe a non-linear property or an active coupling element.
v1 = Stiffness or damping values of the defined property. The value can either be constant or a previously defined variable. By using a variable, this coupling property can describe a non-linear property or an active coupling element.

Variables generated in main memory:

p_name.F0 = F0 = Force on zero displacement.
p_name.v1 = v1 = The property value of the coupling
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `p_lin36`


Defines a 6x6 dimensional linear coupling matrix, and a vector which specifies the coupling's preload forces on zero displacement. If components of the coupling matrix or the preload vector consists of variables, then a non-linear coupling matrix can be modeled.

The force vector will be calculated according to:
calc_p_lin36_1.gif
or written in components:
calc_p_lin36.gif

 coupl p_lin36  `p_name'  +-`F0(1:6)  +-`k(1:6,1:6)
p_name = Assigning a name to this property.
F0 = Six-dimensional force vector according to the formula above. F0 is used to define a preloaded spring. Positive values in F0 will lead to positive forces on body no.1 at zero displacement.
F0 has no significance when the coupling property is used in dampers.
The values can either be constant or previously defined variables. By using a variable, this coupling property can describe a non-linear property or an active coupling element.
k = 6x6-dimensional coupling matrix. The data is read in rows k(1,1), k(1,2), k(1,3) ,,, etc.

Variables generated in the main output data field:
p_name.F0x = Preload force in x-direction.
p_name.F0y = Preload force in y-direction.
p_name.F0z = Preload force in z-direction.
p_name.F0f = Preload moment in f-direction.
p_name.F0k = Preload moment in k-direction.
p_name.F0p = Preload moment in p-direction.
p_name.xx = The xx-component of the coupling matrix.
p_name.xy = The xy-component of the coupling matrix.
p_name.xz = The xz-component of the coupling matrix.
p_name.xf = The xf-component of the coupling matrix.
. . . = . . . . . . . . .
. . . = . . . . . . . . .
p_name.pp = The pp-component of the coupling matrix.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `p_lin144`


Defines a 12x12 dimensional linear coupling matrix, and a vector which specifies the coupling's prestressing forces on zero displacement. If components of the coupling matrix or the preload vector consists of variables, then a non-linear coupling matrix can be modeled.

The force vector is calculated according to the following formula:
□
or written in components:
□

 coupl p_lin144  `p_name'  +-`F0(1:12)  +-`k(1:12,1:12)
p_name=Assigning a name to this property.
F0 =Force vector which is added to the output data.
k =Coupling matrix, the data is read in rows.

Variables generated in the main memory:

p_name.F1x = Force Fx on body 1 when delta_x1 = 0.
p_name.F1y = Force Fy on body 1 when delta_y1 = 0.
p_name.F1z = Force Fz on body 1 when delta_z1 = 0.
p_name.F1f = Force Ff on body 1 when delta_f1 = 0.
p_name.F1k = Force Fk on body 1 when delta_k1 = 0.
p_name.F1p = Force Fp on body 1 when delta_p1 = 0.
p_name.F2x = Force Fx on body 2 when delta_x2 = 0.
p_name.F2y = Force Fy on body 2 when delta_y2 = 0.
p_name.F2z = Force Fz on body 2 when delta_z2 = 0.
p_name.F2f = Force Ff on body 2 when delta_f2 = 0.
p_name.F2k = Force Fk on body 2 when delta_k2 = 0.
p_name.F2p = Force Fp on body 2 when delta_p2 = 0.
p_name.11 = x1x1-component of the stiffness matrix.
p_name.12 = x1y1-component of the stiffness matrix.
p_name.13 = x1z1-component of the stiffness matrix.
p_name.14 = x1f1-component of the stiffness matrix.
p_name.15 = x1k1-component of the stiffness matrix.
p_name.16 = x1p1-component of the stiffness matrix.
p_name.17 = x1x2-component of the stiffness matrix.
p_name.18 = x1y2-component of the stiffness matrix.
p_name.19 = x1z2-component of the stiffness matrix.
p_name.1A = x1f2-component of the stiffness matrix.
p_name.1B = x1k2-component of the stiffness matrix.
p_name.1C = x1p2-component of the stiffness matrix.
p_name.21 = y1x1-component of the stiffness matrix.
p_name.22 = y1y1-component of the stiffness matrix.
. . . = . . . . . . . . .
. . . = . . . . . . . . .
. . . = . . . . . . . . .
p_name.CB = p2k2-component of the stiffness matrix.
p_name.CD = p2p2-component of the stiffness matrix.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

□

c_type = `p_nlin`


Defines a non-linear coupling property, built-up of a number of force-displacement value-pairs.

 coupl p_nlin `p_name' +-`value0
                      (+-`)v_pairs(*)


p_name = Assigning a name to this property.
value0 = In addition to the coupling force produced by v_pairs, an extra force can be given in value0. Value0 is used to define a preloaded spring or a spring with the force of gravity acting through it. Positive value in value0 will lead to a positive force acting on body no.1 at zero displacement.
Value0 has no significance when the coupling property is used in dampers.
v_pairs= The value pair which the property shall have. The value pairs are described with x and y coordinates in the following order: x1, y1, x2, y2, x3,,,, etc.
The end of the input is marked by entering a new valid main command according to the list under the Input Data Menu.
The value pairs must be an even number otherwise an error will occur. If the displacement is to the left of x(1) or to the right of x(n), the force will be extrapolated based on the gradient of the line between the outermost x-value and the second outermost x-value.
The x-values in the value pair must be ascending, otherwise an error will occur, and the point will be ignored.

Variables generated in main memory:
p_name.F0 = Force at zero displacement.
p_name.nb = Number of breakpoints.
p_name.x1 = Displacement value for point no. 1.
p_name.y1 = The coupling force at displacement no. 1.
p_name.x2 = Displacement value for point no. 2.
p_name.y2 = The coupling force at displacement no. 2.
p_name.x3 = Displacement value for point no. 3.
. . . . = . . . . . . . . . . . . .
. . . . = . . . . . . . . . . etc.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

□

c_type = `p_nlin_s`

Defines an asymmetric non-linear coupling property, whose properties in positive deformations (velocity) are described in v_pairs below. The same force, but with the opposite sign, are given for negative deformations (velocity).

 coupl p_nlin_s `p_name' +-`value0
                        (+-`)v_pairs(*)  

p_name = Assigning a name to this property.
value0 = The force which the property will produce on zero displacement. Value0 is used to define a preloaded spring or a spring with the force of gravity acting through it. Positive value in value0 will lead to a positive force on body no.1 at zero displacement. Value0 is redundant if the coupling property is used in dampers.
v_pairs = The value pair which the property shall have. The value pairs are described with x and y coordinates in the following order: x2, y2, x3, y3, x4,,,, etc.
The first coordinate (x1,y1) is already predefined and equal to (0.,0.).
The end of the input is marked by entering a new valid main command according to the list under item 3.1). The value pairs must be an even number otherwise an error will occur. If the input variable is larger than the breakpoint for the last x-value x(n), the output will be extrapolated based on the gradient of the line between the outermost x-value and the second outermost x-value. The x-values in the value pair must be in ascending sequence, otherwise an error will occur, and the point will be ignored in the input phase.

Variables generated in main memory:
p_name.F0 = Force at zero displacement.
p_name.nb = Number of breakpoints.
p_name.x1 = Displacement value for the initial point is predefined and equal to 0.
p_name.y1 = The coupling force for the initial point is predefined and equal to 0.
p_name.x2 = Displacement value for point no. 2.
p_name.y2 = The coupling force at displacement no. 2.
p_name.x3 = Displacement value for point no. 3.
. . . . = . . . . . . . . . . . . .
. . . . = . . . . . . . . . . etc.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

□

c_type = `p_nlin_t`

Defines a non-linear coupling property, built-up of tangential gradients and breakpoints given by the values listed below. As the stiffness curve is only described by gradients, the vertical position of the curve is not defined. Therefore the user must start the input data string with a reference point (x-ref,y-ref) which the curve shall pass through.

 coupl p_nlin_t  `p_name',
                 (+-`)x-ref,  (+-`)y-ref,
                 (+-`)values(*)

p_name = Assigning a name to this property.
x-ref = X-value of the reference point.
The argument for x-ref may either be a constant or a variable. If a variable is read, the variable's value will be retrieved and will be stored in p_name.xl, but if the variable's value is changed during the calculation process, it will not affect the property p_name. The original values in p_name.xl will remain.
y-ref = Y-value of the reference point.
The argument for y-ref may either be a constant or a variable. If a variable is read, the variable's value will be retrieved and will be stored in p_name.yl, but if the variable's value is changed during the calculation process, it will not affect the property p_name. The original values in p_name.yl will remain.
values = The gradients and breakpoints which the property will have. The values are described by gradient, breakpoint, gradient, breakpoint,,, in the following order:
v1, x2, v2, x3, v3,,,, etc.
The x-values must be increasing starting with the most negative point, and end with the most positive point.
The input will be concluded by giving a new valid main command according to the list under item 3.1). The number of values must be odd otherwise an error will occur. The values will both begin and end with gradients. These gradients will apply when the displacement lies outside the outermost breakpoints. The breakpoints must be in ascending sequence otherwise an error print will occur, and the point will be ignored during the input phase.


Variables generated in main memory:
p_name.nb = Number of breakpoints.
p_name.x1 = X-reference point.
p_name.y1 = Y-reference point.
p_name.v1 = First tangential gradient
p_name.x2 = First breakpoint
p_name.v2 = Second tangential gradient
p_name.x3 = Second breakpoint
p_name.v3 = Third tangential gradient
. . . . = . . . . . . . . . . . . .
. . . . = . . . . . . . . . . etc.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

□

c_type = `p_nlin_st`


Defines an asymmetric non-linear coupling property, built-up of tangential gradients and breakpoints given by the values listed below. As the stiffness curve is only described by gradients and breakpoints, the curve must be related to a fixed point given by a force and displacement. For this case c_type = `p_nlin_st`, the fixed point will be (displacement=0, force=value0).

 coupl p_nlin_st `p_name',
                 (+-`)value0, (+-`)values(*)

p_name = Assigning a name to this property.
value0 = The force which the property will produce on zero displacement. Value0 is used to define a preloaded spring or a spring with the force of gravity acting through it. Positive value in value0 will lead to a positive force on body no.1 at zero displacement.
Value0 has no significance when the coupling property is used in dampers.
values = The gradients and breakpoints which the property will have. The values are described by gradient, breakpoint, gradient, breakpoint,,, in the following order:
v1, x1, v2, x2, v3,,,, etc.
The input is ended by giving a new valid main command according to the list under item 3.1). The number of values must be odd otherwise the program will stop and an error message will be printed. The values must both begin and end with gradients. These gradients will apply when the displacement lies outside the outermost breakpoints. All breakpoints must be positive and in ascending order otherwise a warning message will be printed, and the point will be ignored during the reading phase. The argument in the values can contain both constants and variables. If a variable is read, the variable's value will be retrieved and stored under the property's memory position, but if the variable's value is changed during the calculation process, it will not affect the property p_name. The original values will remain.

Variables generated in main memory:
p_name.F0 = Force at zero displacement.
p_name.nb = Number of breakpoints.
p_name.v1 = Tangential gradient through x=0.
p_name.x2 = Displacement value for point no. 2.
p_name.v2 = Tangential gradient after point 2.
p_name.x3 = Displacement value for point no. 3.
p_name.v3 = Tangential gradient after point 3.
. . . . = . . . . . . . . . . . . .
. . . . = . . . . . . . . . . etc.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `p_kfrkc`


Defines the parameters to the non-linear coupling kfrkc.

 coupl p_kfrkc  `p_name'  +-`F0 +-`ke +-`Ffm +-`x2 +-`kv +-`c
p_name = Assigning a name to this property.
F0 = The force which the property will have on zero displacement. Positive value gives positive force on body no. 1 at zero displacement.
ke = Stiffness for the elastic part of the coupling.
Ffm = Maximum friction force for the friction part of the coupling.
x2 = Displacement, relative initial position, when half the maximum friction force has been reached.
kv = Serial stiffness for the viscous part of the coupling.
c = Damping coefficient for the viscous part of the coupling.

Variables generated in main memory:
p_name.F0 = Force F0
p_name.ke = Stiffness ke
p_name.Ffm = Force Ffm
p_name.x2 = Displacement x2
p_name.kv = Stiffness kv
p_name.c = Damping c
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `beam_1`


Defines an Euler-Bernoulli beam connected to many masses

 coupl beam_1  `c_name' `dire' +-`EI
                +-`nSuspMass
                m_name_s1  +-`m_name_s1.A +-`m_name_s1.B +-`m_name_s1.H  +-`m_name_s1.k
                m_name_s2  +-`m_name_s2.A +-`m_name_s2.B +-`m_name_s2.H  ,,, etc.
                +-`nRigidMass
                m_name_r1  +-`m_name_r1.A +-`m_name_r1.B +-`m_name_r1.H
                m_name_r2  +-`m_name_r2.A +-`m_name_r2.B    ,,, etc.
c_name = Name of the coupling to be created.
dire = Working direction for the beam. Valid directions are: `x`, `y` and `z`.
EI = Young's modulus times area moment of inertia.
nSuspMass = Number of suspended masses connected to the beam.
m_name_s1 = Name of first suspended mass
m_name_s1.A = Attachment point for first suspended mass in longitudinal direction
m_name_s1.B = Attachment point for first suspended mass in lateral direction
m_name_s1.H = Attachment point for first suspended mass in vertical direction
m_name_s1.k = Stiffness between first mass and beam
m_name_s2 = Name of second suspended mass
etc. = etc.
nRigidMass = Number of rigidly attached masses.
m_name_r1 = Name of first unsuspended mass
m_name_r1.A = Attachment point for first unsuspended mass in longitudinal direction
m_name_r1.B = Attachment point for first unsuspended mass in lateral direction
m_name_r1.H = Attachment point for first unsuspended mass in vertical direction
m_name_r2 = Name of second unsuspended mass
etc. = etc.

Variables generated in the main memory:

Input variables:

c_name.EI = Young's modulus times area moment of inertia.
c_name.NsMass = Number of suspended masses.
c_name.sMass? = The number of the suspended mass.
c_name.AsM? = Longitudinal position of attachment point for a suspended mass.
c_name.BsM? = Lateral position of attachment point for a suspended mass.
c_name.HsM? = Vertical position of attachment point for a suspended mass.
c_name.ksM? = Stiffness between attachment point and the suspended mass.
c_name.NrMass = Number of unsuspended masses.
c_name.rMass¿ = The number of the unsuspended mass.
c_name.ArM¿ = Longitudinal position of attachment point for an unsuspended mass.
c_name.BrM¿ = Lateral position of attachment point for an unsuspended mass.
c_name.HrM¿ = Vertical position of attachment point for an unsuspended mass.

Output variables:

c_name.ps = Position of beam in attachment point for a suspended mass.
c_name.ds = Deflection of the series spring m_name_s?.k, where m_name_s? is a suspended mass.
c_name.Fs = Force in series spring m_name_s?.k, where m_name_s? is a suspended mass.
c_name.dr = Position of attachment point for an unsuspended mass.
c_name.fr = Angle of attachment point for an unsuspended mass.
c_name.Fr = Force between an unsuspended mass and beam.


Usage:

Detailed rail model.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `beam_3`


Defines an Euler-Bernoulli beam connected to many masses. This beam is very similar to coupl beam_1 above, with the extension that this beam handles a bending stiffness that varies along the beam.

The length of the beam is infinite. When a suspended mass is before m_name_r1 or when it has passed the last rigid mounted mass, The amplitude of the beam is extrapolated.

□
 coupl beam_3  `c_name' `dire'
                nSuspMass
                m_name_s1  (+-`)c_name.AsM1 (+-`)c_name.BsM1 (+-`)c_name.HsM1  (+-`)c_name.ksM1
                m_name_s2  (+-`)c_name.AsM2 (+-`)c_name.BsM2 (+-`)c_name.HsM2  ,,, etc.
                nRigidMass
                m_name_r1  (+-`)m_name_r1.A (+-`)m_name_r1.B (+-`)m_name_r1.H
                m_name_r2  (+-`)m_name_r2.A (+-`)m_name_r2.B (+-`)m_name_r2.H (+-`)m_name_r12.EI
                m_name_r3  (+-`)m_name_r3.A (+-`)m_name_r3.B (+-`)m_name_r3.H (+-`)m_name_r23.EI
                m_name_r4  (+-`)m_name_r4.A (+-`)m_name_r4.B    ,,, etc.

c_name = Name of the coupling to be created.
dire = Working direction for the beam. Valid directions are `y` and `z`.
nSuspMass = Number of suspended masses connected to the beam.
m_name_s1 = Name of first suspended mass
c_name.AsM1 = Attachment point for first suspended mass in longitudinal direction
c_name.BsM1 = Attachment point for first suspended mass in lateral direction
c_name.HsM1 = Attachment point for first suspended mass in vertical direction
c_name.ksM1 = Stiffness between mass m_name_s1 and beam
m_name_s2 = Name of second suspended mass
c_name.AsM2 = Attachment point for second suspended mass in longitudinal direction
etc. = etc.
nRigidMass = Number of rigidly attached masses.
m_name_r1 = Name of first unsuspended mass
m_name_r1.A = Attachment point for first unsuspended mass in longitudinal direction
m_name_r1.B = Attachment point for first unsuspended mass in lateral direction
m_name_r1.H = Attachment point for first unsuspended mass in vertical direction
m_name_r2 = Name of second unsuspended mass
m_name_r2.A = Attachment point for second unsuspended mass in longitudinal direction
m_name_r2.B = Attachment point for second unsuspended mass in lateral direction
m_name_r2.H = Attachment point for second unsuspended mass in vertical direction
m_name_r12.EI= Young's modulus times area moment of inertia for section 1-2.
m_name_r3 = Name of third unsuspended mass
m_name_r3.A = Attachment point for third unsuspended mass in longitudinal direction
m_name_r3.B = Attachment point for third unsuspended mass in lateral direction
m_name_r3.H = Attachment point for third unsuspended mass in vertical direction
m_name_r23.EI= Young's modulus times area moment of inertia for section 2-3.
m_name_r4 = Name of fourth unsuspended mass
m_name_r3.A = Attachment point for fourth unsuspended mass in longitudinal direction
etc. = etc.

Variables generated in the main memory:

Input variables:

c_name.EI = Young's modulus times area moment of inertia.
c_name.NsMass = Number of suspended masses.
c_name.sMass? = The number of the suspended mass.
c_name.AsM? = Longitudinal position of attachment point for a suspended mass.
c_name.BsM? = Lateral position of attachment point for a suspended mass.
c_name.HsM? = Vertical position of attachment point for a suspended mass.
c_name.ksM? = Stiffness between attachment point and the suspended mass.
c_name.NrMass = Number of unsuspended masses.
c_name.rMass¿ = The number of the unsuspended mass.
c_name.ArM¿ = Longitudinal position of attachment point for an unsuspended mass.
c_name.BrM¿ = Lateral position of attachment point for an unsuspended mass.
c_name.HrM¿ = Vertical position of attachment point for an unsuspended mass.

Output variables:

c_name.ps? = Position of beam in attachment point for a suspended mass.
c_name.ds? = Deflection of the series spring m_name_s?.k, where m_name_s? is a suspended mass.
c_name.Fs? = Force in series spring m_name_s?.k, where m_name_s? is a suspended mass.
c_name.ip? = Interval where the wheel is located.
c_name.dr¿= Position of attachment point for an unsuspended mass.
c_name.fr¿= Angle of attachment point for an unsuspended mass.
c_name.Fr¿= Force between an unsuspended mass and beam.
c_name.Mr¿= Moment between an unsuspended mass and beam.

Usage:

Detailed rail model.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `beam_3e`


Defines an Euler-Bernoulli beam connected to many masses. This beam is very similar to coupl beam_3, but it has a finite length.

□
 coupl beam_3e  `c_name' `dire'
                nSuspMass
                m_name_s1  (+-`)c_name.AsM1 (+-`)c_name.BsM1 (+-`)c_name.HsM1  (+-`)c_name.ksM1
                m_name_s2  (+-`)c_name.AsM2 (+-`)c_name.BsM2 (+-`)c_name.HsM2  ,,, etc.
                nRigidMass
                m_name_r1  (+-`)m_name_r1.A (+-`)m_name_r1.B (+-`)m_name_r1.H
                m_name_r2  (+-`)m_name_r2.A (+-`)m_name_r2.B (+-`)m_name_r2.H (+-`)m_name_r12.EI
                m_name_r3  (+-`)m_name_r3.A (+-`)m_name_r3.B (+-`)m_name_r3.H (+-`)m_name_r23.EI
                m_name_r4  (+-`)m_name_r4.A (+-`)m_name_r4.B    ,,, etc.
                coord_beg   # Beginning of the beam
                coord_end   # End of the beam

All initial input data parameters are the same as for coupl beam_3, only two extra input data parameters are added in the end of the argument list:

coord_beg = Longitudinal coordinate where the beam starts
coord_end = Longitudinal coordinate where the beam ends

If the attachment coordinate of a suspended mass is before "coord_beg" or after "coord_end". The beam will not exert any forces on the suspended mass.


c_type = `beam_4`


Defines an Euler-Bernoulli beam connected to many masses, similar to beam_3. But beam_4 takes into considerations more effects e.g.:

 coupl beam_4  `c_name' `dire'
                TensionForce
                Rayleigh_alpha
                Rayleigh_beta
                nSuspMass
                m_name_s1  (+-`)c_name.AsM1 (+-`)c_name.BsM1 (+-`)c_name.HsM1  (+-`)c_name.ksM1
                m_name_s2  (+-`)c_name.AsM2 (+-`)c_name.BsM2 (+-`)c_name.HsM2  ,,, etc.
                nRigidMass
                m_name_r1  (+-`)m_name_r1.A (+-`)m_name_r1.B (+-`)m_name_r1.H
                m_name_r2  (+-`)m_name_r2.A (+-`)m_name_r2.B (+-`)m_name_r2.H (+-`)m_name_r12.EI
                m_name_r3  (+-`)m_name_r3.A (+-`)m_name_r3.B (+-`)m_name_r3.H (+-`)m_name_r23.EI
                m_name_r4  (+-`)m_name_r4.A (+-`)m_name_r4.B    ,,, etc.

c_name = Name of the coupling to be created.
dire = Working direction for the beam. Valid directions are `y` and `z`.
TensionForce = Static tension force along the beam.
Rayleigh_alpha= Stiffness-proportional Rayleigh damping.
Rayleigh_beta = Mass-proportional Rayleigh damping.
nSuspMass = Number of suspended masses connected to the beam.
m_name_s1 = Name of first suspended mass
c_name.AsM1 = Attachment point for first suspended mass in longitudinal direction
c_name.BsM1 = Attachment point for first suspended mass in lateral direction
c_name.HsM1 = Attachment point for first suspended mass in vertical direction
c_name.ksM1 = Stiffness between mass m_name_s1 and beam
m_name_s2 = Name of second suspended mass
c_name.AsM2 = Attachment point for second suspended mass in longitudinal direction
etc. = etc.
nRigidMass = Number of rigidly attached masses.
m_name_r1 = Name of first unsuspended mass
m_name_r1.A = Attachment point for first unsuspended mass in longitudinal direction
m_name_r1.B = Attachment point for first unsuspended mass in lateral direction
m_name_r1.H = Attachment point for first unsuspended mass in vertical direction
m_name_r2 = Name of second unsuspended mass
m_name_r2.A = Attachment point for second unsuspended mass in longitudinal direction
m_name_r2.B = Attachment point for second unsuspended mass in lateral direction
m_name_r2.H = Attachment point for second unsuspended mass in vertical direction
m_name_r12.EI= Young's modulus times area moment of inertia for section 1-2.
m_name_r3 = Name of third unsuspended mass
m_name_r3.A = Attachment point for third unsuspended mass in longitudinal direction
m_name_r3.B = Attachment point for third unsuspended mass in lateral direction
m_name_r3.H = Attachment point for third unsuspended mass in vertical direction
m_name_r23.EI= Young's modulus times area moment of inertia for section 2-3.
m_name_r4 = Name of fourth unsuspended mass
m_name_r3.A = Attachment point for fourth unsuspended mass in longitudinal direction
etc. = etc.

Variables generated in the main memory:

Input variables:

c_name.EI = Young's modulus times area moment of inertia.
c_name.NsMass = Number of suspended masses.
c_name.sMass? = The number of the suspended mass.
c_name.AsM? = Longitudinal position of attachment point for a suspended mass.
c_name.BsM? = Lateral position of attachment point for a suspended mass.
c_name.HsM? = Vertical position of attachment point for a suspended mass.
c_name.ksM? = Stiffness between attachment point and the suspended mass.
c_name.NrMass = Number of unsuspended masses.
c_name.rMass¿ = The number of the unsuspended mass.
c_name.ArM¿ = Longitudinal position of attachment point for an unsuspended mass.
c_name.BrM¿ = Lateral position of attachment point for an unsuspended mass.
c_name.HrM¿ = Vertical position of attachment point for an unsuspended mass.

Output variables:

c_name.ps? = Position of beam in attachment point for a suspended mass.
c_name.ds? = Deflection of the series spring m_name_s?.k, where m_name_s? is a suspended mass.
c_name.Fs? = Force in series spring m_name_s?.k, where m_name_s? is a suspended mass.
c_name.ip? = Interval where the wheel is located.
c_name.dr¿= Position of attachment point for an unsuspended mass.
c_name.fr¿= Angle of attachment point for an unsuspended mass.
c_name.Fr¿= Force between an unsuspended mass and beam.
c_name.Mr¿= Moment between an unsuspended mass and beam.

Usage:

Contact wire.
Messenger wire.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `c`


Defines a damping coupling between two masses.
The damping property is read from a pre-defined property. Dampers which are connected in direction `c` or `cu` may not have the length 0(zero), as the value zero has no direction.

 coupl c  `c_name' `body1' +-`a1 +-`b1 +-`h1
                   `body2' +-`a2 +-`b2 +-`h2
                    p_+-`property `esys' `dire`
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
property = Pre-defined coupling property.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`, `c`, `cu`, `m`.
Working direction for the damper in esys.
In addition to the Cartesian coordinates, the user can choose between `c`, `cu` and `m`.
Direction `c` refers to the direction specified by the coupling's attachment points, i.e the force runs in the direction of the element. The transformation matrix between esys and the orientation of the coupling, is only calculated during the input reading phase. The same orientation of the coupling will be kept during the entire simulation.
Direction `cu` is similar to `c`, but its orientation will be updated in every timestep.
Direction `m` means matrix direction, displacements in all 6 coordinate directions in both attachment points are calculated. Direction `m` requires the coupling properties p_lin36 or p_lin144.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:
Deformation velocities over the coupling:

c_name.dx = In the x-direction of esys.
c_name.dy = In the y-direction of esys.
c_name.dz = In the z-direction of esys.
c_name.df = In the f-direction of esys.
c_name.dk = In the k-direction of esys.
c_name.dp = In the p-direction of esys.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

If the working direction is c or cu, also the following variables are available:

c_name.d = Deformation velocity in the direction of the coupling.
c_name.F = The generated force in the direction of the coupling.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

Usage:
- Modeling of damping in a rubber bushing.
Define a coupling without length, i.e. give the same position for both ends of the coupling. Define the property via coupl p_lin36 or coupl p_lin144. Set the working direction of the coupling equal to m.
- Modeling of damping in a traction rod.
Define a coupling with length. Define a one-dimensional property with coupl p_lin, coupl p_nlin, coupl p_nlin_s, coupl p_nlin_t or coupl p_nlin_st. Set the working direction of the coupling equal to c or cu.
- Hydraulic dampers whose series flexibility can be ignored.
Define a coupling with length. Define a one-dimensional property with coupl p_lin, coupl p_nlin, coupl p_nlin_s, coupl p_nlin_t or coupl p_nlin_st. Set the working direction of the coupling equal to c or cu. However most hydraulic dampers have an internal series flexibility and must be modeled via the coupl kc-coupling.
- Generation of simple rubber models where the c-coupling is coupled in parallel with a k-coupling. Calculation of damping coefficient of the c-damper can be made according to the following formulas:

\( c= 2 \cdot \zeta \cdot \sqrt { k \cdot m } \)

Or:

\( c= \zeta \cdot k / \pi / f_o \)

Or:

\( c= 4 \cdot \pi \cdot \zeta \cdot f_o \cdot m \)



Where:
ζ = Ratio of critical damping
k = Stiffness in parallel
m = Mass
fo= The frequency
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `c_l`


Defines a damping coupling between two masses.
The damping property is read from a pre-defined property. The damper can be given a small rotation angle relative, to the coordinate axis in esys. The rotation between esys and the coupling is linear (cos(fi)=1 and sin(fi)=fi).


 coupl c_l  `c_name' `body1' +-`a1 +-`b1 +-`h1
                     `body2' +-`a2 +-`b2 +-`h2
                      p_+-`property `esys' `dire`
                      +-`fi +-`chi +-`psi

c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
property = Pre-defined coupling property.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`, `m`.
Working direction for the damper in esys.
In addition to the Cartesian coordinates, the user also can choose direction `m`. Direction `m` means matrix direction, displacements in all 6 coordinate directions in both attachment points are calculated. Direction `m` requires the coupling properties p_lin36 or p_lin144.
fi,chi,psi = The rotation angles from esys to the damper. The angle fi sets the rotation round the x-axis, angle chi sets the rotation round the y-axis and finally angle psi sets the rotation round the z-axis.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:
Deformation velocities over the coupling:

c_name.dx = In the rotated x-direction.
c_name.dy = In the rotated y-direction.
c_name.dz = In the rotated z-direction.
c_name.df = In the rotated f-direction.
c_name.dk = In the rotated k-direction.
c_name.dp = In the rotated p-direction.

Force variables generated by the coupling:

c_name.Fx = In the rotated x-direction.
c_name.Fy = In the rotated y-direction.
c_name.Fz = In the rotated z-direction.
c_name.Mf = In the rotated f-direction.
c_name.Mk = In the rotated k-direction.
c_name.Mp = In the rotated p-direction.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

Usage:

Coupling c_l can be used in the same way as coupling coupl c. In addition to coupling c this coupling can be oriented a small angle of rotation relative to the coordinate axles of esys.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `c_r`


Defines a damping coupling between two masses.
The damping property is read from a pre-defined property. The damper can be rotated in a large angle relative to the coordinate axis of esys. The rotation between esys and the coupling are non-linear, by using sinus and cosinus functions in the transformation matrix. The rotation angles must be given in the right order, because these rotations do not commute.

 coupl c_r  `c_name' `body1' +-`a1 +-`b1 +-`h1
                     `body2' +-`a2 +-`b2 +-`h2
                      p_+-`property `esys' `dire`
                      +-`fi +-`chi +-`psi
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
property = Pre-defined coupling property.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`, `m`.
Working direction for the damper in esys.
In addition to the Cartesian coordinates, the user also can choose direction `m`. Direction `m` means matrix direction, displacements in all 6 coordinate directions in both attachment points are calculated. Direction `m` requires the coupling properties p_lin36 or p_lin144.
fi,chi,psi= The procedure for angle rotation esys to the damper is as follows:
  1. First the coupling's coordinate system rotates the angle psi (positive rotation around the z-axis), from the esys system to a primed system.
  2. Thereafter the coupling's coordinate system turns the angle chi (positive rotation around the y-axis) around the primed system as obtained under item 1) above.
  3. Finally, the coupling's coordinate system rotates the angle fi (positive rotation around the x-axis) around the system, which was obtained under item 2) above, to the final position.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:
Deformation velocities over the coupling:

c_name.dx = In the rotated x-direction.
c_name.dy = In the rotated y-direction.
c_name.dz = In the rotated z-direction.
c_name.df = In the rotated f-direction.
c_name.dk = In the rotated k-direction.
c_name.dp = In the rotated p-direction.

Force variables generated by the coupling:

c_name.Fx = In the rotated x-direction.
c_name.Fy = In the rotated y-direction.
c_name.Fz = In the rotated z-direction.
c_name.Mf = In the rotated f-direction.
c_name.Mk = In the rotated k-direction.
c_name.Mp = In the rotated p-direction.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

Usage:

Coupling c_r can be used in the same way as coupling coupl c. In addition to coupling c this coupling can be oriented a large angle of rotation relative to the coordinate axles of esys.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `c_vs_d`


Defines a displacement-controlled damper.
The damping coefficient depends non-linearly on its deformation. Defines a damper, the damping constant of which is dependent on its deformation. The damper assumes that the damping characteristic is described in a pre-defined property p_nlin, p_nlin_s, p_nlin_t or p_nlin_st, where the X-axis stands for the damper's deformation, and the Y-axis stands for the damper's damping constant.

 coupl c_vs_d  `c_name' `body1'   +-`a1 +-`b1 +-`h1
                        `body2'   +-`a2 +-`b2 +-`h2
                        `property' `esys' `dire`
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
property = Pre-defined coupling property, damper coefficient as a result of deformation. Valid properties are p_nlin, p_nlin_s, p_nlin_t and p_nlin_st.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `c`, `cu`
Working direction for the coupling end connected to body1.
In addition to the Cartesian coordinates are the directions `c` and `cu`. Direction `c` refers to the direction specified by the coupling's attachment points, i.e the force runs in the direction of the element. The transformation matrix is calculated in the input reading phase of the program. The same transformation matrix is then used during the entire calculation. Direction `cu` has a similar function to `c`, the difference being that the transformation matrix is updated continuously as the bodies move.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:
Deformation velocities over the coupling:

c_name.dx = In the x-direction of esys.
c_name.dy = In the y-direction of esys.
c_name.dz = In the z-direction of esys.
c_name.df = In the f-direction of esys.
c_name.dk = In the k-direction of esys.
c_name.dp = In the p-direction of esys.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

If the working direction is c or cu, also the following variables are available:

c_name.d = Deformation velocity in the direction of the coupling.
c_name.F = The generated force in the direction of the coupling.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

Usage:

Coupling c_vs_d is a convenient coupling element for modeling hydraulic dampers whose damping coefficient depends on the deflection of the damper.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `c12_b1`


Defines a damping coupling between two masses of type m_rigid_12.
The damping property is read from a pre-defined property.

The coupling is always oriented according to mass body1.


 coupl c12_b1  `c_name' `body1' +-`a1 +-`b1 +-`h1   
                        `body2' +-`a2 +-`b2 +-`h2   
                        `dire` `property'
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
dire = `x`,`y`,`z`,`f`,`k`,`p`, `m`
The coupling's direction of action in esys.
The direction `m` refers to the matrix direction, all 6 coordinate directions of the attachment points are calculated. Direction `m` requires p_lin36 or p_lin144 as coupling properties.
property = Pre-defined coupling property.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:
Deformation of the coupling:

c_name.dx = In the x-direction
c_name.dy = In the y-direction
c_name.dz = In the z-direction
c_name.df = In the f-direction
c_name.dk = In the k-direction
c_name.dp = In the p-direction

Speed over the coupling:

c_name.vx = In the x-direction
c_name.vy = In the y-direction
c_name.vz = In the z-direction
c_name.vf = In the f-direction
c_name.vk = In the k-direction
c_name.vp = In the p-direction

Force variables generated by the coupling:

c_name.Fx = In the x-direction
c_name.Fy = In the y-direction
c_name.Fz = In the z-direction
c_name.Mf = In the f-direction
c_name.Mk = In the k-direction
c_name.Mp = In the p-direction

Generated force variables on connected bodies:

c_name.F1x = Force acting on body1 in the x-direction of body1
c_name.F1y = Force acting on body1 in the y-direction of body1
c_name.F1z = Force acting on body1 in the z-direction of body1
c_name.M1f = Moment acting on body1 in the f-direction of body1
c_name.M1k = Moment acting on body1 in the k-direction of body1
c_name.M1p = Moment acting on body1 in the p-direction of body1
c_name.F2x = Force acting on body2 in the x-direction of body2
c_name.F2y = Force acting on body2 in the y-direction of body2
c_name.F2z = Force acting on body2 in the z-direction of body2
c_name.M2f = Moment acting on body2 in the f-direction of body2
c_name.M2k = Moment acting on body2 in the k-direction of body2
c_name.M2p = Moment acting on body2 in the p-direction of body2
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `c12_f`


Defines a damping coupling between two masses of type m_rigid_12.
The stiffness property is read from a pre-defined property.

The coupling is defined relative to the fixed coordinate system fsys.

 coupl c12_f  `c_name' `body1' +-`a1 +-`b1 +-`h1   
                       `body2' +-`a2 +-`b2 +-`h2   
                       `dire` `property'
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
dire =`x`,`y`,`z`,`f`,`k`,`p`, `m`, 'c', 'cu'
The coupling's direction of action in fsys.
Direction `c` means that the coupling is orientated according to its attachment points in the beginning of the simulation time= 0.
Direction `cu` is the same as direction `c`, but its orientation is updated in every timestep.
property = Pre-defined coupling property.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:
Generated force variables on connected bodies:

c_name.F1x = Force acting on mass1 in direction x according to fsys
c_name.F1y = Force acting on mass1 in direction y according to fsys
c_name.F1z = Force acting on mass1 in direction z according to fsys
c_name.M1f = Torque acting on mass1 in direction f according to mass1
c_name.M1k = Torque acting on mass1 in direction k according to mass1
c_name.M1p = Torque acting on mass1 in direction p according to mass1
c_name.F2x = Force acting on mass2 in direction x according to fsys
c_name.F2y = Force acting on mass2 in direction y according to fsys
c_name.F2z = Force acting on mass2 in direction z according to fsys
c_name.M2f = Torque acting on mass2 in direction f according to mass2
c_name.M2k = Torque acting on mass2 in direction k according to mass2
c_name.M2p = Torque acting on mass2 in direction p according to mass2

Deformation of the coupling:

c_name.dx = Direction x according to fsys
c_name.dy = Direction y according to fsys
c_name.dz = Direction z according to fsys
c_name.df = Direction f according to fsys
c_name.dk = Direction k according to fsys
c_name.dp = Direction p according to fsys
c_name.dx1 = Direction x according to mass1
c_name.dy1 = Direction y according to mass1
c_name.dz1 = Direction z according to mass1
c_name.df1 = Direction f according to mass1
c_name.dk1 = Direction k according to mass1
c_name.dp1 = Direction p according to mass1
c_name.dx2 = Direction x according to mass2
c_name.dy2 = Direction y according to mass2
c_name.dz2 = Direction z according to mass2
c_name.df2 = Direction f according to mass2
c_name.dk2 = Direction k according to mass2
c_name.dp2 = Direction p according to mass2

Speed over the coupling:

c_name.vx = Direction x according to fsys
c_name.vy = Direction y according to fsys
c_name.vz = Direction z according to fsys
c_name.vf = Direction f according to fsys
c_name.vk = Direction k according to fsys
c_name.vp = Direction p according to fsys
c_name.vx1 = Direction x according to mass1
c_name.vy1 = Direction y according to mass1
c_name.vz1 = Direction z according to mass1
c_name.vf1 = Direction f according to mass1
c_name.vk1 = Direction k according to mass1
c_name.vp1 = Direction p according to mass1
c_name.vx2 = Direction x according to mass2
c_name.vy2 = Direction y according to mass2
c_name.vz2 = Direction z according to mass2
c_name.vf2 = Direction f according to mass2
c_name.vk2 = Direction k according to mass2
c_name.vp2 = Direction p according to mass2

Forces and moments in the coupling:

c_name.Fx = Direction x according to fsys
c_name.Fy = Direction y according to fsys
c_name.Fz = Direction z according to fsys
c_name.Mf = Direction f according to fsys
c_name.Mk = Direction k according to fsys
c_name.Mp = Direction p according to fsys
c_name.Fx1 = Direction x according to mass1
c_name.Fy1 = Direction y according to mass1
c_name.Fz1 = Direction z according to mass1
c_name.Mf1 = Direction f according to mass1
c_name.Mk1 = Direction k according to mass1
c_name.Mp1 = Direction p according to mass1
c_name.Fx2 = Direction x according to mass2
c_name.Fy2 = Direction y according to mass2
c_name.Fz2 = Direction z according to mass2
c_name.Mf2 = Direction f according to mass2
c_name.Mk2 = Direction k according to mass2
c_name.Mp2 = Direction p according to mass2

Orientation of the coupling:

c_name.11 = Rotation matrix from the orientation of the coupling to fsys
c_name.21 =   - " -
c_name.31 =   - " -
c_name.12 =   - " -
c_name.22 =   - " -
c_name.32 =   - " -
c_name.13 =   - " -
c_name.23 =   - " -
c_name.33 =   - " -

Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `c_magic_1`


Defines a rolling contact between two masses according to Hans Pacejka's "Magic Formula" tire model. Presented at the course "Rolling Contact Pheniena" held in Udine 1999.

 coupl c_magic_1  c_name
              `body1' +-`a1 +-`b1 +-`h1
              `body2' +-`a2 +-`b2 +-`h2
               esys dire
               kzwr czwr           # Vertical stiffness and damping
               ro                  # Wheel radius       
               Fznom               # Nominal load
               G                   # Camber angle

               Cx                  # Longitudinal shape factor
               Dx1 Dx2             # Parameters when calculating mux (Longitudinal fric.coeff)
               Kx1 Kx2 Kx3         # Parameters when calculating Kx
               Hx1 Hx2             # Parameters when calculating horizontal shift SHx x-slip
               Vx1 Vx2             # Parameters when calculating vertical   shift SVx x-slip
               Ex1 Ex2 Ex3 Ex4     # Parameters when calculating Ex

               Cy                  # Lateral shape factor
               Dy1 Dy2 Dy3         # Parameters when calculating muy (Lateral fric.coeff)
               Ky1 Ky2 Ky3         # Parameters when calculating Ky
               Hy1 Hy2 Hy3         # Parameters when calculating horizontal shift SHy y-slip
               Vy1 Vy2 Vy3 Vy4     # Parameters when calculating vertical   shift SVy y-slip
               Ey1 Ey2 Ey3 Ey4     # Parameters when calculating Ey

               Bz1 Bz2 Bz3 Bz4 Bz5 # Parameters when calculating Bt
               Bz10                # Parameters when calculating Br

               Ct                  # Aligning torque shape factor
               Dz1 Dz2 Dz3 Dz4     # Parameters when calculating Dt
               Dz6 Dz7 Dz8 Dz9     # Parameters when calculating Dr
               Hz1 Hz2 Hz3 Hz4     # Parameters when calculating SHt
               Ez1 Ez2 Ez3 Ez4     # Parameters when calculating Et
               Ez5                 # Parameters when calculating Er

               Bx1 Bx2             # Parameters when calculating BxA (combined)
               CxA                 # Longitudinal shape factor (combined)
               Ex1 Ex2             # Parameters when calculating ExA (combined)
               SHxA                # Horizontal shift x-slip (combined)

               By1 By2 By3         # Parameters when calculating ByK (combined)
               CyK                 # Lateral shape factor (combined)
               Ey1 Ey2             # Parameters when calculating EyK (combined)
               HyK1 HyK2           # Parameters when calculating horizontal shift SHyK y-slip
               Vy1 Vy2 Vy3 Vy4     # Parameters when calculating DVyK
               Vy5 Vy6             # Parameters when calculating SVyK
               ssz1 ssz2 ssz3 ssz4 # Parameters when calculating s
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1= The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2= The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
dire = Working direction for the coupling end connected to body1. The only valid direction for coupling c_magic_1 is 'm'.

Longitudinal slip:

Kappa= Vx / Vo 

Lateral slip:

Alfa = Vy / Vo 

Change in vertical load:

dfz  = Fz / Fz0 

Longitudinal force (pure longitudinal slip)

Longitudinal friction coefficient:

mux= Dx1 + Dx2*dfz 

Calculation of factor Kx:

Kx = Fz * (Kx1 + Kx2*dfz) * exp(-Kx3*dfz) 

Horizontal shift x-slip

SHx= Hx1 + Hx2*dfz 

Vertical shift x-slip

SVx= Fz*(Vx1 + Vx2*dfz) 

Longitudinal slip incl. horizontal shift:

Kappax= Kappa + SHx 

Calculation of factor Dx:

Dx = mux*Fz 

Calculation of factor Bx:

Bx = Kx / (Cx*Dx) 

Calculation of factor Ex:

Ex = (Ex1 + Ex2*dfz + Ex3*dfz**2) * (1 - sign(Ex4,Kappax)) 

Longitudinal force (pure longitudinal slip):

Fx0= Dx*sin(Cx*atan(Bx*Kappax - Ex*(Bx*Kappax - atan(Bx*Kappax)))) + SVx 

Lateral force (pure lateral slip)

Lateral friction coefficient:

muy= (Dy1 + Dy2*dfz) * (1.d0 - Dy3*G**2) 

Calculation of factor Dy:

Dy = muy*Fz 

Calculation of factor Ky:

Ky = Ky1*Fz0*sin(2*atan(Fz/(Ky2*Fz0))) * (1 - Ky3*abs(G)) 

Horizontal shift y-slip

SHy= (Hy1 + Hy2*dfz) + Hy3*G 

Vertical shift y-slip

SVy= Fz*((Vy1 + Vy2*dfz) + (Vy3 + Vy4*dfz)*G) 

Lateral slip incl. horizontal shift:

Alfay= Alfa + SHy

Calculation of factor Dy:

Dy = muy*Fz 

Calculation of factor By:

By = Ky / (Cy*Dy) 

Calculation of factor Ey:

Ey = (Ey1 + Ey2*dfz) * (1 - sign(Ey3 + Ey4*G,Alfay)) 

Lateral force (pure lateral slip):

Fy0= Dy*sin(Cy*atan(By*Alfay - Ey*(By*Alfay - atan(By*Alfay )))) + SVy 

Aligning torque (pure lateral slip)

Horizontal shift f

SHf= SHy + SVy/Ky 

Calculation of factor Bt:

Bt = max(0., (Bz1 + Bz2*dfz + Bz3*dfz**2) * (1 + Bz4*G + Bz5*abs(G))) 

Calculation of factor Br:

Br = Bz10*By*Cy 

Calculation of factor Dt:

Dt = Fz*(Dz1 + Dz2*dfz)*(1 + Dz3*G + Dz4*G**2)*(ro/Fz0) 

Calculation of factor Dr:

Dr = Fz*((Dz6 + Dz7*dfz) + (Dz8 + Dz9*dfz)*G)*ro

Horizontal shift t

SHt= Hz1 + Hz2*dfz + (Hz3 + Hz4*dfz)*G

Lateral slip incl. horizontal shift 1:

Alfat= Alfa + SHt 

Calculation of factor Et:

Et = min(1, (Ez1 + Ez2*dfz + Ez3*dfz**2) * (1 + (Ez4 + Ez5*G)*atan(Bt*Ct*Alfat))) 

Pneumatic trail (pure lateral slip):

t  = Dt*cos(Ct*atan(Bt*Alfat-Et*(Bt*Alfat-atan(Bt*Alfat)))) * cos(Alfa) 

Lateral slip incl. horizontal shift 1:

Alfar= Alfa + SHf 

Aligning torque (pure lateral slip):

Mz0=-t*Fy0 + Dr*cos(atan(Br*Alfar))*cos(Alfa) 

Longitudinal force (combined)

Longitudinal stiffness factor:

BxA= max(0., Bx1*cos(atan(Bx2*Kappa))) 

Longitudinal curvature factor:

ExA= Ex1 + Ex2*dfz 

Lateral slip incl. SHxA:

Alfas= Alfa + SHxA 

Calculation of factor DxA:

DxA  = Fx0 / cos(CxA*atan(BxA*SHxA - ExA*(BxA*SHxA - atan(BxA*SHxA)))) 

Longitudinal force (combined):

Fx   = DxA*cos(CxA*atan(BxA*Alfas - ExA*(BxA*Alfas - atan(BxA*Alfas)))) 

Lateral force (combined)

Lateral stiffness factor:

ByK  = max(0., By1*cos(atan(By2*(Alfa-By3)))) 

Lateral curvature factor:

EyK  = Ey1 + Ey2*dfz     

Horizontal shift y-slip

SHyK = HyK1 + HyK2*dfz 

Longitudinal slip incl. horizontal shift:

Kappas= Kappa + SHyK 

Calculation of factor DyK:

DyK  = Fy0 / cos(CyK*atan(ByK*SHyK - EyK*(ByK*SHyK - atan(ByK*SHyK)))) 

Calculation of factor DVyK:

DVyK = muy*Fz*(Vy1 + Vy2*dfz + Vy3*G) * cos(atan(Vy4*Alfa)) 

Vertical shift y-slip

SVyK = DVyK*sin(Vy5*atan(Vy6*Kappa)) 

Lateral force (combined):

Fy   = DyK*cos(CyK*atan(ByK*Kappas - EyK*(ByK*Kappas - atan(ByK*Kappas)))) + SVyK 

Aligning torque (combined)

Calculation of factor Ateq:

Ateq= sign(atan(sqrt(tan(Alfat)**2 + (Kx*Kappa/Ky)**2)), Alfat) 

Calculation of factor Areq:

Areq= sign(atan(sqrt(tan(Alfar)**2 + (Kx*Kappa/Ky)**2)), Alfar) 

Calculation of factor Fyprim:

Fyprim= Fy - SVyK 

Calculation of factor Mzr:

Mzr = Dr*cos(atan(Br*Areq))*cos(Alfa) 

Calculation of non-dimensional parameter s:

s   = (ssz1+ssz2*(Fy/Fz0) + (ssz3+ssz4*dfz)*G)*ro 

Pneumatic trail (combined):

t   = Dt*cos(Ct*atan(Bt*Ateq-Et*(Bt*Ateq-atan(Bt*Ateq))))*cos(Alfa) 

Aligning torque (combined):

Mz  =-t*Fyprim + Mzr + s*Fx 

Variables generated in the main memory:

c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.
c_name.Kappa= Longitudinal slip.
c_name.Alfa = Lateral slip.

Generated variables containing forces and moment, acting on body1 and body2:

c_name.F1x = Longitudinal force acting on body1.
c_name.F1y = Lateral force acting on body1.
c_name.F1z = Vertical force acting on body1.
c_name.M1f = Roll moment acting on body1.
c_name.M1k = Pitch moment acting on body1.
c_name.M1p = Yaw moment acting on body1.
c_name.F2x = Longitudinal force acting on body2.
c_name.F2y = Lateral force acting on body2.
c_name.F2z = Vertical force acting on body2.
c_name.M2f = Roll moment acting on body2.
c_name.M2k = Pitch moment acting on body2.
c_name.M2p = Yaw moment acting on body2.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `creep_contact_1`


Defines a rolling contact between two masses.
Forces in the coupling are calculated with Kalker's software CONTACT. Program CONTACT is not included in Gensys. In order to use this coupling it is necessary to buy and install a shared object from cmcc.nl.
In coupling creep_contact_1 the profile of the rail and wheel are used directly. Therefore it is not necessary to create wheel/rail geometry functions in program KPF.
Gensys detects all possible contact patches between the wheel and rail profiles. In the center of each possible contact patch a contact coordinate system is created, with its X-axis pointing forward along the track and its Z-axis normal to the contact patch pointing towards the rail. For each contact patch a mesh is created, containing the perpendicular distances between wheel and rail. A positive distance indicates a gap between wheel and rail. A negative distance indicates that the undeformed profiles has penetrated each other. However after analysis in program CONTACT the surfaces will not penetrate each other, because in program CONTACT considerations to the deformation of wheel and rail surfaces are taken.
Up to 7 contact patches can be in contact simultaneously.

N.B. Integration methods that do backsteps are not possible to use together with coupling creep_contact_1. Recommended integrator with coupling creep_contact_1 is runge_kutta with a fixed time step.

Before this coupling can be created the variables describing the track irregularities tral111r.y, tral111r.z, tral111r.vy and tral111r.vz must be defined. These variables can for example be created in function func tral_interp_spline.


 coupl creep_contact_1  c_name
              `body1' +-`a1 +-`b1 +-`h1
              `body2' +-`a2 +-`b2 +-`h2
               esys dire           # Euler system and direction of action
            +-`tral.y              # Lateral position track irregularity
            +-`tral.z              # Vertical position track irregularity
            +-`tral.vy             # Lateral velocity track irregularity
            +-`tral.vz             # Vertical velocity track irregularity
            +-`ro                  # Wheel rolling radius, will vary for OOR-wheels
               iorient             # Orientation of profiles +1=left, -1=right
            +-`ixshape             # Shape in long direction
            +-`mulfact_nux         # Longitudinal creep relaxation due to contaminated surfaces
            +-`mulfact_nuy         # Lateral      creep relaxation due to contaminated surfaces
            +-`mulfact_spin        # Spin         creep relaxation due to contaminated surfaces

               wheel_prof          # Wheel profile defined via a memory field, e.g. func intpl_r
            +-`dx                  # Longitudinal distance between nodes in each contact patch mesh
            +-`dy                  # Lateral distance between nodes in each contact patch mesh
               rail_prof_memfield  # Rail profiles defined via a memory field, e.g. func intpl2_r



            +-`G1                  # Shear Modulus body 1
            +-`nu1                 # Poisson's ratio body 1
            +-`G2                  # Shear Modulus body 2
            +-`nu2                 # Poisson's ratio body 2

            +-`ror                 # Vertical curvature rail head

            +-`ifmethod            # Friction method. Please read the CONTACT users manual
            +-`ifm_data_cp1        # Arguments to friction method, contact patch #1
            +-`ifm_data_cp2        # Arguments to friction method, contact patch #2
            +-`ifm_data_cp3        # Arguments to friction method, contact patch #3
            +-`ifm_data_cp4        # Arguments to friction method, contact patch #4
            +-`ifm_data_cp5        # Arguments to friction method, contact patch #5
            +-`ifm_data_cp6        # Arguments to friction method, contact patch #6
            +-`ifm_data_cp7        # Arguments to friction method, contact patch #7
            +-`ifm_data_cp8        # Arguments to friction method, contact patch #8
            +-`ifm_data_cp9        # Arguments to friction method, contact patch #9

            +-`iflayer             # Interfacial layer. Please read the CONTACT users manual
            +-`ifl_data_cp1        # Arguments to interfacial layer, contact patch #1
            +-`ifl_data_cp2        # Arguments to interfacial layer, contact patch #2
            +-`ifl_data_cp3        # Arguments to interfacial layer, contact patch #3
            +-`ifl_data_cp4        # Arguments to interfacial layer, contact patch #4
            +-`ifl_data_cp5        # Arguments to interfacial layer, contact patch #5
            +-`ifl_data_cp6        # Arguments to interfacial layer, contact patch #6
            +-`ifl_data_cp7        # Arguments to interfacial layer, contact patch #7
            +-`ifl_data_cp8        # Arguments to interfacial layer, contact patch #8
            +-`ifl_data_cp9        # Arguments to interfacial layer, contact patch #9

            +-`ckd                 # Viscous damper connected in parallel with contact patch
c_name = Name of the coupling created. N.B. the name must start with the letters "cp_"
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
dire = Working direction for the coupling end connected to body1. The only valid direction for coupling creep_contact_1 is 'm'.
tral.y = Lateral irregularity to be applied between wheel and rail
tral.z = Vertical irregularity to be applied between wheel and rail
tral.vy = Speed of lateral irregularity between wheel and rail
tral.vz = Speed of vertical irregularity between wheel and rail
ro = Nominal wheel rolling radius.
iorient = Orientation of wheel and rail profile. Normally wheel- and rail- profiles are measured from outside of track towards track center line, which makes both profiles to look as left handed profiles. The user can with this input data mirror the profiles on the right side of the track, without generate special right handed profiles.
ixshape = =1 => Circular shape, longitudinal curvature according to cp#_c_name(3:).irx
=2 => Parabolic shape, approximately longitudinal curvature according to cp#_c_name(3:).irx
mulfact_nux = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nux only affects longitudinal creep.
mulfact_nuy = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nuy only affects lateral creep.
mulfact_spin= Creep reduction factor due to contamination and asperities in the contact surface. mulfact_spin only affects spin creep.

Variables generated in the main memory:

Input variables:

c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.
c_name.dx = Longitudinal distance between nodes in each contact patch mesh.
c_name.dy = Lateral distance between nodes in each contact patch mesh.

Output variables:

c_name.iwheel = Wheel number in CONTACT.
c_name.eta = Relative lateral motion between wheel and rail.
c_name.veta = Relative lateral speed difference between wheel and rail.

Variables created for each contact mesh:

cp#_c_name(3:).dr = Contact patch effective wheel radius.
cp#_c_name(3:).gam = Contact patch effective roll(X-rot) angle.
cp#_c_name(3:).irx = Contact patch effective wheel longitudinal curvature.
cp#_c_name(3:).ksi = Contact patch longitudinal position due to roll and yaw angle.
cp#_c_name(3:).posw = Contact patch effective lateral position on wheel, lateral direction.
cp#_c_name(3:).posr = Contact patch effective lateral position on rail, lateral direction.
cp#_c_name(3:).bo = Contact patch effective lateral position relative track center line.
cp#_c_name(3:).pen = Contact patch max undeformed penetration.
cp#_c_name(3:).udefa = Longitudinal semi-length of potential contact area. I.e. the length of the actual contact patch can be up to 2*cp#_c_name(3:).udefa.
cp#_c_name(3:).udefb = Lateral semi-width of potential contact area. I.e. the width of the actual contact patch can be up to 2*cp#_c_name(3:).udefb.
cp#_c_name(3:).area = Actual contact area.
cp#_c_name(3:).slip_area = Relative size of slip zone (slip_area/tot_area).
cp#_c_name(3:).vux = Contact patch effective longitudinal difference speed.
cp#_c_name(3:).vuy = Contact patch effective lateral difference speed.
cp#_c_name(3:).vuz = Contact patch effective vertical difference speed.
cp#_c_name(3:).Vref = Contact patch effective reference speed.
cp#_c_name(3:).nux = Contact patch effective longitudinal creepage.
cp#_c_name(3:).nuy = Contact patch effective lateral creepage.
cp#_c_name(3:).spin = Contact patch effective spin creepage.
cp#_c_name(3:).Fn = Contact patch contact force.
cp#_c_name(3:).Fny = Contact patch lateral creep force tangential to contact surface (angle cp#_c_name(3:).gam).
cp#_c_name(3:).Fx = Contact patch longitudinal force.
cp#_c_name(3:).Fy = Contact patch lateral force (along Y-axis of lsa)
cp#_c_name(3:).Fz = Contact patch vertical force (along Z-axis of lsa)
cp#_c_name(3:).Mspin = Contact patch spin torque tangential to contact surface (angle cp#_c_name(3:).gam).

Where:   # = The number of the contact patch

Forces and torques acting on adjacent bodies:

c_name.F1x = Longitudinal force acting on body1.
c_name.F1y = Lateral force acting on body1.
c_name.F1z = Vertical force acting on body1.
c_name.M1f = Roll torque acting on body1.
c_name.M1k = Pitch torque acting on body1.
c_name.M1p = Yaw torque acting on body1.
c_name.F2x = Longitudinal force acting on body2.
c_name.F2y = Lateral force acting on body2.
c_name.F2z = Vertical force acting on body2.
c_name.M2f = Roll torque acting on body2.
c_name.M2k = Pitch torque acting on body2.
c_name.M2p = Yaw torque acting on body2.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `creep_contact_6`


Defines a rolling contact between two masses very similar to creep_contact_1.
They difference is that creep_contact_6 utilizes the new features in CONTACT v23.2 Automatically calculating number of contact patches and their locations between wheel and rail.

Program CONTACT is not included in Gensys. In order to use this coupling it is necessary to buy and install a shared object from cmcc.nl.
Instructions on how to install CONTACT can be found here: Install CONTACT.

In coupling creep_contact_6 the profile of the rail and wheel are used directly. Therefore it is not necessary to create wheel/rail geometry functions in program KPF.

Before this coupling can be created the variables describing the track irregularities tral111r.y, tral111r.z, tral111r.vy and tral111r.vz must be defined. These variables can for example be created in function func tral_interp_spline.


 coupl creep_contact_6  c_name
              `body1' +-`a1 +-`b1 +-`h1
              `body2' +-`a2 +-`b2 +-`h2
               esys dire           # Euler system and direction of action
            +-`tral.y              # Lateral position track irregularity
            +-`tral.z              # Vertical position track irregularity
            +-`tral.vy             # Lateral velocity track irregularity
            +-`tral.vz             # Vertical velocity track irregularity
            +-`ro                  # Wheel rolling radius, will vary for OOR-wheels
               iorient             # Orientation of profiles +1=left, -1=right
            +-`mulfact_nux         # Longitudinal creep relaxation due to contaminated surfaces
            +-`mulfact_nuy         # Lateral      creep relaxation due to contaminated surfaces
            +-`mulfact_spin        # Spin         creep relaxation due to contaminated surfaces

               wheel_prof          # Wheel profile defined via a memory field, e.g. func intpl_r
            +-`dx                  # Longitudinal distance between nodes in each contact patch mesh
            +-`dy                  # Lateral distance between nodes in each contact patch mesh
               rail_prof_memfield  # Rail profiles defined via a memory field, e.g. func intpl2_r

            +-`G1                  # Shear Modulus body 1
            +-`nu1                 # Poisson's ratio body 1
            +-`G2                  # Shear Modulus body 2
            +-`nu2                 # Poisson's ratio body 2

            +-`ror                 # Vertical curvature rail head

            +-`ifmethod            # Friction method. Please read the CONTACT users manual
            +-`ifm_data_cp1        # Arguments to friction method, contact patch #1
            +-`ifm_data_cp2        # Arguments to friction method, contact patch #2
            +-`ifm_data_cp3        # Arguments to friction method, contact patch #3
            +-`ifm_data_cp4        # Arguments to friction method, contact patch #4
            +-`ifm_data_cp5        # Arguments to friction method, contact patch #5
            +-`ifm_data_cp6        # Arguments to friction method, contact patch #6
            +-`ifm_data_cp7        # Arguments to friction method, contact patch #7
            +-`ifm_data_cp8        # Arguments to friction method, contact patch #8
            +-`ifm_data_cp9        # Arguments to friction method, contact patch #9

            +-`iflayer             # Interfacial layer. Please read the CONTACT users manual
            +-`ifl_data_cp1        # Arguments to interfacial layer, contact patch #1
            +-`ifl_data_cp2        # Arguments to interfacial layer, contact patch #2
            +-`ifl_data_cp3        # Arguments to interfacial layer, contact patch #3
            +-`ifl_data_cp4        # Arguments to interfacial layer, contact patch #4
            +-`ifl_data_cp5        # Arguments to interfacial layer, contact patch #5
            +-`ifl_data_cp6        # Arguments to interfacial layer, contact patch #6
            +-`ifl_data_cp7        # Arguments to interfacial layer, contact patch #7
            +-`ifl_data_cp8        # Arguments to interfacial layer, contact patch #8
            +-`ifl_data_cp9        # Arguments to interfacial layer, contact patch #9

            +-`ckd                 # Viscous damper connected in parallel with contact patch
c_name = Name of the coupling created. N.B. the name must start with the letters "cp_"
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
dire = Working direction for the coupling end connected to body1. The only valid direction for coupling creep_contact_6 is 'm'.
tral.y = Lateral irregularity to be applied between wheel and rail
tral.z = Vertical irregularity to be applied between wheel and rail
tral.vy = Speed of lateral irregularity between wheel and rail
tral.vz = Speed of vertical irregularity between wheel and rail
ro = Nominal wheel rolling radius.
iorient = Orientation of wheel and rail profile. Normally wheel- and rail- profiles are measured from outside of track towards track center line, which makes both profiles to look as left handed profiles. The user can with this input data mirror the profiles on the right side of the track, without generate special right handed profiles.
mulfact_nux = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nux only affects longitudinal creep.
mulfact_nuy = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nuy only affects lateral creep.
mulfact_spin= Creep reduction factor due to contamination and asperities in the contact surface. mulfact_spin only affects spin creep.

Variables generated in the main memory:

Input variables:

c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.
c_name.dx = Longitudinal distance between nodes in each contact patch mesh.
c_name.dy = Lateral distance between nodes in each contact patch mesh.

Output variables:

c_name.iwheel = Wheel number in CONTACT.
c_name.eta = Relative lateral motion between wheel and rail.
c_name.veta = Relative lateral speed difference between wheel and rail.

Variables created for each contact mesh:

cp#_c_name(3:).dr = Contact patch effective wheel radius.
cp#_c_name(3:).gam = Contact patch effective roll(X-rot) angle.
cp#_c_name(3:).irx = Contact patch effective wheel longitudinal curvature.
cp#_c_name(3:).ksi = Contact patch longitudinal position due to roll and yaw angle.
cp#_c_name(3:).posw = Contact patch effective lateral position on wheel, lateral direction.
cp#_c_name(3:).posr = Contact patch effective lateral position on rail, lateral direction.
cp#_c_name(3:).bo = Contact patch effective lateral position relative track center line.
cp#_c_name(3:).pen = Contact patch max undeformed penetration.
cp#_c_name(3:).area = Deformed penetration, contact area.
cp#_c_name(3:).slip_area = Deformed penetration, relative size of slip zone (slip_area/tot_area).
cp#_c_name(3:).vux = Contact patch effective longitudinal difference speed.
cp#_c_name(3:).vuy = Contact patch effective lateral difference speed.
cp#_c_name(3:).vuz = Contact patch effective vertical difference speed.
cp#_c_name(3:).Vref = Contact patch effective reference speed.
cp#_c_name(3:).nux = Contact patch effective longitudinal creepage.
cp#_c_name(3:).nuy = Contact patch effective lateral creepage.
cp#_c_name(3:).spin = Contact patch effective spin creepage.
cp#_c_name(3:).Fn = Contact patch contact force.
cp#_c_name(3:).Fny = Contact patch lateral creep force tangential to contact surface (angle cp#_c_name(3:).gam).
cp#_c_name(3:).Fx = Contact patch longitudinal force.
cp#_c_name(3:).Fy = Contact patch lateral force (along Y-axis of lsa)
cp#_c_name(3:).Fz = Contact patch vertical force (along Z-axis of lsa)
cp#_c_name(3:).Mspin = Contact patch spin torque tangential to contact surface (angle cp#_c_name(3:).gam).

Where:   # = The number of the contact patch

Forces and torques acting on adjacent bodies:

c_name.F1x = Longitudinal force acting on body1.
c_name.F1y = Lateral force acting on body1.
c_name.F1z = Vertical force acting on body1.
c_name.M1f = Roll torque acting on body1.
c_name.M1k = Pitch torque acting on body1.
c_name.M1p = Yaw torque acting on body1.
c_name.F2x = Longitudinal force acting on body2.
c_name.F2y = Lateral force acting on body2.
c_name.F2z = Vertical force acting on body2.
c_name.M2f = Roll torque acting on body2.
c_name.M2k = Pitch torque acting on body2.
c_name.M2p = Yaw torque acting on body2.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `creep_fasim_1`


Defines a rolling contact between two masses.
The normal contact force is solved in a linear spring named knwr_ (see argument list below). The tangential contact forces are calculated with subroutine fasim written by prof J.J. Kalker, Delft University of Technology.
The coupling can also be used for simulating a guardrail. If a vehicle has derailed, the coupling can be used to model the contact between wheels and sleepers.

calc_coupl_creep_lookuptable_1.png

The calculation of creep forces in the contact patch is carried out by interpolation in a four-dimensional lookup-table, which has been calculated according to Kalker's simplified theory of contact.

Before this coupling can be created the variables describing the track irregularities tral111r.y, tral111r.z, tral111r.vy and tral111r.vz must be defined. These variables can for example be created by function func tral_interp_spline.


coupl creep_fasim_1  c_name
            `body1' +-`a1 +-`b1 +-`h1
            `body2' +-`a2 +-`b2 +-`h2
             esys dire
             tral111r.y         # Lateral position track irregularity
             tral111r.z         # Vertical position track irregularity
             tral111r.vy        # Lateral velocity track irregularity
             tral111r.vz        # Vertical velocity track irregularity
             mulfact_nux        # Longitudinal creep relaxation due to contaminated surfaces
             mulfact_nuy        # Lateral      creep relaxation due to contaminated surfaces
             mulfact_spin       # Spin         creep relaxation due to contaminated surfaces
             zfn                # Wheel lift geometric function                               
             drfn               # Wheel radius geometric function
             gamfn              # Contact angle geometric function
             rofn               # Lateral curvature geometric function
             poswfn             # Lateral position of contact patch on wheel
             posrfn             # Lateral position of contact patch on rail
             knwr.F0_           # Wheel/rail prestess force in normal direction
             knwr_              # Wheel/rail stiffness in normal direction of contact surface
             cnwr_              # Wheel/rail damping   in normal direction of contact surface
             G                  # Combined modulus of rigidity for body1 and body2
             mu                 # Friction coefficient in contact patch
             ro                 # Wheel rolling radius, will vary for OOR-wheels
             nu                 # Combined Poisson's ratio for body1 and body2
             mgitr              # Size of gitter in longitudinal direction
             ngitr              # Size of gitter in lateral direction
             rro                # Longitudinal curvature of rail
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
dire = Working direction for the coupling end connected to body1. The only valid direction for coupling creep_fasim_1 is 'm'.
tral111r.y = Lateral irregularity to be applied between body1 and body2
tral111r.z = Vertical irregularity to be applied between body1 and body2
tral111r.vy = Speed of the lateral irregularity between body1 and body2
tral111r.vz = Speed of the vertical irregularity between body1 and body2
mulfact_nux = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nux only affects longitudinal creep.
mulfact_nuy = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nuy only affects lateral creep.
mulfact_spin= Creep reduction factor due to contamination and asperities in the contact surface. mulfact_spin only affects spin creep.
zfn drfn gamfn rofn poswfn posrfn= Wheel/rail geometrical functions generated in the preprocessor kpf.
knwr.F0_ = Prestress force normal to the contact patch.
knwr_ = Stiffness normal to the contact surface. Knwr_ must be defined as a memory field where the stiffness is a function of the contact angle. Variable knwr_ can be created in function func intpl_r.
cnwr_ = Damping normal to the contact surface. Cnwr_ must be defined as a memory field where the stiffness is a function of the contact angle. Variable cnwr_ can be created in function func intpl_r.
G = Combined modulus of rigidity for body1 and body2 (E/2/(1+nu))
mu = Friction coefficient in contact patch.
ro = Wheel rolling radius.
nu = Combined Poisson's ratio for body1 and body2
mgitr = Size of gitter in longitudinal direction
ngitr = Size of gitter in lateral direction
rro = Longitudinal curvature of rail

Variables generated in the main memory:

Input variables:

c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.
c_name.a = Size of contact surface semi-axis in longitudinal direction.
c_name.b = Size of contact surface semi-axis in lateral direction.
c_name.a_b= The a/b-ratio of the contact ellipse. The semi-axle a is oriented in the longitudinal direction, and the semi-axle b is oriented in the lateral direction. If a/b = 1, the contact patch is circular.
c_name.c = The geometrical average radii of the contact ellipse, c is calculated according to:
c= √ a · b 
where:
a = The length of the contact ellipse longitudinal semi-axle.
b = The length of the contact ellipse lateral semi-axle.
c_name.nux = Longitudinal creepage in plane with the contact surface. Positive value gives positive force on the track at the contact patch surface level.
c_name.Fn = Contact force perpendicular to the contact surface.
c_name.Fnx = Longitudinal creep force in plane with the contact surface. Positive value gives positive force on the track at the contact patch surface level.
c_name.Fny = Lateral creep force in plane with the contact surface. Positive value gives positive force on the track at the contact patch surface level.
c_name.Mspin= Spin moment in contact patch.
c_name.fwk = Energy dissipation in contact patch.

Generated variables containing forces and moment, acting on body1 and body2:

c_name.F1x = Longitudinal force acting on body1.
c_name.F1y = Lateral force acting on body1.
c_name.F1z = Vertical force acting on body1.
c_name.M1f = Roll moment acting on body1.
c_name.M1k = Pitch moment acting on body1.
c_name.M1p = Yaw moment acting on body1.
c_name.F2x = Longitudinal force acting on body2.
c_name.F2y = Lateral force acting on body2.
c_name.F2z = Vertical force acting on body2.
c_name.M2f = Roll moment acting on body2.
c_name.M2k = Pitch moment acting on body2.
c_name.M2p = Yaw moment acting on body2.

See also:

func wr_coupl_pr3:

Here coupl creep_fasim_1 is used in a so called big-function. It's a convenience function that creates the following:

Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `creep_fasim_2`


Defines a rolling contact between two masses similar to creep_fasim_1.
In addition to creep_fasim_1 coupl creep_fasim_2 modifies the creepages according to: "Creep force modelling for rail traction vehicles based on the Fastsim algorithm"; Maksym Spiryagin , Oldrich Polach & Colin Cole; Vehicle System Dynamics 13 Aug 2013. The Kalker reduction factor \(k\) is calculated according to the following formula:

\( ~k= k_0\left(\alpha_{inf} + \frac{1-\alpha_{inf}}{1+\beta\cdot\varepsilon}\right) ~ \)

Where:
k0 = Input data argument k0
αinf= Input data argument Ainf
β  = Input data argument beta

\( ~\varepsilon= \frac{1}{4} \cdot \frac{G \pi a b k_0 c_{11}}{Q \mu} \cdot \nu ~~~~~~~~~~~~~~~~ \)

 G = Shear modulus
 a = Contact ellipse longitudinal semi-axis
 b = Contact ellipse lateral semi-axis
 c11= Creepage coefficient in longitudinal direction, Kalker's linear theory
 ν = Total creep
 Q = Wheel load
 μ = Friction coefficient

Before this coupling can be created the variables describing the track irregularities tral111r.y, tral111r.z, tral111r.vy and tral111r.vz must be defined. These variables can for example be created by function func tral_interp_spline.


coupl creep_fasim_2  c_name
            `body1' +-`a1 +-`b1 +-`h1
            `body2' +-`a2 +-`b2 +-`h2
             esys dire
             tral111r.y         # Lateral position track irregularity
             tral111r.z         # Vertical position track irregularity
             tral111r.vy        # Lateral velocity track irregularity
             tral111r.vz        # Vertical velocity track irregularity
             mulfact_nux        # Longitudinal creep relaxation due to contaminated surfaces
             mulfact_nuy        # Lateral      creep relaxation due to contaminated surfaces
             mulfact_spin       # Spin         creep relaxation due to contaminated surfaces
             zfn                # Wheel lift geometric function                               
             drfn               # Wheel radius geometric function
             gamfn              # Contact angle geometric function
             rofn               # Lateral curvature geometric function
             poswfn             # Lateral position of contact patch on wheel
             posrfn             # Lateral position of contact patch on rail
             knwr.F0_           # Wheel/rail prestess force in normal direction
             knwr_              # Wheel/rail stiffness in normal direction of contact surface
             cnwr_              # Wheel/rail damping   in normal direction of contact surface
             G                  # Combined modulus of rigidity for body1 and body2
             mu                 # Friction coefficient in contact patch
             ro                 # Wheel rolling radius, will vary for OOR-wheels
             poisson            # Combined Poisson's ratio for body1 and body2
             mgitr              # Size of gitter in longitudinal direction
             ngitr              # Size of gitter in lateral direction
             rro                # Longitudinal curvature of rail
             k0                 # Initial value of Kalker's reduction factor
             Ainf               # Fraction of "k0" at creep values approaching infinity
             beta               # Non-dimensional parameter related to the decrease of the contact stiffness
c_name= Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
dire = Working direction for the coupling end connected to body1. The only valid direction for coupling creep_fasim_2 is 'm'.
tral111r.y = Lateral irregularity to be applied between body1 and body2
tral111r.z = Vertical irregularity to be applied between body1 and body2
tral111r.vy = Speed of the lateral irregularity between body1 and body2
tral111r.vz = Speed of the vertical irregularity between body1 and body2
mulfact_nux = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nux only affects longitudinal creep.
mulfact_nuy = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nuy only affects lateral creep.
mulfact_spin = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_spin only affects spin creep.
zfn drfn gamfn rofn poswfn posrfn = Wheel/rail geometrical functions generated in the preprocessor kpf.
knwr.F0_ = Prestress force normal to the contact patch.
knwr_ = Stiffness normal to the contact surface. Knwr_ must be defined as a memory field where the stiffness is a function of the contact angle. Variable knwr_ can be created in function func intpl_r.
cnwr_ = Damping normal to the contact surface. Cnwr_ must be defined as a memory field where the stiffness is a function of the contact angle. Variable cnwr_ can be created in function func intpl_r.
G = Combined modulus of rigidity for body1 and body2
mu = Friction coefficient in contact patch.
ro = Longitudinal curve radius of wheel in contact patch.
poisson = Combined Poisson's ratio for body1 and body2 (for steel ~0.3)
mgitr = Size of gitter in longitudinal direction
ngitr = Size of gitter in lateral direction
rro = Longitudinal curvature of rail
k0 = Initial value of Kalker's reduction factor at creep values close to zero, 0 < k0 <= 1
Ainf = Fraction of "k0" at creep values approaching infinity, 0 <= ainf <= 1
beta = The non-dimensional parameter related to the decrease of the contact stiffness with the increase of the slip area size, 0 <= beta

Variables generated in the main memory:

Input variables:

c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.
c_name.ro_cur = Current wheel radius.
c_name.ro_init = Initial wheel radius.
c_name.rro = Longitudinal curvature of rail. To be set especially when running on roller rigs.
c_name.a = Size of contact surface semi-axis in longitudinal direction.
c_name.b = Size of contact surface semi-axis in lateral direction.
c_name.a_b= The a/b-ratio of the contact ellipse. The semi-axle a is oriented in the longitudinal direction, and the semi-axle b is oriented in the lateral direction. If a/b = 1, the contact patch is circular.
c_name.c = The geometrical average radii of the contact ellipse, c is calculated according to:

\( ~ c= \sqrt{a \cdot b } ~ \)

where:
a = The length of the contact ellipse longitudinal semi-axle.
b = The length of the contact ellipse lateral semi-axle.
c_name.ga = Combined modulus of rigidity for body1 and body2.
c_name.si = Combined Poisson's ratio for body1 and body2.
c_name.mu = Friction coefficient in contact patch.
c_name.k0 = Initial value of Kalker's reduction factor.
c_name.Ainf = Fraction of "k0" at creep values approaching infinity.
c_name.beta = The non-dimensional parameter related to the decrease of the contact stiffness with the increase of the slip area size.
c_name.Fknwrz = Force in stiffness knwr.
c_name.Fcnwrz = Force in damper cnwr.
c_name.vux = Longitudinal speed difference in contact patch according to lsys coordinate system.
c_name.vuy = Lateral speed difference in contact patch according to lsys coordinate system.
c_name.vuz = Vertical speed difference in contact patch according to lsys coordinate system.
c_name.Vref = Reference speed when evaluating the creepages.
c_name.nux = Longitudinal creepage in plane with the contact patch.
c_name.nuy = Lateral creepage in plane with the contact patch.
c_name.spin = Spin creepage in plane with the contact patch.
c_name.mgitr= Size of mesh in longitudinal direction.
c_name.ngitr= Size of mesh in lateral direction.
c_name.Fn = Contact force perpendicular to the contact patch.
c_name.Fnx = Longitudinal creep force in plane with the contact patch. Positive value gives positive force on the track at the contact patch surface level.
c_name.Fny = Lateral creep force in plane with the contact patch. Positive value gives positive force on the track at the contact patch surface level.
c_name.Mspin= Spin moment in contact patch.
c_name.fwk = Energy dissipation in contact patch.

Generated variables containing forces and moment, acting on body1 and body2:

c_name.F1x = Longitudinal force acting on body1.
c_name.F1y = Lateral force acting on body1.
c_name.F1z = Vertical force acting on body1.
c_name.M1f = Roll moment acting on body1.
c_name.M1k = Pitch moment acting on body1.
c_name.M1p = Yaw moment acting on body1.
c_name.F2x = Longitudinal force acting on body2.
c_name.F2y = Lateral force acting on body2.
c_name.F2z = Vertical force acting on body2.
c_name.M2f = Roll moment acting on body2.
c_name.M2k = Pitch moment acting on body2.
c_name.M2p = Yaw moment acting on body2.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `creep_fasim_4`


Defines a rolling contact between two masses.
Similar to creep_fasim_1, but this wheel/rail-coupling uses the wheel and rail profiles directly. I.e. it is not necessary to create wheel/rail-geometry functions in pre-processor KPF.

Before this coupling can be created the variables describing the track irregularities tral111r.y, tral111r.z, tral111r.vy and tral111r.vz must be defined. These variables can for example be created by function func tral_interp_spline.


coupl creep_fasim_4  c_name
            `body1' +-`a1 +-`b1 +-`h1
            `body2' +-`a2 +-`b2 +-`h2
             esys dire
             tral111r.y         # Lateral position track irregularity
             tral111r.z         # Vertical position track irregularity
             tral111r.vy        # Lateral velocity track irregularity
             tral111r.vz        # Vertical velocity track irregularity
             ro                 # Nominal rolling radius of wheel
             iorient            # Orientation +1= Left side; -1= Right side
             shape_long         # Shape of the contact pressure distribution in longitudinal direction
             mulfact_nux        # Longitudinal creep relaxation due to contaminated surfaces
             mulfact_nuy        # Lateral      creep relaxation due to contaminated surfaces
             mulfact_spin       # Spin         creep relaxation due to contaminated surfaces
#                                                                                                       
             wheel_prof         # Wheel profile                                              
             75                 # Only here for backward compatibility reasons
             mgitr ngitr        # Size of contact mesh in long & lat direction                    
             rail_prof_mem      # Rail profile memory field                                  
             3                  # Only here for backward compatibility reasons            
#                                                                                                       
             Gc                 # Combined Shear Modulus                                     
             nuc                # Combined Poisson's ratio                                   
#                                                                                                       
             rro                # Vertical curvature rail 
             knwr               # Stiffness normal to contact patch                          
             cnwr               # Damping   normal to contact patch                          
             penmax             # No force if the penetration is deeper than penmax          
             dy                 # Interpolate in equidistant steps in rail profile            
#                                                                                                       
             mu1                # Friction coefficient in wheel/rail contact cp1             
             mu2                # Friction coefficient in wheel/rail contact cp2             
             mu3                # Friction coefficient in wheel/rail contact cp3             
             mu4                # Friction coefficient in wheel/rail contact cp4             
             mu5                # Friction coefficient in wheel/rail contact cp5             
             mu6                # Friction coefficient in wheel/rail contact cp6             
             mu7                # Friction coefficient in wheel/rail contact cp7             
             mu8                # Friction coefficient in wheel/rail contact cp8             
             mu9                # Friction coefficient in wheel/rail contact cp9             
             mu0                # Friction coefficient in wheel/rail contact cp0            
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
dire = Working direction for the coupling end connected to body1. The only valid direction for coupling creep_fasim_4 is 'm'.
tral111r.y = Lateral irregularity to be applied between body1 and body2
tral111r.z = Vertical irregularity to be applied between body1 and body2
tral111r.vy = Speed of the lateral irregularity between body1 and body2
tral111r.vz = Speed of the vertical irregularity between body1 and body2
ro = Nominal rolling radius of wheel. For OOR-wheels the value of this variable will vary with the pitch angle of the wheelset.
iorient = Orientation of the wheel and rail profiles. Wheel profile files and rail profile files are always describing wheels and a rails for the left side of the vehicle. Therefore this argument shall be set equal to "+1" if this wheel/rail-coupling is on the left side of the vehicle, and equal to "-1" for the right side of the vehicle.
shape_long = Shape of the contact pressure distribution in longitudinal direction:
1= Circular; 2= Parabolic
mulfact_nux = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nux only affects longitudinal creep.
mulfact_nuy = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nuy only affects lateral creep.
mulfact_spin= Creep reduction factor due to contamination and asperities in the contact surface. mulfact_spin only affects spin creep.
wheel_prof = Memory field describing the wheel profile, e.g. func intpl_r
mgitr = Size of gitter in longitudinal direction
ngitr = Size of gitter in lateral direction
rail_prof_mem=Two dimensional memory field describing the rail profile along the track. Can be described in e.g. func intpl2_r
Gc = Combined modulus of rigidity for body1 and body2 (E/2/(1+nu))
nuc = Combined Poisson's ratio for body1 and body2
rro = Longitudinal curvature of rail or radius of rollers in a roller rig
knwr = Stiffness normal to the contact surface. If knwr is a memory field, the value of the contact stiffness will depend on the contact patch angle.
cnwr = Damping normal to the contact surface. If cnwr is a memory field, the value of the damping coefficient will depend on the contact patch angle.
penmax = The contact force is based on the contact stiffness "knwr" and the penetration between wheel and rail, If the penetration is deeper than "penmax" the wheel surface is considered to be on the other side of the rail surface, hence no contact force.
dy = It is not necessary that the rail and wheel profile has equidistant steps in lateral direction. Coupl creep_fasim_4 will take care of this and interpolate in equidistant steps "dy" over the profiles.
mu1 = Friction coefficient in contact patch cp1.
mu2 = Friction coefficient in contact patch cp2.
mu3 = Friction coefficient in contact patch cp3.
mu4 = Friction coefficient in contact patch cp4.
mu5 = Friction coefficient in contact patch cp5.
mu6 = Friction coefficient in contact patch cp6.
mu7 = Friction coefficient in contact patch cp7.
mu8 = Friction coefficient in contact patch cp8.
mu9 = Friction coefficient in contact patch cp9.
mu0 = Friction coefficient in contact patch cp0.

Variables generated in the main memory:

Input variables:

c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.
c_name.a = Size of contact surface semi-axis in longitudinal direction.
c_name.b = Size of contact surface semi-axis in lateral direction.
c_name.a_b= The a/b-ratio of the contact ellipse. The semi-axle a is oriented in the longitudinal direction, and the semi-axle b is oriented in the lateral direction. If a/b = 1, the contact patch is circular.
c_name.c = The geometrical average radii of the contact ellipse, c is calculated according to:
c= √ a · b 
where:
a = The length of the contact ellipse longitudinal semi-axle.
b = The length of the contact ellipse lateral semi-axle.
c_name.nux = Longitudinal creepage in plane with the contact surface. Positive value gives positive force on the track at the contact patch surface level.
c_name.Fn = Contact force perpendicular to the contact surface.
c_name.Fnx = Longitudinal creep force in plane with the contact surface. Positive value gives positive force on the track at the contact patch surface level.
c_name.Fny = Lateral creep force in plane with the contact surface. Positive value gives positive force on the track at the contact patch surface level.
c_name.Mspin= Spin moment in contact patch.
c_name.fwk = Energy dissipation in contact patch.

Generated variables containing forces and moment, acting on body1 and body2:

c_name.F1x = Longitudinal force acting on body1.
c_name.F1y = Lateral force acting on body1.
c_name.F1z = Vertical force acting on body1.
c_name.M1f = Roll moment acting on body1.
c_name.M1k = Pitch moment acting on body1.
c_name.M1p = Yaw moment acting on body1.
c_name.F2x = Longitudinal force acting on body2.
c_name.F2y = Lateral force acting on body2.
c_name.F2z = Vertical force acting on body2.
c_name.M2f = Roll moment acting on body2.
c_name.M2k = Pitch moment acting on body2.
c_name.M2p = Yaw moment acting on body2.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `creep_fastrip_1`


Defines a rolling contact between two masses.
The contact forces between the two bodies are calculated in ANALYN and FaStrip, developed by PhD Matin Shahzamanian Sichani KTH Stockholm, TRITA-AVE 2016:02, ISSN 1651-7660, ISBN 978-91-7595-846-0. In coupling creep_fastrip_1 the profile of the rail and wheel are used directly. Therefore it is not necessary to create wheel/rail geometry functions in program KPF.
Gensys detects all possible contact patches between the wheel and rail profiles. In the center of each possible contact patch a contact coordinate system is created, with its X-axis pointing forward along the track and its Z-axis normal to the contact patch pointing towards the rail. For each contact patch a mesh is created, containing the perpendicular distances between wheel and rail. A positive distance indicates a gap between wheel and rail. A negative distance indicates that the undeformed profiles has penetrated each other. Up to 9 contact patches can be in contact simultaneously.

N.B. Integration methods that do backsteps are not possible to use together with coupling creep_fastrip_1. Recommended integrator with coupling creep_fastrip_1 is runge_kutta with a fixed time step.

Before this coupling can be created the variables describing the track irregularities tral111r.y, tral111r.z, tral111r.vy and tral111r.vz must be defined. These variables can for example be created in function func tral_interp_spline.


 coupl creep_fastrip_1  c_name
              `body1' +-`a1 +-`b1 +-`h1
              `body2' +-`a2 +-`b2 +-`h2
               esys dire           # Euler system and direction of action
            +-`tral.y              # Lateral position track irregularity
            +-`tral.z              # Vertical position track irregularity
            +-`tral.vy             # Lateral velocity track irregularity
            +-`tral.vz             # Vertical velocity track irregularity
            +-`ro                  # Wheel rolling radius, will vary for OOR-wheels
               iorient             # Orientation of profiles +1=left, -1=right
            +-`ixshape             # Shape in long direction
            +-`mulfact_nux         # Longitudinal creep relaxation due to contaminated surfaces
            +-`mulfact_nuy         # Lateral      creep relaxation due to contaminated surfaces
            +-`mulfact_spin        # Spin         creep relaxation due to contaminated surfaces

               wheel_prof          # Wheel profile defined via a memory field, e.g. func intpl_r
            +-`dx                  # Longitudinal distance between nodes in each contact patch mesh
            +-`dy                  # Lateral distance between nodes in each contact patch mesh
               rail_prof_memfield  # Rail profiles defined via a memory field, e.g. func intpl2_r

            +-`G_comb              # Combined Shear Modulus
            +-`nu_comb             # Combined Poisson's ratio

                                   # Wear according to Achard's law
            +-`HV                  # Hardness in Vickers N/m2
            +-`kp1                 # Contact pressure level, border 1
            +-`kv1                 # Sliding speed, border 1
            +-`kv2                 # Sliding speed, border 2
            +-`k1                  # Wear rates in the different    
            +-`k2                  # areas of the
            +-`k3                  # Archard's wear chart
            +-`k4                  # See figure below

            +-`ror                 # Vertical curvature rail head

            +-`mu_1                # Friction coefficient, contact patch #1
            +-`mu_2                # Friction coefficient, contact patch #2
            +-`mu_3                # Friction coefficient, contact patch #3
            +-`mu_4                # Friction coefficient, contact patch #4
            +-`mu_5                # Friction coefficient, contact patch #5
            +-`mu_6                # Friction coefficient, contact patch #6
            +-`mu_7                # Friction coefficient, contact patch #7
            +-`mu_8                # Friction coefficient, contact patch #8
            +-`mu_9                # Friction coefficient, contact patch #9
□
c_name = Name of the coupling created. N.B. the name must start with the letters "cp_"
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
dire = Working direction for the coupling end connected to body1. The only valid direction for coupling creep_fastrip_1 is 'm'.
tral.y = Lateral irregularity to be applied between wheel and rail
tral.z = Vertical irregularity to be applied between wheel and rail
tral.vy = Speed of lateral irregularity between wheel and rail
tral.vz = Speed of vertical irregularity between wheel and rail
ro = Nominal wheel rolling radius.
iorient = Orientation of wheel and rail profile. Normally wheel- and rail- profiles are measured from outside of track towards track center line, which makes both profiles to look as left handed profiles. The user can with this input data mirror the profiles on the right side of the track, without generate special right handed profiles.
ixshape = =1 => Circular shape, longitudinal curvature according to cp#_c_name(3:).irx
=2 => Parabolic shape, approximately longitudinal curvature according to cp#_c_name(3:).irx
mulfact_nux = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nux only affects longitudinal creep.
mulfact_nuy = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nuy only affects lateral creep.
mulfact_spin= Creep reduction factor due to contamination and asperities in the contact surface. mulfact_spin only affects spin creep.

Variables generated in the main memory:

Input variables:

c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.
c_name.dx = Longitudinal distance between nodes in each contact patch mesh.
c_name.dy = Lateral distance between nodes in each contact patch mesh.

Output variables:

c_name.eta = Relative lateral motion between wheel and rail.
c_name.veta = Relative lateral speed difference between wheel and rail.

Variables created for each contact mesh:

cp#_c_name(3:).dr = Contact patch effective wheel radius.
cp#_c_name(3:).gam = Contact patch effective roll(X-rot) angle.
cp#_c_name(3:).irx = Contact patch effective wheel longitudinal curvature.
cp#_c_name(3:).ksi = Contact patch longitudinal position due to roll and yaw angle.
cp#_c_name(3:).posw = Contact patch effective lateral position on wheel, lateral direction.
cp#_c_name(3:).posr = Contact patch effective lateral position on rail, lateral direction.
cp#_c_name(3:).bo = Contact patch effective lateral position relative track center line.
cp#_c_name(3:).pen = Contact patch max undeformed penetration.
cp#_c_name(3:).udefa = Longitudinal semi-length of potential contact area. I.e. the length of the actual contact patch can be up to 2*cp#_c_name(3:).udefa.
cp#_c_name(3:).udefb = Lateral semi-width of potential contact area. I.e. the width of the actual contact patch can be up to 2*cp#_c_name(3:).udefb.
cp#_c_name(3:).area = Actual contact area.
cp#_c_name(3:).slip_area = Relative size of slip zone (slip_area/tot_area).
cp#_c_name(3:).vux = Contact patch effective longitudinal difference speed.
cp#_c_name(3:).vuy = Contact patch effective lateral difference speed.
cp#_c_name(3:).vuz = Contact patch effective vertical difference speed.
cp#_c_name(3:).Vref = Contact patch effective reference speed.
cp#_c_name(3:).nux = Contact patch effective longitudinal creepage.
cp#_c_name(3:).nuy = Contact patch effective lateral creepage.
cp#_c_name(3:).spin = Contact patch effective spin creepage.
cp#_c_name(3:).Fn = Contact patch contact force.
cp#_c_name(3:).Fny = Contact patch lateral creep force tangential to contact surface (angle cp#_c_name(3:).gam).
cp#_c_name(3:).Fx = Contact patch longitudinal force.
cp#_c_name(3:).Fy = Contact patch lateral force (along Y-axis of lsa)
cp#_c_name(3:).Fz = Contact patch vertical force (along Z-axis of lsa)
cp#_c_name(3:).Mspin = Contact patch spin torque tangential to contact surface (angle cp#_c_name(3:).gam).

Where:   # = The number of the contact patch

Forces and torques acting on adjacent bodies:

c_name.F1x = Longitudinal force acting on body1.
c_name.F1y = Lateral force acting on body1.
c_name.F1z = Vertical force acting on body1.
c_name.M1f = Roll torque acting on body1.
c_name.M1k = Pitch torque acting on body1.
c_name.M1p = Yaw torque acting on body1.
c_name.F2x = Longitudinal force acting on body2.
c_name.F2y = Lateral force acting on body2.
c_name.F2z = Vertical force acting on body2.
c_name.M2f = Roll torque acting on body2.
c_name.M2k = Pitch torque acting on body2.
c_name.M2p = Yaw torque acting on body2.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `creep_fastrip_3`


Defines a rolling contact between two masses.
The contact forces between the two bodies are calculated in a linear spring normal to the contact surface and FaStrip. Routine FaStrip has been developed by PhD Matin Shahzamanian Sichani KTH Stockholm, TRITA-AVE 2016:02, ISSN 1651-7660, ISBN 978-91-7595-846-0. In order to speed up the simulation times wheel/rail-geometry functions generated by program KPF are used.

Before this coupling can be created the variables describing the track irregularities tral111r.y, tral111r.z, tral111r.vy and tral111r.vz must be defined. These variables can for example be created in function func tral_interp_spline.


 coupl creep_fastrip_3  c_name
              `body1' +-`a1 +-`b1 +-`h1
              `body2' +-`a2 +-`b2 +-`h2
               esys dire           # Euler system and direction of action
            +-`tral.y              # Lateral position track irregularity
            +-`tral.z              # Vertical position track irregularity
            +-`tral.vy             # Lateral velocity track irregularity
            +-`tral.vz             # Vertical velocity track irregularity
            +-`mulfact_nux         # Longitudinal creep relaxation due to contaminated surfaces
            +-`mulfact_nuy         # Lateral      creep relaxation due to contaminated surfaces
            +-`mulfact_spin        # Spin         creep relaxation due to contaminated surfaces

             zfn                # Wheel lift geometric function                               
             drfn               # Wheel radius geometric function
             gamfn              # Contact angle geometric function
             rofn               # Lateral curvature geometric function
             poswfn             # Lateral position of contact patch on wheel
             posrfn             # Lateral position of contact patch on rail

             +-`knwr.F0_           # Wheel/rail prestess force in normal direction
             +-`knwr_              # Wheel/rail stiffness in normal direction of contact surface
             +-`cnwr_              # Wheel/rail damping   in normal direction of contact surface

             +-`G_comb             # Combined Shear Modulus

             +-`mu                 # Friction coefficient in contact patch
             +-`ro                 # Wheel rolling radius, will vary for OOR-wheels
             +-`nu_comb            # Combined Poisson's ratio for body1 and body2
             +-`mgitr              # Size of gitter in longitudinal direction
             +-`ngitr              # Size of gitter in lateral direction
             +-`rro                # Longitudinal curvature of rail
c_name = Name of the coupling created. N.B. the name must start with the letters "cp_"
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
dire = Working direction for the coupling end connected to body1. The only valid direction for coupling creep_fastrip_3 is 'm'.
tral.y = Lateral irregularity to be applied between wheel and rail
tral.z = Vertical irregularity to be applied between wheel and rail
tral.vy = Speed of lateral irregularity between wheel and rail
tral.vz = Speed of vertical irregularity between wheel and rail
ro = Nominal wheel rolling radius.
mulfact_nux = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nux only affects longitudinal creep.
mulfact_nuy = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nuy only affects lateral creep.
mulfact_spin= Creep reduction factor due to contamination and asperities in the contact surface. mulfact_spin only affects spin creep.

Variables generated in the main memory:

Input variables:

c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.
c_name.dx = Longitudinal distance between nodes in each contact patch mesh.
c_name.dy = Lateral distance between nodes in each contact patch mesh.

Output variables:

c_name.eta = Relative lateral motion between wheel and rail.
c_name.veta = Relative lateral speed difference between wheel and rail.

Variables created for each contact mesh:

c_name.dr = Contact patch effective wheel radius.
c_name.gam = Contact patch effective roll(X-rot) angle.
c_name.irx = Contact patch effective wheel longitudinal curvature.
c_name.ksi = Contact patch longitudinal position due to roll and yaw angle.
c_name.posw = Contact patch effective lateral position on wheel, lateral direction.
c_name.posr = Contact patch effective lateral position on rail, lateral direction.
c_name.bo = Contact patch effective lateral position relative track center line.
c_name.pen = Contact patch max undeformed penetration.
c_name.vux = Contact patch effective longitudinal difference speed.
c_name.vuy = Contact patch effective lateral difference speed.
c_name.vuz = Contact patch effective vertical difference speed.
c_name.Vref = Contact patch effective reference speed.
c_name.nux = Contact patch effective longitudinal creepage.
c_name.nuy = Contact patch effective lateral creepage.
c_name.spin = Contact patch effective spin creepage.
c_name.Fn = Contact patch contact force.
c_name.Fny = Contact patch lateral creep force tangential to contact surface (angle c_name.gam).
c_name.Fx = Contact patch longitudinal force.
c_name.Fy = Contact patch lateral force (along Y-axis of lsa)
c_name.Fz = Contact patch vertical force (along Z-axis of lsa)
c_name.Mspin = Contact patch spin torque tangential to contact surface (angle c_name.gam).

Forces and torques acting on adjacent bodies:

c_name.F1x = Longitudinal force acting on body1.
c_name.F1y = Lateral force acting on body1.
c_name.F1z = Vertical force acting on body1.
c_name.M1f = Roll torque acting on body1.
c_name.M1k = Pitch torque acting on body1.
c_name.M1p = Yaw torque acting on body1.
c_name.F2x = Longitudinal force acting on body2.
c_name.F2y = Lateral force acting on body2.
c_name.F2z = Vertical force acting on body2.
c_name.M2f = Roll torque acting on body2.
c_name.M2k = Pitch torque acting on body2.
c_name.M2p = Yaw torque acting on body2.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `creep_lookuptable_1`


Defines a rolling contact between two masses.
The main purpose of this coupling is to model the normal- and tangential- forces occuring in the contact patch between wheel and rail. The advantage of using this coupling instead of the substructure wr_coupl_pe3.ins is that the user can model the wheelset and track more freely. This coupling can also be used for simulating a guard rail, or if a vehicle has derailed this couling can be used for modeling the contact between the wheels and the sleepers.

calc_coupl_creep_lookuptable_1.png

The creep-forces which arise in the contact patch are calculated from the following parameters: contact pressure, creepage, the surfaces' radii of curvature, coefficient of friction, material constants. The creep forces are interpolated in a four-dimensional matrix, where the input data quantities are creep, creepage direction, spin and the contact ellipse's a/b-ratio By introducing dimensionless parameters for the creepages the four-dimensional matrix can be calculated in advance, and stored in a block data subroutine. The four-dimensional matrix has been calculated according to Kalker's simplified theory.

Before this coupling can be created the variables describing the track irregularities tral111r.y, tral111r.z, tral111r.vy and tral111r.vz must be defined. These variables can for example be created by function func tral_interp_spline.


 coupl creep_lookuptable_1  c_name
              `body1' +-`a1 +-`b1 +-`h1
              `body2' +-`a2 +-`b2 +-`h2
               esys dire
               tral111r.y         # Lateral position track irregularity
               tral111r.z         # Vertical position track irregularity
               tral111r.vy        # Lateral velocity track irregularity
               tral111r.vz        # Vertical velocity track irregularity
               mulfact_nux        # Longitudinal creep relaxation due to contaminated surfaces
               mulfact_nuy        # Lateral      creep relaxation due to contaminated surfaces
               mulfact_spin       # Spin         creep relaxation due to contaminated surfaces
               zfn                # Wheel lift geometric function
               drfn               # Wheel radius geometric function
               gamfn              # Contact angle geometric function
               rofn               # Lateral curvature geometric function
               poswfn             # Lateral position of contact patch on wheel
               posrfn             # Lateral position of contact patch on rail
               knwr.F0_           # Wheel/rail prestess force in normal direction
               knwr_              # Wheel/rail stiffness in normal direction of contact surface
               cnwr_              # Wheel/rail damping   in normal direction of contact surface
               E_modulus          # Combined modulus of elasticity for body1 and body2
               poisson            # Combined Poisson's ratio for body1 and body2
               mu                 # Friction coefficient in contact patch
               ro                 # Wheel rolling radius, will vary for OOR-wheels
               rro                # Vertical radius of rail
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
dire = Working direction for the coupling end connected to body1. The only valid direction for coupling creep_lookuptable_1 is 'm'.
tral111r.y = Lateral irregularity to be applied between body1 and body2
tral111r.z = Vertical irregularity to be applied between body1 and body2
tral111r.vy = Speed of the lateral irregularity between body1 and body2
tral111r.vz= Speed of the vertical irregularity between body1 and body2
mulfact_nux = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nux only affects longitudinal creep.
mulfact_nuy = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nuy only affects lateral creep.
mulfact_spin= Creep reduction factor due to contamination and asperities in the contact surface. mulfact_spin only affects spin creep.
zfn, drfn, gamfn, rofn, poswfn, posrfn = Wheel/rail geometrical functions generated by preprocessor kpf.
knwr.F0_ = Prestress force normal to the contact patch.
knwr_ = Stiffness normal to the contact surface.
cnwr_ = Damping normal to the contact surface.
E_modulus = Combined modulus of elasticity for body1 and body2 (for steel ~2e11)
poisson = Combined Poisson's ratio for body1 and body2 (for steel ~0.3)
mu = Friction coefficient in contact patch.
ro = Longitudinal curve radius in contact patch.
rro = In this argument the user has the possibility to give a vertical curve radius to the rails. On a normal track this curve radius is very big. If the radius is equal or greater than 1e99, the effect on the size of the contact ellipse is neglected. With this input data argument the user has the possibility to simulate a vehicle standing on rollers in a roller rig.

Variables generated in the main memory:

Input variables:

c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.
c_name.a_b= The a/b-ratio of the contact ellipse. The semi-axle a is oriented in the longitudinal direction, and the semi-axle b is oriented in the lateral direction. If a/b = 1, the contact patch is circular.
c_name.c = The geometrical average radii of the contact ellipse, c is calculated according to:
c= √ a · b 
where:
a = The length of the contact ellipse longitudinal semi-axle
b = The length of the contact ellipse lateral semi-axle
c_name.nya = The direction of creepage. Input creep to the coupling is nux and nuy. These values are converted in crip to a total creep and a creep direction. The direction of creepage are measured relative to the positive x-axes, thus leading to the following:
c_name.nya = 0 creep in positive x-direction
c_name.nya = π/2 creep in positive y-direction
c_name.nya = π creep in negative x-direction
c_name.nya = -π/2 creep in negative y-direction
c_name.uny = Dimensionless creepage parameter calculated according to the following equation:
 c_name.uny= c_nu * ro / mu / c_name.c 
Where:
c_nu = Creepage in direction c_name.nya
ro = Lateral difference in curvature between wheel and rail in the contact patch
mu = Friction coefficient in contact patch
c_name.usp = Dimensionless spin parameter calculated according to the following equation:
 c_name.usp = c_spin * ro / mu 
Where:
c_spin = Spin creepage
ro = Lateral difference in curvature between wheel and rail in contact patch
mu = Friction coefficient in contact patch
c_name.nux = Contact patch effective longitudinal creepage.
c_name.nuy = Contact patch effective lateral creepage.
c_name.spin = Contact patch effective spin creepage.
c_name.posw = Contact patch effective lateral position on wheel, lateral direction.
c_name.posr = Contact patch effective lateral position on rail, lateral direction.
c_name.Fn = Contact force perpendicular to the contact surface.
c_name.Fnx = Longitudinal creep force in plane with the contact surface. Positive value gives positive force on the track at the contact patch surface level.
c_name.Fny = Lateral creep force in plane with the contact surface. Positive value gives positive force on the track at the contact patch surface level.

Generated variables containing forces and moment, acting on body1 and body2:

c_name.F1x = Longitudinal force acting on body1.
c_name.F1y = Lateral force acting on body1.
c_name.F1z = Vertical force acting on body1.
c_name.M1f = Roll moment acting on body1.
c_name.M1k = Pitch moment acting on body1.
c_name.M1p = Yaw moment acting on body1.
c_name.F2x = Longitudinal force acting on body2.
c_name.F2y = Lateral force acting on body2.
c_name.F2z = Vertical force acting on body2.
c_name.M2f = Roll moment acting on body2.
c_name.M2k = Pitch moment acting on body2.
c_name.M2p = Yaw moment acting on body2.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `creep_lookuptable_2`


Defines a rolling contact between two masses.
The coupling is very similar to creep_lookuptable_1. The input data arguments are exactly the same for creep_lookuptable_1 and creep_lookuptable_2. The difference between creep_lookuptable_1 and creep_lookuptable_2, is that the interpolation between different rail sections in creep_lookuptable_2 are made on the forces. Therefore creep_lookuptable_2 can handle a varying rail profile with fewer rail sections than creep_lookuptable_1 requires.

Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `creep_polach_2`


Defines a rolling contact between two masses.
The normal contact force is solved in a linear spring named knwr_ (see argument list below). The tangential contact forces are calculated with subroutine ADH written by Prof. Dr. Ing. habil. Oldrich Polach.
The theory is presented in the following paper Creep forces in simulations of traction vehicles running on adhesion limit.

Before this coupling can be created the variables describing the track irregularities tral111r.y, tral111r.z, tral111r.vy and tral111r.vz must be defined. These variables can be created with function func tral_interp_spline.


coupl creep_polach_2  c_name
            `body1' +-`a1 +-`b1 +-`h1
            `body2' +-`a2 +-`b2 +-`h2
             esys dire
             tral111r.y         # Lateral position track irregularity
             tral111r.z         # Vertical position track irregularity
             tral111r.vy        # Lateral velocity track irregularity
             tral111r.vz        # Vertical velocity track irregularity
             mulfact_nux        # Longitudinal creep relaxation due to contaminated surfaces
             mulfact_nuy        # Lateral      creep relaxation due to contaminated surfaces
             mulfact_spin       # Spin         creep relaxation due to contaminated surfaces
             zfn                # Wheel lift geometric function
             drfn               # Wheel radius geometric function
             gamfn              # Contact angle geometric function
             rofn               # Lateral curvature geometric function
             poswfn             # Lateral position of contact patch on wheel
             posrfn             # Lateral position of contact patch on rail
             knwr.F0_           # Wheel/rail prestess force in normal direction
             knwr_              # Wheel/rail stiffness in normal direction of contact surface
             cnwr_              # Wheel/rail damping   in normal direction of contact surface
             Ec                 # Combined modulus of elasticity for body1 and body2
             nuc                # Combined Poisson's ratio for body1 and body2
             kA                 # Reduction factor related to the area of adhesion
             kS                 # Reduction factor related to the area of slip
             mu                 # Friction coefficient in contact patch
             ro                 # Wheel rolling radius, will vary for OOR-wheels
             rro                # Longitudinal curvature of rail
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
dire = Working direction for the coupling end connected to body1. The only valid direction for coupling creep_polach_2 is 'm'.
tral111r.y = Lateral irregularity to be applied between body1 and body2
tral111r.z = Vertical irregularity to be applied between body1 and body2
tral111r.vy = Speed of the lateral irregularity between body1 and body2
tral111r.vz = Speed of the vertical irregularity between body1 and body2
mulfact_nux = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nux only affects longitudinal creep.
mulfact_nuy = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nuy only affects lateral creep.
mulfact_spin= Creep reduction factor due to contamination and asperities in the contact surface. mulfact_spin only affects spin creep.
zfn drfn gamfn rofn poswfn posrfn= Wheel/rail geometrical functions generated in the preprocessor kpf.
knwr.F0_ = Prestress force normal to the contact patch.
knwr_ = Stiffness normal to the contact surface. Knwr_ must be defined as a memory field where the stiffness is a function of the contact angle. Variable knwr_ can be created in function func intpl_r.
cnwr_ = Damping normal to the contact surface. Cnwr_ must be defined as a memory field where the stiffness is a function of the contact angle. Variable cnwr_ can be created in function func intpl_r.
Ec = Combined modulus of elasticity for body1 and body2
nuc = Combined Poisson's ratio for body1 and body2
kA, kS = For explanations of these factors, please read the following paper: Creep forces in simulations of traction vehicles running on adhesion limit
mu = Friction coefficient in contact patch.
ro = Wheel rolling radius.
rro = Longitudinal curvature of rail

Variables generated in the main memory:

c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.
c_name.a = Size of contact surface semi-axis in longitudinal direction.
c_name.b = Size of contact surface semi-axis in lateral direction.
c_name.a_b= The a/b-ratio of the contact ellipse. The semi-axle a is oriented in the longitudinal direction, and the semi-axle b is oriented in the lateral direction. If a/b = 1, the contact patch is circular.
c_name.c = The geometrical average radii of the contact ellipse, c is calculated according to:
c= √ a · b 
where:
a = The length of the contact ellipse longitudinal semi-axle.
b = The length of the contact ellipse lateral semi-axle.
c_name.nux = Longitudinal creepage in plane with the contact surface. Positive value gives positive force on the track at the contact patch surface level.
c_name.Fn = Contact force perpendicular to the contact surface.
c_name.Fnx = Longitudinal creep force in plane with the contact surface. Positive value gives positive force on the track at the contact patch surface level.
c_name.Fny = Lateral creep force in plane with the contact surface. Positive value gives positive force on the track at the contact patch surface level.
c_name.Mspin= Spin moment in contact patch.
c_name.fwk = Energy dissipation in contact patch.

Generated variables containing forces and moment, acting on body1 and body2:

c_name.F1x = Longitudinal force acting on body1.
c_name.F1y = Lateral force acting on body1.
c_name.F1z = Vertical force acting on body1.
c_name.M1f = Roll moment acting on body1.
c_name.M1k = Pitch moment acting on body1.
c_name.M1p = Yaw moment acting on body1.
c_name.F2x = Longitudinal force acting on body2.
c_name.F2y = Lateral force acting on body2.
c_name.F2z = Vertical force acting on body2.
c_name.M2f = Roll moment acting on body2.
c_name.M2k = Pitch moment acting on body2.
c_name.M2p = Yaw moment acting on body2.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `creep_tanel_springs_1`


Defines a rolling contact between two masses.
The main purpose of this coupling is to model the normal- and tangential- forces occuring in the contact patch between wheel and rail, but the coupling is very general and can be used for connecting all types of masses. The creep_tanel_springs_1-coupling is a very advanced coupling. No precalculated wheel/rail geometry functions are needed. Creep_tanel_springs uses the wheel and rail profiles directly. On top of the rail a mesh of brushes are located, all brushes are normal to the rail surface and all have flexibilities in compression- and tangential- directions. The compression flexibility solves the vertical problem, the wheel profile is pressed towards the rail profile until the enough vertical force is generated. The shape of the contact surface is determined by the shape and the positions of the wheel- and the rail- profiles. The contact pressure distribution calculated in the vertical problem, are later used for calculating the tangential creep forces.

calc_coupl_creep_tanel_springs_1.png

Before this coupling can be created the variables describing the track irregularities tral111r.y, tral111r.z, tral111r.vy and tral111r.vz must be defined. These variables can for example be created in function func tral_interp_spline.


 coupl creep_tanel_springs_1  c_name
              `body1' +-`a1 +-`b1 +-`h1
              `body2' +-`a2 +-`b2 +-`h2
               esys dire           # Euler system and direction of action
            +-`tral111r.y          # Lateral position track irregularity
            +-`tral111r.z          # Vertical position track irregularity
            +-`tral111r.vy         # Lateral velocity track irregularity
            +-`tral111r.vz         # Vertical velocity track irregularity
            +-`ro                  # Wheel rolling radius, will vary for OOR-wheels
               iorient             # Orientation of profiles +1=left, -1=right
            +-`mu                  # Friction coefficient in contact patch
            +-`mulfact_nux         # Longitudinal creep relaxation due to contaminated surfaces
            +-`mulfact_nuy         # Lateral      creep relaxation due to contaminated surfaces
            +-`mulfact_spin        # Spin         creep relaxation due to contaminated surfaces
            +-`kz_winkler          # Normal stiffness as in the Winkler bed
            +-`kz_tanel_1          # Vert. interconnection coupling in x- and y- direction
            +-`kx_fastsim          # Long. stiffn. equals parameter 1/L1 in Fastsim
            +-`kx_tanel_1          # Long. interconnection coupling in x-direction
            +-`kx_tanel_2          # Long. interconnection coupling in y-direction
            +-`ky_fastsim          # Lat. stiffn. equals parameter 1/L2 in Fastsim
            +-`ky_tanel_1          # Lat. interconnection coupling in y-direction
            +-`ky_tanel_2          # Lat. interconnection coupling in x-direction
            +-`cz_winkler          # Wheel/rail damping normal to the contact surface
               wheel_prof          # Wheel profile defined via a memory field, e.g. func intpl_r
               nl_brush            # Number of brushes in longitudinal direction on rail head
               xl_brush            # Distance between brushes in longitudinal direction
               rail_prof           # Rail profile defined via a memory field, e.g. func intpl_r
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
dire = Working direction for the coupling end connected to body1. The only valid direction for coupling creep_tanel_springs_1 is 'm'.
tral111r.y = Lateral irregularity to be applied between body1 and body2
tral111r.z = Vertical irregularity to be applied between body1 and body2
tral111r.vy = Speed of the lateral irregularity between body1 and body2
tral111r.vz= Speed of the vertical irregularity between body1 and body2
ro = The longitudinal curve radius in the contact patch.
iorient = The orientation of the wheel and rail profile. Normally wheel- and rail- profiles are measured from track center line and out, which makes both profiles look as left handed profiles. The user can with this input data mirror the profiles on the right side of the track, without generate special right handed profiles.
mu = Friction coefficient in contact patch.
mulfact_nux = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nux only affects longitudinal creep.
mulfact_nuy = Creep reduction factor due to contamination and asperities in the contact surface. mulfact_nuy only affects lateral creep.
mulfact_spin= Creep reduction factor due to contamination and asperities in the contact surface. mulfact_spin only affects spin creep.
kz_winkler = The normal stiffness per brush.
kz_tanel_1 = Vert. interconnection coupling in x- and y- direction
kx_fastsim = Long. stiffn. equals parameter 1/L1 in Fastsim
kx_tanel_1 = Long. interconnection coupling in x-direction
kx_tanel_2 = Long. interconnection coupling in y-direction
ky_fastsim = Lat. stiffn. equals parameter 1/L2 in Fastsim
ky_tanel_1 = Lat. interconnection coupling in y-direction
ky_tanel_2 = Lat. interconnection coupling in x-direction
cz_winkler = Wheel/rail damping normal to the contact surface
wheel_prof = Wheel profile defined via a memory field, e.g. func intpl_r
nl_brush = Number of brushes in longitudinal direction on rail head
xl_brush = Distance between brushes in longitudinal direction
rail_prof = Rail profile defined via a memory field, e.g. func intpl_r

Variables generated in the main memory:

Input variables:

c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.
c_name.slip_area = Relative size of the slip zone in the contact patch.
c_name.Fnx = Longitudinal creep force, in plane with the contact surface. A positive value gives a positive force on body1.
c_name.Fny = Lateral creep force, in plane with the contact surface. A positive value gives a positive force on body1.

Generated variables containing forces and moment, acting on body1 and body2:

c_name.F1x = Longitudinal force acting on body1.
c_name.F1y = Lateral force acting on body1.
c_name.F1z = Vertical force acting on body1.
c_name.M1f = Roll moment acting on body1.
c_name.M1k = Pitch moment acting on body1.
c_name.M1p = Yaw moment acting on body1.
c_name.F2x = Longitudinal force acting on body2.
c_name.F2y = Lateral force acting on body2.
c_name.F2z = Vertical force acting on body2.
c_name.M2f = Roll moment acting on body2.
c_name.M2k = Pitch moment acting on body2.
c_name.M2p = Yaw moment acting on body2.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `coupler_1`


Creates a coupling between two bodies. The force - displacement relationship is described with two non-linear curves, a loading curve and an unloading curve. The main usage for this coupling is to model coupler forces between car-bodies.

 coupl coupler_1  c_name
              `body1' +-`a1 +-`b1 +-`h1
              `body2' +-`a2 +-`b2 +-`h2
               esys dire
               speed_load       force_load
               speed_unload     force_unload
               Mech_Stop
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`, `c` and `cu`.
Working direction for the damper in esys.
In addition to the Cartesian coordinates, the user can choose between `c` and `cu`.
Direction `c` refers to the direction specified by the coupling's attachment points, i.e the force runs in the direction of the element. The transformation matrix between esys and the orientation of the coupling, is only calculated during the input reading phase. The same orientation of the coupling will be kept during the entire simulation.
Direction `cu` is similar to `c`, but with `cu` the orientation of the coupling is updated in every timestep.
speed_load = Speed over the buffer which defines that the buffer is subjected to loading.
force_load = Memory Field describing force-displacement under loading conditions.
speed_unload= Speed over the buffer which defines that the buffer is subjected to unloading.
force_unload= Memory Field describing force-displacement under unloading conditions.
Mech_Stop = Compression displacement when the longitudinal mechanical stop is getting engaged.

When the speed over the coupling is less or equal to speed_unload, the force produced by "coupl coupler_1" follows the curve defined by force_unload. When the speed over the coupling is greater or equal to speed_load, the force produced by "coupl coupler_1" follows the curve defined by force_load. If the speed over the coupling is between speed_unload and speed_load, the force produced by "coupl coupler_1" is calculated according to the cubic Hermite spline functions:

\( forc = force\_load\cdot(-2\cdot t3intp^3 + 3\cdot t3intp^2) + force\_unload*(2\cdot t3intp^3-3\cdot t3intp^2 + 1) \)

Where:

\( t3intp = (c\_name.v - speed\_unload) / (speed\_load - speed\_unload) \)

The sign convention of the coupling deflection is defined as:
c_name.d= body_2.x - body_1.x
This means that if body_2 moves in positive direction more than body_1 does, the deformation is positive. A positive deformation leads to a positive force, which is applied with a positive sign on body_1 and a negative sign on body_2.
For a buffer, positive deformation will stand for compression.

In between the value-pairs in force_load and force_unload, linear interpolation is taken place.

When the mechanical stop is engaged the force always follows force_load, regardless of the speed of the coupler.
When deflection exceeds Mech_Stop no extra spring force is added. The property of the mechanical stop must be defined in memory field force_load.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:
Deformation of the coupling:

c_name.dx = In the x-direction of esys.
c_name.dy = In the y-direction of esys.
c_name.dz = In the z-direction of esys.
c_name.df = In the f-direction of esys.
c_name.dk = In the k-direction of esys.
c_name.dp = In the p-direction of esys.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

If the working direction is c or cu, also the following variables are available:

c_name.d = Deformation in the direction of the coupling.
c_name.v = Deformation speed over the coupling.
c_name.F = The generated force in the direction of the coupling.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

Usage:

Modeling coupler forces between car-bodies.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `coupler_2`


Creates a coupling between two bodies. The force - displacement relationship is described with two non-linear curves, a loading curve and an unloading curve. A friction block with a series stiffness controls if the displacement - force relationship follows the loading or unloading curve. The main usage for this coupling is to model coupler forces between car-bodies.

 coupl coupler_2  c_name
              `body1' +-`a1 +-`b1 +-`h1
              `body2' +-`a2 +-`b2 +-`h2
               esys dire
               series_stiffness
               force_load
               force_unload
               pdamp
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`, `c` and `cu`.
Working direction for the damper in esys.
In addition to the Cartesian coordinates, the user can choose between `c` and `cu`.
Direction `c` refers to the direction specified by the coupling's attachment points, i.e the force runs in the direction of the element. The transformation matrix between esys and the orientation of the coupling, is only calculated during the input reading phase. The same orientation of the coupling will be kept during the entire simulation.
Direction `cu` is similar to `c`, but with `cu` the orientation of the coupling is updated in every timestep.
series_stiffness = Elastic stiffness for small amplitudes. The coupler force is within force_unload and force_load.
force_load = Memory Field describing force-displacement under loading conditions.
force_unload = Memory Field describing force-displacement under unloading conditions.
pdamp = Parallel viscous damper.

Force in series stiffness is calculated according to:

F_kf= series_stiffness*(c_name.d-pos_kf)

Where:

c_name.d = Is the displacement over the coupling
pos_kf = Position of internal massless point
if (F_kf > force_load) => The internal massless point will move so the force c_name.F will be equal to force_load.
if (F_kf < force_unload)=> The internal massless point will move so the force c_name.F will be equal to force_unload.
if (force_unload <= F_kf <= force_load) => Generated force c_name.F will be set equal to F_kf.

In between the value-pairs in force_load and force_unload, linear interpolation is taken place.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:
Deformation of the coupling:

c_name.dx = In the x-direction of esys.
c_name.dy = In the y-direction of esys.
c_name.dz = In the z-direction of esys.
c_name.df = In the f-direction of esys.
c_name.dk = In the k-direction of esys.
c_name.dp = In the p-direction of esys.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

If the working direction is c or cu, also the following variables are available:

c_name.d = Deformation in the direction of the coupling.
c_name.v = Deformation speed over the coupling.
c_name.i = Position of internal massless point.
c_name.F = The generated force in the direction of the coupling.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

Usage:

Modeling coupler forces between car-bodies.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `derailm_2`


Defines a contact element between two bodies.
The derailm_2-element can be used in simulations of derailment situations. The following simple example shows a model of a disk brake and a track with sleepers and rails.

□

Number of nodes in the contact lines are undefined, the program reads coordinates until the command "End" is given. The two contact surfaces consists of vertical and horizontal lines only, sloping lines are not possible to define. Only one side of a contact line can produce contact force. In input data the user must define which side of the contact line that can produce the contact force, by giving a '+' or '-' sign before the next coordinate. Also in longitudinal direction a force will occur. The longitudinal force will be set equal to the contact force times the coefficient of friction mu_x. The longitudinal force acting on body1, will be in opposite direction relative to the longitudinal speed of body1.


 coupl derailm_2 `c_name'
                    `body1' +-`a1 +-`b1 +-`h1
                    `body2' +-`a2 +-`b2 +-`h2  esys
                  +-`stiffy  +-`stiffz
                  +-`dampny  +-`dampnz
                  +-`defmaxy +-`defmaxz
                  +-`mu_x
                    `Start_Dir_Surf1'   +-`c1, 
                     (+|-),             +-`d1,
                     (+|-),             +-`c2,
                     (+|-),             +-`d3,
                     (+|-),             +-`c4,
                      , , , ,           , , , ,
                    `End1',             +-`cn
                    `Start_Dir_Surf2'   +-`C1, 
                     (+|-),             +-`D1,
                     (+|-),             +-`C2,
                     (+|-),             +-`D3,
                     (+|-),             +-`C4,
                     , , , ,            , , , ,
                    `End2',             +-`Cn
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
stiffy = Stiffness when two vertical contact lines meets.
stiffz = Stiffness when two horizontal contact lines meets.
dampny = Viscous damping when two vertical contact lines meets. Damping force is only calculated when the two surfaces are moving towards each other. Damping force are not calculated in tension.
dampnz = Damping when two horizontal contact lines meets. Damping force is only calculated when the two surfaces are moving towards each other. Damping force are not calculated in tension.
defmaxy = Max compression in lateral direction for the contact surfaces. If the compression is bigger than defmaxy, the surfaces are considered to be on the other side of each other. A warning message is printed on standard output if two surfaces are near to be pressed through each other.
defmaxz = Max compression in vertical direction, similar to defmaxy.
mu_x = Longitudinal coefficient of friction when two surfaces meets.
Start_Dir_Surf1, z0 = Defines the orientation of the first contact line on body1, and its start coordinate. Currently the only valid value is "Vertical".
(+|-), y1 = The sign "+" or "-" indicates on which side of the vertical contact line that gives a contact force. Coordinate "y1" gives the lateral position of the vertical contact line.
(+|-), z2 = At coordinate "z2", the contact line changes and becomes horizontal. The sign "+" or "-" indicates on which side of the horizontal line that gives contact force (N.B. positive Z-direction is downwards). Coordinate "z2" gives the hight of the horizontal contact line.
(+|-), y3 = At coordinate "y3", the contact line changes and becomes vertical again. The sign "+" or "-" indicates on which side of the vertical line that gives a contact force. Coordinate "y3" gives the lateral position of the vertical contact line. N.B. "y3" must be greater than "y1".
End1, z4 = The last coordinate is marked with the command "End1". The vertical contact line ends at coordinate "z4". The shape of the contact line on body1 must consist of exactly 5 coordinates.
Start_Dir_Surf2, Y0 = Defines the orientation of the first contact line on body2, and its start coordinate. Currently the only valid value is "Horizontal".
(+|-) Z#
(+|-) Y#
= The coordinates for contact line #2 are defined in the same way as for contact line #1. But for this line there are no limitation regarding number of coordinates.
(+|-) Z(n-1) = The second last coordinate for contact line #2.
End2, Yn = The last coordinate is marked with the command "End2".

Variables generated in the main memory:

Input variables:

c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.
c_name.ky = Lateral stiffness stiffy.
c_name.kz = Vertical stiffness stiffz.
c_name.cy = Lateral damping dampny.
c_name.cz = Vertical damping dampnz.
c_name.defmaxy = Max compression in lateral direction.
c_name.defmaxy = Max compression in vertical direction.
c_name.mux = Longitudinal friction.

Output variables:
Deformation of the coupling:

c_name.dx = In the x-direction of esys.
c_name.dy = In the y-direction of esys.
c_name.dz = In the z-direction of esys.
c_name.df = In the f-direction of esys.
c_name.dk = In the k-direction of esys.
c_name.dp = In the p-direction of esys.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body1 in the x-direction of body1's lsys.
c_name.F1y = Force acting on body1 in the y-direction of body1's lsys.
c_name.F1z = Force acting on body1 in the z-direction of body1's lsys.
c_name.M1f = Moment acting on body1 in the f-direction of body1's lsys.
c_name.M1k = Moment acting on body1 in the k-direction of body1's lsys.
c_name.M1p = Moment acting on body1 in the p-direction of body1's lsys.
c_name.F2x = Force acting on body2 in the x-direction of body2's lsys.
c_name.F2y = Force acting on body2 in the y-direction of body2's lsys.
c_name.F2z = Force acting on body2 in the z-direction of body2's lsys.
c_name.M2f = Moment acting on body2 in the f-direction of body2's lsys.
c_name.M2k = Moment acting on body2 in the k-direction of body2's lsys.
c_name.M2p = Moment acting on body2 in the p-direction of body2's lsys.

Other variables generated by the coupling:

c_name.Hsurf = Active surface horizontal force body1.
c_name.Vsurf = Active surface vertical force body2.
c_name.dmaxy = Deformation of the surface which gives the largest horizontal force.
c_name.dmaxz = Deformation of the surface which gives the largest vertical force.

Usage:

Coupling derailm_2 has mainly been designed for simulations in a derailment situation.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `k`, `k_preZ` □

Defines a stiffness coupling between two masses.
The stiffness property is read from a pre-defined property.

A variant of coupl k is named coupl k_preZ. In coupl k_preZ program CALC automatically calculates the nominal vertical prestress force in the coupling, in order to keep the connecting masses at zero vertical level.

Springs which are connected in direction `c` or `cu` may not have the length 0(zero), as the value zero does not have any direction.


 coupl k  `c_name' `body1' +-`a1 +-`b1 +-`h1
                   `body2' +-`a2 +-`b2 +-`h2
                    p_+-`property `esys' `dire`
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
property = Pre-defined coupling property.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`,`cx`, y`,`cy`,`z`,`cz`, `f`,`k`,`p`, `c`,`cu`, `m`
The coupling's direction of action in esys. In addition to the Cartesian coordinates, are the directions `c`, `cu`, `cx`, `cz`, and `m`.
Direction `c` refers to the direction specified by the coupling's attachment points, i.e the force runs in the direction of the element. The transformation matrix is calculated in the input reading phase of the program. The same transformation matrix is then used during the entire calculation. Direction `cu` has a similar function as `c`, the difference being that the transformation matrix is updated continuously as the bodies move.
The directions of activity `cx`, `cy`, or `cz` refer to the same directions as `x`, `y`, or `z` but the coupling's nominal length is eliminated on calculation of the coupling's deformation and force.
The direction `m` refers to the matrix direction, all 6 coordinate directions of the attachment points are calculated. Direction `m` requires p_lin36 or p_lin144 as coupling properties.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:
Deformation of the coupling:

c_name.dx = In the x-direction of esys.
c_name.dy = In the y-direction of esys.
c_name.dz = In the z-direction of esys.
c_name.df = In the f-direction of esys.
c_name.dk = In the k-direction of esys.
c_name.dp = In the p-direction of esys.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

If the working direction is c or cu, also the following variables are available:

c_name.d = Deformation in the direction of the coupling.
c_name.F = The generated force in the direction of the coupling.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

Usage:

Modeling a bushing.
Define a coupling without length, i.e. give the same position for both ends of the coupling. Define the property via coupl p_lin36 or coupl p_lin144. Set the working direction of the coupling equal to m.
Modeling of the stiffness in a traction rod.
Define a coupling with length. Define a one-dimensional property with coupl p_lin, coupl p_nlin, coupl p_nlin_s, coupl p_nlin_t or coupl p_nlin_st. Set the working direction of the coupling equal to c or cu.
Modeling of chevron elements.
When measuring the stiffness of two chevron elements coupled in parallel, three effective stiffnesses kx, ky and kz can be measured. Enter the stiffnesses in a p_lin36 property. Set the working direction of the coupling equal to m.
Modeling of stops.
Define a coupling without length, i.e. give the same position for both ends of the coupling. Define a non-linear property with coupl p_nlin, coupl p_nlin_s, coupl p_nlin_t or coupl p_nlin_st. Set zero stiffness for zero deflection. Set the working direction of the coupling equal to x, y or z.
Anti-roll bar.
Define a coupling without length, i.e. give the same position for both ends of the coupling. Define a one-dimensional property with coupl p_lin, coupl p_nlin, coupl p_nlin_s, coupl p_nlin_t or coupl p_nlin_st. Set the working direction of the coupling equal to f.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `k_l`, `k_l_preZ` □

Defines a stiffness coupling between two masses.
The stiffness property is taken read a pre-defined property.

A variant of coupl k_l is named coupl k_l_preZ. In coupl k_l_preZ program CALC automatically calculates the nominal vertical prestress force in the coupling, in order to keep the connecting masses at zero vertical level.

The stiffness can be given a small rotation angle relative, to the coordinate axis in esys. The rotation between esys and the coupling is linear (cos(fi)=1 and sin(fi)=fi).

 coupl k_l  `c_name' `body1' +-`a1 +-`b1 +-`h1
                     `body2' +-`a2 +-`b2 +-`h2
                      p_+-`property `esys' `dire`
                      +-`fi +-`chi +-`psi
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
property = Pre-defined coupling property.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`, `m`.
Working direction for the damper in esys.
In addition to the Cartesian coordinates, the user also can choose direction `m`. Direction `m` means matrix direction, displacements in all 6 coordinate directions in both attachment points are calculated. Direction `m` requires the coupling properties p_lin36 or p_lin144.
fi,chi,psi= The rotation angles from esys to the damper. The angle fi sets the rotation round the x-axis, angle chi sets the rotation round the y-axis and finally angle psi sets the rotation round the z-axis.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:
Deformation of the coupling:

c_name.dx = In the rotated x-direction.
c_name.dy = In the rotated y-direction.
c_name.dz = In the rotated z-direction.
c_name.df = In the rotated f-direction.
c_name.dk = In the rotated k-direction.
c_name.dp = In the rotated p-direction.

Force variables generated by the coupling:

c_name.Fx = In the rotated x-direction.
c_name.Fy = In the rotated y-direction.
c_name.Fz = In the rotated z-direction.
c_name.Mf = In the rotated f-direction.
c_name.Mk = In the rotated k-direction.
c_name.Mp = In the rotated p-direction.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

Usage:

Coupling k_l can be used in the same way as coupling coupl k. In addition to coupling k this coupling can be oriented a small angle of rotation relative to the coordinate axles of esys. This extra rotation angle is only valid if the working direction of the coupling is x, y, z, f, k, p or m
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `k_r`, `k_r_preZ` □

Defines a stiffness coupling between two masses.
The stiffness property is read from a pre-defined property.

A variant of coupl k_r is named coupl k_r_preZ. In coupl k_r_preZ program CALC automatically calculates the nominal vertical prestress force in the coupling, in order to keep the connecting masses at zero vertical level.

The spring can be rotated in a large angle relative to the coordinate axis of esys. The rotation between esys and the coupling are non-linear, by using sinus and cosinus functions in the transformation matrix. The rotation angles must be given in the right order, because these rotations do not commute.

 coupl k_r  `c_name' `body1' +-`a1 +-`b1 +-`h1
                     `body2' +-`a2 +-`b2 +-`h2
                      p_+-`property `esys' `dire`
                      +-`fi +-`chi +-`psi
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
property = Pre-defined coupling property.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`, `m`.
Working direction for the coupling in esys.
In addition to the Cartesian coordinates, the user also can choose direction `m`. Direction `m` means matrix direction, displacements in all 6 coordinate directions in both attachment points are calculated. Direction `m` requires the coupling properties p_lin36 or p_lin144.
fi,chi,psi= The procedure for angle rotation esys to the coupling is as follows:
  1. First the coupling's coordinate system rotates the angle psi (positive rotation around the z-axis), from the esys system to a primed system.
  2. Thereafter the coupling's coordinate system turns the angle chi (positive rotation around the y-axis) around the primed system as obtained under item 1) above.
  3. Finally, the coupling's coordinate system rotates the angle fi (positive rotation around the x-axis) around the system, which was obtained under item 2) above, to the final position.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:
Deformation of the coupling:

c_name.dx = In the rotated x-direction.
c_name.dy = In the rotated y-direction.
c_name.dz = In the rotated z-direction.
c_name.df = In the rotated f-direction.
c_name.dk = In the rotated k-direction.
c_name.dp = In the rotated p-direction.

Force variables generated by the coupling:

c_name.Fx = In the rotated x-direction.
c_name.Fy = In the rotated y-direction.
c_name.Fz = In the rotated z-direction.
c_name.Mf = In the rotated f-direction.
c_name.Mk = In the rotated k-direction.
c_name.Mp = In the rotated p-direction.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

Usage:

Coupling k_r can be used in the same way as coupling coupl k. In addition to coupling k this coupling can be oriented a large angle of rotation relative to the coordinate axles of esys. This extra rotation angle is only valid if the working direction of the coupling is x, y, z, f, k, p or m
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `k12_b1`


Defines a stiffness coupling between two masses of type m_rigid_12.
The stiffness property is read from a pre-defined property.

The coupling is always oriented according to mass body1.


 coupl k12_b1  `c_name' `body1' +-`a1 +-`b1 +-`h1   
                        `body2' +-`a2 +-`b2 +-`h2   
                        `dire` `property'
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
dire =`x`,`y`,`z`,`f`,`k`,`p`, `m`
The coupling's direction of action in esys.
The direction `m` refers to the matrix direction, all 6 coordinate directions of the attachment points are calculated. Direction `m` requires p_lin36 or p_lin144 as coupling properties.
property = Pre-defined coupling property.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:

Generated force variables on connected bodies:

c_name.F1x = Force acting on mass1 in direction x according to fsys
c_name.F1y = Force acting on mass1 in direction y according to fsys
c_name.F1z = Force acting on mass1 in direction z according to fsys
c_name.M1f = Torque acting on mass1 in direction f according to mass1
c_name.M1k = Torque acting on mass1 in direction k according to mass1
c_name.M1p = Torque acting on mass1 in direction p according to mass1
c_name.F2x = Force acting on mass2 in direction x according to fsys
c_name.F2y = Force acting on mass2 in direction y according to fsys
c_name.F2z = Force acting on mass2 in direction z according to fsys
c_name.M2f = Torque acting on mass2 in direction f according to mass2
c_name.M2k = Torque acting on mass2 in direction k according to mass2
c_name.M2p = Torque acting on mass2 in direction p according to mass2

Deformation of the coupling:

c_name.dx1 = Direction x according to mass1
c_name.dy1 = Direction y according to mass1
c_name.dz1 = Direction z according to mass1
c_name.df1 = Direction f according to mass1
c_name.dk1 = Direction k according to mass1
c_name.dp1 = Direction p according to mass1

Speed over the coupling:

c_name.vx1 = Direction x according to mass1
c_name.vy1 = Direction y according to mass1
c_name.vz1 = Direction z according to mass1
c_name.vf1 = Direction f according to mass1
c_name.vk1 = Direction k according to mass1
c_name.vp1 = Direction p according to mass1

Forces and torques in the coupling:

c_name.Fx1 = Direction x according to mass1
c_name.Fy1 = Direction y according to mass1
c_name.Fz1 = Direction z according to mass1
c_name.Mf1 = Direction f according to mass1
c_name.Mk1 = Direction k according to mass1
c_name.Mp1 = Direction p according to mass1

Deformation of the coupling:

c_name.dx2 = Direction x according to mass2
c_name.dy2 = Direction y according to mass2
c_name.dz2 = Direction z according to mass2
c_name.df2 = Direction f according to mass2
c_name.dk2 = Direction k according to mass2
c_name.dp2 = Direction p according to mass2

Speed over the coupling:

c_name.vx2 = Direction x according to mass2
c_name.vy2 = Direction y according to mass2
c_name.vz2 = Direction z according to mass2
c_name.vf2 = Direction f according to mass2
c_name.vk2 = Direction k according to mass2
c_name.vp2 = Direction p according to mass2

Forces and torques in the coupling:

c_name.Fx2 = Direction x according to mass2
c_name.Fy2 = Direction y according to mass2
c_name.Fz2 = Direction z according to mass2
c_name.Mf2 = Direction f according to mass2
c_name.Mk2 = Direction k according to mass2
c_name.Mp2 = Direction p according to mass2

Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `k12_f`


Defines a stiffness coupling between two masses of type m_rigid_12.
The stiffness property is read from a pre-defined property.

The coupling is defined relative to the fixed coordinate system fsys.

 coupl k12_f  `c_name' `body1' +-`a1 +-`b1 +-`h1   
                       `body2' +-`a2 +-`b2 +-`h2   
                       `dire` `property'
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
dire =`x`,`y`,`z`,`f`,`k`,`p`, `m`, 'c', 'cu'
The coupling's direction of action in fsys.
Direction `c` means that the coupling is orientated according to its attachment points in the beginning of the simulation time= 0.
Direction `cu` is the same as direction `c`, but its orientation is updated in every timestep.
property = Pre-defined coupling property.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:
Generated force variables on connected bodies:

c_name.F1x = Force acting on mass1 in direction x according to fsys
c_name.F1y = Force acting on mass1 in direction y according to fsys
c_name.F1z = Force acting on mass1 in direction z according to fsys
c_name.M1f = Torque acting on mass1 in direction f according to mass1
c_name.M1k = Torque acting on mass1 in direction k according to mass1
c_name.M1p = Torque acting on mass1 in direction p according to mass1
c_name.F2x = Force acting on mass2 in direction x according to fsys
c_name.F2y = Force acting on mass2 in direction y according to fsys
c_name.F2z = Force acting on mass2 in direction z according to fsys
c_name.M2f = Torque acting on mass2 in direction f according to mass2
c_name.M2k = Torque acting on mass2 in direction k according to mass2
c_name.M2p = Torque acting on mass2 in direction p according to mass2

Deformation of the coupling:

c_name.dx = Direction x according to fsys
c_name.dy = Direction y according to fsys
c_name.dz = Direction z according to fsys
c_name.df = Direction f according to fsys
c_name.dk = Direction k according to fsys
c_name.dp = Direction p according to fsys
c_name.dx1 = Direction x according to mass1
c_name.dy1 = Direction y according to mass1
c_name.dz1 = Direction z according to mass1
c_name.df1 = Direction f according to mass1
c_name.dk1 = Direction k according to mass1
c_name.dp1 = Direction p according to mass1
c_name.dx2 = Direction x according to mass2
c_name.dy2 = Direction y according to mass2
c_name.dz2 = Direction z according to mass2
c_name.df2 = Direction f according to mass2
c_name.dk2 = Direction k according to mass2
c_name.dp2 = Direction p according to mass2

Speed over the coupling:

c_name.vx = Direction x according to fsys
c_name.vy = Direction y according to fsys
c_name.vz = Direction z according to fsys
c_name.vf = Direction f according to fsys
c_name.vk = Direction k according to fsys
c_name.vp = Direction p according to fsys
c_name.vx1 = Direction x according to mass1
c_name.vy1 = Direction y according to mass1
c_name.vz1 = Direction z according to mass1
c_name.vf1 = Direction f according to mass1
c_name.vk1 = Direction k according to mass1
c_name.vp1 = Direction p according to mass1
c_name.vx2 = Direction x according to mass2
c_name.vy2 = Direction y according to mass2
c_name.vz2 = Direction z according to mass2
c_name.vf2 = Direction f according to mass2
c_name.vk2 = Direction k according to mass2
c_name.vp2 = Direction p according to mass2

Forces and moments in the coupling:

c_name.Fx = Direction x according to fsys
c_name.Fy = Direction y according to fsys
c_name.Fz = Direction z according to fsys
c_name.Mf = Direction f according to fsys
c_name.Mk = Direction k according to fsys
c_name.Mp = Direction p according to fsys
c_name.Fx1 = Direction x according to mass1
c_name.Fy1 = Direction y according to mass1
c_name.Fz1 = Direction z according to mass1
c_name.Mf1 = Direction f according to mass1
c_name.Mk1 = Direction k according to mass1
c_name.Mp1 = Direction p according to mass1
c_name.Fx2 = Direction x according to mass2
c_name.Fy2 = Direction y according to mass2
c_name.Fz2 = Direction z according to mass2
c_name.Mf2 = Direction f according to mass2
c_name.Mk2 = Direction k according to mass2
c_name.Mp2 = Direction p according to mass2

Orientation of the coupling:

c_name.11 = Rotation matrix from the orientation of the coupling to fsys
c_name.21 =   - " -
c_name.31 =   - " -
c_name.12 =   - " -
c_name.22 =   - " -
c_name.32 =   - " -
c_name.13 =   - " -
c_name.23 =   - " -
c_name.33 =   - " -

Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

pictures/coil-spring.jpg

c_type = `k3`, `k3_preZ`


Defines a stiffness coupling between two masses, the stiffness properties is read from pre-defined properties. Coupling k3 is mainly developed for the modeling of standing vertically prestressed coil-springs. As input data the user only gives plain longitudinal, lateral and vertical stiffnesses. When measuring the longitudinal and lateral stiffnesses of the coil-spring it is important that the spring is subjected to a pure shear deformation. For a detailed description of the k3-coupling, please see the separate theory report "Calculation of coil springs, subjected to vertical load." in Swedish "Behandling av fjädrar vars infästningar ej är momentfria och som uppbär tyngd genom sig."

A variant of coupl k3 is named coupl k3_preZ. In coupl k3_preZ program CALC automatically calculates the nominal vertical prestress force in the coupling, in order to keep the connecting masses at zero vertical level.

 coupl k3  `c_name' `body1' +-`a1 +-`b1 +-`h1
                    `body2' +-`a2 +-`b2 +-`h2
                     p_+-`property_x  p_+-`property_y  p_+-`property_z
                     +-`hstat +-`rf `esys' `dire`
c_name = Name of the coupling created.
body1 = Name of body no. 1 to which the coupling connects. Body 1 is the body which is supported by the coupling.
a1,b1,h1 = The coordinate for the upper surface of the coupling, which is the surface which connects to body1.
body2 = Name of body no. 2 to which the coupling connects. Body 2 supports the coupling and also the weight of body1.
a2,b2,h2 = The coordinate for the upper surface of the coupling, i.e. the same as a1,b,h1.
property_x = Stiffness in the X-direction when the spring is subjected to only X-deformation. The upper and lower surfaces of the spring must both be kept horizontal.
property_y = Stiffness in the Y-direction when the spring is subjected to only Y-deformation. The upper and lower surfaces of the spring must both be kept horizontal.
property_z = Stiffness in the Z-direction when the spring is subjected to only Z-deformation.
hstat= Height of the spring when all masses are in their equilibrium state.
rf = Relative distance from the upper surface of the spring to the point of inflexion. The absolute distance is calculated as rf*hstat.
esys = The coordinate system in which the coupling force will be calculated.
dire = `m` is the only direction valid for this coupling.

Variables generated in the main memory:

Input variables:

c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:
Deformation of the coupling:

c_name.dx = In the x-direction of esys.
c_name.dy = In the y-direction of esys.
c_name.dz = In the z-direction of esys.
c_name.df = In the f-direction of esys.
c_name.dk = In the k-direction of esys.
c_name.dp = In the p-direction of esys.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

Usage:

Coupling k3 is a convenient coupling element for modeling coil springs which is subjected to a vertical load. A coil spring has several off-diagonal stiffnesses connecting the lateral, longitudinal and bending behavior of the spring. The user can define a k-coupling with a p_lin144-property if the user has measured or by hand calculated all the off-diagonal components in the stiffness matrix. By using the k3-coupling the user only has to define three stiffnesses longitudinal shear stiffness, lateral shear stiffness and vertical compression. The k3-coupling will from these stiffnesses calculate all the off-diagonal components assuming that each section of the coil spring is perpendicular to the normal bending line of the spring.


Example of Input data:

In the drawing the height of the coil-spring is hstat
The free length of the spring is hfree:

□

Give input data according to the following:

pictures/calc_coupl_k3_diag.png
 coupl p_nlin  property_z      0.                   # Spring height according to drawing
               0.            `-kz*(hfree-hdraw)`    # gives a spring force of -kz*(hfree-hdraw) 
              `hfree-hdraw`    0.                   # The coil-spring cannot take tension force 
               1e3             0.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

pictures/coil-spring.jpg

c_type = `k3_l`, `k3_l_preZ`



Defines a stiffness coupling between two masses similar to k3. In addition to k3, coupl k3_l can rotate relative esys. When the coupling rotates, its stiffness matrix and prestess force vector follows the rotation.

A variant of coupl k3_l is named coupl k3_l_preZ. In coupl k3_l_preZ program CALC automatically calculates the nominal vertical prestress force in the coupling, in order to keep the connecting masses at zero vertical level.


 coupl k3_l  `c_name' `body1' +-`a1 +-`b1 +-`h1
                      `body2' +-`a2 +-`b2 +-`h2
                       p_+-`property_x  p_+-`property_y  p_+-`property_z
                       +-`h +-`rf `esys' `dire`
                       +-`fi +-`chi +-`psi
c_name = Name of the coupling created.
body1 = Name of body no. 1 to which the coupling connects. Body 1 is the body which is supported by the coupling.
a1,b1,h1 = The coordinate for the upper surface of the coupling, which is the surface which connects to body1.
body2 = Name of body no. 2 to which the coupling connects. Body 2 supports the coupling and also the weight of body1.
a2,b2,h2 = The coordinate for the upper surface of the coupling, i.e. the same as a1,b,h1.
property_x= Stiffness in the X-direction when the spring is subjected to only X-deformation. The upper and lower surfaces of the spring must both be kept horizontal.
property_y= Stiffness in the Y-direction when the spring is subjected to only Y-deformation. The upper and lower surfaces of the spring must both be kept horizontal.
property_z= Stiffness in the Z-direction when the spring is subjected to only Z-deformation.
h = Height between the two connection surfaces of the spring.
rf = Relative distance from the upper surface of the spring to the point of inflexion. The absolute distance is calculated as rf*h.
esys = The coordinate system in which the coupling force shall be calculated.
dire = `m` is the only valid direction for this type of coupling.
fi,chi,psi= The rotation angles from the coordinate system esys to the rotated position of the k3_l-coupling.

The output variables, which are generated in the output data field, have the same name as the variables generated by coupling k3. However the deformation of the coupling and the forces generated by the coupling are oriented in the direction of the spring.


Usage:

Coupling k3_l can be used in the same way as coupling coupl k3. In addition to coupling k3 this coupling can be oriented a small angle of rotation relative to the coordinate axles of esys. A secondary suspension consisting of coil springs standing on a bogie will tilt due to the motions of the bogie. In this case coupling k3_l is very useful, because it can be rotated a small angle relative to esys. The small rotation angles of the coil spring is equal to the rotation angles of the bogie.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

pictures/coil-spring.jpg

c_type = `k3_r`, `k3_r_preZ`



Defines a stiffness coupling between two masses similar to k3. In addition to k3, coupl k3_r can rotate large angles relative esys. When the coupling rotates, its stiffness matrix and prestess force vector follows the rotation.

A variant of coupl k3_r is named coupl k3_r_preZ. In coupl k3_r_preZ program CALC automatically calculates the nominal vertical prestress force in the coupling, in order to keep the connecting masses at zero vertical level.


 coupl k3_r  `c_name' `body1' +-`a1 +-`b1 +-`h1
                      `body2' +-`a2 +-`b2 +-`h2
                       p_+-`property_x  p_+-`property_y  p_+-`property_z
                       +-`h +-`rf `esys' `dire`
                       +-`fi +-`chi +-`psi
c_name = Name of the coupling created.
body1 = Name of body no. 1 to which the coupling connects. Body 1 is the body which is supported by the coupling.
a1,b1,h1 = The coordinate for the upper surface of the coupling, which is the surface which connects to body1.
body2 = Name of body no. 2 to which the coupling connects. Body 2 supports the coupling and also the weight of body1.
a2,b2,h2 = The coordinate for the upper surface of the coupling, i.e. the same as a1,b,h1.
property_x= Stiffness in the X-direction when the spring is subjected to only X-deformation. The upper and lower surfaces of the spring must both be kept horizontal.
property_y= Stiffness in the Y-direction when the spring is subjected to only Y-deformation. The upper and lower surfaces of the spring must both be kept horizontal.
property_z= Stiffness in the Z-direction when the spring is subjected to only Z-deformation.
h = Height between the two connection surfaces of the spring.
rf = Relative distance from the upper surface of the spring to the point of inflexion. The absolute distance is calculated as rf*h.
esys = The coordinate system in which the coupling force shall be calculated.
dire = `m` is the only valid direction for this type of coupling.
fi,chi,psi= The rotation angles from the coordinate system esys to the rotated position of the k3_l-coupling. As large angles do not commute the user must know how the rotation is made in the program. The procedure for angle rotations is as follows:
  1. First the coupling's coordinate system rotates the angle psi (positive rotation around the z-axis), from the esys system to a primed system.
  2. Thereafter the coupling's coordinate system turns the angle chi (positive rotation around the y-axis) around the primed system as acquired under item 1) above.
  3. Finally, the coupling's coordinate system rotates the angle fi (positive rotation around the x-axis) around the system, which was acquired under item 2) above, to the final position.

The output variables, which are generated in the output data field, have the same name as the variables generated by coupling k3. However the deformation of the coupling and the forces generated by the coupling are oriented in the direction of the spring.


Usage:

Coupling k3_r can be used in the same way as coupling coupl k3. In addition to coupling k3 this coupling can be oriented a large angle of rotation relative to the coordinate axles of esys. The coupling is especially useful if the coil spring is measured in a vertical position, but mounted in the vehicle in a large angle relative to esys of the vehicle. By using the k3-coupling the user has the possibility to orient the coil spring in any direction he/she wants to.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `km`, `km_preZ`


Defines a stiffness coupling between two masses.
Coupling `km` is similar to coupl 'k', but the user can control if the coupling shall generate moments on attached masses or not

A variant of coupl km is named coupl km_preZ. In coupl km_preZ program CALC automatically calculates the nominal vertical prestress force in the coupling, in order to keep the connecting masses at zero vertical level.

Springs which are connected in direction `c` or `cu` may not have the length 0(zero), as the value zero does not have any direction.


 coupl km `c_name' `body1' +-`a1 +-`b1 +-`h1
                   `body2' +-`a2 +-`b2 +-`h2
                   `property' `esys' `dire`  conn1  conn2
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
property = Pre-defined coupling property.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`,`cx`, y`,`cy`,`z`,`cz`, `f`,`k`,`p`, `c`,`cu`, `m`
The coupling's direction of action in esys. In addition to the Cartesian coordinates, are the directions `c`, `cu`, `cx`, `cz`, and `m`.
Direction `c` refers to the direction specified by the coupling's attachment points, i.e the force runs in the direction of the element. The transformation matrix is calculated in the input reading phase of the program. The same transformation matrix is then used during the entire calculation. Direction `cu` has a similar function as `c`, the difference being that the transformation matrix is updated continuously as the bodies move.
The directions of activity `cx`, `cy`, or `cz` refer to the same directions as `x`, `y`, or `z` but the coupling's nominal length is eliminated on calculation of the coupling's deformation and force.
The direction `m` refers to the matrix direction, all 6 coordinate directions of the attachment points are calculated. Direction `m` requires p_lin36 or p_lin144 as coupling properties.
conn1 = A three digit code for how moments from the coupling shall be transferred to mass #1. The figure 0 in the three digit code, stands for zero moment in the attachment point. The figure 1 in the three digit code, stands for full moment in the attachment point. The first digit controls the moment in roll direction. The Second digit controls the moment in pitch direction. The third digit controls the moment in yaw direction.
Example: The code '101' stands for moment in roll and yaw directions, but free in pitch.
conn2 = A three digit code for how moments from the coupling shall be transferred to mass #2. The conn2 code works in the same way as the conn1 code does.

Variables generated in the main memory are the same as for coupl k.


Usage:

The km coupling can be used as coupl k. With the possibility to remove moments in attachment points, this coupling can be used for attaching springs directly to a wheelset without modeling an axle box as a separate mass.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `km_l`


Defines a stiffness coupling between two masses. The coupling is very similar to the km coupling, but in the km_l coupling the user has the possibility to rotate the stiffness a small angle.

 coupl km_l  `c_name' `body1' +-`a1 +-`b1 +-`h1
                      `body2' +-`a2 +-`b2 +-`h2
                      `property' `esys' `dire`
                      `fi  `chi  `psi
                       conn1  conn2
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
property = Pre-defined stiffness property.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`, `m`
Direction in esys, which the coupling acts in.
fi,chi,psi = The rotation angles from the coordinate system esys to the rotated position of the km_l-coupling.
conn1 = A three digit code for how moments from the coupling shall be transferred to mass #1. The figure 0 in the three digit code, stands for zero moment in the attachment point. The figure 1 in the three digit code, stands for full moment in the attachment point. The first digit controls the moment in roll direction. The Second digit controls the moment in pitch direction. The third digit controls the moment in yaw direction.
Example: The code '101' stands for moment in roll and yaw directions, but free in pitch.
conn2 = A three digit code for how moments from the coupling shall be transferred to mass #2. The conn2 code works in the same way as the conn1 code does.

Variables generated in the main memory are the same as for coupling km.


Usage:

Coupling km_l can be used in the same way as coupl km. In addition to coupling km this coupling can be oriented a small angle of rotation relative to the coordinate axles of esys.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `km_r`


Defines a stiffness coupling between two masses. The coupling is very similar to the km coupling, but in the km_r coupling the user has the possibility to rotate the stiffness a large angle.

 coupl km_r  `c_name' `body1' +-`a1 +-`b1 +-`h1
                      `body2' +-`a2 +-`b2 +-`h2
                      `property' `esys' `dire`
                      `fi  `chi  `psi
                       conn1  conn2
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
property = Pre-defined stiffness property.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`, `m`
Direction in esys, which the coupling acts in.
fi,chi,psi = The rotation angles from the coordinate system esys to the rotated position of the km_r-coupling.
conn1 = A three digit code for how moments from the coupling shall be transferred to mass #1. The figure 0 in the three digit code, stands for zero moment in the attachment point. The figure 1 in the three digit code, stands for full moment in the attachment point. The first digit controls the moment in roll direction. The Second digit controls the moment in pitch direction. The third digit controls the moment in yaw direction.
Example: The code '101' stands for moment in roll and yaw directions, but free in pitch.
conn2 = A three digit code for how moments from the coupling shall be transferred to mass #2. The conn2 code works in the same way as the conn1 code does.

Variables generated in the main memory are the same as for coupling km.


Usage:

Coupling km_r can be used in the same way as coupl km. In addition to coupling km this coupling can be oriented a large angle of rotation relative to the coordinate axles of esys.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

□

f_type = `k_air3_exp`


Defines a three-dimensional coupling between two masses. The coupling is especially designed for creating models of airbags in railway vehicles.


Horizontally the coupling comprises three parallel coupled parts:

1) Elastic part: Non-linear spring defined in the properties prop_kex and prop_key
2) Friction part: Smooth Coulomb friction, parameters ffxmax and x2
3) Viscous part: Linear viscous damper cx, with series flexibility kvx

Principal behavior of the airbag in horizontal direction:
□

Vertically the coupling has similar properties, but the viscous damper can be modeled as a non-linear damper according to the following formula:

\( F= c_z \cdot sign( \dot z ) \cdot | \dot z | ^ \beta \)


In parallel with the non-linear viscous damper, a mass can be attached. The mass contains the effective mass of the air in the pipe between airbag and reservoir volume. Principal behavior of the airbag in vertical direction:

□

The theories of the k_air3_exp-coupling was developed by Mats Berg, Department of Vehicle Engineering, Royal Institute of Technology, Sweden. A detailed description of the coupling can be found in the report An airspring model for dynamic analysis of rail vehicles, TRITA-FKT Report 1999:32, ISSN 1103-470X, ISRN KTH/FKT/FR-99/32-SE. or A three-dimensional air-spring model with friction and orifice damping, Proc. 16th IAVSD Symposium on Dynamics of Vehicles on Road and Tracks, Vehicle System Dynamics, Vol. 33, pp. 528-539, ISSN 0042-3114, Swets & Zeitlinger 1999.

 coupl k_air3_exp `c_name' `mass_1' +-`a1 +-`b1 +-`h1
                           `mass_2' +-`a2 +-`b2 +-`h2
                           `esys' `dire`
                            prop_kex   +-`kexki_1
                            prop_key   +-`keyfi_1
                            prop_kez
                            +-`ffxmax  +-`x2    +-`ffzmax +-`z2
                            +-`kvx     +-`cx
                            +-`kvz     +-`czb   +-`beta   +-`m
c_name = Name of the coupling created.
mass_1 = Name of mass no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in mass_1, expressed in mass_1's local coordinate system lsys.
mass_2 = Name of mass no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in mass_2, expressed in mass_2's local coordinate system lsys. Apart from coupling k3 the coordinates a2,b2,h2 shall be the lower end of the airbag, and the distance between h1 and h2 is the height of the spring.
esys = The coordinate system in which the coupling displacements will be calculated.
dire =`m` is the only direction valid for this coupling.
prop_kex = Stiffness in the X-direction, when the airbag is subjected to only X-deformation. The upper and lower surfaces of the airbag must both be kept horizontal.
kexki_1 = Elastic stiffness which gives arise to a pitching moment of mass_1 due to a longitudinal displacement between mass_1 and mass_2. The stiffness kexki_1 can be found by measuring the pitching moment between mass_1 and airbag when the airbag is subjected to a pure longitudinal deformation.
If no measurements are available, the value of kexki_1 can be calculated according to the following formula:
kexki_1= (-c_name.F1z + prop_kex*(h2-h1))*rf
Where "rf" tells how large portion of the moment that will be applied on mass_1.
I.e. the remaining part of the moment will go to mass_2:
kexki_2= (-c_name.F1z + prop_kex*(h2-h1))*(1-rf)
The value of "rf" must be in the range [0-1].
Since positive z-axis is pointing downwards (in the same direction as the gravity), means that the sign of c_name.F1z in normally negative.
prop_key = Stiffness in the Y-direction when the spring is subjected to only Y-deformation. The upper and lower surfaces of the airbag must both be kept horizontal.
keyfi_1 = Elastic stiffness which gives arise to a rolling moment on mass_1 due to a lateral displacement between mass_1 and mass_2. The stiffness keyfi can be found by measuring the rolling moment between mass_1 and airbag when the airbag is subjected to a pure lateral deformation.
If no measurements are available, the value of keyfi_1 can be calculated according to the following formula:
keyfi_1= (c_name.F1z - prop_key*(h2-h1))*rf
Where "rf" tells how large portion of the moment that will be applied on mass_1.
I.e. the remaining part of the moment will go to mass_2:
keyfi_2= (c_name.F1z - prop_key*(h2-h1))*(1-rf)
The value of "rf" must be in the range [0-1].
Since positive z-axis is pointing downwards (in the same direction as the gravity), means that the value of c_name.F1z in normally negative.
prop_kez = Stiffness in the Z-direction when the spring is subjected to only Z-deformation. In property prop_kez the nominal vertical force is defined as a pre-stress force.
ffxmax = Maximum friction force in the horizontal plane. The friction force is smooth and ffxmax is the asymptotic friction force when the horizontal displacement is large.
x2 = The horizontal displacement defining where the friction force ffxmax/2. is obtained.
ffzmax = Maximum friction force in the vertical plane. The friction force is smooth and ffzmax is the asymptotic friction force when the vertical displacement is large.
z2 = The vertical displacement defining where the friction force ffzmax/2. is obtained.
kvx = Series flexibility in the longitudinal and lateral viscous dampers.
cx = Damping coefficient for the viscous dampers coupled between mass_1 and mass_2 in longitudinal and lateral direction
kvz = Series flexibility in the vertical viscous damper.
czb = Damping coefficient for the viscous damper coupled between mass_1 and mass_2 in vertical direction
beta = Exponent to the non-linear viscous damping in vertical direction, see formula above.
m = Effective mass coupled in parallel with the vertical viscous damper

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Number of mass_1.
c_name.a1 = Attachment coordinate in x-direction on mass_1.
c_name.b1 = Attachment coordinate in y-direction on mass_1.
c_name.h1 = Attachment coordinate in z-direction on mass_1.
c_name.m2 = Number of mass_2.
c_name.a2 = Attachment coordinate in x-direction on mass_2.
c_name.b2 = Attachment coordinate in y-direction on mass_2.
c_name.h2 = Attachment coordinate in z-direction on mass_2.

Output variables:
Deformation of the coupling:

c_name.dx = In the x-direction of esys.
c_name.dy = In the y-direction of esys.
c_name.dz = In the z-direction of esys.
c_name.df = In the f-direction of esys.
c_name.dk = In the k-direction of esys.
c_name.dp = In the p-direction of esys.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

Generated force variables on connected bodies:

c_name.F1x = Force acting on mass_1 in the x-direction of mass_1's lsys.
c_name.F1y = Force acting on mass_1 in the y-direction of mass_1's lsys.
c_name.F1z = Force acting on mass_1 in the z-direction of mass_1's lsys.
c_name.M1f = Moment acting on mass_1 in the f-direction of mass_1's lsys.
c_name.M1k = Moment acting on mass_1 in the k-direction of mass_1's lsys.
c_name.M1p = Moment acting on mass_1 in the p-direction of mass_1's lsys.
c_name.F2x = Force acting on mass_2 in the x-direction of mass_2's lsys.
c_name.F2y = Force acting on mass_2 in the y-direction of mass_2's lsys.
c_name.F2z = Force acting on mass_2 in the z-direction of mass_2's lsys.
c_name.M2f = Moment acting on mass_2 in the f-direction of mass_2's lsys.
c_name.M2k = Moment acting on mass_2 in the k-direction of mass_2's lsys.
c_name.M2p = Moment acting on mass_2 in the p-direction of mass_2's lsys.


Usage:

Generation of a detailed model of an airspring element.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

□

f_type = `k_air3_mawa`


A coupling for modeling airbags in railway vehicles, using equations for viscous flow in pipes.
The coupling is especially designed for creating models of airbags, equipped with a pipe to an auxiliary air reservoir.

This airbag only considers the vertical stiffness of the airbag. In order to take horizontal stiffness into effect, please couple this coupling in parallel with coupl k_air3_exp. In coupling coupl k_air3_exp, please set prop_kez, ffzmax and kvz all equal to 0 (zero).

The theories of the k_air3_mawa-coupling has been developed by Mattias Wallin. The model consists of three major parts: the airbag, the auxiliary volume and the pipe connecting the airbag to the auxiliary volume. The mass of the air in the pipe is modeled with a second order differential equation.
Ref.: "s. E. Haaland, "Simple and Explicit Formulas for the Friction Factor in Turbulent Pipe Flow" Fluids Eng.., March 1983, pp. 89-90.

When the air flows in the pipe the following losses are taking into account:
Apart from from the input data given in the arguments to the k_air3_mawa-coupling, the following data has been coded as fixed constants in the FORTRAN code:
p_atm = 101300 [Pa] Atmospheric air pressure
mu273 = 1.71e-5 [Ns/m2] Absolute viscosity for air at 273 [K]
m_corr = 1.058 [1] Kinematic mass correction factor,due to the velocity variation from the mean velocity over the cross section for turbulent flow.

The vertical force in k_air3_mawa is calculated by multiplying the current air pressure with the effective area of the airbag. Minus the force generated by the rubber bellow itself, which is in parallel with the air..

In series with the airbag an emergency spring is attached. The two springs are connected to each other via a massless node in the connection point.

 coupl k_air3_mawa `c_name' `c_name.m1' +-`c_name.a1 +-`c_name.b1 +-`c_name.h1
                            `c_name.m2' +-`c_name.a2 +-`c_name.b2 +-`c_name.h2
                            `esys' `dire`
                            +-`c_name.Stiffb   +-`c_name.F0
                            +-`c_name.Adia
                            +-`c_name.T0       +-`c_name.R        
                            +-`c_name.A1       +-`c_name.V01    
                            +-`c_name.Vres
                            +-`c_name.Lpipe    +-`c_name.dpipe   +-`c_name.epsp
                            +-`c_name.d_orif   +-`c_name.Kfacts
                            +-`c_name.kemer    +-`c_name.cemer          
c_name = Name of the coupling created.
c_name.m1 = Name of the first body that connects to the coupling.
c_name.a1
c_name.b1
c_name.h1
= The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys. In longitudinal, lateral and vertical direction.
c_name.m2 = Name of the second body that connects to the coupling.
c_name.a2
c_name.b2
c_name.h2
= The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys. Apart from coupling k3 the coordinates a2,b2,h2 shall be the lower end of the airbag, and the distance between h1 and h2 is the height of the spring.
esys = The coordinate system in which the coupling displacements will be calculated.
dire = `z` is the only direction valid for this coupling.
c_name.Stiffb = Vertical stiffness of the bellow membrane. The stiffness acts in parallel with the compressed air.
c_name.F0 = Nominal vertical force on the airbag [N]. In the simple case it is equal to the weight of the car-body times earth gravity divided by four.
c_name.Adia = Adiabatic index. If the process is considered to be isothermal, c_name.Adia shall be set equal to= 1. If the process is considered to be fully adiabatic, c_name.Adia shall be set equal to= 1.4.
c_name.T0 = Current working temperature of the airbag. The temperature has a great influence on the density of the air, which affects the total mass of the air. The temperature shall be given in the SI-unit [K].
c_name.R = Specific gas constant for dry air= 287.058 [ J/kg/K ]
c_name.A1 = Airbag effective area [m2]
c_name.V01 = Volume of airbag at nominal vertical load c_name.F0.
c_name.Vres = Volume of auxiliary air reservoir [m3]
c_name.Lpipe = Length of air pipe [m]
c_name.dpipe = Diameter of air pipe [m]
c_name.epsp = Surface roughness inside of the air pipe [m].
(For steel tubes the recommended value is 46e-6)
c_name.d_orif= Diameter of orifice [m].
If no orifice is used set c_name.d_orif equal to c_name.dpipe.
c_name.Kfacts= Sum of losses from inlet, outlet, elbows. See information below, how to calculate c_name.Kfacts.
c_name.kemer = The vertical stiffness in the emergency spring in series with the airbag
c_name.cemer = Viscous damping in the emergency spring


Calculation of input data parameter c_name.Kfacts:
Input data parameter c_name.Kfacts is calculated according to:
calc_Kloss_formula.gif

Where:
Kloss = The same as c_name.Kfacts
Kin = 0.5 = Inlet loss for sharp-edged inlet
Kout = 1.0 = Outlet loss for sharp-edged outlet
Kelbow = Loss from all elbows according to table below

Where each 90-degree elbow contributes to the sum according to:

rpipe/dpipe Kelbow
1 0.38
2 0.24
3 0.20
4 0.18
5 0.16
6 0.14
7 0.13
8 0.13
10 0.15
Where:
rpipe = The radius of the elbow
dpipe = The diameter of the pipe

Variables generated in the main memory:

Input variables:

c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:

c_name.l = Undeformed length of the coupling.
c_name.p0 =c_name.F0 / c_name.A1 + 101300 [N/m2]
Air pressure at nominal vertical load c_name.F0.
(101300= "The Standard Atmosphere" 1[atm])
c_name.ro0 = c_name.p0 / c_name.R / c_name.T0
Density of the air at temperature c_name.T0 and pressure c_name.p0.
c_name.rop = Instantaneous air density.
c_name.mu0 = 1.71d-5 * (c_name.T0/273.15)**0.7
Absolute viskosity of air at temperature c_name.T0.
c_name.nu0 = c_name.mu0 / c_name.ro0
Kinematic viskosity of air at temperature c_name.T0.
c_name.p = Instantaneous air pressure in bellow.
c_name.x1 = Deformation in bellow only.
c_name.xp = Position of the air in the pipe.
c_name.xpp = Speed of the air in the pipe.
c_name.xppp = Acceleration of the air in the pipe.
c_name.Reyn = Reynolds number which depends on the speed of the air flow in the pipe.
c_name.zemer = Deformation in emergency spring only.
c_name.vzemer= Speed in emergency spring only.
c_name.p_res = Air pressure in auxiliary air reservoir.

Total deformations in the coupling, over both bellow and emergency spring:

c_name.dx = In the x-direction of esys.
c_name.dy = In the y-direction of esys.
c_name.dz = In the z-direction of esys.
c_name.df = In the f-direction of esys.
c_name.dk = In the k-direction of esys.
c_name.dp = In the p-direction of esys.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.


Usage:

Generation of a detailed model of an airspring element with an auxiliary volume.
The model is especially useful in the design-stage where no measurements on the airbag are available. After measurements on the airbag has been done, the user can use the k_air3_exp-coupling.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

f_type = `k_air3_mawa2`


A coupling for modeling airbags in railway vehicles, using equations for viscous flow in pipes. The coupling is very similar to coupl k_air3_mawa but it has two auxiliary air reservoirs.

 coupl k_air3_mawa2 `c_name' `body1' +-`a1 +-`b1 +-`h1
                             `body2' +-`a2 +-`b2 +-`h2
                             `esys' `dire`
                             +-`c_name.Stiffb   +-`c_name.F0
                             +-`c_name.Adia
                             +-`c_name.T0       +-`c_name.R

                             +-`c_name.A1       +-`c_name.V01    

                             +-`c_name.Vres1             
                             +-`c_name.Lpipe1    +-`c_name.dpipe1  +-`c_name.epsp1
                             +-`c_name.d_orif1   +-`c_name.Kfacts1

                             +-`c_name.Vres2             
                             +-`c_name.Lpipe2    +-`c_name.dpipe2  +-`c_name.epsp2
                             +-`c_name.d_orif2   +-`c_name.Kfacts2

                             +-`c_name.kemer     +-`c_name.cemer          
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys. Apart from coupling k3 the coordinates a2,b2,h2 shall be the lower end of the airbag, and the distance between h1 and h2 is the height of the spring.
esys = The coordinate system in which the coupling displacements will be calculated.
dire = `z` is the only direction valid for this coupling.
c_name.Stiffb = The vertical stiffness of the bellow in parallel with the compressed air
c_name.F0 = Nominal vertical force on the airbag [N]. In the simple case it is equal to the weight of the car-body times earth gravity divided by four.
c_name.Adia = If the process is considered to be isothermal, c_name.Adia shall be set equal to= 1. If the process is considered to be fully adiabatic, c_name.Adia shall be set equal to= 1.4.
c_name.T0 = Current working temperature of the airbag. The temperature has a great influence on the density of the air, which affects the total mass of the air. The temperature shall be given in the SI-unit [K].
c_name.R = Specific gas constant for dry air= 287 [ J/kg/K ]
c_name.A1 = Airbag effective area [m2].
c_name.V01 = Volume of airbag [m3]
c_name.Vres1 = Volume of auxiliary air reservoir #1 [m3]
c_name.Lpipe1 = Length of air pipe #1 [m]
c_name.dpipe1 = diameter of air pipe #1 [m]
c_name.epsp1 = Surface roughness inside of the air pipe #1 [m].
(For steel tubes the recommended value is 46e-6)
c_name.d_orif1 = Diameter of orifice #1 [m].
If no orifice is used, set c_name.d_orif1 equal to c_name.dpipe1.
c_name.Kfacts1 = Sum of losses from inlet, outlet, elbows, etc in air pipe #1. How to calculate c_name.Kfacts1, see documenation under coupl k_air3_mawa
c_name.Vres2 = Volume of auxiliary air reservoir #2 [m3]
c_name.Lpipe2 = Length of air pipe #2 [m]
c_name.dpipe2 = diameter of air pipe #2 [m]
c_name.epsp2 = Surface roughness inside of the air pipe #2 [m].
(For steel tubes the recommended value is 46e-6)
c_name.d_orif2 = Diameter of orifice #2 [m].
If no orifice is used set c_name.d_orif2 equal to c_name.dpipe2.
c_name.Kfacts2 = Sum of losses from inlet, outlet, elbows, etc in air pipe #2. How to calculate c_name.Kfacts2, see documenation under coupl k_air3_mawa
c_name.kemer = The vertical stiffness in the emergency spring in series with the airbag
c_name.cemer = Viscous damping in the emergency spring
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

□

f_type = `k_air4`


Defines a three-dimensional coupling between two masses.

The coupling comprises stiffness in all three directions x, y & z. In longitudinal and lateral direction the stiffnesses are linear. In vertical direction the coupling looks as follows:

□
 coupl k_air4 `c_name'  `body1' +-`a1 +-`b1 +-`h1
                        `body2' +-`a2 +-`b2 +-`h2
                        `esys'       
                         +-`Fx0  +-`Fy0  +-`Fz0
                         +-`kx   +-`cx
                         +-`ky   +-`cy
                         +-`k1   +-`k2   +-`c2
                         +-`k3   +-`c3   +-`k4   +-`c4
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys. Apart from coupling k3 the coordinates a2,b2,h2 shall be the lower end of the airbag, and the distance between h1 and h2 is the height of the spring.
esys = The coordinate system in which the coupling displacements will be calculated.
Fx0 = Prestress force in longitudinal direction, acting on body1 with positive sign and on body2 with negative sign.
Fy0 = Prestress force in lateral direction, acting on body1 with positive sign and on body2 with negative sign.
Fz0 = Prestress force in vertical direction, acting on body1 with positive sign and on body2 with negative sign.
kh = Linear stiffness in horizontal direction.
ch = Linear damping in horizontal direction. In parallel with stiffness kh.
k1 = Linear stiffness in vertical direction, see figure above.
k2 = Linear stiffness in vertical direction, see figure above.
c2 = Linear damping in vertical direction, see figure above.
k3 = Linear stiffness in vertical direction, see figure above.
c3 = Linear damping in vertical direction, see figure above.
k4 = Linear stiffness in vertical direction, see figure above.
c4 = Linear damping in vertical direction, see figure above.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:
Deformation of the coupling:

c_name.dx = In the x-direction of esys.
c_name.dy = In the y-direction of esys.
c_name.dz = In the z-direction of esys.
c_name.df = In the f-direction of esys.
c_name.dk = In the k-direction of esys.
c_name.dp = In the p-direction of esys.

Deformation velocities over the coupling:

c_name.vx = In the x-direction of esys.
c_name.vy = In the y-direction of esys.
c_name.vz = In the z-direction of esys.
c_name.vf = In the f-direction of esys.
c_name.vk = In the k-direction of esys.
c_name.vp = In the p-direction of esys.

Forces generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.


Usage:

Modelling of airbags.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `k_coil3`


Modeling of a vertically standing coil springs. The spring creates all off-diagonal elements in the stiffness matrix by itself. The user only defines stiffnesses in pure shear, pure compression, pure bending and pure yaw rotation.

Vertical compression   Horizontal shearing
□   □

The spring is modeled as a 6x6 stiffness matrix with many off-diagonal elements ≠ 0. In addition, the stiffness values in the 6x6 matrix are not constant, they depend on the vertical and horizontal deformation of the spring.

 coupl k_coil3  `c_name' `body1' +-`a1 +-`b1 +-`h1
                         `body2' +-`a2 +-`b2 +-`h2
                          p_+-`property_x  p_+-`property_y  p_+-`property_z
                          p_+-`property_f  p_+-`property_k  p_+-`property_p
                          +-`hfree +-`hcomp +-`rf `esys' `dire`
c_name = Name of the coupling created.
body1 = Upper body to which the coupling connects.
a1,b1,h1 = The coordinate for the upper surface of the coupling, which is the surface which connects to body1.
body2 = Lower body to which the coupling connects.
a2,b2,h2 = The coordinate for the lower surface of the coupling.
property_x = Stiffness under pure shearing in longitudinal direction.
property_y = Stiffness under pure shearing in lateral direction.
property_z = Stiffness under pure compression.
property_f = Stiffness under pure bending in rot-X direction.
property_k = Stiffness under pure bending in rot-Y direction.
property_p = Stiffness in pure rot-Z direction.
hfree = Free length of the spring (the spring cannot create tension forces).
hcomp = Compressed length of the spring (mechanic stop). To inactivate the mechanic stop in vertical direction, set hcomp= -1e99
rf = Relative distance from the upper surface of the spring to the point of inflexion. The absolute distance is obtained by multiplying rf with the height of the spring.
esys = The coordinate system in which the coupling force will be calculated.
dire = `m` is the only direction valid for this coupling.

Variables generated in the main memory:

Input variables:

c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1. .
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

The attachment coordinates are expressed in the coordinate systems to where body 1 resp. body 2 belongs.

Output variables:
Deformation of the coupling:

c_name.dx = In x-direction.
c_name.dy = In y-direction.
c_name.dz = In z-direction.
c_name.df = In f-direction.
c_name.dk = In k-direction.
c_name.dp = In p-direction.

The deformations are expressed relative to the orientation of the spring. The matrix that rotates from esys to the orientation of the spring, is as follows:

\( ~Res= \begin{pmatrix} 1 & +\psi & -\chi \\ -\psi & 1 & +\varphi \\ +\chi & -\varphi & 1 \end{pmatrix} \)

Where the angles has been calculated according to:

\( \begin{matrix} φ= ~φ(body1)*rf + φ(body2)*(1-rf) \\ χ= ~χ(body1)*rf + χ(body2)*(1-rf) \\ ψ= ~ψ(body1)*rf + ψ(body2)*(1-rf) \end{matrix} \)

Where:

φ(body1), χ(body1), ψ(body1)= Orientation of body #1
φ(body2), χ(body2), ψ(body2)= Orientation of body #2
rf = Relative distance to inflexion point. See input data arguments above.

Forces generated by the coupling:

c_name.Fx = In x-direction.
c_name.Fy = In y-direction.
c_name.Fz = In z-direction.
c_name.Mf = In f-direction.
c_name.Mk = In k-direction.
c_name.Mp = In p-direction.

The forces are also expressed relative to the orientation of the spring. Please see under deformations above.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

Usage:

Coupling k_coil3 is a convenient coupling element for modeling coil springs which is subjected to a vertical load. A coil spring has several off-diagonal stiffnesses connecting the lateral, longitudinal and bending behavior of the spring. The user can define a k-coupling with a p_lin144-property if the user has measured or by hand calculated all the off-diagonal components in the stiffness matrix. By using the k_coil3-coupling the user only has to define six stiffnesses, see input data list above. The k_coil3-coupling will from six stiffnesses calculate all the off-diagonal components assuming that each section of the coil spring is perpendicular to the normal bending line of the spring.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `kc`

Defines a coupling between two masses, the coupling comprises a damper with series flexibility. The components in the coupling are connected to each other according to the following figure:

□

The properties of the spring and damper are read from pre-defined properties. Couplings acting in direction `c` or `cu` may not have the length 0(zero), because the value zero does not have any direction.

 coupl kc  `c_name' `mass1' +-`a1 +-`b1 +-`h1
                    `mass2' +-`a2 +-`b2 +-`h2
                     p_+-`prop_k  p_+-`prop_c  `esys' `dire`
c_name = Name of the coupling created.
mass1 = Name of mass no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in mass 1, expressed in mass 1's local coordinate system lsys.
mass2 = Name of mass no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in mass 2, expressed in mass 2's local coordinate system lsys.
prop_k = Pre-defined stiffness property.
prop_c = Pre-defined damping property.
N.B. prop_c must be of type p_lin, p_nlin or p_nlin_s, otherwise an error will occur and the program stops.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`, `c`, `cu` Direction in esys, which the coupling acts in. In addition to the Cartesian coordinates, there are the directions `c` and `cu`. Direction `c` refers to the direction specified by the coupling's attachment points, i.e the force runs in the direction of the element. The transformation matrix is calculated when the coupling is read in the input reading phase of the program. The same transformation matrix is then used during the entire calculation. Direction `cu` has a similar function as `c`, the difference being that the transformation matrix is updated continuously as the bodies move.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Number of mass #1.
c_name.a1 = Attachment coordinate in x-direction on mass #1.
c_name.b1 = Attachment coordinate in y-direction on mass #1.
c_name.h1 = Attachment coordinate in z-direction on mass #1.
c_name.m2 = Number of mass 2.
c_name.a2 = Attachment coordinate in x-direction on mass #2.
c_name.b2 = Attachment coordinate in y-direction on mass #2.
c_name.h2 = Attachment coordinate in z-direction on mass #2.

Output variables:

c_name.i = The position of the internal degree of freedom in the coupling.
c_name.vi = The speed of the internal degree of freedom in the coupling.
c_name.d = Total deformation in spring + damper, in the direction of the coupling.
c_name.F = The generated force in the coupling.
c_name.dx = Velocity over the coupling in the x-direction.
c_name.dy = Velocity over the coupling in the y-direction.
c_name.dz = Velocity over the coupling in the z-direction.
c_name.df = Velocity over the coupling in the f-direction.
c_name.dk = Velocity over the coupling in the k-direction.
c_name.dp = Velocity over the coupling in the p-direction.

Force variables generated by the coupling:

c_name.Fx = Force in the x-direction.
c_name.Fy = Force in the y-direction.
c_name.Fz = Force in the z-direction.
c_name.Mf = Force in the f-direction.
c_name.Mk = Force in the k-direction.
c_name.Mp = Force in the p-direction.

Generated force variables on connected bodies:

c_name.F1x = Force acting on mass #1 in the x-direction of mass #1's lsys.
c_name.F1y = Force acting on mass #1 in the y-direction of mass #1's lsys.
c_name.F1z = Force acting on mass #1 in the z-direction of mass #1's lsys.
c_name.M1f = Moment acting on mass #1 in the f-direction of mass #1's lsys.
c_name.M1k = Moment acting on mass #1 in the k-direction of mass #1's lsys.
c_name.M1p = Moment acting on mass #1 in the p-direction of mass #1's lsys.
c_name.F2x = Force acting on mass #2 in the x-direction of mass #2's lsys.
c_name.F2y = Force acting on mass #2 in the y-direction of mass #2's lsys.
c_name.F2z = Force acting on mass #2 in the z-direction of mass #2's lsys.
c_name.M2f = Moment acting on mass #2 in the f-direction of mass #2's lsys.
c_name.M2k = Moment acting on mass #2 in the k-direction of mass #2's lsys.
c_name.M2p = Moment acting on mass #2 in the p-direction of mass #2's lsys.

Usage:

Hydraulic dampers where the series flexibility of the damper must be considered. This is especially important when modeling yaw-dampers in railway vehicles.
Generation of simple rubber models where the kc-coupling is coupled in parallel with a k-coupling. These two couplings together will create a coupling with different static and dynamic stiffness, for more information please look in the documentation of program kc_prop.

The transfer function for the kc-coupling can be written as:

□
Where:
F= The force produced by the kc-coupling.
c= The damping coefficient of the damper.
k= The stiffness in the series spring.
ω= Excitation frequency in [rad/s].
x= The deformation of the kc-coupling.

In the equation above it can be seen that for low frequencies the kc-coupling is acting as a damper, but for higher frequencies the kc-coupling is acting as a spring. The cut-off angular frequency for the kc-coupling is defined as:

□
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `kce`

Defines a coupling between two masses, the coupling comprises a damper with series flexibility. Where the damper has an exponent factor \( F_c= prop\_c \cdot sign(\dot x) \cdot | \dot x| ^{\beta} \). The components in the coupling are connected to each other according to the following figure:

□

The properties of the spring and damper are read from pre-defined properties. Couplings acting in direction `c` or `cu` may not have the length 0(zero), because the value zero does not have any direction.

 coupl kc  `c_name' `mass1' +-`a1 +-`b1 +-`h1
                    `mass2' +-`a2 +-`b2 +-`h2
                     p_+-`prop_k  p_+-`prop_c  +-`beta  `esys' `dire`
c_name = Name of the coupling created.
mass1 = Name of mass no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in mass 1, expressed in mass 1's local coordinate system lsys.
mass2 = Name of mass no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in mass 2, expressed in mass 2's local coordinate system lsys.
prop_k = Pre-defined stiffness property.
prop_c = Pre-defined damping property.
N.B. p_lin is the only valid property.
beta = Exponent factor.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`, `c`, `cu` Direction in esys, which the coupling acts in. In addition to the Cartesian coordinates, there are the directions `c` and `cu`. Direction `c` refers to the direction specified by the coupling's attachment points, i.e the force runs in the direction of the element. The transformation matrix is calculated when the coupling is read in the input reading phase of the program. The same transformation matrix is then used during the entire calculation. Direction `cu` has a similar function as `c`, the difference being that the transformation matrix is updated continuously as the bodies move.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Number of mass #1.
c_name.a1 = Attachment coordinate in x-direction on mass #1.
c_name.b1 = Attachment coordinate in y-direction on mass #1.
c_name.h1 = Attachment coordinate in z-direction on mass #1.
c_name.m2 = Number of mass 2.
c_name.a2 = Attachment coordinate in x-direction on mass #2.
c_name.b2 = Attachment coordinate in y-direction on mass #2.
c_name.h2 = Attachment coordinate in z-direction on mass #2.

Output variables:

c_name.i = The position of the internal degree of freedom in the coupling.
c_name.vi = The speed of the internal degree of freedom in the coupling.
c_name.d = Total deformation in spring + damper, in the direction of the coupling.
c_name.F = The generated force in the coupling.
c_name.dx = Velocity over the coupling in the x-direction.
c_name.dy = Velocity over the coupling in the y-direction.
c_name.dz = Velocity over the coupling in the z-direction.
c_name.df = Velocity over the coupling in the f-direction.
c_name.dk = Velocity over the coupling in the k-direction.
c_name.dp = Velocity over the coupling in the p-direction.

Force variables generated by the coupling:

c_name.Fx = Force in the x-direction.
c_name.Fy = Force in the y-direction.
c_name.Fz = Force in the z-direction.
c_name.Mf = Force in the f-direction.
c_name.Mk = Force in the k-direction.
c_name.Mp = Force in the p-direction.

Generated force variables on connected bodies:

c_name.F1x = Force acting on mass #1 in the x-direction of mass #1's lsys.
c_name.F1y = Force acting on mass #1 in the y-direction of mass #1's lsys.
c_name.F1z = Force acting on mass #1 in the z-direction of mass #1's lsys.
c_name.M1f = Moment acting on mass #1 in the f-direction of mass #1's lsys.
c_name.M1k = Moment acting on mass #1 in the k-direction of mass #1's lsys.
c_name.M1p = Moment acting on mass #1 in the p-direction of mass #1's lsys.
c_name.F2x = Force acting on mass #2 in the x-direction of mass #2's lsys.
c_name.F2y = Force acting on mass #2 in the y-direction of mass #2's lsys.
c_name.F2z = Force acting on mass #2 in the z-direction of mass #2's lsys.
c_name.M2f = Moment acting on mass #2 in the f-direction of mass #2's lsys.
c_name.M2k = Moment acting on mass #2 in the k-direction of mass #2's lsys.
c_name.M2p = Moment acting on mass #2 in the p-direction of mass #2's lsys.

Usage:

Modeling of dampers where the cut-off frequency don't agree with \( \omega_0= k/c \).
Hydraulic damped primary bush (HALL bush)

Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

f_type = `kckc`


Defines a coupling between two masses, the coupling comprises two dampers and two springs. The components in the coupling are connected to each other according to the following figure:

□

The properties of the springs and dampers are read from pre-defined properties. Couplings acting in direction `c` or `cu` may not have the length 0(zero), because the value zero does not have any direction.

 coupl kckc  `c_name' `body1' +-`a1 +-`b1 +-`h1
                      `body2' +-`a2 +-`b2 +-`h2
                      `prop_k1' `prop_c1' `prop_k2' `prop_c2'
                      `esys' `dire`
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
prop_k1 = Pre-defined stiffness property for stiffness number 1.
prop_c1 = Pre-defined damping property for damper number 1.
NB! prop_c1 must be of type p_lin, otherwise an error will occur and the program stops.
prop_k2 = Pre-defined stiffness property for stiffness number 2.
prop_c2 = Pre-defined damping property for damper number 2.
NB! prop_c2 must be of type p_lin, otherwise an error will occur and the program stops.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`, `c`, `cu` Direction in esys, which the coupling acts in. In addition to the Cartesian coordinates, there are the directions `c` and `cu`. Direction `c` refers to the direction specified by the coupling's attachment points, i.e the force runs in the direction of the element. The transformation matrix is calculated when the coupling is read in the input reading phase of the program. The same transformation matrix is then used during the entire calculation. Direction `cu` has a similar function as `c`, the difference being that the transformation matrix is updated continuously as the bodies move.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:

c_name.p = The position of the internal degree of freedom in the coupling.
c_name.vp = The speed of the internal degree of freedom in the coupling.
c_name.d = Total velocity over the coupling, in the direction of the coupling.
c_name.F = The generated force in the coupling.
c_name.dx = Velocity over the coupling in the x-direction.
c_name.dy = Velocity over the coupling in the y-direction.
c_name.dz = Velocity over the coupling in the z-direction.
c_name.df = Velocity over the coupling in the f-direction.
c_name.dk = Velocity over the coupling in the k-direction.
c_name.dp = Velocity over the coupling in the p-direction.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

Usage:

This is a convenient coupling to create a model of a passenger sitting on a flexible seat.
Generation of simple rubber models where the kckc-coupling is coupled in parallel with a k-coupling. The user can with these two couplings generate a model of a rubber element with different static and dynamic stiffness, and the frequency fg at which the shift of the stiffness shall occur. In addition to using the kc-element the user has here the possibility to also define the damping of the coupling at fg. For more information please look in the documentation of program kc_prop.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `kf` □

Defines a coupling between two masses, the coupling comprises a stiffness in series with a friction block. The property of the spring is read from a pre-defined property. The friction force is read as a variable or a data constant.

 coupl kf  `c_name' `body1' +-`a1 +-`b1 +-`h1
                    `body2' +-`a2 +-`b2 +-`h2
                     p_+-`prop_k' +-`Ffr0 `esys' `dire`
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
prop_k = Pre-defined stiffness property. The properties which are compatible with the coupling kf are p_lin and p_nlin.
Ffr0 = The friction force, if the force in the serial spring exceeds Ffr0 a sliding motion in the friction elements starts.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`, `c`
Direction in esys, which the coupling acts in. In addition to the Cartesian coordinates, is the direction `c`. Direction `c` refers to the direction specified by the coupling's attachment points, i.e the force runs in the direction of the element. The transformation matrix is calculated when the coupling is read in the input reading phase of the program. The same transformation matrix is then used during the entire calculation.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.
c_name.fr = The friction force Ffr0.

Output variables:

c_name.p = The position of the friction block.
c_name.d = Deformation of the stiffness.
c_name.F = The generated force in the coupling.
c_name.dx = The coupling's deformation in the x-direction.
c_name.dy = The coupling's deformation in the y-direction.
c_name.dz = The coupling's deformation in the z-direction.
c_name.df = The coupling's deformation in the f-direction.
c_name.dk = The coupling's deformation in the k-direction.
c_name.dp = The coupling's deformation in the p-direction.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

The force in the spring prop_k is serial-coupled with the friction block Ffr0, which means that the coupling force through the kf-element is the same for the spring part as in the friction part. If the deformations of the ends of the kf-element are smaller than Ffr0/prop_k, no sliding motion will take place in the friction block, instead all motion will take place elastically in the spring part. If the deformation of the kf-element exceeds Ffr0/prop_k, the friction block will move the stretch required to ensure that the force over the spring part does not exceed the force Ffr0.


Usage:

This coupling can be used to generate all types of friction couplings, where the motion only occurs in one degree of freedom.
The coupling is convenient for generating a model of a flat center plate between bolster and carbody, whose only degree of freedom is a yawing motion.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `kf_l` □

Defines a coupling between two masses, the coupling comprises a stiffness in series with a friction block. Similar to coupling kf, but coupling kf_l is defined with the angles fi,chi & psi relative to the coordinate system.

 coupl kf_l  `c_name' `body1' +-`a1 +-`b1 +-`h1
                      `body2' +-`a2 +-`b2 +-`h2
                       p_+-`prop_k' +-`Ffr0 `esys' `dire`
                       +-`fi +-`chi +-`psi
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
prop_k = Pre-defined stiffness property. The properties which are compatible with the coupling kf are p_lin and p_nlin.
Ffr0 = The friction force, if the force in the serial spring exceeds Ffr0 a sliding motion in the friction elements starts.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`
Direction in esys, which the coupling acts in.
fi,chi,psi= The rotation angles from the coordinate system esys to the rotated position of the kf_l-coupling.

Variables generated in the main memory are the same as for coupling kf.

The force in the spring prop_k is serial-coupled with the friction block Ffr0, which means that the coupling force through the kf-element is the same for the spring part as in the friction part. If the deformations of the ends of the kf-element are smaller than Ffr0/prop_k, no sliding motion will take place in the friction block, instead all motion will take place elastically in the spring part. If the deformation of the kf-element exceeds Ffr0/prop_k, the friction block will move the stretch required to ensure that the force over the spring part does not exceed the force Ffr0.


Usage:

In addition to coupl kf, coupl kf_l handles surfaces rotated relative to the esys coordinate system.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `kf_r` □

Defines a coupling between two masses, the coupling comprises a stiffness in series with a friction block. The kf_r coupling is very similar to the kf_l coupling, but the kf_r-coupling handles large angles. The description of input data for the kf_r coupling can be found under kf_l.

Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `kf2` □

Defines a coupling between two masses, the coupling consists of two perpendicular stiffnesses connected to a friction block. The friction block will move on a two-dimensional surface, guided by the total force produced by the two stiffnesses. The total force from the two springs is calculated according to:

\( F_{tot}= \sqrt{ F_{k1}^2 + F_{k2}^2 } \)

A two-dimensional friction block is defined in the input data command:

 coupl kf2  `c_name' `body1' +-`a1 +-`b1 +-`h1
                     `body2' +-`a2 +-`b2 +-`h2
                      p_+-`prop_k1' p_+-`prop_k2'  +-`Ffr0 `esys' `dire1` `dire2`
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
prop_k1 = Pre-defined stiffness property in direction 1. In present release it is only possible to use property p_lin.
prop_k2 = Pre-defined stiffness property in direction 2. In present release it is only possible to use property p_lin.
Ffr0 = The friction force.
(Friction moment if the direction of action is f, k or p)
esys = The coordinate system in which the coupling force will be calculated.
dire1 = Direction of action for stiffness property 1, valid directions are x, y, z, f, k or p.
dire2 = Direction of action for stiffness property 2, valid directions are x, y, z, f, k or p.

Variables generated in the main memory:

Input variables:

c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:

c_name.p1 = The position of the friction block in direction 1.
c_name.p2 = The position of the friction block in direction 2.
c_name.d1 = Deformation of the stiffness 1.
c_name.d2 = Deformation of the stiffness 2.
c_name.dx = The coupling's deformation in the x-direction.
c_name.dy = The coupling's deformation in the y-direction.
c_name.dz = The coupling's deformation in the z-direction.
c_name.df = The coupling's deformation in the f-direction.
c_name.dk = The coupling's deformation in the k-direction.
c_name.dp = The coupling's deformation in the p-direction.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

Usage:

This coupling can be used to generate all types of friction couplings, where the motion is two-dimensional.
The coupling is convenient for generating models of the friction wedges in a three-piece bogie, or the friction surfaces in the primary suspension of a Y-25 bogie.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `kf2_l` □

Defines a coupling between two masses, the coupling consists of two perpendicular stiffnesses connected to a friction block. The kf2_l coupling is very similar to the kf2 coupling. In addition to the kf2 coupling kf2_l can also take into consideration a small rotation.

 coupl kf2  `c_name' `body1' +-`a1 +-`b1 +-`h1
                     `body2' +-`a2 +-`b2 +-`h2
                      p_+-`prop_k1' p_+-`prop_k2' +-`Ffr0    `esys' `dire1` `dire2`
                     `fi       `chi        `psi

Coupling kf2_l have the following three extra input parameters:

fi = Positive rotation around the X-axis.
chi= Positive rotation around the Y-axis.
psi= Positive rotation around the Z-axis.

The same output variables as for kf2 are beeing created.

Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `kf2_r`

Defines a coupling between two masses, the coupling comprises a stiffness in series with a friction block. The kf2_r coupling is very similar to the kf2_l coupling, the only difference is that the kf2_r coupling handles large angles. The description of input data for the kf2_r coupling can be found under kf2_l.

Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `kf3`

Defines a coupling between two masses, the coupling consists of three perpendicular stiffnesses connected to a friction block. The friction block will move on a three-dimensional surface, guided by the total force produced by the three stiffnesses.

 coupl kf3  `c_name' `body1' +-`a1 +-`b1 +-`h1
                     `body2' +-`a2 +-`b2 +-`h2
                     `prop_k1' `prop_k2' `prop_k3' +-`Ffr0
                     `esys'    `dire1`   `dire2`   `dire3`
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
prop_k1 = Pre-defined stiffness property in direction 1. In present release it is only possible to use property p_lin.
prop_k2 = Pre-defined stiffness property in direction 2. In present release it is only possible to use property p_lin.
prop_k3 = Pre-defined stiffness property in direction 3. In present release it is only possible to use property p_lin.
Ffr0 = Friction force. (Friction torque if the direction of action is f, k or p)
esys = The coordinate system in which the coupling force will be calculated.
dire1 = Direction of action for stiffness property 1, valid directions are x, y, z, f, k & p.
dire2 = Direction of action for stiffness property 2, valid directions are x, y, z, f, k & p.
dire3 = Direction of action for stiffness property 3, valid directions are x, y, z, f, k & p.

Variables generated in the main memory:

Input variables:

c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:

c_name.p1 = The position of the friction block in direction 1.
c_name.p2 = The position of the friction block in direction 2.
c_name.p3 = The position of the friction block in direction 3.
c_name.d1 = Deformation of the stiffness 1.
c_name.d2 = Deformation of the stiffness 2.
c_name.d3 = Deformation of the stiffness 3.
c_name.dx = The coupling's deformation in the x-direction.
c_name.dy = The coupling's deformation in the y-direction.
c_name.dz = The coupling's deformation in the z-direction.
c_name.df = The coupling's deformation in the f-direction.
c_name.dk = The coupling's deformation in the k-direction.
c_name.dp = The coupling's deformation in the p-direction.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

Usage:

Spherical centerplates.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `kfrkc`

Defines a one-dimensional coupling between two masses. The coupling comprises three parallel coupled parts:

1) Elastic part: Linear spring in the stiffness ke
2) Friction part: Smooth Coulomb friction, parameters Ffm and x2
3) Viscous part: Linear viscous damper, c , in series with a linear spring, kv
kfrkc.gif


The parameters are taken from a pre-defined property defined in coupl p_kfrkc. The couplings which have direction c or cu may not have the length 0(zero), as the value zero does not have a direction.

The theories of the kfrkc-coupling was developed by Mats Berg, Department of Vehicle Engineering, Royal Institute of Technology, Sweden. A detailed description of the coupling can be found in the report A rubber spring model for dynamic analysis of rail vehicles, ISSN 1103-470X, ISRN KTH/FKT/FR-95/53-SE.

 coupl kfrkc  `c_name' `body1' +-`a1 +-`b1 +-`h1
                       `body2' +-`a2 +-`b2 +-`h2
                       `p_kfrkc' `esys' `dire`
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
p_kfrkc = Pre-defined property. The only property which complies with the coupling kfrkc is p_kfrkc.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`, `c`
Direction in esys, which the coupling acts in. In addition to the Cartesian coordinates, there is the direction `c`. Direction `c` refers to the directions specified by the coupling's attachment points, i.e the force runs in the direction of the element. The transformation matrix is calculated when the coupling is read in the input reading phase of the program. The same transformation matrix is then used during the entire calculation.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:

c_name.d = Deformation over the coupling.
c_name.F = The generated force in the coupling.
c_name.fe = The generated force in the elastic part of the coupling.
c_name.ff = The generated force in the friction part of the coupling.
c_name.fv = The generated force in the viscous part of the coupling.
c_name.dx = The coupling's deformation in the x-direction.
c_name.dy = The coupling's deformation in the y-direction.
c_name.dz = The coupling's deformation in the z-direction.
c_name.df = The coupling's deformation in the f-direction.
c_name.dk = The coupling's deformation in the k-direction.
c_name.dp = The coupling's deformation in the p-direction.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

The six input data parameters F0, ke, x2, Ffm, kv and c are described in detail under the property p_kfrkc. The coupling is non-linear due the smooth friction part of the coupling. On linearization in MODAL and FRESP, the friction part gives the stiffness Ffm/x2, but no energy dissipation (friction damping). In time simulation (TSIM), the effective stiffness of the coupling will be dependent on the displacement amplitude (relative to a static or quasistatical position). At small amplitudes, the total stiffness will asymptotically be Ffm/x2. At large amplitudes, the total stiffness will asymptotically be 0. The viscous part of the coupling will give a frequency dependent behavior in the property of the coupling.


Usage:

Smooth friction.
Rubber suspension element.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `kf_exp1`

Defines a coupling between two masses, the coupling comprises a stiffness in series with a friction damper. The stiffness of the upper side of the hysteresis loop is ku. The stiffness of the lower side of the hysteresis loop is kl. The friction damping is of type smooth friction and is defined by the stiffnesses in the end points dFA and dFB. The magnitude of the friction force follows an exponential function.

Following diagram shows the the force-displacement relationship for the coupling: kf_exp1.gif


Input data for the coupling:

 coupl kf_exp1 `c_name' `body1' +-`a1 +-`b1 +-`h1
                        `body2' +-`a2 +-`b2 +-`h2
                        `esys' `dire`
                         +-`Fu +-`ku  +-`Fl +-`kl  +-`dFA +-`dFB
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`, `c`
Direction in esys, which the coupling acts in. In addition to the Cartesian coordinates, is the direction `c`. Direction `c` refers to the direction specified by the coupling's attachment points, i.e the force runs in the direction of the element. This direction is only valid if the coupling has a length. The transformation matrix is calculated when the coupling is read in the input reading phase of the program. The same transformation matrix is then used during the entire calculation.
Fu = Pre-load force at 0(zero) displacement, for the upper stiffness.
ku = The upper stiffness.
Fl = Pre-load force at 0(zero) displacement, for the lower stiffness.
kl = The lower stiffness.
dFA = The initial lower stiffness when the motion changes direction.
dFB = The initial upper stiffness when the motion changes direction.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.

Output variables:

c_name.d = Deformation of the stiffness.
c_name.F = The generated force in the coupling.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

Usage:

Leaf Spring.
UIC linkage, see example under: examples/main/calc/vehicle_11.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `kf_exp2`

Defines a coupling between two masses, the coupling comprises a stiffness in series with a friction damper. The stiffness of the coupling is defined by any property beginning with p_. The friction damping is of type smooth friction and is defined by the stiffnesses in the end points kfA and kfB, and the force amplitudes FfA and FfB. The magnitude of the friction force follows an exponential function.

Following diagram shows the the force-displacement relationship for the coupling when using stiffness property p_lin: kf_exp2.png



Following diagram shows the the force-displacement relationship for the coupling when using a non-linear property and setting different values for kfA, kfB,FfA and FfB: kf_exp2_non_lin.png
In diagram above the following input data has been used:

  coupl p_nlin  exp2_lin  0.  -.005 -1e3   .0 0.  .005 4e3
  coupl kf_exp2 Kfr_exp2 point1l -10.  2 2  point2l 10.  2 2  esys3 y  exp2_lin  2e6 1.  2e6 -1.
  func  operp   Kfr_exp2.FfA= 0.1 * ( Kfr_exp2.F + 1000 )
  func  operp   Kfr_exp2.FfB= -.1 * ( Kfr_exp2.F + 1000 )

Input data for the coupling:

 coupl kf_exp2 `c_name' `body1' +-`a1 +-`b1 +-`h1
                        `body2' +-`a2 +-`b2 +-`h2
                        `esys' `dire`
                         property   +-`kfA +-`FfA +-`kfB +-`FfB
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`,
Direction in esys, which the coupling acts in.
property = Pre-defined coupling property.
kfA = Additional stiffness due to friction when the spring starts to move in positive direction.
FfA = Maximum friction force when moving in positive direction.
kfB = Additional stiffness due to friction when the spring starts to move in negative direction.
FfB = Maximum friction force when moving in negative direction.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.
c_name.kfA= Stiffness kfA.
c_name.FfA= Force FfA.
c_name.kfB= Stiffness kfB.
c_name.FfB= Force FfB.

Output variables:

c_name.d = Deformation of the stiffness.
c_name.Fe = The elastic force in the coupling.
c_name.Ff = The friction force in the coupling.
c_name.F = The total force in the coupling, in direction of action.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.


Usage:

Leaf Spring.
UIC linkage, see example under: examples/main/calc/vehicle_11.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu

c_type = `kf_exp3`

Defines a coupling between two masses, the coupling comprises a stiffness in series with a friction damper. The stiffness of the coupling is defined by any property beginning with p_. The friction damping is of type smooth friction and is very similar to kf_exp2. The main difference is how the smooth friction is defined. In this coupling the smooth friction is defined in the force amplitudes FfU and FfL, and the distances tauU and tauL. The smooth friction force has the shape of a exponential function like in a low-pass filter.

Input data for the coupling:

 coupl kf_exp3 `c_name' `body1' +-`a1 +-`b1 +-`h1
                        `body2' +-`a2 +-`b2 +-`h2
                        `esys' `dire`
                         property   +-`tauU +-`FfU +-`tauL +-`FfL
c_name = Name of the coupling created.
body1 = Name of body no. 1, which the coupling is connected to.
a1,b1,h1 = The coupling's attachment coordinate in body 1, expressed in body 1's local coordinate system lsys.
body2 = Name of body no. 2 to which the coupling connects.
a2,b2,h2 = The coupling's attachment coordinate in body 2, expressed in body 2's local coordinate system lsys.
esys = The coordinate system in which the coupling force will be calculated.
dire = `x`, `y`, `z`, `f`, `k`, `p`,
Direction in esys, which the coupling acts in.
property = Pre-defined coupling property.
tauU = Distance to where force FfU/2 is obtained.
FfU = Maximum friction force when moving in positive direction.
tauL = Distance to where force FfL/2 is obtained.
FfL = Maximum friction force when moving in negative direction.

Variables generated in the main memory:

Input variables:

c_name.l = Length of the coupling. The length is calculated in the same direction as the coupling's direction of action.
c_name.m1 = Mass number of body 1.
c_name.a1 = Attachment coordinate in x-direction on body 1.
c_name.b1 = Attachment coordinate in y-direction on body 1.
c_name.h1 = Attachment coordinate in z-direction on body 1.
c_name.m2 = Mass number of body 2.
c_name.a2 = Attachment coordinate in x-direction on body 2.
c_name.b2 = Attachment coordinate in y-direction on body 2.
c_name.h2 = Attachment coordinate in z-direction on body 2.
c_name.omegau = Angular frequency omegau.
c_name.Fdu = Force Fdu.
c_name.omegal = Angular frequency omegal.
c_name.Fdl = Force Fdl.

Output variables:

c_name.d = Deformation of the stiffness.
c_name.Fe = The elastic force in the coupling.
c_name.Ff = The friction force in the coupling.
c_name.F = The total force in the coupling, in direction of action.

Force variables generated by the coupling:

c_name.Fx = In the x-direction of esys.
c_name.Fy = In the y-direction of esys.
c_name.Fz = In the z-direction of esys.
c_name.Mf = In the f-direction of esys.
c_name.Mk = In the k-direction of esys.
c_name.Mp = In the p-direction of esys.

Generated force variables on connected bodies:

c_name.F1x = Force acting on body #1 in the x-direction of body #1's lsys.
c_name.F1y = Force acting on body #1 in the y-direction of body #1's lsys.
c_name.F1z = Force acting on body #1 in the z-direction of body #1's lsys.
c_name.M1f = Moment acting on body #1 in the f-direction of body #1's lsys.
c_name.M1k = Moment acting on body #1 in the k-direction of body #1's lsys.
c_name.M1p = Moment acting on body #1 in the p-direction of body #1's lsys.
c_name.F2x = Force acting on body #2 in the x-direction of body #2's lsys.
c_name.F2y = Force acting on body #2 in the y-direction of body #2's lsys.
c_name.F2z = Force acting on body #2 in the z-direction of body #2's lsys.
c_name.M2f = Moment acting on body #2 in the f-direction of body #2's lsys.
c_name.M2k = Moment acting on body #2 in the k-direction of body #2's lsys.
c_name.M2p = Moment acting on body #2 in the p-direction of body #2's lsys.

Usage:

Leaf Spring.
UIC linkage, see example under: examples/main/calc/vehicle_11.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu
c_type = `m_flex_1`

Connects a coupling to a flexible body.
Before this command can be given, both the flexible body and the coupling must have been previously defined in the input data. The modal shapes' values shall be given mass orthonormalized, i.e

xT M x = 1
Where:
M = Mass matrix
x = Eigenvector
xT = The transpose of x

Normally the user don't need to give these input manually, because this input data group can automatically be generated by the NPICK-program.

 coupl m_flex_1  `c_name'  `end`  values
c_name = Assigning a name to this property.
end = Specifies the end of the coupling for which the modal shapes shall be read. Input data parameter end can have two valid values `end_1` or `end_2'. `end_1` causes input reading of the eigenvectors for body1 and 'end_2' causes input reading of the eigenvectors for body2.
values = Specification of the eigenvectors.
If the coupling's work direction is set to `m`, the eigenvectors are given with 6 components per eigenfrequency, i.e. the input data is as follows:
x1, y1, z1, f1, k1, p1,
x2, y2, z2, f2, k2, p2,  A total of n modal shapes.
 .   .   .   .   .   .   Number of modal shapes which
 .   .   .   .   .   .   shall be read, is controlled
xn, yn, zn, fn, kn, pn,  by `mass m_flex_1`.
If the coupling's work direction is given as `x`, `y`, `z`, `z`, `c`, `cu`, the eigenvectors will given by 3 components per eigenfrequency, i.e. the input data is as follows:
x1, y1, z1,
x2, y2, z2,      A total of n modal shapes.
 .   .   .
 .   .   .
xn, yn, zn,

If the coupling's work direction is given as `f`, `k` or `p`, the eigenvectors will given by 3 angle components per eigenfrequency, i.e. the input data is as follows:

f1, k1, p1,
f2, k2, p2,       A total of n modal shapes.
 .   .   .
 .   .   .
fn, kn, pn,

Number of eigenfrequencies n is earlier defined in the `mass m_flex_1`- command.

Variables generated in the main memory:

c_name.x1 = Modal shape value, x-direction, eigenfrequency #1
c_name.y1 = Modal shape value, y-direction, eigenfrequency #1
c_name.z1 = Modal shape value, z-direction, eigenfrequency #1
c_name.f1 = Modal shape value, f-direction, eigenfrequency #1
 .   .   . =  .   .   .   .   .   .   .   .  
c_name.x2 = Modal shape value, x-direction, eigenfrequency #2
 .   .   . =  .   .   .   .   .   .   .   .  
c_name.kn = Modal shape value, k-direction, eigenfrequency #n
c_name.pn = Modal shape value, p-direction, eigenfrequency #n

c_name1c1 = Generalized force on flexible mass end 1, eigenmode 1
c_name1c2 = Generalized force on flexible mass end 1, eigenmode 2
c_name1c3 = Generalized force on flexible mass end 1, eigenmode 3
 .   .   . .  .   .   .   etc. for all eigenfrequencies.
c_name2c1 = Generalized force on flexible mass end 2, eigenmode 1
c_name2c2 = Generalized force on flexible mass end 2, eigenmode 2
c_name2c3 = Generalized force on flexible mass end 2, eigenmode 3
 .   .   . .  .   .   .   etc. for all eigenfrequencies.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu
c_type = `m_flex_m6`

Connects a coupling to a flexible body.
Before this command can be given, both the flexible body and the coupling must have been previously defined in the input data. The modal shapes' values shall be given mass orthonormalized, i.e

xT M x = 1
Where:
M = Mass matrix
x = Eigenvector
xT = The transpose of x
 coupl m_flex_m6  `c_name'  `end`  
 
                   nSec  xSec(1)       # Longitudinal positions where
                         xSec(2)       # the eigen modes are defined
                         . . .
                         xSec(nSec)

                         x(1,1), y(1,1), z(1,1), f(1,1), k(1,1), p(1,1),  # Position 1
                         x(2,1), y(2,1), z(2,1), f(2,1), k(2,1), p(2,1),  # A total of nFlex modal shapes.
                          .   .   .   .   .   .                           # Number of modal shapes is
                          .   .   .   .   .   .                           # defined in mass m_flex_1
                         x(nFlex,1), y(nFlex,1), z(nFlex,1), f(nFlex,1), k(nFlex,1), p(nFlex,1),

                         x(1,2), y(1,2), z(1,2), f(1,2), k(1,2), p(1,2),  # Position 2
                         x(2,2), y(2,2), z(2,2), f(2,2), k(2,2), p(2,2),
                          .   .   .   .   .   .                         
                          .   .   .   .   .   .                         
                         x(nFlex,2), y(nFlex,2), z(nFlex,2), f(nFlex,2), k(nFlex,2), p(nFlex,2),


                          .   .   .   .   .   .                         
                          .   .   .   .   .   .                         


                         x(1,nSec),y(1,nSec),z(1,nSec),f(1,nSec),k(1,nSec),p(1,nSec),  # Position nSec
                         x(2,nSec),y(2,nSec),z(2,nSec),f(2,nSec),k(2,nSec),p(2,nSec),
                          .   .   .   .   .   .                         
                          .   .   .   .   .   .                         
                         x(nFlex,nSec),y(nFlex,nSec),z(nFlex,nSec),f(nFlex,nSec),k(nFlex,nSec),p(nFlex,nSec)
c_name = Assigning a name to this property.
end = Specifies the end of the coupling for which the modal shapes shall be read. Input data parameter end can have two valid values `end_1` or `end_2'. `end_1` causes input reading of the eigenvectors for body1 and 'end_2' causes input reading of the eigenvectors for body2.
nSec = Specifies number of sections/positions, where the modal shapes are given. When the attachment of a coupling is located in between two sections/positions, spline interpolation is taking place.
xSec(1:nSec) = Longitudinal positions of the sections/positions.
values = Specification of the eigenvectors for all eigen values and in all sections/positions.
The values are given in a 3D-matrix, where the first dimension is the direction of the modal shape x,y,z,f,k or p. The second dimension is the number of the eigen mode defined in a previous mass m_flex_1-command. The third dimension is the section/position.

Variables generated in the main memory:

c_name1c1 = Generalized force on flexible mass end 1, eigenmode 1
c_name1c2 = Generalized force on flexible mass end 1, eigenmode 2
c_name1c3 = Generalized force on flexible mass end 1, eigenmode 3
 .   .   . .  .   .   .   etc. for all eigenfrequencies.
c_name2c1 = Generalized force on flexible mass end 2, eigenmode 1
c_name2c2 = Generalized force on flexible mass end 2, eigenmode 2
c_name2c3 = Generalized force on flexible mass end 2, eigenmode 3
 .   .   . .  .   .   .   etc. for all eigenfrequencies.
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu
c_type = `cuser#`

Defines a coupling written by the user.
The properties of this coupling is given in a subroutine written by the user. Up to ten user written subroutine can be feed into the CALC-program. The #-sign indicates the number of the coupling. The CALC-program calculates the displacement and speed of the two ends of the coupling, so the user written subroutine only needs to calculate the force in the coupling. The subroutine calculating the force is named cuser#. The input reading subroutine for cuser# is named icusr#.
If no own user subroutines are supplied, the calc-linking script will load dummy subroutines from the gen_calclib library. The source code of the new subroutine shall be located in directory $gensys/code/calc/calc.



To compile an own written coupling, take the following steps:



The following FORTRAN subroutine can be used as a template when writing own subroutines:

*cuser0
c     --------------------------------------------------------------------------
c0    User supplied coupling
c     --------------------------------------------------------------------------
      subroutine cuser0 (
     & icoupl, ! IN  Number of the coupling
     & delt,   ! IN  Deformation, if the coupling is one dimensional
     & vdelt,  ! IN  Speed of deformation, if the coupling is one dimensional
     & posb1,  ! IN  Position of attachment point body # 1 in esys
     & posb2,  ! IN  Position of attachment point body # 2 in esys
     & delta,  ! IN  Deformation (posb2-posb1), if the coupling has working direction m
     & velb1,  ! IN  Velcity of attachment point body # 1 in esys
     & velb2,  ! IN  Velcity of attachment point body # 2 in esys
     & vdelta, ! IN  Speed of deformation (velb2-velb1), if the coupling has working direction m
     & iforc,  ! OUT Indicator showing where the output force is stored
     &         !      iforc=1, the result is stored in forc
     &         !      iforc=2, the result is stored in force
     &         !      iforc=3, the result is stored in force1 and force2
     & forc,   ! OUT Force, if the coupling is one dimensional
     & force,  ! OUT Force, if the coupling has working direction m
     & force1, ! OUT Force on body #1, if the coupling has working direction m
     & force2) ! OUT Force on body #2, if the coupling has working direction m
c     --------------------------------------------------------------------------
      use calclib_decl_mod, only:
     &     mvar,                    ! Number of declared variables
     &     nvar,                    ! Number of read/created variables
     &     var,                     ! Main memory variables
     &     name,                    ! Main memory variable names
     &     ityp                     ! Type of variable
c     --------------------------------------------------------------------------
      implicit real(8) (a-h,o-z)
c     --------------------------------------------------------------------------
      integer,  intent (IN) :: icoupl
      real(8),  intent (IN) :: delt, vdelt
      real(8),  intent (IN) :: posb1(6), posb2(6), delta(6)
      real(8),  intent (IN) :: velb1(6), velb2(6), vdelta(6)
      integer,  intent(OUT) :: iforc
      real(8),  intent(OUT) :: forc
      real(8),  intent(OUT) :: force(6), force1(6), force2(6)
c     --------------------------------------------------------------------------
      include '../../interface.h'
      include '../../interface_calclib.h'
c     --------------------------------------------------------------------------
#ifdef MEM_SMALL
      include '../../calc/calc/mp_small.h'
#else
      include '../../calc/calc/mp_big.h'
#endif
c     --------------------------------------------------------------------------
c
c       time commons
      common /g_time/ time, timold, tdiff
c
c       coupl commons
      common /ncoupl/ ncoupl
      common /idat_c/ idat_c (kcoupl)
      common /indx_c/ indx_c (kcoupl)
c
      character(*), parameter :: subr= 'cuser0'
c     --------------------------------------------------------------------------

      ipdat_c= idat_c(icoupl)

c
c      Pick up property from memory
c      ============================
      iprop= nint (var(ipdat_c+15))
      call kforc1 (iprop, name(iprop+1), 1, delt, forc)

c
c      Pick up own defined data from memory
c      ====================================
      data1= var(ipdat_c+17)
      data2= var(ipdat_c+18)
      data3= var(ipdat_c+19)
      data4= var(ipdat_c+20)
      data5= var(ipdat_c+21)
      data6= var(ipdat_c+22)

c
c      Calculate force in own defined coupling
c      =======================================
      iforc= 1
      forc = forc + data2 - data1
c
c
      return
      end


The following FORTRAN subroutine can be used as a template when writing the input data reading subroutine:

*icusr#
c     --------------------------------------------------------------------------
c0     User defined coupling. Input data reading
c     --------------------------------------------------------------------------
      subroutine icusr0 (
     & icoupl, ! IN  Number of the coupling
     & c_name, ! IN  Name of coupling
     & c_type) ! IN  Type of coupling
c     --------------------------------------------------------------------------
      use calclib_decl_mod, only:
     &     mvar,                    ! Number of declared variables
     &     nvar,                    ! Number of read/created variables
     &     var,                     ! Main memory variables
     &     name,                    ! Main memory variable names
     &     ityp                     ! Type of variable
c     --------------------------------------------------------------------------
      implicit real(8) (a-h,o-z)
c     --------------------------------------------------------------------------
      integer,       intent( IN) :: icoupl
      character(24), intent( IN) :: c_type, c_name
c     --------------------------------------------------------------------------
      include '../../interface.h'
      include '../../interface_calclib.h'
c     --------------------------------------------------------------------------
#ifdef MEM_SMALL
      include '../../calc/calc/mp_small.h'
#else
      include '../../calc/calc/mp_big.h'
#endif
c     --------------------------------------------------------------------------
c
c       constant commons
      common /blank / blank;            character(132)  :: blank
      common /crikt / crikt;            character(1)    :: crikt(6)     !! Translates from numbers to 'x','y','z','f','k','p'
      common /pi    / pi, twopi
c
c       error commons
      common /ierfil/ ierfil
      common /ierror/ ierror
      common /nwarn / nwarn
      common /idebug/ idebug, ldebug, ioverw, iwcafi, icifa0, istore_ntime
c
c       read commons
      common /infile/ infile
      common /inread/ irad, indexa, indexb, indexe, indxbo, indxeo
      common /cdata / cdata;            character(132)  :: cdata
      common /rdata / rdata;            real(4)         :: rdata
      common /ddata / ddata;            real(8)         :: ddata
      character(132) :: rfile      ! Name of file currently reading from
      character(132) :: rsubsc     ! Name of substructure, if reading from a substructure
      common /rfile / rfile, rsubsc
c
c       coupl commons
      common /mcoupl/ mcoupl
      common /ncoupl/ ncoupl
      common /jcoupl/ jcoupl
      common /idat_c/ idat_c (kcoupl)
      common /indx_c/ indx_c (kcoupl)
c
c       local variables
      real(8)       :: deltc(3)
      character(24) :: char24, esys
      character( 2) :: dire1
      character(*), parameter  :: subr= 'icusr0'
c     --------------------------------------------------------------------------

c
c      Increase main memory if necessary
c      =======================================
      if (nvar+1000.ge.mvar) call gen_reallocate_var(1000, c_name, subr, *920)

c
c      Store data in main memory (Name and type of coupling)
c      =====================================================
      idat_c(icoupl)= nvar + 1
      ipdat_c= idat_c(icoupl)
      name(ipdat_c   )= c_name
      var (ipdat_c   )= dble(icoupl)
      name(ipdat_c+ 1)= c_type
      var (ipdat_c+ 1)= 0.d0
c
      l_name= len_trim(c_name)
      if (l_name.gt.20) call error_exit(subr, '             Too many characters in name of coupling '//trim(c_name))

c
c      Read mass #1 and the coordinates of its attachment point
c      ========================================================
      call read_a (char24, 24, 1, *920, *920)
      ipos= 0
      call find   (char24, ipos, subr, *920)
      im1 = nint( var(ipos) )
c
      name(ipdat_c+ 2)= c_name(1:l_name)//'.m1'
      var (ipdat_c+ 2)= dble(im1)
      name(ipdat_c+ 3)= blank(1:24)     ! Working direction
      var (ipdat_c+ 3)= 0.d0
c
      call read_var(1,0,1,1, ipdat_c+ 4,ipos, c_name(1:l_name)//'.a1', subr, *920)
      call read_var(1,0,1,1, ipdat_c+ 5,ipos, c_name(1:l_name)//'.b1', subr, *920)
      call read_var(1,0,1,1, ipdat_c+ 6,ipos, c_name(1:l_name)//'.h1', subr, *920)

c
c      Read mass #2 and the coordinates of its attachment point
c      ========================================================
      call read_a (char24, 24, 1, *920, *920)
      ipos= 0
      call find   (char24, ipos, subr, *920)
      im2 = nint( var(ipos) )
c
      name(ipdat_c+ 7)= c_name(1:l_name)//'.m2'
      var (ipdat_c+ 7)= dble(im2)
      name(ipdat_c+ 8)= blank(1:24)     ! Working direction
      var (ipdat_c+ 8)= 0.d0
c
      call read_var(1,0,1,1, ipdat_c+ 9,ipos, c_name(1:l_name)//'.a2', subr, *920)
      call read_var(1,0,1,1, ipdat_c+10,ipos, c_name(1:l_name)//'.b2', subr, *920)
      call read_var(1,0,1,1, ipdat_c+11,ipos, c_name(1:l_name)//'.h2', subr, *920)

c
c      Addresses to flexible masses
c      ============================
      name(ipdat_c+13)= 'modal_mass_1            '
      var (ipdat_c+13)=  0.d0
      name(ipdat_c+14)= 'modal_mass_2            '
      var (ipdat_c+14)=  0.d0

c
c      Read predefined property
c      ========================
      call read_u2(1, ddata, iadr, cdata, *920)
      if (iadr.eq.-7) then
       ipos= nint(ddata)
      else
       write(ierfil,*)
       write(ierfil,*) '***ERROR*** In '//subr
       write(ierfil,*) '            Unknown property '//trim(cdata)
       write(ierfil,*) '            has been read, iadr=', iadr
       goto 920
      endif
c
      name(ipdat_c+15)= ' '//cdata(1:23)
      var (ipdat_c+15)= dble(ipos)
      ityp(ipdat_c+15)= -1

c
c      Read esys to calculate deformations in.
c      =======================================
      call read_a (esys, 24, 1, *920, *920)
      ipos1= 0
      call find   (esys, ipos1, subr, *920)
      if (name(ipos1+1)(1:2).eq.'e_') then
       name(ipdat_c+16)= ' '//esys(1:23)
       var (ipdat_c+16)= var(ipos1)
       iesys= nint( var(ipos1) )
      else
       write(ierfil,'(a)') ' ',
     &   ' ***ERROR*** In '//subr,
     &   '             Cannot calculate deformations in coord. system '//trim(esys),
     &   '             The coordinate system must be an Euler system.'
       goto 920
      endif

c
c      Working direction of coupling.
c      ==============================
      call read_a (dire1, 2, 1, *920, *920)
      name(ipdat_c+ 3)= dire1
      name(ipdat_c+ 8)= dire1
c
      if (dire1.ne.'x ' .and. dire1.ne.'y ' .and. dire1.ne.'z ' .and.
     &    dire1.ne.'f ' .and. dire1.ne.'k ' .and. dire1.ne.'p ' .and.
     &    dire1.ne.'c ' .and. dire1.ne.'cu' .and. dire1.ne.'m ') then
       write(ierfil,'(a)') ' ',
     &   ' ***ERROR*** In '//subr,
     &   '             Unvalid working direction= '//dire1
       goto 920
      endif

c
c      Undeformed length of the coupling
c      =================================
      name(ipdat_c+12)= c_name(1:l_name)//'.l '
      if (dire1.eq.'x ' .or. dire1.eq.'y ' .or. dire1.eq.'z ' .or.
     &    dire1.eq.'c ' .or. dire1.eq.'cu') then
       call coupll (icoupl, iesys, im1, im2, deltc)
       var (ipdat_c+12)= sqrt(deltc(1)**2 + deltc(2)**2 + deltc(3)**2)
      else
       var (ipdat_c+12)= 0.d0
      endif

c
c      Read own user defined data
c      ===========================
      name(ipdat_c+17)= c_name(1:l_name)//'.d1'
      call read_u2(1, ddata, iadr, cdata, *920)
      if (iadr.le.-3) call error(cdata(1:12), subr, 8-iadr, *920)
      var (ipdat_c+17)= ddata
      ityp(ipdat_c+17)= iadr
c
      name(ipdat_c+18)= c_name(1:l_name)//'.d2'
      call read_u2(1, ddata, iadr, cdata, *920)
      if (iadr.le.-3) call error(cdata(1:12), subr, 8-iadr, *920)
      var (ipdat_c+18)= ddata
      ityp(ipdat_c+18)= iadr
c
      name(ipdat_c+19)= c_name(1:l_name)//'.d3'
      call read_u2(1, ddata, iadr, cdata, *920)
      if (iadr.le.-3) call error(cdata(1:12), subr, 8-iadr, *920)
      var (ipdat_c+19)= ddata
      ityp(ipdat_c+19)= iadr
c
      name(ipdat_c+20)= c_name(1:l_name)//'.d4'
      call read_u2(1, ddata, iadr, cdata, *920)
      if (iadr.le.-3) call error(cdata(1:12), subr, 8-iadr, *920)
      var (ipdat_c+20)= ddata
      ityp(ipdat_c+20)= iadr
c
      name(ipdat_c+21)= c_name(1:l_name)//'.d5'
      call read_u2(1, ddata, iadr, cdata, *920)
      if (iadr.le.-3) call error(cdata(1:12), subr, 8-iadr, *920)
      var (ipdat_c+21)= ddata
      ityp(ipdat_c+21)= iadr
c
      name(ipdat_c+22)= c_name(1:l_name)//'.d6'
      call read_u2(1, ddata, iadr, cdata, *920)
      if (iadr.le.-3) call error(cdata(1:12), subr, 8-iadr, *920)
      var (ipdat_c+22)= ddata
      ityp(ipdat_c+22)= iadr
c
      nvar= ipdat_c+22                  !! Address to last written address in memory

c
c      Reserve memory for results
c      ==========================
      if (nvar+25.ge.mvar) call gen_reallocate_var(25, c_name, subr, *920)
      indx_c(icoupl)= nvar + 1
c
      name(indx_c(icoupl)   )= c_name(1:l_name)//'.d '
      name(indx_c(icoupl)+ 1)= c_name(1:l_name)//'.F '
c
      name(indx_c(icoupl)+ 2)= c_name(1:l_name)//'.F1x'
      name(indx_c(icoupl)+ 3)= c_name(1:l_name)//'.F1y'
      name(indx_c(icoupl)+ 4)= c_name(1:l_name)//'.F1z'
      name(indx_c(icoupl)+ 5)= c_name(1:l_name)//'.M1f'
      name(indx_c(icoupl)+ 6)= c_name(1:l_name)//'.M1k'
      name(indx_c(icoupl)+ 7)= c_name(1:l_name)//'.M1p'
      name(indx_c(icoupl)+ 8)= c_name(1:l_name)//'.F2x'
      name(indx_c(icoupl)+ 9)= c_name(1:l_name)//'.F2y'
      name(indx_c(icoupl)+10)= c_name(1:l_name)//'.F2z'
      name(indx_c(icoupl)+11)= c_name(1:l_name)//'.M2f'
      name(indx_c(icoupl)+12)= c_name(1:l_name)//'.M2k'
      name(indx_c(icoupl)+13)= c_name(1:l_name)//'.M2p'
      name(indx_c(icoupl)+14)= c_name(1:l_name)//'.dx'
      name(indx_c(icoupl)+15)= c_name(1:l_name)//'.dy'
      name(indx_c(icoupl)+16)= c_name(1:l_name)//'.dz'
      name(indx_c(icoupl)+17)= c_name(1:l_name)//'.df'
      name(indx_c(icoupl)+18)= c_name(1:l_name)//'.dk'
      name(indx_c(icoupl)+19)= c_name(1:l_name)//'.dp'
      name(indx_c(icoupl)+20)= c_name(1:l_name)//'.Fx'
      name(indx_c(icoupl)+21)= c_name(1:l_name)//'.Fy'
      name(indx_c(icoupl)+22)= c_name(1:l_name)//'.Fz'
      name(indx_c(icoupl)+23)= c_name(1:l_name)//'.Mf'
      name(indx_c(icoupl)+24)= c_name(1:l_name)//'.Mk'
      name(indx_c(icoupl)+25)= c_name(1:l_name)//'.Mp'
      nvar= indx_c(icoupl)+25
c
c
 1000 return
 920  ierror= ierror + 1        !! *** ERROR ***
 910  continue                  !!  * Warning * 
      goto 1000
c
      end


When you have written the code for your new coupling, it is a good idea to test its output. With this simple input data file you can apply a controlled displacement over the coupling:

#
#
  head 2 "Test of couplings"
#
  idebug= 0
  tsim_param  e1   tstart=0.  tstop= 1.6 tout=0.005 tstep=0.005
  quasi_param LineSearch_1  1.e-7, 1.e-6 0.005 0.00005 60 40

###                                                                             
###  Create esys and lsys                                                       
###  -----------------------------------------------------------                
  func intpl_r krok_R1  -200 0   0 0
  func intpl_r krok_fi1 -200 0   0 0
  func intpl_r krok_z1  -200 0   0 0
  func const   V0  50
  lsys e_var_bend  esys3  V0    0   krok_R1  krok_fi1  krok_z1
  lsys l_local     lsys31 esys3  10 0 0
  lsys l_local     lsys32 esys3 -10 0 0

###                                                                             
###  Create masses                                                              
###  -----------------------------------------------------------                
  mass   fixpoint_6   point1l  lsys31  0 0 0
  mass   fixpoint_6   point2l  lsys32  0 0 0

###                                                                             
###  Create a sine-wave 2(Hz)                                                   
###  -----------------------------------------------------------                
  func operp ampl 0.070 * sin( 6.28318531 * 2 * time )

###                                                                             
###  Create a triangular wave 5(Hz) amplitude 10(mm)                            
###  -----------------------------------------------------------                
# func operp signal    2000 * cos( 6.28318531 *  4 * time )
# func const ulevel= 0.02
# func const llevel= -.05
# func u_lim signal    ulevel
# func l_lim signal    llevel
# func integ ampl      signal
# if_then time .gt. 1.2
#  func copy  ulevel= 0.05
#  func copy  llevel= -.02
# endif

###                                                                             
###  Move the mass(es)                                                          
###  -----------------------------------------------------------                
# no_warning func copy        point1l.x    -ampl
# no_warning func copy        point2l.x     ampl
  no_warning func copy        point1l.y     ampl
  no_warning func copy        point2l.y    -ampl
#
  no_warning func deriv       point1l.vx    point1l.x
  no_warning func deriv       point2l.vx    point2l.x
  no_warning func deriv       point1l.vy    point1l.y
  no_warning func deriv       point2l.vy    point2l.y
  no_warning func deriv       point1l.vz    point1l.z
  no_warning func deriv       point2l.vz    point2l.z
  no_warning func deriv       point1l.vf    point1l.f
  no_warning func deriv       point2l.vf    point2l.f
  no_warning func deriv       point1l.vk    point1l.k
  no_warning func deriv       point2l.vk    point2l.k
  no_warning func deriv       point1l.vp    point1l.p
  no_warning func deriv       point2l.vp    point2l.p

###                                                                             
###  Create Spring                                                              
###  -----------------------------------------------------------                
#                          coupl `cuser0`       Central coupler
# -------------------------------------------------------------
  coupl p_lin  ky4p  0.  5e6
  coupl cuser0 cuser0  point1l -10.  0 0   point2l 10. 0 0  ky4p esys3 y
#
#       d1      d2      d3      d4      d5      d6
        1e6     2e6     3e6     4e6     5e6     6e6
#
  s_var sngl cuser0.d1
  s_var sngl cuser0.d2
  s_var sngl cuser0.d3
  s_var sngl cuser0.d4
  s_var sngl cuser0.d5
  s_var sngl cuser0.d6

#
#  coupl `k`
# ----------------------------------------------------------
  coupl p_lin kyp  0.  5e6
  coupl k     Kl   point1l -10 2 2  point2l 10 2 2  kyp esys3 y

#
#  coupl `c`
# ----------------------------------------------------------
  coupl p_lin cyp  0.  1e6
  coupl c     Cl   point1l -10 2 2  point2l 10 2 2  cyp esys3 y

###                                                                             
###  Store results                                                              
###  -----------------------------------------------------------                
  substruct store_kz [  # $1= Name of coupling                  
   s_var sngl $1.d s_var sngl $1.F  s_var sngl $1.l             
#                                                               
   s_var sngl $1.dx  s_var sngl $1.dy  s_var sngl $1.dz         
   s_var sngl $1.df  s_var sngl $1.dk  s_var sngl $1.dp         
   s_var sngl $1.Fx  s_var sngl $1.Fy  s_var sngl $1.Fz         
   s_var sngl $1.Mf  s_var sngl $1.Mk  s_var sngl $1.Mp         
#                                                               
   s_var sngl $1.F1x  s_var sngl $1.F2x                         
   s_var sngl $1.F1y  s_var sngl $1.F2y                         
   s_var sngl $1.F1z  s_var sngl $1.F2z                         
   s_var sngl $1.M1f  s_var sngl $1.M2f                         
   s_var sngl $1.M1k  s_var sngl $1.M2k                         
   s_var sngl $1.M1p  s_var sngl $1.M2p                         
  ]
  in_substruct store_kz [ cuser0  ]
  in_substruct store_kz [ Kl      ]
  in_substruct store_kz [ Cl      ]

  s_var sngl point1l.x   s_var sngl point2l.x
  s_var sngl point1l.vx  s_var sngl point2l.vx
  s_var sngl point1l.Fx  s_var sngl point2l.Fx
  s_var sngl point1l.y   s_var sngl point2l.y
  s_var sngl point1l.vy  s_var sngl point2l.vy
  s_var sngl point1l.Fy  s_var sngl point2l.Fy
  s_var sngl point1l.z   s_var sngl point2l.z
  s_var sngl point1l.vz  s_var sngl point2l.vz
  s_var sngl point1l.Fz  s_var sngl point2l.Fz
  s_var sngl point1l.f   s_var sngl point2l.f
  s_var sngl point1l.vf  s_var sngl point2l.vf
  s_var sngl point1l.Mf  s_var sngl point2l.Mf
  s_var sngl point1l.k   s_var sngl point2l.k
  s_var sngl point1l.vk  s_var sngl point2l.vk
  s_var sngl point1l.Mk  s_var sngl point2l.Mk
  s_var sngl point1l.p   s_var sngl point2l.p
  s_var sngl point1l.vp  s_var sngl point2l.vp
  s_var sngl point1l.Mp  s_var sngl point2l.Mp

  eof
Reference Manuals   Calc menu   Input Data Menu   Coupl Menu