PURPOSE

Assemble a global system matrix from submatrices and/or define the matrix coefficients by a subroutine you provide.

SYNOPSIS

CALL RSDA (LUS, NUMSF, LUA)
CALL RNDA (LUS, NUMSF, LUA)
CALL CHDA (LUS, NUMSF, LUA)
CALL CSDA (LUS, NUMSF, LUA)
CALL CNDA (LUS, NUMSF, LUA)

INPUT PARAMETERS

OUTPUT PARAMETERS:

None.

FMS PARAMETERS:

The following FMS Parameters are especially important to this routine:
Parameter Description
IPRA Assembly print code
LOWASM First changed equation
MDATAU Call your subroutine to define matrix data

DESCRIPTION:

xxDA Flowchart

This subroutine populates the matrix [A] with data by the following steps:

  1. [A] is initialized to [0]. Therefore, you only need to define the nonzero terms in [A].
  2. Submatrices are added to [A]. For finite element programs, submatrix addition provides the most efficient interface. You may skip submatrix addition by specifying a zero value for the number of submatrix files, NUMSF.
  3. Your subroutine(s) are called to define or modify the matrix data. To use this option, the FMS Parameter MDATAU must be set. In addition, you must provide one or more of the following subroutines:
    Matrix Format Data Type Matrix Symmetry Subroutines Required
    PROFLIE or BLOCK Real Symmetric RSUBLK
    PROFLIE or BLOCK Real Nonsymmetric RSUBLK, RNUBLK
    PROFLIE or BLOCK Complex Hermitian CHUBLK
    PROFLIE or BLOCK Complex Symmetric CSUBLK
    PROFLIE or BLOCK Complex Nonsymmetric CSUBLK, CNUBLK
    SLAB Real Nonsymmetric RNUSLB
    SLAB Complex Nonsymmetric CNUSLB

The assembly process begins with the equation LOWASM, which is an FMS parameter. The default value of 1 should always be used the first time a matrix is assembled. For nonlinear analysis, you may set LOWASM to the first changed equation and FMS will only reassemble the part of the matrix beginning with equation LOWASM.

This subroutine is a subset of the more general assemble- factor subroutine. It is equivalent to one of the following calls:

CALL RSDAF(IDUM, RDUM, 0, LUS, NUMSF, LUA, 0, IDUM, IDUM, 0)
exit CALL RNDAF(IDUM, RDUM, 0, LUS, NUMSF, LUA, 0, IDUM, IDUM, 0)
CALL CHDAF(IDUM, RDUM, 0, LUS, NUMSF, LUA, 0, IDUM, IDUM, 0)
CALL CSDAF(IDUM, RDUM, 0, LUS, NUMSF, LUA, 0, IDUM, IDUM, 0)
CALL CNDAF(IDUM, RDUM, 0, LUS, NUMSF, LUA, 0, IDUM, IDUM, 0)

where IDUM and RDUM are dummy arguments. If you want to perform assembly as a separate step and your matrix is initialized to [0], you may use this subroutine. Otherwise the more general assemble-factor subroutines should be used.