Cloned SEACAS for EXODUS library with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

62 lines
2.8 KiB

C Copyright(C) 1999-2020 National Technology & Engineering Solutions
C of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
C NTESS, the U.S. Government retains certain rights in this software.
C
C See packages/seacas/LICENSE for details
C=======================================================================
SUBROUTINE MXMULT(N,MAT1,MAT2,MATR)
REAL MAT1(N,*),MAT2(N,*),MATR(N,*)
IF (N .EQ. 4) THEN
MATR(1,1) = MAT1(1,1)*MAT2(1,1) + MAT1(1,2)*MAT2(2,1) +
* MAT1(1,3)*MAT2(3,1) + MAT1(1,4)*MAT2(4,1)
MATR(1,2) = MAT1(1,1)*MAT2(1,2) + MAT1(1,2)*MAT2(2,2) +
* MAT1(1,3)*MAT2(3,2) + MAT1(1,4)*MAT2(4,2)
MATR(1,3) = MAT1(1,1)*MAT2(1,3) + MAT1(1,2)*MAT2(2,3) +
* MAT1(1,3)*MAT2(3,3) + MAT1(1,4)*MAT2(4,3)
MATR(1,4) = MAT1(1,1)*MAT2(1,4) + MAT1(1,2)*MAT2(2,4) +
* MAT1(1,3)*MAT2(3,4) + MAT1(1,4)*MAT2(4,4)
MATR(2,1) = MAT1(2,1)*MAT2(1,1) + MAT1(2,2)*MAT2(2,1) +
* MAT1(2,3)*MAT2(3,1) + MAT1(2,4)*MAT2(4,1)
MATR(2,2) = MAT1(2,1)*MAT2(1,2) + MAT1(2,2)*MAT2(2,2) +
* MAT1(2,3)*MAT2(3,2) + MAT1(2,4)*MAT2(4,2)
MATR(2,3) = MAT1(2,1)*MAT2(1,3) + MAT1(2,2)*MAT2(2,3) +
* MAT1(2,3)*MAT2(3,3) + MAT1(2,4)*MAT2(4,3)
MATR(2,4) = MAT1(2,1)*MAT2(1,4) + MAT1(2,2)*MAT2(2,4) +
* MAT1(2,3)*MAT2(3,4) + MAT1(2,4)*MAT2(4,4)
MATR(3,1) = MAT1(3,1)*MAT2(1,1) + MAT1(3,2)*MAT2(2,1) +
* MAT1(3,3)*MAT2(3,1) + MAT1(3,4)*MAT2(4,1)
MATR(3,2) = MAT1(3,1)*MAT2(1,2) + MAT1(3,2)*MAT2(2,2) +
* MAT1(3,3)*MAT2(3,2) + MAT1(3,4)*MAT2(4,2)
MATR(3,3) = MAT1(3,1)*MAT2(1,3) + MAT1(3,2)*MAT2(2,3) +
* MAT1(3,3)*MAT2(3,3) + MAT1(3,4)*MAT2(4,3)
MATR(3,4) = MAT1(3,1)*MAT2(1,4) + MAT1(3,2)*MAT2(2,4) +
* MAT1(3,3)*MAT2(3,4) + MAT1(3,4)*MAT2(4,4)
MATR(4,1) = MAT1(4,1)*MAT2(1,1) + MAT1(4,2)*MAT2(2,1) +
* MAT1(4,3)*MAT2(3,1) + MAT1(4,4)*MAT2(4,1)
MATR(4,2) = MAT1(4,1)*MAT2(1,2) + MAT1(4,2)*MAT2(2,2) +
* MAT1(4,3)*MAT2(3,2) + MAT1(4,4)*MAT2(4,2)
MATR(4,3) = MAT1(4,1)*MAT2(1,3) + MAT1(4,2)*MAT2(2,3) +
* MAT1(4,3)*MAT2(3,3) + MAT1(4,4)*MAT2(4,3)
MATR(4,4) = MAT1(4,1)*MAT2(1,4) + MAT1(4,2)*MAT2(2,4) +
* MAT1(4,3)*MAT2(3,4) + MAT1(4,4)*MAT2(4,4)
ELSE
DO 230 K = 1,N
DO 200 J = 1,N
MATR(K,J) = 0.0
200 CONTINUE
DO 220 I = 1,N
DO 210 J = 1,N
MATR(K,J) = MATR(K,J) + MAT1(K,I)*MAT2(I,J)
210 CONTINUE
220 CONTINUE
230 CONTINUE
END IF
RETURN
END