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