Contents Functions PDF Index |
Purpose
User interface function for MAC and other vector correlation criteria.
Syntax
ii_mac(cpa,cpb) VC = ii_mac(cpa,cpb,'PropertyName',PropertyValue, ...) [VC,ReS] = ii_mac('PropertyName',PropertyValue, ... ,'Command') ii_mac(Fig,'PropertyName',PropertyValue, ... ,'Command') Result = ii_mac(Fig ,'Command') VC.PropertyName = PropertyValue
Description
The ii_mac function gives access to vector correlation tools provided by the SDT starting with the Modal Assurance Criterion (MAC) but including many others. A summary of typical applications is given in section 3.2 and examples in the gartco demo.
Vector correlations are SDT objects which contain deformations, see va, typically given at test sensors. For criteria using model mass or stiffness matrices see m. Other details about possible fields of VC objects are given after the listing of supported commands below.
GUI
If you use ii_mac without requesting graphical output, the vector correlation object is deleted upon exit from ii_mac. In other cases, the object is saved in the figure so that you can reuse it.
[model,sens,ID,FEM]=demosdt('demopairmac'); % Sample data cf=comgui('guifeplot-reset',2); % force feplot in figure(2); cf.model=model; % Display FEM (contains topology correl in Test) VC=ii_mac(ID,FEM,'sens',sens,'mac plot -cf1'); ii_mac(1,'showdock3',struct('cfb',cf,'cfa',4,'dockpos','13')) ii_mac(1,'mac Error')
You can add data to other fields or call new commands from the command line by starting the ii_mac call with a pointer to the figure where the vector correlation is stored (ii_mac(fig,'Command'), ...). An alternate calling form is to set a field of the vector correlation object.
The following commands
[cf,def_fem,res_test]=demosdt('demo gartte cor plot'); [m,k,mdof] = fe_mknl(cf.mdl); Sens=fe_case(cf.mdl,'sens'); figure(1); subplot(221); VC=ii_mac(1);% Make figure(1) current so that ii_mac uses it ii_mac(VC,res_test,def_fem,'labela','Test','labelb','FEM', ... 'sens',Sens,'Mac Pair Plot'); subplot(212);ii_mac(VC,'comac'); % set new axis and display other criterion VC.m = m; VC.kd = ofact(k+1e1*m); subplot(222); ii_mac(VC,'MacMPairPlot');
illustrate a fairly complex case where one shows the MAC in subplot(221), all three COMAC indicators in subplot(212), then provide mass and a mass-shifted stiffness to allow computation of the mass condensed on sensors and finally show the reduced mass weighted MAC in subplot(222).
The II_MAC menu lets you choose from commands that can be computed based on the data that you have already provided. The context menu associated with plots generated by ii_mac lets you start the cursor, display tabular output, ...
You can link deformations shown in a feplot figure to a MAC plot using
[model,sens,ID,FEM]=demosdt('demopairmac'); cf=feplot(model); cf.def(1)=ID; % display test as first def set cf.def(2)=FEM; % display FEM as second def set % overlay & show interactive MAC in fig 1: figure(1);clf;fecom('show2def-mac1') ii_mac(1,'mac table');
Main commands
By default, the commands plot the result in a figure. Options valid for all commands are
Data fields are defined using name, value pairs.
The Modal Assurance Criterion (MAC) [4] is the most widely used criterion for vector correlation (mainly because of its simplicity).
The MAC is the correlation coefficient of vector pairs in two vector sets cpa and cpb defined at the same DOFs (see ii_mac va for more details). In general cpa corresponds to measured modeshapes at a number of sensors {cφ_{ id j}} while cpb corresponds to the observation of analytical modeshapes [c]{φ_{k}}. The MAC is given by
MAC_{j k} = |
| (10.9) |
For two vectors that are proportional the MAC equals 1 (perfect correlation). Values above 0.9 are generally considered as well correlated. Values below 0.6 should be considered with much caution (they may or may not indicate correlation).
The commands and figure below shows the standard 2-D (obtained using the context menu or view(2)) and 3-D (obtained using the context menu or view(-130,20)) representations of the MAC supported by ii_mac. The color and dimensions of the patches associated to each vector pair are proportional to the MAC value.
[model,sens,ID,FEM]=demosdt('demopairmac'); figure(1);clf;VC=ii_mac(1); ii_mac(VC,ID,FEM,'sens',sens,'mac paira plot') ii_mac(VC,'mac paira table');
The basic MAC shows vector pairs for all vectors in the two sets. Specific command options are
Strong correlation of physically different vectors is an indication of poor test design or poor choice of weighting. MacAutoA (B) compute the correlation of cpa (cpb) with itself. Off diagonal terms should be small (smaller than 0.1 is generally accepted as good practice).
By default this command displays a plot similar to the one shown below where the diagonal of the paired MAC and the corresponding relative error on frequencies are shown. For text output see general command options.
This is an example of how to use of the MACError command. In this example, the only significant errors are associated with mode crossing so that the .Combine gives a nearly perfect coerrelation.
[model,sens,ID,FEM]=demosdt('demopairmac'); figure(1);subplot(121);VC=ii_mac(1); ii_mac(VC,ID,FEM,'sens',sens,'mac pairA plot',struct('Df',.2)); subplot(122);ii_mac(VC,'macerror plot',struct('Df',.2)); ii_mac(VC,'macerror table',struct('MinMAC',.6,'Df',.2,'Combine',.1));
A few things you should know ...
The MACCo criterion is a what if analysis. It takes modes in cpa, cpb and computes the paired MAC or MAC-M with one sensor removed. The sensor removal leading to the best mean MAC for the paired modes is a direct indication of where the poorest correlation is found. The algorithm removes this first sensor then iteratively proceeds to remove ns other sensors (the default is 3). The MACCo command used with command option text prints an output of the form
Test 1 2 3 4 5 6 7 8 FEM 7 8 11 10 11 12 13 14 Sensor Mean All 87 100 99 60 86 53 100 98 100 1112z 88 100 99 59 90 62 100 98 100 1301z 89 100 99 62 90 64 100 98 100 1303z 90 100 98 66 90 66 100 98 100
where the indices for the vectors used in the pairing are shown first, then followed by the initial mean MAC and MAC associated to each pair. The following lines show the evolution of these quantities when sensors are removed. Here sensor 1112z has a strong negative impact on the MAC of test mode 5.
The sensor labels are replaced by sensor numbers if the sensor configuration sens is not declared.
By default the MACCO command outputs a structure in which field .data contains in its first column the sensor or index removed and the resulting MAC evolution of paired modes in the following columns. The field .xlabel contains the sensor labels or indices.
Command option plot will plot in the ii_mac figure the MAC evolutions as function of the sensors removed. Command option text will output the result as text.
This is an example of how to use of the MACCO command
% To see the result [model,sens,ID,FEM]=demosdt('demopairmac'); figure(1);clf;VC=ii_mac(1); ii_mac(VC,ID,FEM,'sens',sens, ... 'inda',1:8, ... % Select test modes to pair 'macplot') % See sensors for each mode r1=ii_mac(VC,'inda',1:8,'MacCo',struct('Table',1,'ByMode',1,'N',5)); % See sensors improving mean modes r2=ii_mac(VC,'inda',1:8,'MacCo',struct('Table',1,'N',5)); % Numeric values stored in r1 and r2.
When cpa and cpb are defined at finite element DOFs, it is much more appropriate to use a mass weighted form of the MAC defined as
MAC−M_{jk} = |
| (10.10) |
called with ii_mac( ... 'm',m,'MacM Plot'). If vectors are defined as sensors, the problem is to define what the mass should be. The standard approach is to use the static condensation of the full order model mass on the sensor set. When importing an external reduced mass matrix, just define the mass as shown above, when using SDT, see the ii_mac mc section below.
If cpa is defined at sensors and cpb at DOFs, ii_mac uses the sensor configuration sens to observe the motion of cpb at sensors. If cpa is defined at DOFs and cpb at sensors, ii_mac calls fe_exp to expand cpb on all DOFs.
The MAC-M can be seen as a scale insensitive version of the Pseudo-Orthogonality check (also called Cross Generalized Mass criterion) described below.
The COMAC command supports three correlation criteria (N nominal, S scaled and E enhanced) whose objective is to detect sensors that lead to poor correlation. You can compute all or some of these criteria using the n, s, or e options (with no option the command computes all three). Sensors are given in the nominal order or sorted by decreasing COMAC value (sort command option).
These criteria assume the availability of paired sets of sensors. The COMAC commands thus start by pairing modes (it calls MacPair or MacMPair) to pair vectors in cpb to vectors in cpa. The B command option can be used to force pairing against vectors in set B (rather than A which is the default value).
The nominal Coordinate Modal Assurance Criterion (COMAC) measures the correlation of two sets of similarly scaled modeshapes at the same sensors. The definition used for the SDT is
COMAC_{l} = 1− |
| (10.11) |
which is 1 minus the definition found in [56] in order to have good correlation correspond to low COMAC values.
The assumption that modes a similarly scaled is sometimes difficult to ensure, so that the scaled COMAC is computed with shapes in set B scaled using the Modal Scale Factor (MSF)
{cφ_{jB}}= {cφ_{jB}}MSF_{j}={cφ_{jB}} |
| (10.12) |
which sets the scaling of vectors in set B to minimize the quadratic norm of the difference between {cφ_{jA}} and {cφ_{jB}}.
The enhanced COMAC (eCOMAC), introduced in [57], is given by
eCOMAC_{l} = |
| (10.13) |
where the comparison is done using modeshapes that are vector normalized to 1
{c_{l}φ_{jA}}={cφ_{jA}}/ | ⎪⎪ ⎪⎪ | cφ_{jA} | ⎪⎪ ⎪⎪ |
This is an example of how to use of the COMAC command
[model,sens,ID,FEM]=demosdt('demopairmac'); figure(1);clf;VC=ii_mac(1); ii_mac(VC,ID,FEM,'sens',sens,'comac plot') ii_mac(VC,'comac table');
The orthogonality conditions (6.89) lead to a number of standard vector correlation criteria. The pseudo-orthogonality check (POC) (also called Cross Generalized Mass (CGM)) and the less commonly used cross generalized stiffness (CGK) are computed using
µ_{jk} = {φ_{jA}}^{T} [M] {φ_{kB}} κ_{jk} ={φ_{jA}}^{T}[K]{φ_{kB}} (10.14) |
where for mass normalized test and analysis modes one expects to have µ_{jk}≈ δ_{jk} and κ_{jk}≈ ω_{j}^{2}δ_{jk}.
For matched modes, POC values differing significantly from 1 indicate either poor scaling or poor correlation. To distinguish between the two effects, you can use a MAC-M which corresponds to the square of a POC where each vector would be normalized first (see the MacM command).
Between unmatched modes, POC values should be close to zero. In some industries, off-diagonal cross POC values below 0.1 are required for the test verification of a model.
The PairA, PairB, Plot, Table options are available for POC just as for the MAC.
For scaled matched modeshapes, the relative error
e_{j} = |
| (10.15) |
is one of the most accurate criteria. In particular, it is only zero if the modeshapes are exactly identical and values below 0.1 denote very good agreement.
The rel command calls MacPair to obtain shape pairs and plots the result of (10.15).
For uncalled matched modeshapes, you may want to seek for each vector in set B a scaling coefficient that will minimize the relative error norm. This coefficient is known as the modal scale factor and defined by
MSF_{j} = |
| (10.16) |
The RelScale command calls MacPair to obtain shape pairs, multiplies shapes in set B by the modal scale factor and plots the result of (10.15).
With the M option, the MacPairM is used to obtain shape pairs, kinetic energy norms are used in equations (10.15)-(10.16).
This is an example of how to use the Rel command
[model,sens,ID,FEM]=demosdt('demopairmac'); ii_mac(ID,FEM,'sens',sens,'rel');
The following sections describe standard fields of VC vector correlation objects and how they can be set.
VC.va | vector set A detailed below |
VC.vb | vector set B detailed below. |
VC.sens | sensor description array describing the relation between the DOFs of cpb and the sensors on which cpa is defined. |
VC.m | full order mass matrix |
VC.mc | reduced mass matrix defined at sensors (see definition below) |
VC.qi | sensor confidence weighting |
VC.k | full order stiffness matrix |
VC.kd | factored stiffness or mass shifted stiffness matrix |
VC.T | reduced basis used for dynamic expansion |
ii_mac uses two data sets referenced in VC.va and VC.vb and extracts shapes at sensors using the get_da_db command shown below. All standard input formats for shape definition are accepted
FigHandle=figure(1); ii_mac(FigHandle,'cpa',shapes_as_col,'labela','Test', ... 'cpb',shape2, ... % Define vb 'mac'); % define command
sens, when defined (see section 4.6 for the generation of sensor configurations), does not use the results defined in VC.va but their observation given by VC.sens.cta*VC.va.def (same for VC.vb).
The illustration below uses a typical identification result ID, a FEM result FEM and observes on sensors.
[model,sens,ID,FEM]=demosdt('demopairmac -open') figure(1);[r1,VC]=ii_mac(ID,FEM,'sens',sens, ... 'indb',7:20,'mac plot'); [da,db]=ii_mac(VC,'get_da_db')
The da.def and db.def fields are always assumed to be observed at the same sensors (correspond to the cpa, cpb fields if these are defined).
To support expansion, cpa is defined at DOFs and cpb at sensors, ii_mac calls fe_exp to expand cpb on all DOFs.
For criteria that use vectors defined at DOFs, you may need to declare the mass and stiffness matrices. For large models, the factorization of the stiffness matrix is particularly time consuming. If you have already factored the matrix (when calling fe_eig for example), you should retain the result and declare it in the kd field.
The default value for this field is kd=ofact(k,'de') which is not appropriate for structures with rigid body modes. You should then use a mass-shift (kd = ofact( k + alpha*m,'de'), see section 6.2.4).
The SDT supports an original method for reducing the mass on the sensor set. Since general test setups can be represented by an observation equation (4.1), the principle of reciprocity tells that [c]^{T} corresponds to a set of loads at the location and in the direction of the considered sensors. To obtain a static reduction of the model on the sensors, one projects the mass (computes T^{T}MT) on the subspace
[T] = [T] [cT]^{−1} with [K] [T] = [c]^{T} (10.17) |
In cases where the model is fixed [K] is non-singular and this definition is strictly equivalent to static/Guyan condensation of the mass [16]. When the structure is free, [K] should be replaced by a mass shifted [K] as discussed under the kd field above.
Reduced basis expansion methods were introduced in [16]. Static expansion can be obtained by using T defined by (10.17).
To work with dynamic or minimum residual expansion methods, T should combine static shapes, low frequency modes of the model, the associated modeshape sensitivities when performing model updating.
Modeshape expansion is used by ii_mac when cpa is full order and cpb is reduced. This capability is not currently finalized and will require user setting of options. Look at the HTML or PDF help for the latest information.
See also
ii_comac, fe_exp, the gartco demonstration, section 3.2