fe_reduc#

Purpose

Utilities for finite element model reduction.

Syntax

 SE = fe_reduc('command options',model)
 TR = fe_reduc('command options',model)

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 a command detailed later and a model (see section 7.6). Obsolete low level calls are detailed at the end of this section. Generic options for the command are

  • -matdes can be used to specify a list of desired matrices. Default values are -matdes 2 1 for mass and stiffness, see details in section 4.10.7.
  • -SE is used to obtain the output (reduced model) as a superelement SE. Details about the fields of superelement data-structures are given section section 6.3.2.
  • model.Dbfile can be used to specify a -v7.3 .mat file to be used as database for out of core operations.
  • -hdf is used to request the use of out of core operations.

When using a model with pre-assembled matrices in the .K field, boundary conditions must not be eliminated to avoid reassembly in fe_reduc which is indicated by the message Assembling model.

 [SE,CE] = fe_case(model,'assemble -matdes 2 1 -SE -NoT');
 SE=stack_set(SE,'case','Case 1',CE);

Accepted fe_reduc commands are

Static, CraigBampton#

Static computes static or Guyan condensation. CraigBampton appends fixed interface modes to the static condensation.

Given a set of interface DOFs, indexed as I, and other DOFs C, the static responses to unit displacements are given by

 
    (10.19)

which is the static basis (also called constraint modes in the Component Mode Synthesis literature). For Craig-Bampton (6.89), one appends fixed interface modes (with qI=0). Note that you may get an error if the interface DOFs do not constrain rigid body motion so that KCC is singular.

The interface DOFs should be specified using a DofSet case entry. The interface DOFs are defined as those used in the DofSet. The complementary DOF are determined by exclusion of the interface DOF from the remaining active DOFs.

model=demosdt('volbeam');
% Define interface to be xyz DOF at nodes 2,3
model=fe_case(model,'DofSet','IN', ...
    feutil('getdof',[2;3],[.01;.02;.03]));
% statically reduced model
ST=fe_reduc('Static',model);
% For Craig Bampton specify eigenvalue options
model=stack_set(model,'info','EigOpt',[5 10 0]);
CB=fe_reduc('CraigBampton',model);

Available command options are

  • NM is the number of desired modes, which should be specified in an info,EigOpt stack entry which allow selection of the eigenvalue solver (default is 5, Lanczos). Note that using NM=0 corresponds to static or Guyan condensation.
  • -SE is used to obtain the output as a superelement SE. Without this argument, outputs are the rather obsolete list [T,sdof,f,mr,kr] where f is the frequency of fixed interface modes.
  • -shift allows the use of a non-zero shift in the eigenvalue solution for the fixed interface modes. The interior matrix Kcc is only factored once, so using a shifted matrix may result in poor estimates of rigid body modes.
  • -useDOF recombines the fixed interface modes to associate shape with a specific interior DOF. This can ease the manipulation of the resulting model as a superelement.
  • -drill. Shell elements may not always use drilling stiffness (5 DOF rather than 6), which tends to cause problems when using 6 DOF interfaces. The option calls model.il=p_shell('SetDrill 0',model.il) to force the default 6 DOF formulations.
  • -Load appends static correction for defined loads to the model.

mdl=fesuper(mdl,'setTR',name,'fe_reduc command') calls fe_reduc to assemble and reduce the superelement. For example
mdl=fesuper(mdl,'SetTR','SE1','CraigBampton -UseDof -drill');

Switching to out of core solver using .mat files is based on the value of sdtdef('OutOfCoreBufferSize') given in Mb. For a sufficiently large RAM, you may want to use larger values sdtdef('OutOfCoreBufferSize',1024*8) for 8 GB.

Free ... #

The standard basis for modal truncation with static correction discussed in section 6.2.3 (also known as McNeal reduction). Static correction is computed for the loads defined in the model case (see fe_case). Accepted command options are

  • EigOpt should be specified in an info,EigOpt stack entry. For backward compatibility these fe_eig options can be given in the command and are used to compute the modeshapes. In the presence of rigid body modes you must provide a mass shift.
  • Float=1 is used to obtain the standard attachment modes (6.85) in the presence of rigid body modes. Without this option, fe_reduc uses shifted attachment modes (6.86), when a non zero shift is given in EigOpt. This default is typically much faster since the shifted matrix need not be refactored, but may cause problem for relatively large negative shifts.

    Float=2 uses an inertia balancing with respect to computed modes.

  • -SE is used to obtain the output as a superelement SE.
  • -bset returns information about loads to be applied in a system where enforced motion (fe_load DofSet) entries are defined.
  • -FirstCB implements first order correction for damping terms associated with viscous or hysteretic damping.

dynamic w#

[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.

flex [,nr]#

[T,rbdof,rb]=fe_reduc('flex', ...) computes the static response of flexible modes to load b (which can be given as bdof)

 
    (10.20)

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:

  • Determine the flexible load associated to b that does not excite the rigid body modes bFlex = ([I] −[M φR][φRTMφR]−1R]T)[b]
  • Compute the static response of an isostatically constrained model to this load
     
        (10.21)
  • Orthogonalize the result with respect to rigid body modes
    qFlex = ([I] −[φR][φRTMφR]−1RTM])[qIso]

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 [44] 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

 
    (10.22)

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#

[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.

obsoletem,k,mdof (obsolete format)#

Low level calling formats where matrices are provided are still supported but should be phased out since they do not allow memory optimization needed for larger models.

mmass matrix (can be empty for commands that do not use mass)
kstiffness matrix and
mdofassociated DOF definition vector describing DOFs in m and k. When using a model with constraints, you can use mdof=fe_case(model,'gettdof').
binput shape matrix describing unit loads of interest. Must be coherent with mdof.
bdofalternate load description by a set of DOFs (bdof and mdof must have different length)
rdofcontains 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.

For CraigBampton, the calling format was fe_reduc('CraigBampton NM Shift Options',m,k,mdof,idof);.

See also

fe2ss, fe_eig, section 6.2