36
37
38
39#include "implicit_f.inc"
40
41
42
43#include "mvsiz_p.inc"
44
45
46
47 INTEGER, INTENT(IN) :: ISMSTR
48 INTEGER NEL
49
50 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: offg,vol0
51 DOUBLE PRECISION , DIMENSION(NEL) ,INTENT(IN) :: VOL0DP
52 my_real ,
DIMENSION(MVSIZ) ,
INTENT(IN) :: jacg,facp,nu
53 my_real ,
DIMENSION(MVSIZ) ,
INTENT(INOUT) :: voln,
54 . dxx, dxy, dxz,
55 . dyx, dyy, dyz,
56 . dzx, dzy, dzz
57 DOUBLE PRECISION , DIMENSION(NEL) ,INTENT(INOUT) :: VOLDP
58
59
60
61#include "scr05_c.inc"
62
63
64
65 INTEGER I, K
67 . jac(mvsiz),fac,base,jfac
68
69
70 IF(ismstr==1.OR.ismstr>=10)THEN
71 IF (ismstr==10) THEN
73 1 jac, dxx, dxy, dxz,
74 2 dyx, dyy, dyz, dzx,
75 3 dzy, dzz, nel)
76 DO i=1,nel
77 IF(offg(i)==zero.OR.abs(offg(i))>one) cycle
78 fac=two_third*nu(i)
79 base = jacg(i)/
max(em20,jac(i))
80 jfac =exp(fac*log(
max(em20,base)))
81 dxx(i) = jfac*dxx(i)+jfac-one
82 dyy(i) = jfac*dyy(i)+jfac-one
83 dzz(i) = jfac*dzz(i)+jfac-one
84 dxy(i) = jfac*dxy(i)
85 dyx(i) = jfac*dyx(i)
86 dzx(i) = jfac*dzx(i)
87 dxz(i) = jfac*dxz(i)
88 dyz(i) = jfac*dyz(i)
89 dzy(i) = jfac*dzy(i)
90 voln(i) = jfac*voln(i)
91 ENDDO
92 END IF
93 ELSE
94
95 IF(iresp==1)THEN
96 DO i=1,nel
97 IF(offg(i)==zero.OR.abs(offg(i))>one) cycle
98 voldp(i) = (one-facp(i))*voldp(i)+facp(i)*jacg(i)*vol0dp(i)
99 voln(i) = voldp(i)
100 ENDDO
101 ELSE
102 DO i=1,nel
103 IF(offg(i)==zero.OR.abs(offg(i))>one) cycle
104 voln(i) = (one-facp(i))*voln(i)+facp(i)*jacg(i)*vol0(i)
105 ENDDO
106 ENDIF
107 END IF
108
109 RETURN
subroutine jacob_j33(det, aj1, aj2, aj3, aj4, aj5, aj6, aj7, aj8, aj9, nel)