1 : C OPMULT SOURCE CHAT 05/01/13 02:05:04 5004 2 : c--------------------------------------------------------------------- 3 : c 4 : SUBROUTINE OPMULT (NDIME, NDIM1, NDOPM, NSTRE, 5 : . opmat, vecin, vecou, 6 : . stype) 7 : c 8 : c===================================================================== 9 : c = 10 : c This subroutine performs the optimized product = 11 : c = 12 : c vecou = OPMAT * vecin = 13 : c = 14 : c where OPMAT is the elasticity or compliance matrix. = 15 : c = 16 : c Note: vecin = (Sxx, Syy, Szz, Sxy, Sxz, Syz) NSTRE=6 = 17 : c vecin = (Srr, Szz, S00, Srz) NSTRE=4 = 18 : c vecin = (Sxx, Syy, Sxy) NSTRE=3 = 19 : c = 20 : c vecou = (Sxx, Syy, Szz, Sxy, Sxz, Syz) NSTRE=6 = 21 : c vecou = (Srr, Szz, S00, Srz) NSTRE=4 = 22 : c vecou = (Sxx, Syy, Sxy) NSTRE=3 = 23 : c = 24 : c Author: Rui Faria Version: 93.04.20 = 25 : c -------- = 26 : c===================================================================== 27 : IMPLICIT INTEGER(I-N) 28 : integer*4 ndime, ndim1, ndopm, nstre 29 : real*8 opmat (ndopm,ndopm), vecin (nstre), vecou (nstre) 30 : c 31 : integer*4 istre, kstre 32 : c 33 : character*6 stype 34 : c 35 : if (stype .eq. 'AXISYM') then 36 : do 10 istre = 1, 3 37 : vecou (istre) = 0.0 d0 38 : do 20 kstre = 1, 3 39 : vecou (istre) = vecou (istre) + 40 : . opmat (istre,kstre) * vecin (kstre) 41 : 20 continue 42 : 10 continue 43 : c 44 : vecou (4) = opmat (4,4) * vecin (4) 45 : return 46 : else 47 : do 30 istre = 1, ndime 48 : vecou (istre) = 0.0 d0 49 : do 40 kstre = 1, ndime 50 : vecou (istre) = vecou (istre) + 51 : . opmat (istre,kstre) * vecin (kstre) 52 : 40 continue 53 : 30 continue 54 : vecou (ndim1) = opmat (ndim1,ndim1) * vecin (ndim1) 55 : c 56 : if (ndime .eq. 2) return 57 : c 58 : vecou (5) = opmat (5,5) * vecin (5) 59 : vecou (6) = opmat (6,6) * vecin (6) 60 : end if 61 : c 62 : return 63 : end 64 : 65 :
© Cast3M 2003 - All rights reserved.
Disclaimer