34
35
36
38
39
40
41#include "implicit_f.inc"
42#include "comlock.inc"
43
44
45
46#include "mvsiz_p.inc"
47
48
49
50#include "sms_c.inc"
51
52
53
54 INTEGER JLT, NOINT,
55 . IX1(MVSIZ),IX2(MVSIZ),IX3(MVSIZ),IX4(MVSIZ),NSVG(MVSIZ),
56 . NODNX_SMS(*)
58 . stif(4,mvsiz), vis(4,mvsiz), dmint2(4,*), dti
59
60
61
62 INTEGER I, IG, NN, NISKYL1, NISKYL
64 . dts, fac
65
66 DO i=1,jlt
67 dmint2(1,i)=zero
68 dmint2(2,i)=zero
69 dmint2(3,i)=zero
70 dmint2(4,i)=zero
71
72 IF (nsvg(i) < 0) cycle
73 IF ((idtmins_int == 0 .AND. nodnx_sms(nsvg(i))+
74 . nodnx_sms(ix1(i))+
75 . nodnx_sms(ix2(i))+
76 . nodnx_sms(ix3(i))+
77 . nodnx_sms(ix4(i))==0) .OR.
78 . stif(1,i)+stif(2,i)+stif(3,i)+stif(4,i)==zero) THEN
79 cycle
80 END IF
81
82 IF (idtmins_int == 0 .AND. nodnx_sms(nsvg(i))+
83 . nodnx_sms(ix1(i))+
84 . nodnx_sms(ix2(i))+
85 . nodnx_sms(ix3(i))+
86 . nodnx_sms(ix4(i))/=0) THEN
87 dts = dtmins/dtfacs
89 ELSE
90 dts = dtmins_int/dtfacs_int
91 dti =
min(dti,dtmins_int)
92 END IF
93
94
95 dmint2(1,i) = half * dts * ( dts * stif(1,i) + vis(1,i) )
96 dmint2(2,i) = half * dts * ( dts * stif(2,i) + vis(2,i) )
97 dmint2(3,i) = half * dts * ( dts * stif(3,i) + vis(3,i) )
98 IF (ix4(i) /= ix3(i)) THEN
99 dmint2(4,i) = half * dts * ( dts * stif(4,i) + vis(4,i) )
100 ENDIF
101 ENDDO
102
103 RETURN