id_rm#
Purpose
Create minimal models of MIMO systems and apply reciprocity constraints to obtain scaled modal inputs and outputs.
OUT = id_rm(IN,multi) [psib,cpsi,new_res,new_po] = id_rm(res ,po,ci.IDopt) [phib,cphi,new_res,new_po] = id_rm(Rres,po,ci.IDopt) [psib,cpsi,new_res,new_po] = id_rm(res ,po,ci.IDopt,multi) OUT = id_rm('Command',Curve) % See accepted commands at end of doc
Description
id_rm is more easily called using the idcom GUI figure Postprocessing tab, see section 2.9.
IN is a data structure (see Shapes at IO pairs). Required fields are IN.res residues, IN.po poles, and IN.idopt identification options. Options used by id_rm are .FittingModel (Posit, Complex or Normal modes), .NSNA (number of sensors/actuators), .Reciprocity (not used, 1 FRF or true MIMO), .Collocated (indices of colloc. FRF when using reciprocity).
multi is an optional vector giving the multiplicity for each pole in IN.po.
OUT is a structure with fields (this format is likely to change in the future)
.po | poles with appropriate multiplicity |
.def | output shape matrix (CPSI) |
.DOF | Sensor DOFs at which .DEF is defined |
.psib | input shape matrix (PSIB) |
.CDOF | indices of collocated FRFs |
.header | header (5 text lines with a maximum of 72 characters) |
The low level calls giving res, po and ci.IDopt as arguments are obsolete and only maintained for backward compatibility reasons.
As shown in more detail in section 2.9, the residue matrix Rj of a single mode is the product of the modal output by the modal input.
For a model in the residue form (residue res, poles po and options IDopt identified using id_rc for example), id_rm determines the modal input psib and output cpsi matrices such that
(10.28) |
The residues can be either complex mode residues or normal mode residues. In that case the normal mode input phib and output cphi matrices are real.
The new_res matrix is the minimal approximation of res corresponding to the computed input and output matrices. id_rm uses the number of sensors IDopt(7) and actuators IDopt(8).
For MIMO systems (with the both the number of sensors IDopt(7) and actuators IDopt(8) larger than 1), a single mode has only a single modal output and input which implies that the residue matrix should be of rank 1 (see section 2.9.1). Residue matrices identified with id_rc do not verify this rank constraint. A minimal realization is found by singular value decomposition of the identified residue matrices. The deviation from the initial model (introduced by the use of a minimal model with isolated poles) is measured by the ratio of the singular value of the first deleted dyad to the singular value of the dyad kept. For example the following output of id_rm
Po # freq mul Ratio of singular values to maximum 1 7.10e+02 2 : 0.3000 k 0.0029
indicates that the ratio of the second singular value to the first is significant (0.3) and is kept, while the second dyad can be neglected (0.0029).
For a good identification, the ratios should be small (typically below 0.1). Large ratios usually indicate poor identification and you should update the poles using id_rc in a broad or narrow band update. Occasionally the poles may be sufficiently close to be considered as multiple and you should keep as many dyads as the modal multiplicity using the input argument multi which gives the multiplicity for each pole (thus the output shown above corresponds to a multiplicity of 2). Note that you can use multi=struct('Tol',.3) to use a tolerance based multiplicity.
id_rm also enforces reciprocity conditions in two cases
- IDopt(12)=1. One transfer function is declared as being collocated. Reciprocity is only applied on the input and output coefficients linked to the corresponding input/output pair.
- IDopt(12)=na. As many collocated transfer functions as actuators are declared. The model found by id_rm is fully reciprocal (and minimal of course).
- in other cases IDopt(12) should be either 0 (no collocated transfer) or equal to -nc (nc collocated transfers but reciprocal scaling is not desired).
It is reminded that for a reciprocal system, input and output shape matrices linked to collocated inputs/outputs are the transpose of each other (b=cT). Reciprocal scaling is a requirement for the determination of non-proportionally damped normal mode models using id_nor.
In MIMO cases with reciprocal scaling, the quality indication given by id_rm is
Po# freq mul sym. rel.e. 1 7.10e+02 2 : 0.0038 0.0057
which shows that the identified residue was almost symmetric (relative norm of the anti-symmetric part is 0.0038), and that the final relative error on the residue corresponding to the minimal and reciprocal MIMO model is also quite small (0.0057).
Warnings
- id_rm is used by the functions: id_nor, res2nor, res2ss
- Collocated force to displacement transfer functions have phase between 0 and -180 degrees, if this is not true you cannot expect the reciprocal scaling of id_rm to be appropriate and should not use id_nor.
- id_rm only handles complete MIMO systems with NS sensors and NA actuators.
PermuteIO#
The C1=id_rm('permuteIO',C1); command renumbers transfer functions to use the reference order of sensors at each actuator in the case of hammer tests where there are more input locations than outputs.
FixSign#
The C1=id_rm('FixSign',C1); applies sign changes on sensors and inputs to generate positive sign transfers or modeshapes.
Mass#
id_rm('Mass',Id); is the low level implementation of generalized mass extraction.
See also