Download d2endp.eso

Back to the list

   1 : C D2ENDP    SOURCE    CHAT      05/01/12    22:34:50     5004           
   2 : 
   3 :       SUBROUTINE DER2_ENERELAS_DPRAL(X,E,NDIMX,NMODEL)
   4 :       IMPLICIT INTEGER(I-N)
   5 :       integer nmodel,i,ndimx,j
   6 :       real*8 x(3),e(ndimx,ndimx),aux0,aux1,aux2,aux3,aux(3,3)
   7 :       real*8                  you,xnu
   8 :       common /elasdata/       you,xnu
   9 :       real*8                  kap,xmu,xmu1,alp1,xmu2,alp2,xmu3,alp3
  10 :       logical                 ogden
  11 :       common /elasdata_ogden/ kap,xmu,xmu1,alp1,xmu2,alp2,xmu3,alp3,
  12 :      .                        ogden
  13 : 
  13 :       call zzero(e,ndimx*ndimx)
  14 :       if (ogden) goto 10
  15 : c Modelo cuadratico 
  16 :       aux0=you/((1.D0+xnu)*(1.D0-2.D0*xnu))
  17 :       aux1=(1.D0-xnu)*aux0
  18 :       aux2=xnu*aux0
  19 :       aux3=you/(2.D0*(1.D0+xnu))
  20 :       do i=1,3
  21 :         E(i,i)=aux1
  22 :       enddo
  23 :       E(1,2)=aux2
  24 :       E(1,3)=aux2
  25 :       E(2,1)=aux2
  26 :       E(2,3)=aux2
  27 :       E(3,1)=aux2
  28 :       E(3,2)=aux2
  29 :       if (ndimx.eq.4) E(4,4)=1.D0
  30 : c hacer desviador para VMT
  31 :       if (nmodel.eq.8) goto 20      
  32 :       return
  33 : c Modelo ogden
  34 : 10    continue
  35 :       do i=1,3
  36 :        aux(i,1)=dexp(x(i))
  37 :       enddo
  38 :       e(1,1)=xmu*(xmu1*alp1*aux(1,1)**alp1+
  39 :      .            xmu2*alp2*aux(1,1)**alp2+
  40 :      .            xmu3*alp3*aux(1,1)**alp3)
  41 :       e(2,2)=xmu*(xmu1*alp1*aux(2,1)**alp1+
  42 :      .            xmu2*alp2*aux(2,1)**alp2+
  43 :      .            xmu3*alp3*aux(2,1)**alp3)
  44 :       e(3,3)=xmu*(xmu1*alp1*aux(3,1)**alp1+
  45 :      .            xmu2*alp2*aux(3,1)**alp2+
  46 :      .            xmu3*alp3*aux(3,1)**alp3)
  47 : c     desviador de columnas
  48 : 20    continue
  49 :       do i=1,3
  49 :        call Desviador(e(1,i),aux(1,i),3)
  50 :       enddo
  51 : c     trasponer amat
  52 :       aux1    =aux(1,2)
  53 :       aux(1,2)=aux(2,1)
  54 :       aux(2,1)=aux1
  55 :       aux1    =aux(1,3)
  56 :       aux(1,3)=aux(3,1)
  57 :       aux(3,1)=aux1
  58 :       aux1    =aux(2,3)
  59 :       aux(2,3)=aux(3,2)
  60 :       aux(3,2)=aux1
  61 : c     desviador de columnas
  62 :       do i=1,3
  62 :        call Desviador(aux(1,i),e(1,i),3)
  63 :       enddo
  64 :       goto 100
  65 : c Calculadas con derivacion, dan igual!
  65 :       call zzero(e,ndimx*ndimx)
  65 :       call der_enerelas_dpral(x,aux(1,1),nmodel)
  66 :       do j=1,3
  67 :         do i=1,3
  68 :           aux(i,2)=x(i)
  69 :         enddo
  70 :         aux(j,3)=max(x(j)*1.D-6,1.D-8)
  71 :         aux(j,2)=x(j)+aux(j,3)
  71 :         call der_enerelas_dpral(aux(1,2),e(1,j),nmodel)
  72 :         do i=1,3
  73 :          e(i,j)=(e(i,j)-aux(i,1))/aux(j,3)
  74 :         enddo
  75 :       enddo
  76 : c
  77 : 100   continue
  78 :       if (ndimx.eq.4) E(4,4)=1.D0
  79 :       return
  80 :       end
  81 :  
  82 :  
  83 :  

© Cast3M 2003 - All rights reserved.
Disclaimer