PURPOSE

Compute the matrix triple product, multiply it by a scalar and add it to a matrix:

[S] = [S] + W{B}T[D]{B} (Symmetric)
[S] = [S] + W{B}T[D]{A} (Nonsymmetric)

SYNOPSIS

CALL RSDWTP (W, B, D, S, N, M)
CALL RNDWTP (W, B, D, A, S, N, M)

INPUT PARAMETERS

OUTPUT PARAMETERS:

DESCRIPTION:

This subroutine performs the matrix triple product that is typically used in finite element matrix generation. Before the first call in each element, the matrix values in [S] must be initialized to [0]. The matrix [B] is assumed full to provide for formulations including large deformation. If possible, the columns of matrix [B] should be ordered by increasing global equation number. This ordering produces a matrix [S] that is also ordered by increasing equation number and may be assembled into the global system with minimal computation. The matrix [D] is also full, which provides for orthotropic and rotated material relationships.

For symmetric problems (RSDWTP), the calculation performed is equivalent to the following FORTRAN statements.

        LS = 0
        DO I=1,M
           DO J=1,I
              LS = LS  +  1
              DO K=1,N
                 DO L=1,N
                    S(LS) = S(LS) + W*B(K,I)*D(K,L)*B(L,J)
                 END DO
              END DO
           END DO
        END DO
For nonsymmetric problems (RNDWTP), the calculation performed is equivalent to the following FORTRAN statements:
        DO I=1,M
           DO J=1,I
              DO K=1,N
                 DO L=1,N
                    S(I,J) = S(I,J) + W*B(K,I)*D(K,L)*A(L,J)
                 END DO
              END DO
           END DO
        END DO
The actual algorithm implemented uses an intermediate vector to reduce the number of operations performed and take advantage of high-speed hardware.