34
35
36
38
39
40
41#include "implicit_f.inc"
42
43
44
45#include "intstamp_c.inc"
46#include "param_c.inc"
47#include "sms_c.inc"
48
49
50
51 INTEGER IPARI(NPARI,*), NELTST, ITYPTST, NODNX_SMS(*)
52
54 . dt2t, diag_sms(*), ms(*), v(3,*), stifn(*), stifr(*)
55 TYPE(INTSTAMP_DATA) (*)
56
57
58
59 INTEGER KDIR, NN, K, IROT, MAIN, INTDAMP
60
62 . mass, stf, inm, str,
alpha, vis,
63 . c, cvis(nintstamp), cvisr(nintstamp)
64
65 IF(idtmins/=2.AND.idtmins_int==0)THEN
66 DO nn=1,nintstamp
67 cvis(nn) =zero
68 cvisr(nn)=zero
69 ENDDO
70 DO nn=1,nintstamp
71 intdamp=intstamp(nn)%INTDAMP
72 mass =intstamp(nn)%MASS
73 alpha=intstamp(nn)%DAMP
74 stf =intstamp(nn)%STF
75 c =
alpha*sqrt(four*mass*stf)
76 cvis(nn)=cvis(nn)+c
77 IF(intdamp/=0)THEN
78 cvis(intdamp)=cvis(intdamp)+c
79 END IF
80 irot=intstamp(nn)%IROT
81 IF(irot/=0)THEN
82 inm=
min(intstamp(nn)%IN(1),
83 . intstamp(nn)%IN(2),
84 . intstamp(nn)%IN(3))
85 str =intstamp(nn)%STR
86 alpha=intstamp(nn)%DAMPR
87 c =
alpha*sqrt(four*inm*str)
88 cvisr(nn)=cvisr(nn)+c
89 IF(intdamp/=0)THEN
90 cvisr(intdamp)=cvisr(intdamp)+c
91 END IF
92 END IF
93 ENDDO
94 DO nn=1,nintstamp
95 intdamp=intstamp(nn)%INTDAMP
96 mass =intstamp(nn)%MASS
97 stf =intstamp(nn)%STF
98 main =intstamp(nn)%MSR
99 IF(stf/=zero)THEN
100 alpha=cvis(nn)/sqrt(four*mass*stf)
103 END IF
104 irot=intstamp(nn)%IROT
105 IF(irot/=0)THEN
106 inm=
min(intstamp(nn)%IN(1),
107 . intstamp(nn)%IN(2),
108 . intstamp(nn)%IN(3))
109 str =intstamp(nn)%STR
110 IF(str/=zero)THEN
111 alpha=cvisr(nn)/sqrt(four*inm*str)
114 END IF
115 END IF
116 ENDDO
117 ELSE
118 DO nn=1,nintstamp
119 cvis(nn) =zero
120 cvisr(nn)=zero
121 ENDDO
122 DO nn=1,nintstamp
123 intdamp=intstamp(nn)%INTDAMP
124 mass =intstamp(nn)%MASS
125 alpha=intstamp(nn)%DAMP
126 stf =intstamp(nn)%STF
127 c =
alpha*sqrt(four*mass*stf)
128 cvis(nn)=cvis(nn)+c
129 IF(intdamp/=0)THEN
130 cvis(intdamp)=cvis(intdamp)+c
131 END IF
132 irot=intstamp(nn)%IROT
133 IF(irot/=0)THEN
134 inm=
min(intstamp(nn)%IN(1),
135 . intstamp(nn)%IN(2),
136 . intstamp(nn)%IN(3))
137 str =intstamp(nn)%STR
138 alpha=intstamp(nn)%DAMPR
139 c =
alpha*sqrt(four*inm*str)
140 cvisr(nn)=cvisr(nn)+c
141 IF(intdamp/=0)THEN
142 cvisr(intdamp)=cvisr(intdamp)+c
143 END IF
144 END IF
145 ENDDO
146 DO nn=1,nintstamp
147 main=intstamp(nn)%MSR
148 IF(nodnx_sms(
main)==0)
THEN
149 mass=intstamp(nn)%MASS
150 stf =intstamp(nn)%STF
151 IF(stf/=zero)THEN
152 alpha=cvis(nn)/sqrt(four*mass*stf)
155 END IF
156 irot=intstamp(nn)%IROT
157 IF(irot/=0)THEN
158 inm=
min(intstamp(nn)%IN(1),
159 . intstamp(nn)%IN(2),
160 . intstamp(nn)%IN(3))
161 str =intstamp(nn)%STR
162 IF(str/=zero)THEN
163 alpha=cvisr(nn)/sqrt(four*inm*str)
166 END IF
167 END IF
168 ELSE
169
170 mass =intstamp(nn)%MASS
171 stf =intstamp(nn)%STF
172 vis =cvis(nn)
173
174
175
176 diag_sms(
main)=diag_sms(
main)+half*vis*dtmins/dtfacs
177
178 irot=intstamp(nn)%IROT
179 IF(irot/=0)THEN
180 inm=
min(intstamp(nn)%IN(1),
181 . intstamp(nn)%IN(2),
182 . intstamp(nn)%IN(3))
183 str =intstamp(nn)%STR
184 IF(str/=zero)THEN
185 alpha=cvisr(nn)/sqrt(four*inm*str)
188 END IF
189 END IF
190 END IF
191 ENDDO
192 END IF
193
194 RETURN
int main(int argc, char *argv[])