Generating Structural Matrices

Matrix generation:

  • is a linear perturbation procedure;

  • allows for the mathematical abstraction of model data such as mesh and material information by generating global or element matrices representing the stiffness, mass, viscous damping, structural damping, and load vectors in a model;

  • generally creates matrices identical to those used in a subspace-based steady-state dynamic procedure (see Subspace-Based Steady-State Dynamic Analysis).

  • includes initial stress and load stiffness effects due to preloads and initial conditions if nonlinear geometric effects are included in the analysis;

  • writes matrix data to a binary .sim file that can be read as input by Abaqus;

  • can output matrix data to text files that can be read as input in other analyses by Abaqus or other simulation software; and

  • can check the quality of the generated global stiffness and mass matrices.

This page discusses:

Matrix Generation

Introduction

A linearized finite element model can be summarized in terms of matrices representing the stiffness, mass, damping, and loads in the model. Using these matrices, you can exchange model data between other users, vendors, or software packages without exchanging mesh or material data. Matrix representations of a model prevent the transfer of proprietary information and minimize the need for data manipulation.

The matrix generation procedure is a linear perturbation step (see General and Perturbation Procedures) that accounts for all current boundary conditions, loads, and material response in a model. You can also specify new boundary conditions, loads, and predefined fields within the matrix generation step. The generated matrices are input to a matrix usage model.

The matrix generation procedure uses SIM, which is a high-performance database available in Abaqus. The generated matrices are stored in a file named jobname_Xn.sim, where jobname is the name of the input file or analysis job and n is the number of the Abaqus step that generates the matrices.

Specifying the Matrix Type

You can generate matrices representing the following model features:

  • stiffness,

  • mass,

  • viscous damping,

  • structural damping, and

  • loads.

The load matrix contains integrated nodal load vectors (right-hand sides) for the load cases defined in the matrix generation step. Load cases can be made up of any combination of loadings—distributed loads, concentrated nodal loads, thermal expansion, and load cases defined for any substructures that may be used as part of the model.

When you generate the mass matrix with the mass only at the user-defined nodes, if a finite element has nonzero mass at Abaqus internal nodes, the mass is transferred to the user-defined nodes using heuristic techniques. Mass is redistributed only for modified triangle and tetrahedral elements; no mass is redistributed from internal to user-defined nodes for frame elements and substructures.

Friction Damping Effects

Friction at the contact nodes at which a velocity differential is imposed can give rise to the viscous damping terms. There are two kinds of friction-induced damping effects. The first effect is caused by the friction forces stabilizing the vibrations in the direction perpendicular to the slip direction. This effect exists only in three-dimensional analysis. The second effect is caused by a velocity-dependent friction coefficient. If the friction coefficient decreases with the velocity (which is usually the case), the effect is destabilizing and is also known as "negative damping." For more details, see Coulomb friction. You can include these friction-induced contributions to the generated viscous damping matrix.

Generating Unsymmetric Matrices

Usually, the finite element operators (matrices) are symmetric, but the stiffness and damping matrices can be unsymmetric for a number of special modeling cases. For example:

  • The stiffness matrix is unsymmetric for a model including sliding contact with friction.
  • The viscous damping matrix is unsymmetric if it is generated for a steady-state-rotating model, such as a rolling tire.
  • The viscous damping matrix is unsymmetric if friction-induced contributions are included.
  • Unsymmetric matrices can be added to the model by specifying the matrix input directly, or they can be introduced by unsymmetric substructures.

Abaqus does not automatically generate unsymmetric matrices in these and other cases. You must explicitly select the unsymmetric solver (see Defining an Analysis) for the matrix generation step to obtain correct matrices with unsymmetric contributions.

Some simulations using matrices can include multiple analysis procedures using symmetric and unsymmetric solvers. For example, some analyses can include the following steps:

  • A general static step using the unsymmetric solver.
  • A real frequency extraction step. (Real eigensolvers implemented in Abaqus require the stiffness and mass matrices to be symmetric. Even for the special case of solving the unsymmetric coupled acoustic-structural eigenproblem, we assume that the structural and acoustic operator parts are symmetric and that only the coupling terms violate the symmetry.)

To use matrices generated by Abaqus in such simulations, both symmetric and unsymmetric "versions" of the matrices should be generated. You can generate symmetric and unsymmetric matrices from the same finite element model by specifying two separate matrix generation steps and selecting the unsymmetric solver for one of them (for more information, see Using Matrices).

Generating Element Matrices

By default, the matrix generation procedure generates global matrices for a model in assembled form. The generated global matrices are assembled from the local element matrices and include contributions from matrix input data. Abaqus/Standard offers an option to generate global matrices in element-by-element form. Instead of global (assembled) matrices, local element matrices are generated. If you choose to generate local element matrices for a model containing matrix input data, Abaqus/Standard calculates and stores only element matrices; the matrix input data are ignored.

You can use the matrix assembly utility (Element Matrix Assembly Utility) to assemble element matrices in the SIM document and/or write assembled matrices to text files.

Generating Matrices for a Part of the Model

You can generate matrices for a part of the model defined by an element set, the source contributions, or the physical fields.

Defining the Element Set from Which to Generate Matrices

By default, the matrix generation procedure generates matrices for a whole model. Abaqus/Standard can generate matrices for a part of the model defined by an element set.

Defining the Source Contributions from Which to Generate Matrices

By default, the matrix generation procedure generates matrices from the finite elements and from the matrix input data used in the finite element model. Abaqus/Standard can generate matrices for a part of the model defined by the finite elements only or by the matrix input contributions only.

Defining the Physical Fields from Which to Generate Matrices

You can also define a part of the model for the matrix generation by the physical field. The matrix generation procedure can generate matrices for mechanical and acoustic fields. By default, the matrix generation procedure generates matrices for the structural and acoustic parts of the model. You can generate matrices for only the structural part or for only the acoustic part of the model. Abaqus/Standard does not support generated matrices containing acoustic degrees of freedom in the matrix usage model (see Using Matrices).

Evaluating Frequency-Dependent Material Properties

When frequency-dependent material properties are specified in the model definition, Abaqus/Standard offers the option of choosing the frequency at which these properties are evaluated for use in global matrix generation. If you do not choose the frequency, Abaqus/Standard evaluates the matrices at zero frequency and does not consider the contributions from frequency-domain viscoelasticity.

Applying Multipoint Constraints

If multipoint constraints are used in the model, by default, the generated matrices include only entries for the independent degrees of freedom. You can skip applying the multipoint constraints in the generated model.

Specifying Interface Nodes

You can use the matrix generation procedure to specify some of the nodes as “interface nodes.” By specifying interface nodes, you can reduce the number of nodes required for including matrices in the matrix usage analysis. For example, you may want to identify only the nodes required for attaching a subcomponent (a matrix-based subassembly) to the matrix usage model.

Checking Generated Matrices

In a matrix generation analysis, you can check the quality of the generated global stiffness and mass matrices. The matrix check generates six “artificial” rigid body modes and projects the matrices onto the rigid body modal subspace. It is expected that the projected 6 × 6 stiffness matrix (also known as the rigid body energy matrix) is close to zero in the absence of the boundary conditions and constraints. To perform the stiffness matrix quality check, the boundary conditions and multipoint constraints can be suppressed in the matrix generation procedure. The total inertia statistics for the model are extracted from the projected 6 × 6 rigid body mass matrix. You can specify the center of rotation for creating the artificial rotational rigid body modes and calculating the global inertia tensor.

You can modify the tolerance values to use for the matrix check. If you request the matrix quality check, the check results are printed in the data (.dat) file.

You can decide whether problems reported by the matrix check are treated as errors. By default, problems reported by the matrix check are intended as warnings.

Export

In a matrix generation analysis, you can write generated matrices to files in specific formats for selected workflows.

Initial Conditions

Matrix generation is a linear perturbation procedure. Therefore, the initial state for the matrix generation step is the state of the model at the end of the last general analysis step. The generated matrix includes initial stress and load stiffness effects due to preloads and initial conditions if nonlinear geometric effects are included in the analysis.

Boundary Conditions

Boundary conditions can be defined or modified in a matrix generation step. For more information on defining boundary conditions, see Boundary Conditions. Any boundary conditions that are defined in a matrix generation step will not be used in subsequent general analysis steps (unless they are respecified).

Loads

All types of loads can be applied in the load cases for a matrix generation step. Real and imaginary parts of the load vectors will be generated for the complex loads. For more information on applying loads, see About Loads. Any loads that are defined in a matrix generation step will not be used in subsequent general analysis steps (unless they are respecified).

Predefined Fields

All types of predefined fields can be specified in a matrix generation procedure. For more information on specifying predefined fields, see Predefined Fields. Any predefined fields that are defined in a matrix generation step will not be used in subsequent general analysis steps (unless they are respecified).

Material Options

All types of materials that are available in Abaqus/Standard can be used in a matrix generation procedure.

Elements

All types of elements that are available in Abaqus/Standard can be used in the matrix generation procedure.

Generating Matrices for Models Containing Solid Continuum Infinite Elements

Solid continuum infinite elements (CIN-type elements) have different formulations in static and dynamic analyses. Therefore, when generating matrices for a model containing solid continuum infinite elements, you must specify whether to use the static or dynamic formulation.

Output

In a matrix generation analysis, you can output the stiffness, mass, viscous damping, structural damping, and load matrices to text files. Several formats are available for the matrix output, as discussed below. Matrices are copied from the .sim file and output in text files that use the following naming conventions:

jobname_matrixN.mtx

where jobname is the name of the input file or analysis job, matrix is a four-letter identifier indicating the matrix type (as outlined in Table 1), and N is the number associated with the Abaqus analysis step generating the matrices.

Table 1. Identifiers used in the generated matrix file name.
Identifier Matrix Type
STIF Stiffness matrix
MASS Mass matrix
DMPV Viscous damping matrix
DMPS Structural damping matrix
LOAD Load matrix

For example, if a stiffness matrix generation is performed in the third step of an analysis job named VehicleFrame, the matrix is output to a file named VehicleFrame_STIF3.mtx.

Alternatively, the matrices can be output into a NASTRAN DMIG-s format file that uses the following naming convention:

jobname_XN.bdf

where jobname is the name of the input file or analysis job and N is the number associated with the Abaqus analysis step generating the matrices. For example, if the matrix generation is performed in the third step of an analysis job named VehicleFrame, the matrices are output to a file named VehicleFrame_X3.bdf.

Matrix Input Text Format

This default text format creates matrix files consistent with the format used by the matrix definition technique in Abaqus/Standard (see Using Matrices).

An Abaqus/Standard model may contain user-defined nodes and internal nodes. Abaqus/Standard can internally create nodes associated with internal degrees of freedom (for example, Lagrange multipliers or generalized displacements). This format uses negative numbers as labels of the internal nodes.

Format of the Operator Matrix

The assembled sparse matrix operator data are written to the text file as a series of comma-separated lists. Each row in the file represents a single matrix entry; a row is written as a comma-separated list with the following elements:

  1. Row node label

  2. Degree of freedom for row node

  3. Column node label

  4. Degree of freedom for column node

  5. Matrix entry

Format of the Load Matrix

Nonzero entries in load matrices, which represent right-hand-side vector data, are written to the text file as a comma-separated list with the following elements:

  1. Node label

  2. Degree of freedom

  3. Right-hand-side vector entry

The format of the load vectors and heading labels is based on the Abaqus keyword interface, which allows the generated loads to be easily applied in other Abaqus analyses. Each load vector uses the following headings to indicate the real and imaginary portions of the load:

CLOAD, REAL
CLOAD, IMAGINARY

If the matrix generation step has multiple load cases, the load matrices for each load case are wrapped by the following labels in the generated text file:

LOAD CASEEND LOAD CASE

Including Generated Matrix Data and Generated Loads in Another Abaqus Model

The generated sparse matrix data and generated loads that are output in matrix input text format can be included in another Abaqus model.

Labeling Text Format

This format converts internal Abaqus node labels into large positive numbers that are acceptable for Abaqus matrix input data. This is the only difference between the labeling text format and the default matrix input text format. All nodes of the matrix generated in the labeling text format have positive labels, and Abaqus/Standard analysis treats them as user-defined nodes. That can confuse Abaqus equation solver and result in aborting the analysis or generating incorrect results. You should avoid using this format when it is possible.

Coordinate Text Format

You can generate text files in which the matrix is formatted according to the common mathematical coordinate format. This format is commonly used in mathematics programs such as MATLAB®.

Each row in a coordinate-formatted file corresponds to a matrix entry; a row is written as a comma-separated list with the following elements:

  1. Row number

  2. Column number

  3. Matrix entry

For load matrices, which represent right-hand-side vector data, each row in the text file is written with the following elements:

  1. Equation (row) number

  2. Right-hand-side vector entry

Commented load case options are written to the output file to indicate the load cases.

DMIG Format

You can output the generated matrices into a NASTRAN DMIG-s format (.bdf) file. See NASTRAN documentation for details.

User Element Format

You can output the generated matrices into the format required for linear user element matrix input. Both symmetric and unsymmetric matrices can be generated. The file name containing the matrices includes the job name followed by the letter x and the step number from which the matrix was generated:

jobnameXstep number.UEL

Outputting Matrices in Element-by-Element Form

If matrices are generated in element-by-element form, you can write them in element-by-element form. When you generate text files using the matrix input or labeling format, each row in the file represents a single matrix entry; a row is written as a comma-separated list with the following elements:

  1. Element label

  2. Row node label

  3. Degree of freedom for row node

  4. Column node label

  5. Degree of freedom for column node

  6. Matrix entry

For load matrices, which represent right-hand-side vector data, each row in the text file is written with the following elements:

  1. Element label

  2. Node label

  3. Degree of freedom

  4. Right-hand-side vector entry

Coordinate format is also available for element-by-element global matrix generation. Each row in a coordinate-formatted file corresponds to a matrix entry; a row is written as a comma-separated list with the following elements:

  1. Element number

  2. Row number

  3. Column number

  4. Matrix entry

For load matrices each row in the text file is written with the following elements:

  1. Element number

  2. Equation (row) number

  3. Right-hand-side vector entry

Input File Template

HEADING
…
**
STEP
Options to define the preloading history for the model.
END STEP
**
STEP
MATRIX GENERATE, STIFFNESS, MASS, VISCOUS DAMPING,
STRUCTURAL DAMPING, LOAD
MATRIX OUTPUT, STIFFNESS, MASS, VISCOUS DAMPING,
STRUCTURAL DAMPING, LOAD, FORMAT=MATRIX INPUT
BOUNDARY
Options to define the boundary conditions for the matrix generation step.
**
LOAD CASE, NAME=LC1
Options to define the loading for the first load case.
END LOAD CASE
**
LOAD CASE, NAME=LC2
Options to define the loading for the second load case.
END LOAD CASE
Any number of load cases can be defined.
END STEP