Download opmult.eso

Back to the list

   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