3.3  Expansion methods#

Expansion methods seek to estimate the motion at all DOFs of a finite element model based on measured information (typically modeshapes or frequency response functions) and prior, but not necessarily accurate, information about the structure under test in the form of a reference finite element model. As for all estimation techniques, the quality of expansion results is deteriorated by poor test results and/or poor modeling, but good results can be obtained when one or both are accurate.

The d_cor demonstration illustrates modeshape expansion in the SDT. This section summarizes the theory and you are encouraged to download [22][23] from sdtools.com if you want more details.

3.3.1  Underlying theory for expansion methods#

The unified perspective driving the SDT architecture is detailed in [22][23]. The proposed classification is based on how various methods combine information about test and modeling errors.

Test results yTest and expanded shapes qex are related by the observation equation (4.1). Test error is thus measured by a norm of the difference between the test quantity and the observed expanded shape

 
    (3.6)

where the choice of the Q norm is an important issue. While the Euclidean norm (Q=I) is used in general, a norm that takes into account an estimated variance of the various components of yTest seems most appropriate. Various energy based metrics have also been considered in [24] although the motivation for using a energy norm on test results is unclear.

The expanded vector is also supposed to verify an equilibrium condition that depends on its nature. Since the model and test results don't match exactly one does not expect the expanded vector to verify this equation exactly which leads to the definition of a residual. Standard residuals are for modeshapes and for frequency response to the harmonic load F.

Dynamic residuals correspond to generalized loads, so they should be associated to displacement residuals and an energy norm. A standard solution [25] is to compute the static response to the residual and use the associated strain energy, which is a good indicator of modeling error,

 
    (3.7)

where is the stiffness of a reference FEM model and can be a mass-shifted stiffness in the presence of rigid body modes (see section 6.2.4). Variants of this energy norm of the dynamic residual can be found in [24].


like all estimation techniques, expansion methods should clearly indicate a trade-off between test and modeling errors, since both test and model are subject to error. But modeling errors are not easily taken into account. Common expansion techniques thus only use the model to build a subspace of likely displacements.

Interpolation methods, the simplest form of subspace method are discussed in section 3.3.2. Standard subspace methods and their implementation are discussed in section section 3.3.3. Methods taking modeling errors into account are discussed in section 3.3.4.

3.3.2  Basic interpolation methods for unmeasured DOFs#

Translations are always measured in a single direction. By summing the measurements of all sensors at a single physical node, it is possible for triaxial measurements to determine the 3-D motion. Using only triaxial measurements is often economically/technically impossible and is not particularly desirable. Assuming that all unmeasured motions are zero is however often not acceptable either (often distorts the perception of test modeshapes in 3-D wire frame displays).

Historically, the first solutions to this problem used geometrical interpolation methods estimating the motion in less important directions based on measurements at a few selected nodes.

Wire-frame displays can be considered as trivial interpolation methods since the motion between two test nodes is interpolated using linear shape functions.

In the SDT, you can easily implement interpolation methods using matrices which give the relation between measured DOFs tdof and a larger set of deformation DOFs ndof. The easiest approach is typically a use of the fe_sens WireExp command as in the example below

 % generate example, see sdtweb('demosdt.m#Sleeper') 
 cf=demosdt('sleeper');
 TR=fe_sens('wireexp',cf.CStack{'Test'})
 fe_sens('WireExpShow',cf,TR)
 % display partial shapes as cell array
 disp(TR)
 r1=[{''} fe_c(TR.adof([1 3 5]))';
 fe_def('subdof-cell',fe_def('subdef',TR,[1 3 5]),[1 2 46 48]')]

Given an interpolation matrix TR, you can animate interpolated shapes using
cf.def={def,TR}. The interpolation (expansion) matrix TR has fields

  • TR.DOF lists DOFs where the response is interpolated
  • TR.adof lists input DOFs, these should match identifiers in the first column of a sens.tdof field.
  • TR.def give the displacement at all DOFs corresponding to a unit sensor motion. Note as shown in the example above that a 1.08 (1−y) measurement should lead to a negative value on the 1.02 (1y) DOF. The same holds for measurements in arbitrary directions, TR.def should be unity when projected in the measurement direction.

Alternatively, you can set up an observation matrix in feplotfrom the wire expansion display and be able to directly extrapolate your test data as in the example below.

% renew test wireframe
cf=demosdt('sleeper');
% mockup test data with one sensor at a time
d1=struct('def',eye(size(cf.CStack{'Test'}.tdof,1)),'tdof',cf.CStack{'Test'}.tdof(:,1));
% display test data in feplot
cf.def=d1
% generate WireExp display
fe_sens('WireExpCna',cf); feplot

The fe_sens WireExp command considers the wire frame as a coarse FEM model and uses expansion (see section 3.3.3 for details) to generate the interpolation. This is much more general than typical geometric constructions (linear interpolations, spline), which cannot handle arbitrary geometries.

Manual building of the interpolation matrix can be done by filling in the TR.def columns. fe_sens('WireExpShow',cf,TR) can then be used to verify the interpolation associated with each sensor (use the +/- buttons to scan trough sensors).

Starting from a basis of vectors exp.def with non unit displacements at the measurement DOFs, you can use

 TR=exp;TR.adof=tdof(:,1);
 TR.def=exp.def*pinv(fe_c(exp.DOF,tdof)*exp.def);

to minimize the norm of the test error (3.6) for a response within the subspace spanned by exp.def and thus generate a unmeasured DOF interpolation matrix.

3.3.3  Subspace based expansion methods#

If one can justify that true motion can be well represented by a vector within the subspace characterized by a basis T with no more columns than there are sensors (one assumes that the true displacement is of the form {qEx}=[T]{qR}), an estimate of the true response simply obtained by minimizing test error, that is solving the least-squares problem

 
    (3.8)

Modeshape expansion based on the subspace of low frequency modes is known as modal [26] or SEREP [27] expansion. The subtle difference between the two approaches is the fact that, in the original paper, modal expansion preserved test results on test DOFs (DOFs and sensors were assumed to coincide) and interpolated motion on other DOFs. The SDT supports modal expansion using

 yExp = fe_exp(yTest,sens,T) 

where yTest are the measured vectors, sens is the sensor configuration (see fe_sens) or an observation matrix c, and T is a set of target modes (computed using fe_eig or imported from an other FE code).

An advantage of the modal methods is the fact that you can select less target modes that you have sensors which induces a smoothing of the results which can alleviate some of the problems linked to measurement/identification errors.

The study presented in [22] concludes that modal based methods perform very well when an appropriate set of target modes is selected. The only but essential limitation seems to be the absence of design/verification methodologies for target mode selection. Furthermore it is unclear whether a good selection always exists.


Modeshape expansion based on the subspace of static responses to unit displacements at sensors is known as static expansion or Guyan reduction [28].

When expanding modeshapes or FRFs, each deformation is associated to a frequency. It thus seems reasonable to replace the static responses by dynamic responses to loads/displacements at that frequency. This leads to dynamic expansion [29]. In general, computing a subspace for each modeshape frequency is too costly. The alternative of using a single "representative" frequency for all modes was proposed in [30] but suffers from the same limitations as choosing this frequency to be zero (Guyan reduction).

The SDT supports full order static and dynamic expansion using

  yExp=fe_exp(yTest,fTest,sens,m,k,mdof) 

where fTest can a single frequency (0 for static) or have a value for each shape. In the later case, computational times are usually prohibitive so that reduced basis solutions discussed below should be used.

For tests described by observation matrices, the unit displacement problem defining static modes can be replaced by a unit load problem [T] = [K]−1[c]T. For structures without rigid body modes this generates the same subspace as the unit displacement problem. In other cases [K] is singular and can be simply mass-shifted (replaced by KM with α usually taken small when compared to the square of the first flexible frequency, see section 6.2.4).

In practice, static expansion can be restated in the form (3.8) where T corresponds to constraint or modes associated to the load collocated to the output shape matrix characterizing sensors (see  section 6.2). Restating the problem in terms of minimization is helpful if you want to compute your static responses outside the SDT (you won't need to import your mass and stiffness matrices but only the considered static responses).

The weakness of static expansion is the existence of a frequency limit found by computing modes of the structure with all sensors fixed. In many practical applications, this frequency limit is not that low (typically because of lack of sensors in certain areas/directions). You can easily compute this frequency limit using fe_exp.


Full order dynamic expansion is typically too expensive to be considered for a full order model. The SDT supports reduced basis dynamic expansion where you compute dynamic expansion on a subspace combining modes and static responses to loads at sensors. A typical calling sequence combining modeshape computations and static correction would be

 [md0,f0,kd] = fe_eig(m,k,[105 30 1e2]);
 T = [kd \ ((sens.ctn*sens.cna)') md0];
 mdex = fe_exp(IIres.',IIpo(:,1)*2*pi,sens,m,k,mdof,T);

You should note however that the minimum dynamic residual expansion (MDRE) discussed in the next section typically gives better results at a marginal computational cost increase, so that you should only use dynamic expansion to expands FRFs (MDRE for FRFs is not currently implemented in fe_exp) or operational deflection shapes (for which modeling error is hard to define).

3.3.4  Model based expansion methods#

Given metrics on test (3.6) and modeling (3.7) error, one uses a weighted sum of the two types of errors to introduce a generalized least-squares problem

 
    (3.9)

Minimizing (3.9) leads to the cancellation of the derivative with respect to qex:

 
    (3.10)

The difficulty with this expression is that it requires the inversion of the stiffness matrix . To avoid this very time consuming step, one uses the equivalent expression of model error, expressed with the residual displacement field {RD} in place of the residual force field {RL}

 
    (3.11)

The constraint linking {RD} to {RL} can be integrated to the minimization problem using a Lagrange multiplier {λ}

 
    (3.12)

Deriving the expression with respect to the parameters RD, λ, {qex} and using the hypothesis that is real and symmetric (same hypothesis for [Q] but it is always the case and no hypothesis needed for [Z]) leads to the system of equations

 
    (3.13)

From line 1, we have {λ}=−2{RD} and replacing it in the two other lines leads to a problem with the two fields RD and qex, written in the matrix format

 
    (3.14)

The two field expression (3.14) is bigger that the one field (3.10), but it does not need to inverse the stiffness matrix anymore. The only request is that must be a non-singular symmetric matrix with real coefficients, which is achieved using the expression .

MDRE is compatible with parametric models, which is very useful for model updating purpose. The starting point is to define design parameters, as explained in section 6.5.1. The dynamic stiffness can thus be decomposed in the sum of matrices

 
    (3.15)

Using this parameterization, it is possible to decompose the MDRE problem (3.14) the same way (γ is considered as an extra parameter) :

 
    (3.16)

with the reference stiffness used for the displacement residual computations and called Kdr in the code.

To efficiently solve expansion for a large set of design points, each constant matrix is pre-computed as described in up_min SolveMdreInit. Then, from a list a design points p which contain different values of model parameters αi(p), expansion frequency si(p), test shape {yTest(p)} and γ(p) coefficients, MDRE is performed in a loop and results are stored with the command up_min SolveExploop.

MDRE (Minimum Dynamic Residual Expansion) assumes test errors to be zero. MDRE-WE (MDRE With test Error) sets the relative weighting (γj coefficient) iteratively until the desired bound on test error is reached (this is really a way to solve the least-squares problem with a quadratic inequality as proposed in [31]).

When they can be used, they are really superior to subspace methods. The proper strategy to choose the error bound in MDRE-WE is still an open issue but it directly relates to the confidence you have in your model and test results.