C OPMULT SOURCE CHAT 05/01/13 02:05:04 5004 c--------------------------------------------------------------------- c SUBROUTINE OPMULT (NDIME, NDIM1, NDOPM, NSTRE, . opmat, vecin, vecou, . stype) c c===================================================================== c = c This subroutine performs the optimized product = c = c vecou = OPMAT * vecin = c = c where OPMAT is the elasticity or compliance matrix. = c = c Note: vecin = (Sxx, Syy, Szz, Sxy, Sxz, Syz) NSTRE=6 = c vecin = (Srr, Szz, S00, Srz) NSTRE=4 = c vecin = (Sxx, Syy, Sxy) NSTRE=3 = c = c vecou = (Sxx, Syy, Szz, Sxy, Sxz, Syz) NSTRE=6 = c vecou = (Srr, Szz, S00, Srz) NSTRE=4 = c vecou = (Sxx, Syy, Sxy) NSTRE=3 = c = c Author: Rui Faria Version: 93.04.20 = c -------- = c===================================================================== IMPLICIT INTEGER(I-N) integer*4 ndime, ndim1, ndopm, nstre real*8 opmat (ndopm,ndopm), vecin (nstre), vecou (nstre) c integer*4 istre, kstre c character*6 stype c if (stype .eq. 'AXISYM') then do 10 istre = 1, 3 vecou (istre) = 0.0 d0 do 20 kstre = 1, 3 vecou (istre) = vecou (istre) + . opmat (istre,kstre) * vecin (kstre) 20 continue 10 continue c vecou (4) = opmat (4,4) * vecin (4) return else do 30 istre = 1, ndime vecou (istre) = 0.0 d0 do 40 kstre = 1, ndime vecou (istre) = vecou (istre) + . opmat (istre,kstre) * vecin (kstre) 40 continue 30 continue vecou (ndim1) = opmat (ndim1,ndim1) * vecin (ndim1) c if (ndime .eq. 2) return c vecou (5) = opmat (5,5) * vecin (5) vecou (6) = opmat (6,6) * vecin (6) end if c return end