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 "com08_c.inc"
51#include "scr02_c.inc"
52#include "scr07_c.inc"
53#include "scr17_c.inc"
54#include "scr18_c.inc"
55#include "sms_c.inc"
56#include "units_c.inc"
57
58
59
60 INTEGER, INTENT(IN) :: JSMS
61 INTEGER JFT,JLT,NELTST ,ITYPTST,NGL(*),NC1(*),NC2(*)
63 . off(*), sti(3,*), stir(3,*), ms(*), in(*),
64 . msrt(*), dmelrt(*),xcr(mvsiz), xin(mvsiz),
65 . xm(mvsiz),xkm(mvsiz),xcm(mvsiz),xkr(mvsiz)
67 INTEGER,INTENT(IN) :: G_DT
68
69
70
71 INTEGER I
73 . dt(mvsiz),dtc(mvsiz),
74 . a, mass2, in2, b, dta, dtb, mx
75
76 IF(nodadt/=0.OR.idtmins==2)THEN
77
78 DO i=jft,jlt
79 sti(1,i) = zero
80 sti(2,i) = zero
81 stir(1,i) = zero
82 stir(2,i) = zero
83 IF(off(i)>zero)THEN
84 IF(ms(nc1(i))/=zero)THEN
85 mass2 = two * ms(nc1(i))
86 ELSE
87 mass2 = xm(i)
88 ENDIF
89 IF(xkm(i)/=zero.AND.xcm(i)/=zero.AND.
90 . mass2/=zero)THEN
91 sti(1,i) = (xcm(i) + sqrt(xcm(i)**2+xkm(i)*mass2))**2/mass2
92 ELSEIF(xkm(i)/=zero)THEN
93 sti(1,i) = xkm(i)
94 ELSEIF(xcm(i)/=zero.AND.mass2/=zero)THEN
95 a = four * xcm(i)**2
96 sti(1,i) = a / mass2
97 ENDIF
98
99 IF(ms(nc2(i))/=zero)THEN
100 mass2 = two * ms(nc2(i))
101 ELSE
102 mass2 = xm(i)
103 ENDIF
104 IF(xkm(i)/=zero.AND.xcm(i)/=zero.AND.
105 . mass2/=zero)THEN
106 sti(2,i) = (xcm(i) + sqrt(xcm(i)**2+xkm(i)*mass2))**2/mass2
107 ELSEIF(xkm(i)/=zero)THEN
108 sti(2,i) = xkm(i)
109 ELSEIF(xcm(i)/=zero.AND.mass2/=zero)THEN
110 a = four * xcm(i)**2
111 sti(2,i) = a / mass2
112 ENDIF
113
114 IF(in(nc1(i))/=zero)THEN
115 in2 = two * in(nc1(i))
116 ELSE
117 in2 = xin(i)
118 ENDIF
119 IF(xkr(i)/=zero.AND.xcr(i)/=zero.AND.
120 . in2/=zero)THEN
121 stir(1,i) = (xcr(i) + sqrt(xcr(i)**2+xkr(i)*in2))**2/in2
122 ELSEIF(xkr(i)/=zero)THEN
123 stir(1,i) = xkr(i)
124 ELSEIF(xcr(i)/=zero.AND.in2/=zero)THEN
125 a = four * xcr(i)**2
126 stir(1,i) = a / in2
127 ENDIF
128
129 IF(in(nc2(i))/=zero)THEN
130 in2 = two * in(nc2(i))
131 ELSE
132 in2 = xin(i)
133 ENDIF
134 IF(xkr(i)/=zero.AND.xcr(i)/=zero.AND.
135 . in2/=zero)THEN
136 stir(2,i) = (xcr(i) + sqrt(xcr(i)**2+xkr(i)*in2))**2/in2
137 ELSEIF(xkr(i)/=zero)THEN
138 stir(2,i) = xkr(i)
139 ELSEIF(xcr(i)/=zero.AND.in2/=zero)THEN
140 a = four * xcr(i)**2
141 stir(2,i) = a / in2
142 ENDIF
143 ENDIF
144 ENDDO
145
146 IF(idtmin(6)==0.AND.(idtmins/=2.OR.jsms==0))RETURN
147
148 IF(idtmins==2.AND.jsms/=0)THEN
149
150
151
152 dta=dtmins/dtfacs
153 dtb=dta*dta
154 DO i=jft,jlt
155 IF(off(i)<=zero) cycle
156 dmelrt(i)=
max(dmelrt(i),
157 . xcm(i)*dta+half*xkm(i)*dtb-half*msrt(i))
158
159
160 mx =msrt(i)+two*dmelrt(i)
161
162 IF(xcm(i)+xkm(i)<em15)mx =one
163 xkm(i)=
max(em15,xkm(i))
164
165 dt(i)=dtfacs*
166 . mx /
max(em15,sqrt(xcm(i)*xcm(i)+mx*xkm(i))+xcm(i))
167 ENDDO
168
169 DO i=jft,jlt
170 IF(off(i)<=zero) cycle
171 IF(dt(i)<dt2t) THEN
172 dt2t=dt(i)
173 neltst =ngl(i)
174 ityptst=6
175 ENDIF
176 ENDDO
177 ELSE
178
179 DO i=jft,jlt
180 IF(xcm(i)+xkm(i)<em15)xm(i) =one
181 xkm(i)=
max(em15,xkm(i))
182 dt(i)=xm(i)/
max(em15,sqrt(xcm(i)*xcm(i)+xm(i)*xkm(i))+xcm(i))
183 IF(xcr(i)+xkr(i)<em15)xin(i)=one
184 xkr(i)=
max(em15,xkr(i))
185 dtc(i)=xin(i)/
max(em15,sqrt(xcr(i)*xcr(i)+xin(i)*xkr(i))+xcr(i))
186 dt(i)=
min(dt(i),dtc(i))
187 ENDDO
188
189 DO i=jft,jlt
190 IF(off(i)>zero)THEN
191 dt(i)=dtfac1(6)*dt(i)
192 IF(idtmin(6)==1.AND.dt(i)<dtmin1(6))THEN
193 tstop = tt
194#include "lockon.inc"
195 WRITE(iout,*)
196 . ' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
197 WRITE(istdo,*)
198 . ' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
199#include "lockoff.inc"
200 ELSEIF(idtmin(6)==5.AND.dt(i)<dtmin1(6))THEN
201 mstop = 2
202#include "lockon.inc"
203 WRITE(iout,*)
204 . ' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
205 WRITE(istdo,*)
206 . ' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
207#include "lockoff.inc"
208 ELSEIF(idtmin(6)==2.AND.dt(i)<dtmin1(6))THEN
209 off(i)=zero
210#include "lockon.inc"
211 WRITE(iout,*) '-- DELETE OF SPRING ELEMENT NUMBER',ngl(i)
212#include "lockoff.inc"
213 idel7nok = 1
214 ENDIF
215 ENDIF
216 ENDDO
217 END IF
218
219 ELSE
220
221 DO i=jft,jlt
222 IF(xcm(i)+xkm(i)<em15)xm(i) =one
223 xkm(i)=
max(em15,xkm(i))
224 dt(i)=xm(i)/
max(em15,sqrt(xcm(i)*xcm(i)+xm(i)*xkm(i))+xcm(i))
225 ENDDO
226
227 DO i=jft,jlt
228 sti(1,i) = zero
229 sti(2,i) = zero
230 stir(1,i) = zero
231 stir(2,i) = zero
232 IF(off(i)>zero) THEN
233 sti(1,i) = xm(i) / dt(i)**2
234 sti(2,i) = sti(1,i)
235 ENDIF
236 ENDDO
237
238 DO i=jft,jlt
239 IF(xcr(i)+xkr(i)<em15)xin(i)=one
240 xkr(i)=
max(em15,xkr(i))
241 dtc(i)=xin(i)/
max(em15,sqrt(xcr(i)*xcr(i)+xin(i)*xkr(i))+xcr(i))
242 dt(i)=
min(dt(i),dtc(i))
243 ENDDO
244
245 DO i=jft,jlt
246 IF(off(i)>zero)THEN
247 dt(i)=dtfac1(6)*dt(i)
248 IF(idtmin(6)==1.AND.dt(i)<dtmin1(6))THEN
249 tstop = tt
250#include "lockon.inc"
251 WRITE(iout,*)
252 . ' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
253 WRITE(istdo,*)
254 . ' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
255#include "lockoff.inc"
256 ELSEIF(idtmin(6)==5.AND.dt(i)<dtmin1(6))THEN
257 mstop = 2
258#include "lockon.inc"
259 WRITE(iout,*)
260 . ' **error : time step less or equal dtmin
for spring element
'
261 WRITE(ISTDO,*)
262 . ' **error : time step less or equal dtmin
for spring element
'
263#include "lockoff.inc"
264.AND. ELSEIF(IDTMIN(6)==2DT(I)<DTMIN1(6))THEN
265 OFF(I)=ZERO
266#include "lockon.inc"
267 WRITE(IOUT,*) '-- delete of spring element number',NGL(I)
268#include "lockoff.inc"
269 IDEL7NOK = 1
270 ENDIF
271 IF(DT(I)<DT2T)THEN
272 DT2T=DT(I)
273 NELTST =NGL(I)
274 ITYPTST=6
275 ENDIF
276 ENDIF
277 ENDDO
278 ENDIF
279
280 IF(G_DT/=0)THEN
281 DO I=JFT,JLT
282 DTEL(I) = DT(I)
283 ENDDO
284 ENDIF
285
286
287 RETURN
288
subroutine dtel(ssp, pm, geo, pid, mat, rho0, vis, deltax, aire, vol, dtx)
for(i8=*sizetab-1;i8 >=0;i8--)