Contents  
Functions  
Index
 
 PDF |
Purpose
Utilities for finite element model reduction.
Syntax
[T,rdof,rb] = fe_reduc('command',m,k,mdof,b,rdof)
Description
fe_reduc provides standard ways of creating and handling bases (rectangular matrix T) of real vectors used for model reduction (see details in section 6.2). Input arguments are
| m | mass matrix (can be empty for commands that do not use mass) |
| k | stiffness matrix and |
| mdof | associated DOF definition vector describing DOFs in m and k. When using a model with constraints, you can use mdof=fe_case(model,'gettdof'). |
| b | input shape matrix describing unit loads of interest. Must be coherent with mdof. |
| bdof | alternate load description by a set of DOFs (bdof and mdof must have different length) |
| rdof | contains definitions for a set of DOFs forming an iso-static constraint (see details below). When rdof is not given, it is determined through an LU decomposition done before the usual factorization of the stiffness. This operation takes time but may be useful with certain elements for which geometric and numeric rigid body modes don't coincide. |
Accepted fe_reduc commands (see the commode help for hints on how to build commands and understand the variants discussed in this help) are
[T,sdof,f,mr,kr]=fe_reduc('CraigBampton NM Shift Output',m,k,mdof,idof); computes the Craig-Bampton reduction basis (6.60) associated with interface DOFs idof. This basis is a combination of constraint modes and fixed interface modes (whose frequencies are returned in f). The fixed interface modes are obtained using fe_eig method 6 (IRA/Sorensen).
Note that using NM=0 corresponds to static or Guyan condensation.
mdl=fesuper(mdl,'setTR',name,'fe_reduc command') calls fe_reduc to assemble and reduce the superelement. The command modifier -drill can be added to the fe_reduc command to consider drilling stiffness in shells. For example mdl=fesuper(mdl,'SetTR','SE1','CraigBampton -UseDof -drill');
[T,rbdof,rb]=fe_reduc('dynamic freq', ...) computes
the dynamic response at frequency w to loads b. This
is really the same as doing (-w^2*m+k)\b but can be
significantly faster and is more robust.
[T,rbdof,rb]=fe_reduc('flex', ...) computes the static response of flexible modes to load b (which can be given as bdof)
| [KFlex−1][b] = |
|
|
where NR is the number of rigid body modes. These responses are also called static flexible responses or attachment modes (when forces are applied at interface DOFs in CMS problems).
The flexible response is computed in three steps:
| [qIso]=[ |
| ] [bFlex] |
where it clearly appears that the knowledge of rigid body modes and of an isostatic constraint is required, while the knowledge of all flexible modes is not (see [33] for more details).
By definition, the set of degrees of freedom R (with other DOFs noted Iso) forms an isostatic constraint if the vectors found by
| [φR]=[ |
| ] =[ |
| ] |
span the full range of rigid body modes (kernel of the stiffness matrix). In other words, displacements imposed on the DOFs of an isostatic constraint lead to a unique response with no strain energy (the imposed displacement can be accommodated with a unique rigid body motion).
If no isostatic constraint DOFs rdof are given as an input argument, a lu decomposition of k is used to find them. rdof and rigid body modes rb are always returned as additional output arguments.
The command flexnr can be used for faster computations in cases with no rigid body modes. The static flexible response is then equal to the static response and fe_reduc
provides an optimized equivalent to the MATLAB command k\b.
[rb,rbdof]=fe_reduc('rb',m,k,mdof,rbdof) determines rigid body modes (rigid body modes span the null space of the stiffness matrix). The DOFs rbdof should form an isostatic constraint (see the flex command above). If rbdof is not given as an input, an LU decomposition of k is used to determine a proper choice.
If a mass is given (otherwise use an empty [ ] mass argument), computed rigid body modes are mass orthonormalized (φRTMφR=I). Rigid body modes with no mass are then assumed to be computational modes and are removed.
[T,tdof]=fe_reduc('static',m,k,mdof,bdof) computes the static responses to unit imposed displacements on the DOFs given in bdof. The output argument tdof is a version with no wild cards of the input argument bdof. If the DOFs in bdof are indexed I and the other C, the static responses to unit displacements are given by
| [T]=[ |
| ] =[ |
| ] |
The projection of a model on the basis of these shapes is known as static or Guyan condensation. In the Component Mode Synthesis literature, the static responses to unit deformations of interface DOFs are called constraint modes.
Note that you may get an error if the DOFs in bdof do not constrain rigid body motion so that KCC is singular.
SE=fe_reduc('static struct', ... ) returns the guyan condensation as a unique superelement SE with the reduction basis in SE.TR.
See also
©1991-2008 by SDTools