29
30
31
32#include "implicit_f.inc"
33
34
35
36#include "mvsiz_p.inc"
37
38
39
40
41
42
43 INTEGER, INTENT(IN) :: NEL,ISMSTR
44C
46 my_real,
DIMENSION(NEL,6),
INTENT(INOUT) :: sig,sigl
47 my_real,
DIMENSION(NEL),
INTENT(IN) :: offg
48 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: g
49
50
51
52 INTEGER I, J,ipr
54 . ff,facg,facc,frho,p,facmax,facd,dp,sig2(6),fac
55
56 DO i=1,nel
57 ff = -onep6*
min(sig(i,1),sig(i,2),sig(i,3))
58 IF (offg(i)>one.OR.ff <=g2) cycle
59 facg =
max(one,sqrt(ff/g2)) + zep15*ff/g2
60 facd =
max(one,zep85*facg)
61 sig(i,4)=facg*sig(i,4)
62 sig(i,5)=facg*sig(i,5)
63 sig(i,6)=facg*sig(i,6)
64 p = -third*(sig(i,1)+sig(i,2)+sig(i,3))
65 sig(i,1)=facd*(sig(i,1)+p)-p
66 sig(i,2)=facd*(sig(i,2)+p)-p
67 sig(i,3)=facd*(sig(i,3)+p)-p
68 g(i) = facg*g(i)
69 END DO
70 IF (ismstr==12) THEN
71 facmax = four + half
72 DO i=1,nel
73 IF (offg(i)<=one) cycle
74 ff = -
min(sig(i,1),sig(i,2),sig(i,3))
75 IF (ff <=g2 ) cycle
76 fac = onep25*
max(one,ff/g2)
77 facg =
min(facmax,fac-one)
78 sig2(1) = sig(i,1)-sigl(i,1)
79 sig2(2) = sig(i,2)-sigl(i,2)
80 sig2(3) = sig(i,3)-sigl(i,3)
81 sig2(4) = sig(i,4)-sigl(i,4)
82 sig2(5) = sig(i,5)-sigl(i,5)
83 sig2(6) = sig(i,6)-sigl(i,6)
84 sig(i,4)=sig(i,4)+facg*sig2(4)
85 sig(i,5)=sig(i,5)+facg*sig2(5)
86 sig(i,6)=sig(i,6)+facg*sig2(6)
87 p = -third*(sig2(1)+sig2(2)+sig2(3))
88 facd =
min(onep2,facg)
89 sig(i,1)=sig(i,1)+facd*(sig2(1)+p)
90 sig(i,2)=sig(i,2)+facd*(sig2(2)+p)
91 sig(i,3)=sig(i,3)+facd*(sig2(3)+p)
92 g(i) = (facg+one)*g(i)
93 END DO
94 END IF
95
96 RETURN