The compliance matrix for a system, [C], is defined as the partial derivatives of displacements with respect to applied forces:
[C] = [ dx / df ]
If a system is assumed to be linear, the compliance matrix can be used to predict the system movement due to force inputs:
{Dx} = [C]{Df}
From this perspective, matrix element C(i,j) is the displacement of system degree of freedom i due to a unit force or moment at degree of freedom j.
Assuming markers 1 and 2 to represent left wheel and right wheel center markers, in the above figure, the sign conventions followed in SVC can be explained as follows:
The compliance matrix for the above model is a 12x12 matrix given by C(i,j)
where,
i = 1-6 degrees of freedom of marker 1
i = 7-12 degrees of freedom of marker 2
j = 1-6 forces and moments at marker 1
j = 7-12 forces and moments at marker 2
Therefore:
C(3,3) Vertical displacement of marker 1 due to a unit positive vertical force at marker 1
C(3,9) Vertical displacement of marker 1 due to a unit positive vertical force at marker 2
-C(3,3) Vertical displacement of marker 1 due to a unit negative vertical force at marker 1
-C(3,9) Vertical displacement of marker 1 due to a unit negative vertical force at marker 2
C(9,3) Vertical displacement of marker 2 due to a unit positive vertical force at marker 1
C(9,9) Vertical displacement of marker 2 due to a unit positive vertical force at marker 2
-C(9,3) Vertical displacement of marker 2 due to a unit negative vertical force at marker 1
-C(9,9) Vertical displacement of marker 2 due to a unit negative vertical force at marker 2
Displacements and forces are calculated in global coordinates.
Most of the SVC calculations are based on the compliance matrix for the vehicle's suspension. This appendix explains how compliance matrix is computed in Adams, and how it is modified before being used for the SVC computations.
The subroutine GTCMAT is the utility subroutine that computes the compliance matrix for markers in an Adams model. This is done by inverting the Jacobian matrix from a static equilibrium solution (See
GTCMAT for more information). Depending on the model, the compliance matrix may be useful directly, or may need to be modified. Two utility subroutines allow you to modify the compliance matrix. The first removes unwanted freedom from the system; the second, unwanted resistance.
Subroutine SVCRMV constrains a degree of freedom to zero, in effect fixing it to ground. This is necessary to restrain the vehicle body in a full vehicle model, for instance. The suspension characteristics are a function of spindle compliance relative to the body. But the body is free to move, so the reported vertical compliance at the spindle, for example, reflects the fact that the body will rise along with the suspension when the spindle is lifted. Fixing the kth degree of freedom changes the compliances because a restraining force is applied at k. The new compliance matrix, [Cm], is computed term by term:
cmij = cij + cikFk
Fk = -ckj/ckk, where Fk is the restraining force at k due to a force at j.
The kth column and row of [Cm] are, by definition, zeros and can be removed from the matrix, reducing its order by one, and leaving a new matrix reflecting the behavior of the modified system.
SUBROUTINE SVCRMV(K, C, TEMP, NDIM, N)
INTEGER K - input, the DOF to be removed. K must be greater than zero and less than or equal to N.
DOUBLE PRECISION C(NDIM,N) - input and output, compliance matrix. On input, C is the original order N compliance matrix. On output, C is the modified order (N-1) matrix. You must dimension C with exactly NDIM rows and at least N columns.
DOUBLE PRECISION TEMP(N) - output, temporary workspace for SVCRMV
INTEGER NDIM - input, dimensioned number of rows in C
INTEGER N - initial order of C
Subroutine SVCRMK removes the effects of unwanted stiffness. To continue the example above, even after removing the vehicle body degrees of freedom from a suspension compliance matrix, the spring forces from the tires would still obscure the true vertical suspension rate.
The stiffness matrix for the spindle has two components, one from its connection to the vehicle through the suspension, and one from its connection to ground via the tires: [K] = [Ks] + [Kt. In order to examine the spindle compliances with respect to the body alone, the effects of [Kt] must be removed:
[I] = [C]([Ks] + [Kt])
[I] = [C][Ks] + [C][Kt]
[I] - [C][Kt] = [C][Ks]
([I] - [C][Kt]) [Ks]-1 = [C]
or ([I] - [C][Kt]) [Cs] = [C], where [Cs] = [Ks]-1
The suspension compliance matrix, [Cs], can be calculated one column at a time:
[A]{csj} = {cj}, where [A] = [I] - [C][Kt]
Subroutine SVCRMK performs this modification given the original compliance matrix and the stiffness matrix to be removed. Since it was intended to remove tire stiffnesses, it assumes the ground stiffness matrix is diagonal.
SUBROUTINE SVCRMK( C, KG, NDIM, N )
DOUBLE PRECISION C(NDIM,N) - input and output, compliance matrix. On input, C is the original compliance matrix. On output, it is the modified matrix.
DOUBLE PRECISION KG(N) - input, stiffnesses of ground attachments. This is the diagonal of matrix [Kt] in the example above.
INTEGER NDIM - input, dimensioned number of rows in C
INTEGER N - input, order of C