OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
kinchk.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| kinchk ../starter/source/constraints/general/kinchk.F
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| fretitl2 ../starter/source/starter/freform.F
30!||--- uses -----------------------------------------------------
31!|| format_mod ../starter/share/modules1/format_mod.F90
32!|| message_mod ../starter/share/message_module/message_mod.F
33!||====================================================================
34 SUBROUTINE kinchk(IKINE,RWL,ITAB,NPRW,LPRW,KINET,
35 1 NPBY, LPBY,IRBE2,LRBE2,IRBE3,LRBE3,
36 2 NOM_OPT,PTR_NOPT_RWALL,PTR_NOPT_RBE2,
37 3 PTR_NOPT_RBE3,ITAGCYC)
38 USE message_mod
40 USE format_mod, ONLY : fmw_a_i_a, fmw_10i
41C-----------------------------------------------
42C I m p l i c i t T y p e s
43C-----------------------------------------------
44#include "implicit_f.inc"
45C-----------------------------------------------
46C C o m m o n B l o c k s
47C-----------------------------------------------
48#include "com04_c.inc"
49#include "kincod_c.inc"
50#include "lagmult.inc"
51#include "param_c.inc"
52#include "scr17_c.inc"
53#include "scr03_c.inc"
54#include "units_c.inc"
55C-----------------------------------------------------------------
56C D u m m y A r g u m e n t s
57C-----------------------------------------------
58 INTEGER NOM_OPT(LNOPT1,*),PTR_NOPT_RWALL,PTR_NOPT_RBE2,
59 . PTR_NOPT_RBE3
60 INTEGER IKINE(*),NPRW(*), LPRW(*),ITAB(*),KINET(*),
61 . npby(nnpby,*), lpby(*),irbe2(nrbe2l,*),lrbe2(*),
62 . irbe3(nrbe3l,*),lrbe3(*),
63 . inopt_rwall,inopt_rbe2,inopt_rbe3,itagcyc(*)
65 . rwl(nrwlp,*)
66C-----------------------------------------------
67C L o c a l V a r i a b l e s
68C-----------------------------------------------
69 INTEGER I, J, K, L, N, KK, IKK, IKK2, NK, JWARN, ITYP, NE, NSL,
70 . IK(10), RBWARN, RB2WARN, KRB, NSLRB,
71 . MARQUEUR(8192),
72 . marqueurdouble(13),j1,flag_ikcond,marq2,marqm2,
73 . ns,nm,m,iad,nun,jj,nikrw,ipen
74 INTEGER, DIMENSION(:), ALLOCATABLE :: NKINDOUBLE,NKIN,IKRW
75 INTEGER ID
76 CHARACTER(LEN=NCHARTITLE) :: TITR
77C-----------------------------------------------------------------
78 ALLOCATE(nkindouble(numnod),nkin(numnod),ikrw(numnod))
79 marq2 = 0
80 marqm2 = 0
81C=======================================================================
82C AUTOMATIC CORRECTIONS INTERFACE 1,2,9 OR RBODY WITH RWALL
83C=======================================================================
84 k=0
85 kk=0
86 rbwarn = 0
87 rb2warn = 0
88 DO n=1,nrwall
89
90 jwarn = 0
91 nsl=nprw(n)
92 ityp=nprw(n+3*nrwall)
93 j=0
94 DO l=1,nsl
95 i=lprw(k+l)
96 ikk=iabs(ikine(i))
97 IF(irb(ikk)/=0.OR.itf(ikk)/=0)THEN
98 rbwarn = rbwarn + 1
99 jwarn = jwarn+1
100 IF(irb(ikk)/=0 .AND. marq2 == 0) marq2 = 1
101 IF(itf(ikk)/=0 .AND. marqm2 == 0) marqm2 = 1
102 IF(iwl(ikine(i))==1)ikine(i) = ikine(i) - 4
103
104 ELSE
105 IF (irb2(ikk)/=0) rb2warn = rb2warn + 1
106 j=j+1
107 lprw(kk+j)=lprw(k+l)
108 ENDIF
109 ENDDO
110 k = k+nsl
111 nsl=j
112 kk = kk+nsl
113 nprw(n)=nsl
114 IF(ityp<0)THEN
115 ne=nint(rwl(8,n))
116 DO i=1,ne
117 lprw(kk+i)=lprw(k+i)
118 ENDDO
119 k = k+ne
120 kk = kk+ne
121 ENDIF
122 IF (jwarn>0) THEN
123 id=nom_opt(1,ptr_nopt_rwall+n)
124 CALL fretitl2(titr,
125 . nom_opt(lnopt1-ltitr+1,ptr_nopt_rwall+n),ltitr)
126 CALL ancmsg(msgid=446,
127 . msgtype=msgwarning,
128 . anmode=aninfo_blind_2,
129 . i1=id,
130 . c1=titr,
131 . i2=jwarn)
132 ENDIF
133 ENDDO
134C
135c CALL ANCHECK(71)
136C----------------------------------------------------------
137C - unauthorized hierarchy: check that the main nodes of rbe3 are secondary to rbe2 or int2
138C----------------------------------------------------------
139! look at compatibility w/ BCS,RBODY and compute nrbe3_gp, ini penealty
140 nun=0
141 DO i=1,nrbe3
142 iad = irbe3(1,i)
143 ipen= irbe3(9,i)
144 IF (ipen>0) cycle
145 nm = irbe3(5,i)
146 DO j =1,nm
147 m = lrbe3(iad+j)
148 id=nom_opt(1,ptr_nopt_rbe3+i)
149 CALL fretitl2(titr,
150 . nom_opt(lnopt1-ltitr+1,ptr_nopt_rbe3+i),ltitr)
151 IF (ikrbe2(ikine(m))==1) THEN
152 IF (ipen<0) THEN !error out
153 CALL ancmsg(msgid=805,
154 . msgtype=msgerror,
155 . anmode=aninfo_blind_1,
156 . i1=id,
157 . c1=titr,
158 . i2=itab(m))
159 RETURN
160 ELSE !switch to penalty
161 CALL ancmsg(msgid=3100,
162 . msgtype=msgwarning,
163 . anmode=aninfo_blind_1,
164 . i1=id,
165 . c1=titr,
166 . i2=itab(m))
167 irbe3(9,i) = 1
168 END IF !(IPEN<0)
169 ENDIF
170 IF (itf(ikine(m))==1) THEN
171 IF (ipen<0) THEN !error out
172 CALL ancmsg(msgid=1035,
173 . msgtype=msgerror,
174 . anmode=aninfo_blind_1,
175 . i1=id,
176 . c1=titr,
177 . i2=itab(m))
178 RETURN
179 ELSE !switch to penalty
180 CALL ancmsg(msgid=3096,
181 . msgtype=msgwarning,
182 . anmode=aninfo_blind_1,
183 . i1=id,
184 . c1=titr,
185 . i2=itab(m))
186 irbe3(9,i) = 1
187 END IF !(IPEN<0)
188 ENDIF
189 ENDDO
190 ENDDO
191C----------------------------------------------------------
192C - unauthorized hierarchy: check that the main nodes of rbe2 are secondary to int2
193C----------------------------------------------------------
194 DO i=1,nrbe2
195 m = irbe2(3,i)
196 id=nom_opt(1,ptr_nopt_rbe2+i)
197 CALL fretitl2(titr,
198 . nom_opt(lnopt1-ltitr+1,ptr_nopt_rbe2+i),ltitr)
199 IF (itf(ikine(m))==1) THEN
200 CALL ancmsg(msgid=1036,
201 . msgtype=msgerror,
202 . anmode=aninfo_blind_1,
203 . i1=id,
204 . c1=titr,
205 . i2=itab(m))
206 RETURN
207 ENDIF
208 ENDDO
209C----------------------------------------------------------
210C - unauthorized hierarchy: check that the main nodes of rbody are secondary to rbe2
211C----------------------------------------------------------
212 DO i=1,nrbody
213 m=npby(1,i)
214 IF (ikrbe2(ikine(m))==1) THEN
215C CALL ANCWARN(806,ANINFO_BLIND_1)
216C NUN=NUN+1
217 id=nom_opt(1,i)
218 CALL fretitl2(titr,
219 . nom_opt(lnopt1-ltitr+1,i),ltitr)
220 CALL ancmsg(msgid=806,
221 . msgtype=msgerror,
222 . anmode=aninfo_blind_1,
223 . i1=id,
224 . c1=titr,
225 . i2=itab(m))
226 RETURN
227 ENDIF
228 ENDDO
229C----------------------------------------------------------
230C - unauthorized hierarchy: check that the main nodes of rbody are secondary to rbe3
231C----------------------------------------------------------
232 DO i=1,nrbody
233 m=npby(1,i)
234 IF (ikrbe3(ikine(m))==1) THEN ! add here the case of switching to penalty of RBE3
235 DO n=1,nrbe3
236 nsl= irbe3(3,n)
237 ipen= irbe3(9,n)
238 IF (ipen>0) cycle
239 IF (nsl==m) THEN
240 IF (ipen<0) THEN
241 id=nom_opt(1,i)
242 CALL fretitl2(titr,
243 . nom_opt(lnopt1-ltitr+1,i),ltitr)
244 CALL ancmsg(msgid=810,
245 . msgtype=msgerror,
246 . anmode=aninfo_blind_1,
247 . i1=id,
248 . c1=titr,
249 . i2=itab(m))
250 RETURN
251 ELSE ! switch to penalty of RBE3
252 id = irbe3(2,n)
253 CALL fretitl2(titr,
254 . nom_opt(lnopt1-ltitr+1,ptr_nopt_rbe3+n),ltitr)
255 CALL ancmsg(msgid=3104,
256 . msgtype=msgwarning,
257 . anmode=aninfo_blind_1,
258 . i1=id,
259 . c1=titr,
260 . i2=itab(m))
261 irbe3(9,n) = 1
262 END IF ! (IPEN<0) THEN
263 END IF
264 END DO
265 END IF
266 ENDDO
267C----------------------------------------------------------
268C - Check that the main nodes of rbe2 are mains of rbody
269C----------------------------------------------------------
270 DO i=1,nrbe2
271 m = irbe2(3,i)
272 DO j =1,nrbody
273 IF(npby(1,j)==m)THEN
274 id=nom_opt(1,ptr_nopt_rbe2+i)
275 CALL fretitl2(titr,
276 . nom_opt(lnopt1-ltitr+1,ptr_nopt_rbe2+i),ltitr)
277 CALL ancmsg(msgid=807,
278 . msgtype=msgerror,
279 . anmode=aninfo_blind_1,
280 . i1=id,
281 . c1=titr,
282 . i2=itab(m))
283 RETURN
284 ENDIF
285 ENDDO
286 ENDDO
287C----------------------------------------------------------
288C - Check main nodes of Rbody SECONDARY to other Rbodies
289C----------------------------------------------------------
290 krb = 0
291 DO n=1,nrbykin
292 nslrb = npby(2,n)
293 krb= krb+nslrb
294 ENDDO
295 DO n=1,nrbylag
296 nslrb = npby(2,n)
297 krb= krb+3*nslrb ! possible zeros in LPBY
298 ENDDO
299 DO n=1,nrbykin
300 id=nom_opt(1,n)
301 CALL fretitl2(titr,nom_opt(lnopt1-ltitr+1,n),ltitr)
302 DO i=1,krb
303 IF(npby(1,n)==lpby(i))THEN
304 CALL ancmsg(msgid=555,
305 . msgtype=msgwarning,
306 . anmode=aninfo_blind_2,
307 . i1=id,
308 . c1=titr,
309 . i2=itab(npby(1,n)))
310 ENDIF
311 ENDDO
312 ENDDO
313C----------------------------------------------------------
314C - Check incompatibility /BCS/CYCLIC
315C----------------------------------------------------------
316 IF (nbcscyc>0) THEN
317 DO i=1,numnod
318 IF (itagcyc(i)==0 .OR. ikine(i)==0) cycle
319C------- RBODY
320 IF (irb(ikine(i))/=0 ) THEN
321 k=0
322 DO n=1,nrbykin
323 nsl=npby(2,n)
324C------ not w/ Sensor
325 IF(npby(7,n)/=0)THEN
326 id=nom_opt(1,n)
327 DO j=1,nsl
328 IF (lpby(j+k)==i) THEN
329 CALL ancmsg(msgid=1754,anmode=aninfo,msgtype=msgerror,
330 . i1=itagcyc(i),i2=itab(i),i3=id)
331 END IF
332 ENDDO
333 ENDIF
334 k=k+nsl
335 ENDDO
336 END IF !(IRB(IKINE(I))/=0 ) THEN
337C------- RBE2
338 IF (ikrbe2(ikine(i))/=0 ) THEN
339 DO n=1,nrbe2
340 k = irbe2(1,n)
341 nsl= irbe2(5,n)
342 id = irbe2(2,n)
343 DO j=1,nsl
344 IF (lrbe2(j+k)==i) THEN
345 CALL ancmsg(msgid=1755,anmode=aninfo,msgtype=msgerror,
346 . i1=itagcyc(i),i2=itab(i),i3=id)
347 END IF
348 ENDDO
349 ENDDO
350 END IF
351C------- RBE3
352 IF (ikrbe3(ikine(i))/=0 ) THEN ! will be looked after
353 DO n=1,nrbe3
354 nsl= irbe3(3,n)
355 id = irbe3(2,n)
356 IF (nsl==i) THEN
357 CALL ancmsg(msgid=1756,anmode=aninfo,msgtype=msgerror,
358 . i1=itagcyc(i),i2=itab(i),i3=id)
359 END IF
360 ENDDO
361 END IF
362C------- RLINK
363 IF (irlk(ikine(i))/=0 ) THEN
364 CALL ancmsg(msgid=1757,anmode=aninfo,msgtype=msgerror,
365 . i1=itagcyc(i),i2=itab(i))
366 END IF
367 ENDDO
368 END IF !(NBCSCYC>0) THEN
369! remove ik of penalty RBE3
370 DO i=1,nrbe3
371 nsl= irbe3(3,i)
372 ipen = irbe3(9,i)
373 IF (ipen>0) ikrbe3(ikine(nsl)) = 0
374 END DO
375C=======================================================================
376 IF(ipri>=6)THEN
377 WRITE(iout,*)' NODES WITH KINEMATIC CONDITIONS:'
378 WRITE(iout,*)' --------------------------------'
379 k = 0
380 DO i=1,numnod
381 IF(ikine(i)/=0)THEN
382 k = k + 1
383 ik(k) = itab(i)
384 IF(k==10)THEN
385 WRITE(iout,fmt=fmw_10i)(ik(j),j=1,k)
386 k = 0
387 ENDIF
388 ENDIF
389 ENDDO
390 IF(k/=10) WRITE(iout,fmt=fmw_10i)(ik(j),j=1,k)
391 ENDIF
392C
393C---------------------------------------------------------------
394C LIST OF INCOMPATIBLE CONDITIONS BY TYPE
395C LIST OF AFFECTED NODES
396C
397C NKIN(I) >= 2 => POSSIBLE INCOMPATIBLE CONDITIONS ON NODE I
398C FLAG_IKCOND = 1 => INCOMPATIBLE CONDITIONS IN THE MODEL
399C MARQUEURDOUBLE(I) = 1 => INCOMPATIBLE CONDITIONS BETWEEN CONDITIONS
400C OF THE SAME TYPE ON NODE I
401C MARQUEUR(I) != 0 => INCOMPATIBLE CONDITIONS BETWEEN CONDITIONS
402C OF DIFFERENT TYPES ON NODE I
403C MARQUEUR(I) = 2 => CASE RBODY + RWALL
404C MARQUEUR(I) =-2 => CASE INTERFACES TYPE 1,2,9 + RWALL
405C MARQUEUR(I) = 3 => CASE INTERFACES TYPE 1,2,9 + RBODY + RWALL
406C---------------------------------------------------------------
407 DO i=1,numnod
408 nkin(i) = 0
409 nkindouble(i) = 0
410 ENDDO
411 DO i=1,numnod
412 nkin(i) = ibc(ikine(i))+itf(ikine(i))+iwl(ikine(i))+
413 . irb(ikine(i))+irb2(ikine(i))+
414 . ivf(ikine(i))+irv(ikine(i))+ijo(ikine(i))+
415 . irbm(ikine(i))+ilmult(ikine(i))+irlk(ikine(i))+
416 . ikrbe2(ikine(i))+ikrbe3(ikine(i))+
417 . ibc(ikine(i+3*numnod))+itf(ikine(i+3*numnod))+
418 . iwl(ikine(i+3*numnod))+irb(ikine(i+3*numnod))+
419 . irb2(ikine(i+3*numnod))+ivf(ikine(i+3*numnod))+
420 . irv(ikine(i+3*numnod))+ijo(ikine(i+3*numnod))+
421 . irbm(ikine(i+3*numnod))+ilmult(ikine(i+3*numnod))+
422 . irlk(ikine(i+3*numnod))+ikrbe2(ikine(i+3*numnod))+
423 . ikrbe3(ikine(i+3*numnod))
424 ENDDO
425C---------------------------------------------------------------
426 flag_ikcond = 0
427 DO i=1,8192
428 marqueur(i) = 0
429 ENDDO
430 DO i=1,13
431 marqueurdouble(i) = 0
432 ENDDO
433 DO i=1,numnod
434 IF(nkin(i)>=2)THEN
435 IF (ibc(ikine(i))== 1
436 . .AND. ibc(ikine(i+3*numnod))== 1) THEN
437 marqueurdouble(1) = 1
438 flag_ikcond = 1
439 ENDIF
440 IF (itf(ikine(i))== 1
441 . .AND. itf(ikine(i+3*numnod))== 1) THEN
442 marqueurdouble(2) = 1
443 flag_ikcond = 1
444 ENDIF
445 IF (iwl(ikine(i))== 1
446 . .AND. iwl(ikine(i+3*numnod))== 1) THEN
447 marqueurdouble(3) = 1
448 flag_ikcond = 1
449 ENDIF
450 IF (irb(ikine(i))== 1
451 . .AND. irb(ikine(i+3*numnod))== 1) THEN
452 marqueurdouble(4) = 1
453 flag_ikcond = 1
454 ENDIF
455 IF (irb2(ikine(i))== 1
456 . .AND. irb2(ikine(i+3*numnod))== 1) THEN
457 marqueurdouble(5) = 1
458 flag_ikcond = 1
459 ENDIF
460 IF (ivf(ikine(i))== 1
461 . .AND. ivf(ikine(i+3*numnod))== 1) THEN
462 marqueurdouble(6) = 1
463 flag_ikcond = 1
464 ENDIF
465 IF (irv(ikine(i))== 1
466 . .AND. irv(ikine(i+3*numnod))== 1) THEN
467 marqueurdouble(7) = 1
468 flag_ikcond = 1
469 ENDIF
470 IF (ijo(ikine(i))== 1
471 . .AND. ijo(ikine(i+3*numnod))== 1) THEN
472 marqueurdouble(8) = 1
473 flag_ikcond = 1
474 ENDIF
475 IF (irbm(ikine(i))== 1
476 . .AND. irbm(ikine(i+3*numnod))== 1) THEN
477 marqueurdouble(9) = 1
478 flag_ikcond = 1
479 ENDIF
480 IF (ilmult(ikine(i))== 1
481 . .AND. ilmult(ikine(i+3*numnod))== 1) THEN
482 marqueurdouble(10) = 1
483 flag_ikcond = 1
484 ENDIF
485 IF (irlk(ikine(i))== 1
486 . .AND. irlk(ikine(i+3*numnod))== 1) THEN
487 marqueurdouble(11) = 1
488 flag_ikcond = 1
489 ENDIF
490 IF (ikrbe2(ikine(i))== 1
491 . .AND. ikrbe2(ikine(i+3*numnod))== 1) THEN
492 marqueurdouble(12) = 1
493 flag_ikcond = 1
494 ENDIF
495 IF (ikrbe3(ikine(i))== 1
496 . .AND. ikrbe3(ikine(i+3*numnod))== 1) THEN
497 marqueurdouble(13) = 1
498 flag_ikcond = 1
499 ENDIF
500 ENDIF
501 ENDDO
502C---------------------------------------------------------------
503 nikrw = 0
504 DO i = 1,numnod
505 IF ( ikine(i) /= 0 .AND. ikine(i)/=1 .AND. ikine(i)/=2
506 . .AND. ikine(i)/=4 .AND. ikine(i)/=8 .AND. ikine(i)/=16
507 . .AND. ikine(i)/=32 .AND. ikine(i)/=64
508 . .AND. ikine(i)/=128 .AND. ikine(i)/=256
509 . .AND. ikine(i)/=512 .AND. ikine(i)/=1024
510 . .AND. ikine(i)/=2048 .AND. ikine(i)/=4096
511 . .AND. ikine(i+4*numnod) /= 0 ) THEN
512 IF(iwl(ikine(i))== 1 .AND. irb(ikine(i))== 1
513 . .AND. itf(ikine(i))== 1 )THEN
514 IF (ikine(i)>14) THEN
515 marqueur(ikine(i)) = 3
516 flag_ikcond = 1
517 ELSE
518 marqueur(ikine(i)) = 0
519 ENDIF
520 ELSEIF(iwl(ikine(i))== 1 .AND. irb(ikine(i))== 1)THEN
521 IF (ikine(i)>12) THEN
522 marqueur(ikine(i)) = 2
523 flag_ikcond = 1
524 ELSE
525 marqueur(ikine(i)) = 0
526 ENDIF
527 ELSEIF(iwl(ikine(i))== 1 .AND. itf(ikine(i))== 1)THEN
528 IF (ikine(i)>6) THEN
529 marqueur(ikine(i)) = -2
530 flag_ikcond = 1
531 ELSE
532 marqueur(ikine(i)) = 0
533 ENDIF
534 ELSE
535 marqueur(ikine(i)) = 1
536 flag_ikcond = 1
537 nikrw = nikrw + 1
538 ikrw(nikrw) = itab(i)
539 ENDIF
540 ENDIF
541 ENDDO
542C---------------------------------------------------------------
543 IF (ipri>=6 .AND. flag_ikcond==1) THEN
544 WRITE(iout,*)' '
545 WRITE(iout,*)
546 . 'LIST OF POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS :'
547 WRITE(iout,*)'--------------------------------------------------'
548 WRITE(iout,*)' '
549
550 DO i=1,13
551 IF ( marqueurdouble(i) == 1 )THEN
552 IF ( i == 1) THEN
553 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
554 .ETWEEN'
555 WRITE(iout,*)' SEVERAL BOUNDARY CONDITIONS :'
556 WRITE(iout,*)' '
557 WRITE(iout,*)'NODES :'
558 k = 0
559 DO j = 1,numnod
560 IF (ibc(ikine(j))== 1
561 . .AND. ibc(ikine(j+3*numnod))== 1) THEN
562 k = k + 1
563 ik(k) = itab(j)
564 IF(k==10)THEN
565 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
566 k = 0
567 ENDIF
568 ENDIF
569 ENDDO
570 IF(k/=0)THEN
571 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
572 ENDIF
573 WRITE(iout,*)' '
574 ENDIF
575 IF ( i == 2) THEN
576 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
577 .ETWEEN'
578 WRITE(iout,*)' SEVERAL INTERFACES TYPE 1 2 12 OR 9'
579 WRITE(iout,*)' '
580 WRITE(IOUT,*)'nodes :'
581 K = 0
582 DO J = 1,NUMNOD
583 IF (ITF(IKINE(J))== 1
584.AND. . ITF(IKINE(J+3*NUMNOD))== 1) THEN
585 K = K + 1
586 IK(K) = ITAB(J)
587 IF(K==10)THEN
588 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
589 K = 0
590 ENDIF
591 ENDIF
592 ENDDO
593 IF(K/=0)THEN
594 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
595 ENDIF
596 WRITE(IOUT,*)' '
597 ENDIF
598 IF ( I == 3) THEN
599 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
600 .etween'
601 WRITE(IOUT,*)' several rigid walls'
602 WRITE(IOUT,*)' '
603 WRITE(IOUT,*)'nodes :'
604 K = 0
605 DO J = 1,NUMNOD
606 IF (IWL(IKINE(J))== 1
607.AND. . IWL(IKINE(J+3*NUMNOD))== 1) THEN
608 K = K + 1
609 IK(K) = ITAB(J)
610 IF(K==10)THEN
611 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
612 K = 0
613 ENDIF
614 ENDIF
615 ENDDO
616 IF(K/=0)THEN
617 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
618 ENDIF
619 WRITE(IOUT,*)' '
620 ENDIF
621.OR. IF ( I == 4 I == 5) THEN
622 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
623 .etween'
624 WRITE(IOUT,*)' several rigid bodies'
625 WRITE(IOUT,*)' '
626 WRITE(IOUT,*)'nodes :'
627 K = 0
628 DO J = 1,NUMNOD
629 IF (IRB(IKINE(J))== 1
630.AND. . IRB(IKINE(J+3*NUMNOD))== 1) THEN
631 K = K + 1
632 IK(K) = ITAB(J)
633 IF(K==10)THEN
634 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
635 K = 0
636 ENDIF
637 ENDIF
638 ENDDO
639 IF(K/=0)THEN
640 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
641 ENDIF
642 WRITE(IOUT,*)' '
643 ENDIF
644 IF ( I == 6) THEN
645 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
646 .etween'
647 WRITE(IOUT,*)' several imposed accelerations, imposed dep
648 .lacements, imposed velocities'
649 WRITE(IOUT,*)' '
650 WRITE(IOUT,*)'nodes :'
651 K = 0
652 DO J = 1,NUMNOD
653 IF (IVF(IKINE(J))== 1
654.AND. . IVF(IKINE(J+3*NUMNOD))== 1) THEN
655 K = K + 1
656 IK(K) = ITAB(J)
657 IF(K==10)THEN
658 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
659 K = 0
660 ENDIF
661 ENDIF
662 ENDDO
663 IF(K/=0)THEN
664 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
665 ENDIF
666 WRITE(IOUT,*)' '
667 ENDIF
668 IF ( I == 7) THEN
669 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
670 .etween'
671 WRITE(IOUT,*)' several rivets'
672 WRITE(IOUT,*)' '
673 WRITE(IOUT,*)'nodes :'
674 K = 0
675 DO J = 1,NUMNOD
676 IF (IRV(IKINE(J))== 1
677.AND. . IRV(IKINE(J+3*NUMNOD))== 1) THEN
678 K = K + 1
679 IK(K) = ITAB(J)
680 IF(K==10)THEN
681 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
682 K = 0
683 ENDIF
684 ENDIF
685 ENDDO
686 IF(K/=0)THEN
687 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
688 ENDIF
689 WRITE(IOUT,*)' '
690 ENDIF
691 IF ( i == 8) THEN
692 WRITE(iout,*)'- POSSIBLE INCOMPATIBLE KINEMATIC CONDITIONS B
693 .ETWEEN'
694 WRITE(iout,*)' SEVERAL CYLINDRICAL JOINTS'
695 WRITE(iout,*)' '
696 WRITE(iout,*)'NODES :'
697 k = 0
698 DO j = 1,numnod
699 IF (ijo(ikine(j))== 1
700 . .AND. ijo(ikine(j+3*numnod))== 1) THEN
701 k = k + 1
702 ik(k) = itab(j)
703 IF(k==10)THEN
704 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
705 k = 0
706 ENDIF
707 ENDIF
708 ENDDO
709 IF(k/=0)THEN
710 WRITE(iout,fmt=fmw_10i)(ik(l),l=1,k)
711 ENDIF
712 WRITE(iout,*)' '
713 ENDIF
714 IF ( i == 9) THEN
715 WRITE(iout,*)'- possible incompatible kinematic conditions b
716 .etween'
717 WRITE(IOUT,*)' several imposed body velocities'
718 WRITE(IOUT,*)' '
719 WRITE(IOUT,*)'nodes :'
720 K = 0
721 DO J = 1,NUMNOD
722 IF (ILMULT(IKINE(J))== 1
723.AND. . ILMULT(IKINE(J+3*NUMNOD))== 1) THEN
724 K = K + 1
725 IK(K) = ITAB(J)
726 IF(K==10)THEN
727 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
728 K = 0
729 ENDIF
730 ENDIF
731 ENDDO
732 IF(K/=0)THEN
733 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
734 ENDIF
735 WRITE(IOUT,*)' '
736 ENDIF
737 IF ( I == 10) THEN
738 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
739 .etween'
740 WRITE(IOUT,*)' several lagrange multipliers'
741 WRITE(IOUT,*)' '
742 WRITE(IOUT,*)'nodes :'
743 K = 0
744 DO J = 1,NUMNOD
745 IF (IBC(IKINE(J))== 1
746.AND. . IBC(IKINE(J+3*NUMNOD))== 1) THEN
747 K = K + 1
748 IK(K) = ITAB(J)
749 IF(K==10)THEN
750 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
751 K = 0
752 ENDIF
753 ENDIF
754 ENDDO
755 IF(K/=0)THEN
756 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
757 ENDIF
758 WRITE(IOUT,*)' '
759 ENDIF
760 IF ( I == 11) THEN
761 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
762 .etween'
763 WRITE(IOUT,*)' several rigid links :'
764 WRITE(IOUT,*)' '
765 WRITE(IOUT,*)'nodes :'
766 K = 0
767 DO J = 1,NUMNOD
768 IF (IRLK(IKINE(J))== 1
769.AND. . IRLK(IKINE(J+3*NUMNOD))== 1) THEN
770 K = K + 1
771 IK(K) = ITAB(J)
772 IF(K==10)THEN
773 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
774 K = 0
775 ENDIF
776 ENDIF
777 ENDDO
778 IF(K/=0)THEN
779 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
780 ENDIF
781 WRITE(IOUT,*)' '
782 ENDIF
783 IF ( I == 12) THEN
784 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
785 .etween'
786 WRITE(IOUT,*)' several rbe2 :'
787 WRITE(IOUT,*)' '
788 WRITE(IOUT,*)'nodes :'
789 K = 0
790 DO J = 1,NUMNOD
791 IF (IKRBE2(IKINE(J))== 1
792.AND. . IKRBE2(IKINE(J+3*NUMNOD))== 1) THEN
793 K = K + 1
794 IK(K) = ITAB(J)
795 IF(K==10)THEN
796 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
797 K = 0
798 ENDIF
799 ENDIF
800 ENDDO
801 IF(K/=0)THEN
802 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
803 ENDIF
804 WRITE(IOUT,*)' '
805 ENDIF
806 IF ( I == 13) THEN
807 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
808 .etween'
809 WRITE(IOUT,*)' several rbe3 :'
810 WRITE(IOUT,*)' '
811 WRITE(IOUT,*)'nodes :'
812 K = 0
813 DO J = 1,NUMNOD
814 IF (IKRBE3(IKINE(J))== 1
815.AND. . IKRBE3(IKINE(J+3*NUMNOD))== 1) THEN
816 K = K + 1
817 IK(K) = ITAB(J)
818 IF(K==10)THEN
819 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
820 K = 0
821 ENDIF
822 ENDIF
823 ENDDO
824 IF(K/=0)THEN
825 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
826 ENDIF
827 WRITE(IOUT,*)' '
828 ENDIF
829 ENDIF
830 ENDDO
831C '
832 DO I=1,8192
833 IF ( MARQUEUR(I) /= 0 )THEN
834 WRITE(IOUT,*)
835 . '- possible incompatible kinematic conditions between:'
836 DO J=1,ABS(MARQUEUR(I))
837C cas RBODY & RWALL, INTER 1_2_9 & RWALL, RBODY & INTER 1_2_9 & RWALL
838.AND. IF (J==1 ABS(MARQUEUR(I)) == 2 ) IWL(I)=IWL(I)-1
839.AND. IF (J==1 ABS(MARQUEUR(I)) == 3 ) THEN
840 IWL(I)=IWL(I)-1
841 ITF(I) = ITF(I) - 1
842 ENDIF
843.AND. IF (J==2 MARQUEUR(I) == 2 ) THEN
844 WRITE(IOUT,*)
845 . '- possible incompatible kinematic conditions between:'
846 IWL(I) = IWL(I) + 1
847 IRB(I) = IRB(I) - 1
848 ENDIF
849.AND. IF (J==2 MARQUEUR(I) == -2 ) THEN
850 WRITE(IOUT,*)
851 . '- possible incompatible kinematic conditions between:'
852 IWL(I) = IWL(I) + 1
853 ITF(I) = ITF(I) - 1
854 ENDIF
855.AND. IF (J==2 MARQUEUR(I) == 3 ) THEN
856 WRITE(IOUT,*)
857 . '- possible incompatible kinematic conditions between:'
858 IWL(I) = IWL(I) + 1
859 IRB(I) = IRB(I) - 1
860 ENDIF
861.AND. IF (J==3 MARQUEUR(I) == 3 ) THEN
862 WRITE(IOUT,*)
863 . '- possible incompatible kinematic conditions between:'
864 IWL(I) = IWL(I) - 1
865 ITF(I) = ITF(I) +1
866 ENDIF
867C
868 IF (IBC(I)== 1) THEN
869 WRITE(IOUT,*)' boundary condition'
870 ENDIF
871 IF (ITF(I)== 1) THEN
872 WRITE(IOUT,*)' INTERFACE type 1 2 12 or 9'
873 ENDIF
874 IF (IWL(I)== 1) THEN
875 WRITE(IOUT,*)' rigid wall'
876 ENDIF
877 IF (IRB(I)== 1) THEN
878 WRITE(IOUT,*)' rigid body'
879 ENDIF
880 IF (IRB2(I)== 1) THEN
881 WRITE(IOUT,*)' rigid body'
882 ENDIF
883 IF (IVF(I)== 1) THEN
884 WRITE(IOUT,*)' imposed acceleration, imposed displacement
885 ., imposed velocity'
886 ENDIF
887 IF (IRV(I)== 1) THEN
888 WRITE(IOUT,*)' rivet'
889 ENDIF
890 IF (IJO(I)== 1) THEN
891 WRITE(IOUT,*)' cylindrical joint'
892 ENDIF
893 IF (IRBM(I)== 1) THEN
894 WRITE(IOUT,*)' imposed body velocity'
895 ENDIF
896 IF (ILMULT(I)== 1) THEN
897 WRITE(IOUT,*)' lagrange multipliers'
898 ENDIF
899 IF (IRLK(I)== 1) THEN
900 WRITE(IOUT,*)' rigid link'
901 ENDIF
902 IF (IKRBE2(I)== 1) THEN
903 WRITE(IOUT,*)' rbe2'
904 ENDIF
905 IF (IKRBE3(I)== 1) THEN
906 WRITE(IOUT,*)' rbe3'
907 ENDIF
908 WRITE(IOUT,*)
909 . ' '
910 WRITE(IOUT,*)'nodes :'
911 K = 0
912 DO J1 = 1,NUMNOD
913 IF (IKINE(J1) == I) THEN
914 K = K + 1
915 IK(K) = ITAB(J1)
916 IF(K==10)THEN
917 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
918 K = 0
919 ENDIF
920 ENDIF
921 ENDDO
922 IF(K/=0)THEN
923 WRITE(IOUT,FMT=FMW_10I)(IK(L),L=1,K)
924 ENDIF
925 WRITE(IOUT,*)' '
926.AND. IF (J==2 MARQUEUR(I) == 2 )IRB(I) = IRB(I) + 1
927.AND. IF (J==2 MARQUEUR(I) == -2 )ITF(I) = ITF(I) + 1
928.AND. IF (J==3 MARQUEUR(I) == 3 ) THEN
929 IRB(I) = IRB(I) + 1
930 IWL(I) = IWL(I) + 1
931 ENDIF
932 ENDDO
933 ENDIF
934 ENDDO
935 ENDIF
936C---------------------------------------------------------------
937 IF(KWARN>0)THEN
938 CALL ANCMSG(MSGID=312,ANMODE=ANINFO,MSGTYPE=MSGWARNING,
939 . I1=KWARN)
940 WRITE(IOUT,*)' '
941 WRITE(IOUT,*)' '
942c WRITE(IOUT,FMT=FMW_10I)(IKRW(L),L=1,KWARN)
943c
944 ENDIF
945C---------------------------------------------------------------
946C SUMMARY OF INCOMPATIBLE CONDITIONS BY TYPE
947C---------------------------------------------------------------
948 WRITE(IOUT,*)'summary of possible incompatible kinematic condition
949 .s :'
950 WRITE(IOUT,*)'--------------------------------------------------
951 .---'
952 WRITE(IOUT,*)' '
953 IF (FLAG_IKCOND==0) THEN
954 WRITE(IOUT,*)'no true incompatible kinematic condition'
955 IF (MARQ2 == 1) THEN
956 WRITE(IOUT,*)' - after secondary nodes of rigid bodies were suppre
957 .ssed from rigid wall(s)'
958 ENDIF
959 IF (MARQM2 == 1) THEN
960 WRITE(IOUT,*)' - after secondary nodes of interfaces TYPE 1,2,12 o
961 .r 9 were suppressed'
962 WRITE(IOUT,*)' from rigid wall(s)'
963 ENDIF
964 ENDIF
965C---------------------------------------------------------------
966 DO I=1,13
967 IF ( MARQUEURDOUBLE(I) == 1 )THEN
968 IF ( I == 1) THEN
969 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
970 .etween'
971 WRITE(IOUT,*)' several boundary conditions'
972 WRITE(IOUT,*)' '
973 WRITE(IOUT,*)' '
974 ENDIF
975 IF ( I == 2) THEN
976 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
977 .etween'
978 WRITE(IOUT,*)' several interfaces TYPE 1 2 12 or 9'
979 WRITE(IOUT,*)' '
980 WRITE(IOUT,*)' '
981 ENDIF
982 IF ( I == 3) THEN
983 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
984 .etween'
985 WRITE(IOUT,*)' several rigid walls'
986 WRITE(IOUT,*)' '
987 WRITE(IOUT,*)' '
988 ENDIF
989.OR. IF ( I == 4 I == 5) THEN
990 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
991 .etween'
992 WRITE(IOUT,*)' several rigid bodies'
993 WRITE(IOUT,*)' '
994 WRITE(IOUT,*)' '
995 ENDIF
996 IF ( I == 6) THEN
997 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
998 .etween'
999 WRITE(IOUT,*)' several imposed accelerations, imposed dep
1000 .lacements, imposed velocities'
1001 WRITE(IOUT,*)' '
1002 WRITE(IOUT,*)' '
1003 ENDIF
1004 IF ( I == 7) THEN
1005 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
1006 .etween'
1007 WRITE(IOUT,*)' several rivets'
1008 WRITE(IOUT,*)' '
1009 WRITE(IOUT,*)' '
1010 ENDIF
1011 IF ( I == 8) THEN
1012 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
1013 .etween'
1014 WRITE(IOUT,*)' several cylindrical joints'
1015 WRITE(IOUT,*)' '
1016 WRITE(IOUT,*)' '
1017 ENDIF
1018 IF ( I == 9) THEN
1019 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
1020 .etween'
1021 WRITE(IOUT,*)' several imposed body velocities'
1022 WRITE(IOUT,*)' '
1023 WRITE(IOUT,*)' '
1024 ENDIF
1025 IF ( I == 10) THEN
1026 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
1027 .etween'
1028 WRITE(IOUT,*)' several lagrange multipliers'
1029 WRITE(IOUT,*)' '
1030 WRITE(IOUT,*)' '
1031 ENDIF
1032 IF ( I == 11) THEN
1033 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
1034 .etween'
1035 WRITE(IOUT,*)' several rigid links'
1036 WRITE(IOUT,*)' '
1037 WRITE(IOUT,*)' '
1038 ENDIF
1039 IF ( I == 12) THEN
1040 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
1041 .etween'
1042 WRITE(IOUT,*)' several rbe2'
1043 WRITE(IOUT,*)' '
1044 WRITE(IOUT,*)' '
1045 ENDIF
1046 IF ( I == 13) THEN
1047 WRITE(IOUT,*)'- possible incompatible kinematic conditions b
1048 .etween'
1049 WRITE(IOUT,*)' several rbe3'
1050 WRITE(IOUT,*)' '
1051 WRITE(IOUT,*)' '
1052 ENDIF
1053 ENDIF
1054 ENDDO
1055C '
1056 DO I=1,8192
1057 IF ( MARQUEUR(I) /= 0 )THEN
1058 WRITE(IOUT,*)
1059 . '- possible incompatible kinematic conditions between:'
1060 DO J=1,ABS(MARQUEUR(I))
1061.AND. IF (J==1 ABS(MARQUEUR(I)) == 2 ) IWL(I)=IWL(I)-1
1062.AND. IF (J==1 ABS(MARQUEUR(I)) == 3 ) THEN
1063 IWL(I )= IWL(I) - 1
1064 ITF(I) = ITF(I) - 1
1065 ENDIF
1066.AND. IF (J==2 MARQUEUR(I) == 2 ) THEN
1067 WRITE(IOUT,*)
1068 . '- possible incompatible kinematic conditions between:'
1069 IWL(I) = IWL(I) + 1
1070 IRB(I) = IRB(I) - 1
1071 ENDIF
1072.AND. IF (J==2 MARQUEUR(I) == -2 ) THEN
1073 WRITE(IOUT,*)
1074 . '- possible incompatible kinematic conditions between:'
1075 IWL(I) = IWL(I) + 1
1076 ITF(I) = ITF(I) - 1
1077 ENDIF
1078.AND. IF (J==2 MARQUEUR(I) == 3 ) THEN
1079 WRITE(IOUT,*)
1080 . '- possible incompatible kinematic conditions between:'
1081 IWL(I) = IWL(I) + 1
1082 IRB(I) = IRB(I) - 1
1083 ENDIF
1084.AND. IF (J==3 MARQUEUR(I) == 3 ) THEN
1085 WRITE(IOUT,*)
1086 . '- possible incompatible kinematic conditions between:'
1087 IWL(I) = IWL(I) - 1
1088 ITF(I) = ITF(I) + 1
1089 ENDIF
1090C
1091 IF (IBC(I)== 1) THEN
1092 WRITE(IOUT,*)' boundary condition'
1093 ENDIF
1094 IF (ITF(I)== 1) THEN
1095 WRITE(IOUT,*)' INTERFACE type 1 2 12 or 9'
1096 ENDIF
1097 IF (IWL(I)== 1) THEN
1098 WRITE(IOUT,*)' rigid wall'
1099 ENDIF
1100 IF (IRB(I)== 1) THEN
1101 WRITE(IOUT,*)' rigid body'
1102 ENDIF
1103 IF (IRB2(I)== 1) THEN
1104 WRITE(IOUT,*)' rigid body'
1105 ENDIF
1106 IF (IVF(I)== 1) THEN
1107 WRITE(IOUT,*)' imposed acceleration, imposed displacement
1108 ., imposed velocity'
1109 ENDIF
1110 IF (IRV(I)== 1) THEN
1111 WRITE(IOUT,*)' rivet'
1112 ENDIF
1113 IF (IJO(I)== 1) THEN
1114 WRITE(IOUT,*)' cylindrical joint'
1115 ENDIF
1116 IF (IRBM(I)== 1) THEN
1117 WRITE(IOUT,*)' imposed body velocity'
1118 ENDIF
1119 IF (ILMULT(I)== 1) THEN
1120 WRITE(IOUT,*)' lagrange multipliers'
1121 ENDIF
1122 IF (IRLK(I)== 1) THEN
1123 WRITE(IOUT,*)' rigid link'
1124 ENDIF
1125 IF (IKRBE2(I)== 1) THEN
1126 WRITE(IOUT,*)' rbe2'
1127 ENDIF
1128 IF (IKRBE3(I)== 1) THEN
1129 WRITE(IOUT,*)' rbe3'
1130 ENDIF
1131.AND. IF (J==2 MARQUEUR(I) == 2 )IRB(I) = IRB(I) + 1
1132.AND. IF (J==2 MARQUEUR(I) == -2 )ITF(I) = ITF(I) + 1
1133.AND. IF (J==3 MARQUEUR(I) == 3 ) THEN
1134 IRB(I) = IRB(I) + 1
1135 IWL(I) = IWL(I) + 1
1136 ENDIF
1137.AND. IF(KWARN>0IPRI>=3)THEN
1138 WRITE(IOUT,*)'nodes :'
1139 WRITE(IOUT,FMT=FMW_10I)(IKRW(L),L=1,NIKRW)
1140 ENDIF
1141 WRITE(IOUT,*)' '
1142 WRITE(IOUT,*)' '
1143 ENDDO
1144 ENDIF
1145 ENDDO
1146!
1147 NUN=0
1148 DO I=1,NRBE3
1149 IPEN = IRBE3(9,I) ! add warning for added mass+pen
1150 IF (IPEN>0) NUN = NUN + 1
1151 IF (IPEN <0) IRBE3(9,I) =0
1152 END DO
1153 IF (NUN>0) THEN
1154 WRITE(IOUT,'(/i8,x,a)')NUN,'of rbe3 have been switched to penalty method'
1155 ENDIF
1156C---------------------------------------------------------------
1157 DO I=1,NUMNOD
1158C reset flag impact / wall
1159ccc IF(IWL(IKINE(I))==1)IKINE(I) = IKINE(I) - 4
1160 KINET(I)=IKINE(I)
1161 ENDDO
1162 DEALLOCATE(NKINDOUBLE,NKIN,IKRW)
1163
1164C
1165Cls
1166Cls
1167Cls WARNING : RETURN HERE !!!
1168Cls
1169 RETURN
1170Cls
1171Cls
1172Cls
1173 JWARN = 0
1174 DO 100 I=1,NUMNOD
1175 NK = IBC(IKINE(I))+ITF(IKINE(I))+IWL(IKINE(I))+
1176 . IRB(IKINE(I))+IRB2(IKINE(I))+
1177 . IVF(IKINE(I))+IRV(IKINE(I))+IJO(IKINE(I))
1178 IF(NK>=2)THEN
1179 JWARN = JWARN+1
1180 WRITE(IOUT,*)
1181 . ' -',NK,' kinematic conditions on node',ITAB(I),':'
1182 IF(IBC(IKINE(I))==1) WRITE(IOUT,*)
1183 . ' - boundary condition'
1184 IF(ITF(IKINE(I))==1) WRITE(IOUT,*)
1185 . ' - INTERFACE type 1 2 12 or 9'
1186 IF(IWL(IKINE(I))==1) WRITE(IOUT,*)
1187 . ' - rigid wall'
1188 IF(IRB(IKINE(I))==1) WRITE(IOUT,*)
1189 . ' - rigid body'
1190 IF(IRB2(IKINE(I))==1) WRITE(IOUT,*)
1191 . ' - rigid body'
1192 IF(IVF(IKINE(I))==1) WRITE(IOUT,*)
1193 . ' - fixed velocity'
1194 IF(IRV(IKINE(I))==1) WRITE(IOUT,*)
1195 . ' - rivet'
1196 IF(IJO(IKINE(I))==1) WRITE(IOUT,*)
1197 . ' - cylindrical joint'
1198 IF(IRBM(IKINE(I))==1) WRITE(IOUT,*)
1199 . ' - imposed body velocity'
1200 IF(ILMULT(IKINE(I))==1) WRITE(IOUT,*)
1201 . ' - lagrange multipliers'
1202 ENDIF
1203 100 CONTINUE
1204C
1205 IWARN = IWARN + JWARN
1206 IF(JWARN/=0)THEN
1207 WRITE(ISTDO,'(a,i8,a)') ' ** warning',JWARN,
1208 . ' nodes with incompatible kinematic conditions'
1209 WRITE(IOUT,FMT=FMW_A_I_A) ' ** warning',JWARN,
1210 . ' nodes with incompatible kinematic conditions'
1211 ENDIF
1212C
1213 RETURN
1214 END
1215!||====================================================================
1216!|| kinrem ../starter/source/constraints/general/kinchk.F
1217!||--- called by ------------------------------------------------------
1218!|| lectur ../starter/source/starter/lectur.F
1219!||====================================================================
1220 SUBROUTINE KINREM(IKINE,IKINEW,RWL,ITAB,NPRW,LPRW,
1221 1 NPBY, LPBY)
1222C-----------------------------------------------
1223C I m p l i c i t T y p e s
1224C-----------------------------------------------
1225#include "implicit_f.inc"
1226C-----------------------------------------------
1227C C o m m o n B l o c k s
1228C-----------------------------------------------
1229#include "com04_c.inc"
1230#include "kincod_c.inc"
1231#include "param_c.inc"
1232C-----------------------------------------------------------------
1233C D u m m y A r g u m e n t s
1234C-----------------------------------------------
1235 INTEGER IKINE(*), IKINEW(*), NPRW(*), LPRW(*),ITAB(*),
1236 . NPBY(NNPBY,*), LPBY(*)
1237 my_real
1238 . RWL(NRWLP,*)
1239C-----------------------------------------------
1240C L o c a l V a r i a b l e s
1241C-----------------------------------------------
1242 INTEGER I, J, K, L, N, KK, IKK, ITYP, NE, NSL
1243C-----------------------------------------------------------------
1244C Copy to work table
1245 DO N=1,NUMNOD
1246 IKINEW(N)=IKINE(N)
1247 END DO
1248C=======================================================================
1249C AUTOMATIC CORRECTIONS INTERFACE 1,2,9 OR RBODY WITH RWALL
1250C=======================================================================
1251 K=0
1252 KK=0
1253
1254 DO N=1,NRWALL
1255
1256 NSL=NPRW(N)
1257 ITYP=NPRW(N+3*NRWALL)
1258 J=0
1259 DO L=1,NSL
1260 I=LPRW(K+L)
1261 IKK=IABS(IKINEW(I))
1262.OR. IF(IRB(IKK)/=0ITF(IKK)/=0)THEN
1263 IF(IWL(IKINEW(I))==1)IKINEW(I) = IKINEW(I) - 4
1264 ELSE
1265 J=J+1
1266 LPRW(KK+J)=LPRW(K+L)
1267 ENDIF
1268 ENDDO
1269 K = K+NSL
1270 NSL=J
1271 KK = KK+NSL
1272 NPRW(N)=NSL
1273 IF(ITYP<0)THEN
1274 NE=NINT(RWL(8,N))
1275 DO I=1,NE
1276 LPRW(KK+I)=LPRW(K+I)
1277 ENDDO
1278 K = K+NE
1279 KK = KK+NE
1280 ENDIF
1281 ENDDO
1282C
1283 RETURN
1284 END
1285!||====================================================================
1286!|| inivchk ../starter/source/constraints/general/kinchk.F
1287!||--- called by ------------------------------------------------------
1288!|| lectur ../starter/source/starter/lectur.F
1289!||--- calls -----------------------------------------------------
1290!|| rbe2_impd ../starter/source/constraints/general/kinchk.F
1291!|| rbe3_impd ../starter/source/constraints/general/kinchk.F
1292!|| rby_v0 ../starter/source/constraints/general/kinchk.F
1293!||====================================================================
1294 SUBROUTINE INIVCHK(IKINE,RWL,ITAB,NPRW,LPRW,KINET,
1295 1 NPBY, LPBY,IRBE2,LRBE2,IRBE3,LRBE3,
1296 2 FRBE3,X ,SKEW ,V ,VR )
1297C-----------------------------------------------
1298C I m p l i c i t T y p e s
1299C-----------------------------------------------
1300#include "implicit_f.inc"
1301C-----------------------------------------------
1302C C o m m o n B l o c k s
1303C-----------------------------------------------
1304#include "com04_c.inc"
1305#include "lagmult.inc"
1306#include "param_c.inc"
1307C-----------------------------------------------------------------
1308C D u m m y A r g u m e n t s
1309C-----------------------------------------------
1310 INTEGER IKINE(*),NPRW(*), LPRW(*),ITAB(*),KINET(*),
1311 . NPBY(NNPBY,*), LPBY(*),IRBE2(NRBE2L,*),LRBE2(*),
1312 . IRBE3(NRBE3L,*),LRBE3(*)
1313 my_real
1314 . RWL(NRWLP,*),V(3,*),VR(3,*),X(3,*),FRBE3(*),SKEW(*)
1315C-----------------------------------------------
1316C L o c a l V a r i a b l e s
1317C-----------------------------------------------
1318 INTEGER I, J, K, L, N, KK, IKK, IKK2, NK, JWARN, ITYP, NE, NSL,
1319 . IK(10), RBWARN, RB2WARN, KRB, NSLRB,ICDG,ISEN,M
1320C-----------------------------------------------------------------
1321C=======================================================================
1322C AUTOMATIC CORRECTIONS FOR INITIAL VELOCITIES
1323C=======================================================================
1324C should be done in hierarchy order: RBODY,RBE3,RBE2,int2...
1325C-----------------------------------------------------------------
1326 K=1
1327 DO I=1,NRBYKIN
1328 M =NPBY(1,I)
1329 NSL=NPBY(2,I)
1330 ICDG=NPBY(3,I)
1331 ISEN=NPBY(4,I)
1332 IF (ISEN==0) THEN
1333 CALL RBY_V0(X ,LPBY(K) ,M ,NSL ,V ,VR )
1334 ENDIF
1335 K = K + NSL
1336 ENDDO
1337C-----------------------------------------------------------------
1338 DO I=NRBYKIN+1,NRBYLAG
1339 M =NPBY(1,I)
1340 NSL=NPBY(2,I)
1341 ICDG=NPBY(3,I)
1342 ISEN=NPBY(4,I)
1343 IF (ISEN==0) THEN
1344 CALL RBY_V0(X ,LPBY(K) ,M ,NSL ,V ,VR )
1345 ENDIF
1346 K = K + 3*NSL
1347 ENDDO
1348C-----------------------------------------------------------------
1349 IF(NRBE3>0)THEN
1350 CALL RBE3_IMPD(IRBE3 ,LRBE3 ,X ,V ,VR ,
1351 1 FRBE3 ,SKEW )
1352 ENDIF
1353C-----------------------------------------------------------------
1354 IF(NRBE2>0)THEN
1355 CALL RBE2_IMPD(IRBE2 ,LRBE2 ,X ,V ,VR ,
1356 1 SKEW )
1357 ENDIF
1358C-----------------------------------------------------------------
1359
1360 RETURN
1361 END
1362!||====================================================================
1363!|| rby_v0 ../starter/source/constraints/general/kinchk.F
1364!||--- called by ------------------------------------------------------
1365!|| inivchk ../starter/source/constraints/general/kinchk.F
1366!||====================================================================
1367 SUBROUTINE RBY_V0(X ,NOD ,M ,NSN ,D ,DR )
1368C-----------------------------------------------
1369C I m p l i c i t T y p e s
1370C-----------------------------------------------
1371#include "implicit_f.inc"
1372C-----------------------------------------------
1373C D u m m y A r g u m e n t s
1374C-----------------------------------------------
1375 INTEGER NOD(*), M,NSN
1376C REAL
1377 my_real
1378 . X(3,*), D(3,*),DR(3,*)
1379C-----------------------------------------------
1380C L o c a l V a r i a b l e s
1381C-----------------------------------------------
1382 INTEGER I, N
1383C REAL
1384 my_real
1385 . XS,YS,ZS
1386C-----------------------------------------------
1387 DO I=1,NSN
1388 N = NOD(I)
1389 XS=X(1,N)-X(1,M)
1390 YS=X(2,N)-X(2,M)
1391 ZS=X(3,N)-X(3,M)
1392 D(1,N)=D(1,M)+DR(2,M)*ZS-DR(3,M)*YS
1393 D(2,N)=D(2,M)-DR(1,M)*ZS+DR(3,M)*XS
1394 D(3,N)=D(3,M)+DR(1,M)*YS-DR(2,M)*XS
1395 DR(1,N)= DR(1,M)
1396 DR(2,N)= DR(2,M)
1397 DR(3,N)= DR(3,M)
1398 ENDDO
1399C
1400 RETURN
1401 END
1402!||====================================================================
1403!|| rbe3_impd ../starter/source/constraints/general/kinchk.F
1404!||--- called by ------------------------------------------------------
1405!|| inivchk ../starter/source/constraints/general/kinchk.F
1406!||--- calls -----------------------------------------------------
1407!|| prerbe3 ../starter/source/constraints/general/kinchk.F
1408!|| rbe3cl ../starter/source/constraints/general/kinchk.F
1409!||====================================================================
1410 SUBROUTINE RBE3_IMPD(IRBE3 ,LRBE3 ,X ,D ,DR ,
1411 1 FRBE3 ,SKEW )
1412C-----------------------------------------------
1413C I m p l i c i t T y p e s
1414C-----------------------------------------------
1415#include "implicit_f.inc"
1416C-----------------------------------------------
1417C C o m m o n B l o c k s
1418C-----------------------------------------------
1419#include "com01_c.inc"
1420#include "com04_c.inc"
1421#include "param_c.inc"
1422#include "tabsiz_c.inc"
1423C-----------------------------------------------
1424C D u m m y A r g u m e n t s
1425C-----------------------------------------------
1426 INTEGER IRBE3(NRBE3L,*),LRBE3(*)
1427C REAL
1428 my_real
1429 . X(3,*), D(3,*), DR(3,*), FRBE3(*),SKEW(*)
1430C-----------------------------------------------
1431C L o c a l V a r i a b l e s
1432C-----------------------------------------------
1433 INTEGER I, J, N, M, NS ,NML, IAD,JJ,IROT,IADS,MAX_M,IROTG,
1434 . JT(3,NRBE3),JR(3,NRBE3),NM,NN,K
1435C REAL
1436 my_real
1437 . VS(3),VRS(3)
1438 my_real,
1439 . DIMENSION(:,:,:),ALLOCATABLE :: FDSTNB ,MDSTNB
1440
1441C======================================================================|
1442 IADS = SLRBE3/2
1443 CALL PRERBE3(IRBE3 ,MAX_M , IROTG,JT ,JR )
1444 ALLOCATE(FDSTNB(3,6,MAX_M))
1445 IF (IROTG>0) ALLOCATE(MDSTNB(3,6,MAX_M))
1446 DO N=1,NRBE3
1447 IAD = IRBE3(1,N)
1448 NS = IRBE3(3,N)
1449 IF (NS==0) CYCLE
1450 NML = IRBE3(5,N)
1451 IROT =MIN(IRBE3(6,N),IRODDL)
1452 CALL RBE3CL(LRBE3(IAD+1),LRBE3(IADS+IAD+1),NS ,X ,
1453 . FRBE3(6*IAD+1),SKEW ,NML ,IROT ,FDSTNB ,
1454 . MDSTNB )
1455 DO J = 1,3
1456 VS(J) = ZERO
1457 VRS(J) = ZERO
1458 ENDDO
1459 DO I=1,NML
1460 M = LRBE3(IAD+I)
1461 DO J = 1,3
1462 DO K = 1,3
1463 VS(J) = VS(J)+FDSTNB(K,J,I)*D(K,M)
1464 VRS(J) = VRS(J)+FDSTNB(K,J+3,I)*D(K,M)
1465 ENDDO
1466 ENDDO
1467 ENDDO
1468 IF (IROT>0) THEN
1469 DO I=1,NML
1470 M = LRBE3(IAD+I)
1471 DO J = 1,3
1472 DO K = 1,3
1473 VS(J) = VS(J)+MDSTNB(K,J,I)*DR(K,M)
1474 VRS(J) = VRS(J)+MDSTNB(K,J+3,I)*DR(K,M)
1475 ENDDO
1476 ENDDO
1477 ENDDO
1478 ENDIF
1479 DO J = 1,3
1480 D(J,NS) = VS(J) *JT(J,N)
1481 ENDDO
1482 IF ((JR(1,N)+JR(2,N)+JR(3,N))>0) THEN
1483 DO J = 1,3
1484 DR(J,NS) = VRS(J) *JR(J,N)
1485 ENDDO
1486 ENDIF
1487 ENDDO
1488C
1489 DEALLOCATE(FDSTNB)
1490 IF (IROTG>0) DEALLOCATE(MDSTNB)
1491C---
1492 RETURN
1493 END
1494!||====================================================================
1495!|| prerbe3 ../starter/source/constraints/general/kinchk.F
1496!||--- called by ------------------------------------------------------
1497!|| rbe3_impd ../starter/source/constraints/general/kinchk.F
1498!||====================================================================
1499 SUBROUTINE PRERBE3(IRBE3 ,MAX_M , IROTG,JT ,JR )
1500C-----------------------------------------------
1501C I m p l i c i t T y p e s
1502C-----------------------------------------------
1503#include "implicit_f.inc"
1504C-----------------------------------------------
1505C C o m m o n B l o c k s
1506C-----------------------------------------------
1507#include "com04_c.inc"
1508#include "param_c.inc"
1509C-----------------------------------------------
1510C D u m m y A r g u m e n t s
1511C-----------------------------------------------
1512 INTEGER IRBE3(NRBE3L,*),MAX_M , IROTG,JT(3,*) ,JR(3,*)
1513C REAL
1514C-----------------------------------------------
1515C L o c a l V a r i a b l e s
1516C-----------------------------------------------
1517 INTEGER I, J, N,NML,IC,ICT,ICR,IROT
1518C======================================================================|
1519 MAX_M=0
1520 IROTG=0
1521 DO N=1,NRBE3
1522 NML = IRBE3(5,N)
1523 IROT =IRBE3(6,N)
1524 MAX_M=MAX(MAX_M,NML)
1525 IROTG=MAX(IROTG,IROT)
1526 IC=IRBE3(4,N)
1527 ICT=IC/512
1528 ICR=(IC-512*(ICT))/64
1529 DO J =1,3
1530 JT(J,N)=0
1531 JR(J,N)=0
1532 ENDDO
1533 SELECT CASE (ICT)
1534 CASE(1)
1535 JT(3,N)=1
1536 CASE(2)
1537 JT(2,N)=1
1538 CASE(3)
1539 JT(2,N)=1
1540 JT(3,N)=1
1541 CASE(4)
1542 JT(1,N)=1
1543 CASE(5)
1544 JT(1,N)=1
1545 JT(3,N)=1
1546 CASE(6)
1547 JT(1,N)=1
1548 JT(2,N)=1
1549 CASE(7)
1550 JT(1,N)=1
1551 JT(2,N)=1
1552 JT(3,N)=1
1553 END SELECT
1554 SELECT CASE (ICR)
1555 CASE(1)
1556 JR(3,N)=1
1557 CASE(2)
1558 JR(2,N)=1
1559 CASE(3)
1560 JR(2,N)=1
1561 JR(3,N)=1
1562 CASE(4)
1563 JR(1,N)=1
1564 CASE(5)
1565 JR(1,N)=1
1566 JR(3,N)=1
1567 CASE(6)
1568 JR(1,N)=1
1569 JR(2,N)=1
1570 CASE(7)
1571 JR(1,N)=1
1572 JR(2,N)=1
1573 JR(3,N)=1
1574 END SELECT
1575 ENDDO
1576C---
1577 RETURN
1578 END
1579!||====================================================================
1580!|| rbe3cl ../starter/source/constraints/general/kinchk.F
1581!||--- called by ------------------------------------------------------
1582!|| rbe3_impd ../starter/source/constraints/general/kinchk.F
1583!||--- calls -----------------------------------------------------
1584!|| arret ../starter/source/system/arret.F
1585!|| invert ../starter/source/constraints/general/rbe3/hm_read_rbe3.F
1586!|| rbe3uf ../starter/source/constraints/general/rbe3/hm_read_rbe3.F
1587!|| rbe3um ../starter/source/constraints/general/rbe3/hm_read_rbe3.F
1588!|| zero1 ../starter/source/constraints/general/rbe3/hm_read_rbe3.F
1589!||====================================================================
1590 SUBROUTINE RBE3CL(INRBE3 ,ILRBE3 ,NS ,XYZ ,FRBE3 ,
1591 . SKEW ,NG ,IROT ,FDSTNB ,MDSTNB )
1592C-----------------------------------------------
1593C I m p l i c i t T y p e s
1594C-----------------------------------------------
1595#include "implicit_f.inc"
1596C-----------------------------------------------
1597C C o m m o n B l o c k s
1598C-----------------------------------------------
1599#include "units_c.inc"
1600#include "param_c.inc"
1601C-----------------------------------------------
1602C D u m m y A r g u m e n t s
1603C-----------------------------------------------
1604 INTEGER INRBE3(*),ILRBE3(*),NG, NS,IROT
1605C REAL
1606 my_real
1607 . XYZ(3,*), FRBE3(6,*), SKEW(LSKEW,*),FDSTNB(3,6,*), MDSTNB(3,6,*)
1608C-----------------------------------------------
1609C L o c a l V a r i a b l e s
1610C-----------------------------------------------
1611 INTEGER I, J, K,N, M ,NML, IAD,JJ,KG,NSNGLR,IELSUB,IERR,ng1
1612C REAL
1613 my_real
1614 * TW(3,NG), RW(3,NG),
1615 * FUFXLC(3,NG), FUFYLC(3,NG), FUFZLC(3,NG),
1616 * FUMXLC(3,NG), FUMYLC(3,NG), FUMZLC(3,NG),
1617 * MXLC(3,NG), MYLC(3,NG), MZLC(3,NG),
1618 * FUFX(3,NG), FUFY(3,NG), FUFZ(3,NG),
1619 * MUFX(3,NG), MUFY(3,NG), MUFZ(3,NG),
1620 * FUMX(3,NG), FUMY(3,NG), FUMZ(3,NG),
1621 * MX(3,NG), MY(3,NG), MZ(3,NG),
1622 * MUMX(3,NG), MUMY(3,NG), MUMZ(3,NG),
1623 * EL(3,3,NG)
1624 my_real
1625 * DENFX, DENFY, DENFZ, DENMX, DENMY, DENMZ,
1626 * REFPT(3), CGMX(3), CGMY(3), CGMZ(3), AVEREF,
1627 * TFUFX(3), TFUFY(3), TFUFZ(3),
1628 * TMUFX(3), TMUFY(3), TMUFZ(3),
1629 * TFUMX(3), TFUMY(3), TFUMZ(3),
1630 * TMUMX(3), TMUMY(3), TMUMZ(3),
1631 * A(6,6), C(6,6), T(3,3)
1632C
1633C INITIALIZATION
1634C
1635 CALL ZERO1(FDSTNB,3*NG*6)
1636 IF (IROT>0) CALL ZERO1(MDSTNB,3*NG*6)
1637 CALL ZERO1(A,36)
1638 CALL ZERO1(C,36)
1639 CALL ZERO1(CGMX,3)
1640 CALL ZERO1(CGMY,3)
1641 CALL ZERO1(CGMZ,3)
1642 IERR = 0
1643C
1644 REFPT(1) = XYZ(1,NS)
1645 REFPT(2) = XYZ(2,NS)
1646 REFPT(3) = XYZ(3,NS)
1647 DO K = 1, NG
1648 DO I = 1, 3
1649 TW(I,K) = FRBE3(I,K)
1650 RW(I,K) = FRBE3(I+3,K)
1651 ENDDO
1652 ENDDO
1653C
1654C ERROR OUT IF RBE3 ELEMENT HAS TWO INDEPENDENT NODES WITH
1655C NO ROTATIONAL WEIGHTS SET (THIS MEANS THE ELEMENT CANNOT
1656C SUPPORT A MOMENT ALONG ITS AXIS)
1657C
1658.AND. IF (NG == 2IROT==0) THEN
1659 IERR = 322
1660 GOTO 999
1661 ENDIF
1662C
1663C CALCULATE DIRECTION COSINES OF LOCAL COORDINATE SYSTEMS, IF ANY
1664C
1665 DO K = 1, NG
1666 IELSUB = ILRBE3(K)
1667 IF (IELSUB > 0) THEN
1668 DO I = 1, 3
1669 EL(I,1,K) = SKEW(I,IELSUB)
1670 EL(I,2,K) = SKEW(I+3,IELSUB)
1671 EL(I,3,K) = SKEW(I+6,IELSUB)
1672 ENDDO
1673 ENDIF
1674 ENDDO
1675C
1676C DENOMINATORS FOR DISTRIBUTING FORCES (DENFX, DENFY AND DENFZ)
1677C
1678 DENFX = ZERO
1679 DENFY = ZERO
1680 DENFZ = ZERO
1681 AVEREF = ZERO
1682C
1683 DO 70 K = 1, NG
1684 KG = INRBE3(K)
1685 IELSUB = ILRBE3(K)
1686 IF (IELSUB > 0) THEN
1687C
1688C IF GRID POINT HAS A LOCAL COORDINATE SYSTEM
1689C
1690 DO 60 I = 1, 3
1691 DENFX = DENFX + TW(I,K)*EL(I,1,K)**2
1692 DENFY = DENFY + TW(I,K)*EL(I,2,K)**2
1693 DENFZ = DENFZ + TW(I,K)*EL(I,3,K)**2
1694 60 CONTINUE
1695 ELSE
1696 DENFX = DENFX + TW(1,K)
1697 DENFY = DENFY + TW(2,K)
1698 DENFZ = DENFZ + TW(3,K)
1699 END IF
1700C
1701 AVEREF = AVEREF + SQRT( (XYZ(1,KG) - REFPT(1))**2 +
1702 * (XYZ(2,KG) - REFPT(2))**2 +
1703 * (XYZ(3,KG) - REFPT(3))**2 )
1704 70 CONTINUE
1705C
1706 IF (ABS(DENFX) <= EM20) THEN
1707 IERR = 326
1708 ENDIF
1709C
1710 IF (ABS(DENFY) <= EM20) THEN
1711 IERR = 327
1712 ENDIF
1713C
1714 IF (ABS(DENFZ) <= EM20) THEN
1715 IERR = 328
1716 ENDIF
1717 IF (IERR /= 0) GOTO 999
1718 AVEREF = AVEREF/NG
1719 IF (AVEREF == ZERO) AVEREF = ONE
1720C
1721C CALCULATE 3 CENTERS OF GRAVITY (CGMX, CGMY AND CGMZ) AND
1722C DENOMINATORS FOR DISTRIBUTING MOMENTS (DENMX, DENMY AND DENMZ)
1723C
1724 DO 40 K = 1, NG
1725 KG = INRBE3(K)
1726 IELSUB = ILRBE3(K)
1727 IF (IELSUB > 0) THEN
1728C
1729C IF THERE IS A LOCAL COORDINATE SYSTEM AT THE GRID POINT
1730C
1731 DO 10 I = 1, 3
1732 CGMX(2) = CGMX(2) + TW(I,K)*EL(I,3,K)**2*XYZ(2,KG)
1733 CGMX(3) = CGMX(3) + TW(I,K)*EL(I,2,K)**2*XYZ(3,KG)
1734 10 CONTINUE
1735C
1736 DO 20 I = 1, 3
1737 CGMY(3) = CGMY(3) + TW(I,K)*EL(I,1,K)**2*XYZ(3,KG)
1738 CGMY(1) = CGMY(1) + TW(I,K)*EL(I,3,K)**2*XYZ(1,KG)
1739 20 CONTINUE
1740C
1741 DO 30 I = 1, 3
1742 CGMZ(1) = CGMZ(1) + TW(I,K)*EL(I,2,K)**2*XYZ(1,KG)
1743 CGMZ(2) = CGMZ(2) + TW(I,K)*EL(I,1,K)**2*XYZ(2,KG)
1744 30 CONTINUE
1745C
1746 ELSE
1747 CGMX(2) = CGMX(2) + TW(3,K)*XYZ(2,KG)
1748 CGMX(3) = CGMX(3) + TW(2,K)*XYZ(3,KG)
1749C
1750 CGMY(3) = CGMY(3) + TW(1,K)*XYZ(3,KG)
1751 CGMY(1) = CGMY(1) + TW(3,K)*XYZ(1,KG)
1752C
1753 CGMZ(1) = CGMZ(1) + TW(2,K)*XYZ(1,KG)
1754 CGMZ(2) = CGMZ(2) + TW(1,K)*XYZ(2,KG)
1755 END IF
1756 40 CONTINUE
1757 CGMX(2) = CGMX(2)/DENFZ
1758 CGMX(3) = CGMX(3)/DENFY
1759C
1760 CGMY(3) = CGMY(3)/DENFX
1761 CGMY(1) = CGMY(1)/DENFZ
1762C
1763 CGMZ(1) = CGMZ(1)/DENFY
1764 CGMZ(2) = CGMZ(2)/DENFX
1765C
1766 DENMX = ZERO
1767 DENMY = ZERO
1768 DENMZ = ZERO
1769C
1770 DO 90 K = 1, NG
1771 KG = INRBE3(K)
1772 IELSUB = ILRBE3(K)
1773C
1774C NOTE: AS IMPLEMENTED IN NASTRAN 70.7, WE SCALE THE ROTATIONAL
1775C WEIGHTS WITH THE SQUARE OF THE AVERAGE DISTANCE OF THE
1776C INDEPENDENT GRID POINTS FROM THE REFERENCE POINT TO
1777C RENDER THE RBE3 CALCULATIONS UNIT INDEPENDENT
1778C
1779 IF (IELSUB > 0) THEN
1780C
1781C IF GRID POINT HAS A LOCAL COORDINATE SYSTEM
1782C
1783 DO 80 I = 1, 3
1784 DENMX = DENMX + RW(I,K)*EL(I,1,K)**2*AVEREF**2 +
1785 * TW(I,K)*( EL(I,3,K)*(XYZ(2,KG) - CGMX(2)) -
1786 * EL(I,2,K)*(XYZ(3,KG) - CGMX(3))
1787 * ) **2
1788 DENMY = DENMY + RW(I,K)*EL(I,2,K)**2*AVEREF**2 +
1789 * TW(I,K)*( EL(I,1,K)*(XYZ(3,KG) - CGMY(3)) -
1790 * EL(I,3,K)*(XYZ(1,KG) - CGMY(1))
1791 * ) **2
1792 DENMZ = DENMZ + RW(I,K)*EL(I,3,K)**2*AVEREF**2 +
1793 * TW(I,K)*( EL(I,2,K)*(XYZ(1,KG) - CGMZ(1)) -
1794 * EL(I,1,K)*(XYZ(2,KG) - CGMZ(2))
1795 * ) **2
1796 80 CONTINUE
1797 ELSE
1798 DENMX = DENMX + RW(1,K)*AVEREF**2 +
1799 * TW(2,K)*(XYZ(3,KG) - CGMX(3))**2 +
1800 * TW(3,K)*(XYZ(2,KG) - CGMX(2))**2
1801 DENMY = DENMY + RW(2,K)*AVEREF**2 +
1802 * TW(1,K)*(XYZ(3,KG) - CGMY(3))**2 +
1803 * TW(3,K)*(XYZ(1,KG) - CGMY(1))**2
1804 DENMZ = DENMZ + RW(3,K)*AVEREF**2 +
1805 * TW(2,K)*(XYZ(1,KG) - CGMZ(1))**2 +
1806 * TW(1,K)*(XYZ(2,KG) - CGMZ(2))**2
1807 END IF
1808 90 CONTINUE
1809C
1810C PERFORM SOME CHECKS ON WEIGHTS, TO MAKE SURE THAT THE RBE3
1811C ELEMENT HAS NO UNCONSTRAINED DEGREES OF FREEDOM
1812C
1813C
1814 IF (ABS(DENMX) <= EM20) THEN
1815 IERR = 329
1816 ENDIF
1817C
1818 IF (ABS(DENMY) <= EM20) THEN
1819 IERR = 330
1820 ENDIF
1821C
1822 IF (ABS(DENMZ) <= EM20) THEN
1823 IERR = 331
1824 ENDIF
1825C
1826 IF (IERR /= 0) GOTO 999
1827C
1828C CALCULATE 3 FORCE DISTRIBUTIONS THAT CREATE NET X, Y AND Z FORCES
1829C OF 1 (BESIDES OTHER NONZERO FORCES/MOMENTS IN ALL THE DIRECTIONS)
1830C
1831 CALL RBE3UF(INRBE3,ILRBE3,EL,TW,XYZ,REFPT,
1832 * FUFXLC,FUFYLC,FUFZLC,FUFX,FUFY,FUFZ,MUFX,MUFY,MUFZ,
1833 * TFUFX,TFUFY,TFUFZ,TMUFX,TMUFY,TMUFZ,
1834 * DENFX,DENFY,DENFZ,NG)
1835C
1836C CALCULATE 3 MOMENT/FORCE DISTRIBUTIONS THAT CREATE NET X, Y AND Z
1837C MOMENTS OF 1 (BESIDES OTHER NONZERO FORCES/MOMENTS IN ALL THE
1838C DIRECTIONS) AT CGMX, CGMY AND CGMZ RESPECTIVELY
1839C
1840 CALL RBE3UM(INRBE3,ILRBE3,EL,TW,RW,XYZ,REFPT,CGMX,CGMY,CGMZ,
1841 * FUMXLC,FUMYLC,FUMZLC,MXLC,MYLC,MZLC,
1842 * FUMX,FUMY,FUMZ,MX,MY,MZ,MUMX,MUMY,MUMZ,
1843 * TFUMX,TFUMY,TFUMZ,TMUMX,TMUMY,TMUMZ,
1844 * AVEREF,DENMX,DENMY,DENMZ,NG,IROT )
1845C
1846C DETERMINE COMBINATORY COEFFICIENTS FOR THESE 6 DISTRIBUTIONS
1847C (6 COEFFICIENTS FOR EACH OF 6 CASES)
1848C
1849C CASE 1 - RESULTANT OF THE LINEAR COMBINATION OF THESE FORCE/MOMENT
1850C DISTRIBUTIONS IS A UNIT X-FORCE AT REFERENCE POINT
1851C CASE 2 - RESULTANT OF THE LINEAR COMBINATION OF THESE FORCE/MOMENT
1852C DISTRIBUTIONS IS A UNIT Y-FORCE AT REFERENCE POINT
1853C CASE 3 - RESULTANT OF THE LINEAR COMBINATION OF THESE FORCE/MOMENT
1854C DISTRIBUTIONS IS A UNIT Z-FORCE AT REFERENCE POINT
1855C CASE 4 - RESULTANT OF THE LINEAR COMBINATION OF THESE FORCE/MOMENT
1856C DISTRIBUTIONS IS A UNIT X-MOMENT AT REFERENCE POINT
1857C CASE 5 - RESULTANT OF THE LINEAR COMBINATION OF THESE FORCE/MOMENT
1858C DISTRIBUTIONS IS A UNIT Y-MOMENT AT REFERENCE POINT
1859C CASE 6 - RESULTANT OF THE LINEAR COMBINATION OF THESE FORCE/MOMENT
1860C DISTRIBUTIONS IS A UNIT Z-MOMENT AT REFERENCE POINT
1861C
1862C IN ORDER TO DETERMINE THESE COEFFICIENTS, FIRST SET UP A 6X6
1863C MATRIX. THE 6 COLUMNS OF THE INVERSE OF THIS MATRIX ARE THE
1864C DESIRED 6 SETS OF COEFFICIENTS.
1865C
1866 DO 120 I = 1, 3
1867 K = I + 3
1868 A(I,1) = TFUFX(I)
1869 A(K,1) = TMUFX(I)
1870 A(I,2) = TFUFY(I)
1871 A(K,2) = TMUFY(I)
1872 A(I,3) = TFUFZ(I)
1873 A(K,3) = TMUFZ(I)
1874 A(I,4) = TFUMX(I)
1875 A(K,4) = TMUMX(I)
1876 A(I,5) = TFUMY(I)
1877 A(K,5) = TMUMY(I)
1878 A(I,6) = TFUMZ(I)
1879 A(K,6) = TMUMZ(I)
1880 120 CONTINUE
1881C
1882C INVERT THE 6X6 MATRIX
1883C
1884 NSNGLR = 0
1885 CALL INVERT(A,C,6,NSNGLR)
1886 IF (NSNGLR /= 0) THEN
1887 IERR = 332
1888 GOTO 999
1889 ENDIF
1890C
1891 DO I = 1, 3
1892 DO J = 1, 6
1893 DO K = 1, NG
1894 FDSTNB(I,J,K) = C(1,J)*FUFX(I,K) + C(2,J)*FUFY(I,K) +
1895 * C(3,J)*FUFZ(I,K) + C(4,J)*FUMX(I,K) +
1896 * C(5,J)*FUMY(I,K) + C(6,J)*FUMZ(I,K)
1897 ENDDO
1898 ENDDO
1899 ENDDO
1900 IF (IROT>0) THEN
1901 DO I = 1, 3
1902 DO J = 1, 6
1903 DO K = 1, NG
1904 MDSTNB(I,J,K) = C(4,J)*MX(I,K) + C(5,J)*MY(I,K) +
1905 * C(6,J)*MZ(I,K)
1906 ENDDO
1907 ENDDO
1908 ENDDO
1909 END IF
1910C
1911 999 CONTINUE
1912 IF (IERR>0) THEN
1913 WRITE(ISTDO,'(a,i10)')
1914 . ' ** error in rbe3 calculation id=',IERR
1915 WRITE(IOUT,'(a,i10)')
1916 . ' ** error in rbe3 calculation id=',IERR
1917 CALL ARRET(2)
1918 ENDIF
1919C
1920C DIAGNOSTIC INFORMATION
1921C
1922 RETURN
1923 END
1924!||====================================================================
1925!|| rbe2_impd ../starter/source/constraints/general/kinchk.F
1926!||--- called by ------------------------------------------------------
1927!|| inivchk ../starter/source/constraints/general/kinchk.F
1928!||--- calls -----------------------------------------------------
1929!|| prerbe2 ../starter/source/constraints/general/kinchk.F
1930!|| rbe2d0 ../starter/source/constraints/general/kinchk.F
1931!|| rbe2dl ../starter/source/constraints/general/kinchk.F
1932!||====================================================================
1933 SUBROUTINE RBE2_IMPD(IRBE2 ,LRBE2 ,X ,D ,DR ,SKEW )
1934C-----------------------------------------------
1935C I m p l i c i t T y p e s
1936C-----------------------------------------------
1937#include "implicit_f.inc"
1938C-----------------------------------------------
1939C C o m m o n B l o c k s
1940C-----------------------------------------------
1941#include "com04_c.inc"
1942#include "param_c.inc"
1943C-----------------------------------------------
1944C D u m m y A r g u m e n t s
1945C-----------------------------------------------
1946 INTEGER IRBE2(NRBE2L,*),LRBE2(*)
1947C REAL
1948 my_real
1949 . X(3,*), D(3,*), DR(3,*),SKEW(LSKEW,*)
1950C-----------------------------------------------
1951C L o c a l V a r i a b l e s
1952C-----------------------------------------------
1953 INTEGER I, J, N, M, NS ,NML, IAD,JJ,ISK,
1954 . JT(3,NRBE2),JR(3,NRBE2),NM,NN,K,NSL
1955C REAL
1956C======================================================================|
1957 CALL PRERBE2(IRBE2 ,JT ,JR )
1958 DO N=NRBE2,1,-1
1959 IAD = IRBE2(1,N)
1960 M = IRBE2(3,N)
1961 NSL = IRBE2(5,N)
1962 ISK = IRBE2(7,N)
1963 IF (ISK>1) THEN
1964 CALL RBE2DL(NSL ,LRBE2(IAD+1),X ,D ,DR ,
1965 1 JT(1,N),JR(1,N),M ,SKEW(1,ISK))
1966 ELSE
1967 CALL RBE2D0(NSL ,LRBE2(IAD+1),X ,D ,DR ,
1968 1 JT(1,N),JR(1,N),M )
1969 END IF
1970 ENDDO
1971C---
1972 RETURN
1973 END
1974!||====================================================================
1975!|| prerbe2 ../starter/source/constraints/general/kinchk.F
1976!||--- called by ------------------------------------------------------
1977!|| rbe2_impd ../starter/source/constraints/general/kinchk.F
1978!||====================================================================
1979 SUBROUTINE PRERBE2(IRBE2 ,JT ,JR )
1980C-----------------------------------------------
1981C I m p l i c i t T y p e s
1982C-----------------------------------------------
1983#include "implicit_f.inc"
1984C-----------------------------------------------
1985C C o m m o n B l o c k s
1986C-----------------------------------------------
1987#include "com01_c.inc"
1988#include "com04_c.inc"
1989#include "param_c.inc"
1990C-----------------------------------------------
1991C D u m m y A r g u m e n t s
1992C-----------------------------------------------
1993 INTEGER IRBE2(NRBE2L,*),JT(3,*) ,JR(3,*)
1994C REAL
1995C-----------------------------------------------
1996C L o c a l V a r i a b l e s
1997C-----------------------------------------------
1998 INTEGER I, J, N,NML,IC,ICT,ICR,IROT
1999C======================================================================|
2000 DO N=1,NRBE2
2001 IC=IRBE2(4,N)
2002 ICT=IC/512
2003 ICR=(IC-512*(ICT))/64
2004 IF (IRODDL==0) ICR =0
2005 DO J =1,3
2006 JT(J,N)=0
2007 JR(J,N)=0
2008 ENDDO
2009 SELECT CASE (ICT)
2010 CASE(1)
2011 JT(3,N)=1
2012 CASE(2)
2013 JT(2,N)=1
2014 CASE(3)
2015 JT(2,N)=1
2016 JT(3,N)=1
2017 CASE(4)
2018 JT(1,N)=1
2019 CASE(5)
2020 JT(1,N)=1
2021 JT(3,N)=1
2022 CASE(6)
2023 JT(1,N)=1
2024 JT(2,N)=1
2025 CASE(7)
2026 JT(1,N)=1
2027 JT(2,N)=1
2028 JT(3,N)=1
2029 END SELECT
2030 SELECT CASE (ICR)
2031 CASE(1)
2032 JR(3,N)=1
2033 CASE(2)
2034 JR(2,N)=1
2035 CASE(3)
2036 JR(2,N)=1
2037 JR(3,N)=1
2038 CASE(4)
2039 JR(1,N)=1
2040 CASE(5)
2041 JR(1,N)=1
2042 JR(3,N)=1
2043 CASE(6)
2044 JR(1,N)=1
2045 JR(2,N)=1
2046 CASE(7)
2047 JR(1,N)=1
2048 JR(2,N)=1
2049 JR(3,N)=1
2050 END SELECT
2051 ENDDO
2052C---
2053 RETURN
2054 END
2055!||====================================================================
2056!|| rbe2d0 ../starter/source/constraints/general/kinchk.F
2057!||--- called by ------------------------------------------------------
2058!|| rbe2_impd ../starter/source/constraints/general/kinchk.F
2059!||====================================================================
2060 SUBROUTINE RBE2D0(NSL ,ISL ,X ,V ,VR ,
2061 1 JT ,JR ,M )
2062C-----------------------------------------------
2063C I m p l i c i t T y p e s
2064C-----------------------------------------------
2065#include "implicit_f.inc"
2066C-----------------------------------------------
2067C D u m m y A r g u m e n t s
2068C-----------------------------------------------
2069 INTEGER NSL,ISL(*),JT(3),JR(3),M
2070C REAL
2071 my_real
2072 . X(3,*), V(3,*), VR(3,*)
2073C-----------------------------------------------
2074C L o c a l V a r i a b l e s
2075C-----------------------------------------------
2076 INTEGER I, J, N, NS
2077C REAL
2078 my_real
2079 . XS, YS, ZS,VRM(3)
2080C======================================================================|
2081 DO J = 1,3
2082 IF (JT(J)/=0) THEN
2083 DO I=1,NSL
2084 NS = ISL(I)
2085 V(J,NS)= V(J,M)
2086 ENDDO
2087 ENDIF
2088 ENDDO
2089 IF ((JR(1)+JR(2)+JR(3))>0) THEN
2090 DO J = 1,3
2091 IF (JR(J)/=0) THEN
2092 DO I=1,NSL
2093 NS = ISL(I)
2094 VR(J,NS)= VR(J,M)
2095 ENDDO
2096 ENDIF
2097 VRM(J)= VR(J,M)*JR(J)
2098 ENDDO
2099 DO I=1,NSL
2100 NS = ISL(I)
2101 XS=X(1,NS)-X(1,M)
2102 YS=X(2,NS)-X(2,M)
2103 ZS=X(3,NS)-X(3,M)
2104 V(1,NS)=V(1,NS)+VRM(2)*ZS-VRM(3)*YS
2105 V(2,NS)=V(2,NS)-VRM(1)*ZS+VRM(3)*XS
2106 V(3,NS)=V(3,NS)+VRM(1)*YS-VRM(2)*XS
2107 ENDDO
2108 END IF
2109C---
2110 RETURN
2111 END
2112!||====================================================================
2113!|| rbe2dl ../starter/source/constraints/general/kinchk.F
2114!||--- called by ------------------------------------------------------
2115!|| rbe2_impd ../starter/source/constraints/general/kinchk.F
2116!||====================================================================
2117 SUBROUTINE RBE2DL(NSN ,ISL ,X ,V ,VR ,
2118 1 JT ,JR ,M ,SKEW )
2119C-----------------------------------------------
2120C I m p l i c i t T y p e s
2121C-----------------------------------------------
2122#include "implicit_f.inc"
2123C-----------------------------------------------
2124C D u m m y A r g u m e n t s
2125C-----------------------------------------------
2126 INTEGER NSN,ISL(*),JT(3),JR(3),M
2127C REAL
2128 my_real
2129 . X(3,*), V(3,*), VR(3,*),SKEW(*)
2130C-----------------------------------------------
2131C L o c a l V a r i a b l e s
2132C-----------------------------------------------
2133 INTEGER I, NS
2134C REAL
2135 my_real
2136 . XS, YS, ZS,RX, RY,RZ,LRX, LRY,LRZ,RVX,RVY,RVZ,
2137 . DVX,DVY,DVZ,VVX,VVY,VVZ,LXS(NSN), LYS(NSN), LZS(NSN)
2138C======================================================================|
2139 DO I=1,NSN
2140 NS = ISL(I)
2141 DVX =V(1,NS)-V(1,M)
2142 DVY =V(2,NS)-V(2,M)
2143 DVZ =V(3,NS)-V(3,M)
2144 VVX =JT(1)*(SKEW(1)*DVX+SKEW(2)*DVY+SKEW(3)*DVZ)
2145 VVY =JT(2)*(SKEW(4)*DVX+SKEW(5)*DVY+SKEW(6)*DVZ)
2146 VVZ =JT(3)*(SKEW(7)*DVX+SKEW(8)*DVY+SKEW(9)*DVZ)
2147 V(1,NS) =V(1,NS)-VVX*SKEW(1)-VVY*SKEW(4)-VVZ*SKEW(7)
2148 V(2,NS) =V(2,NS)-VVX*SKEW(2)-VVY*SKEW(5)-VVZ*SKEW(8)
2149 V(3,NS) =V(3,NS)-VVX*SKEW(3)-VVY*SKEW(6)-VVZ*SKEW(9)
2150 ENDDO
2151 IF ((JR(1)+JR(2)+JR(3))>0) THEN
2152 DO I=1,NSN
2153 NS = ISL(I)
2154 XS=X(1,NS)-X(1,M)
2155 YS=X(2,NS)-X(2,M)
2156 ZS=X(3,NS)-X(3,M)
2157 LXS(I)=SKEW(1)*XS+SKEW(2)*YS+SKEW(3)*ZS
2158 LYS(I)=SKEW(4)*XS+SKEW(5)*YS+SKEW(6)*ZS
2159 LZS(I)=SKEW(7)*XS+SKEW(8)*YS+SKEW(9)*ZS
2160 ENDDO
2161 DO I=1,NSN
2162 NS = ISL(I)
2163 DVX =VR(1,NS)-VR(1,M)
2164 DVY =VR(2,NS)-VR(2,M)
2165 DVZ =VR(3,NS)-VR(3,M)
2166 VVX =JR(1)*(SKEW(1)*DVX+SKEW(2)*DVY+SKEW(3)*DVZ)
2167 VVY =JR(2)*(SKEW(4)*DVX+SKEW(5)*DVY+SKEW(6)*DVZ)
2168 VVZ =JR(3)*(SKEW(7)*DVX+SKEW(8)*DVY+SKEW(9)*DVZ)
2169 VR(1,NS) =VR(1,NS)-VVX*SKEW(1)-VVY*SKEW(4)-VVZ*SKEW(7)
2170 VR(2,NS) =VR(2,NS)-VVX*SKEW(2)-VVY*SKEW(5)-VVZ*SKEW(8)
2171 VR(3,NS) =VR(3,NS)-VVX*SKEW(3)-VVY*SKEW(6)-VVZ*SKEW(9)
2172 RX=VR(1,M)
2173 RY=VR(2,M)
2174 RZ=VR(3,M)
2175 LRX =JR(1)*(SKEW(1)*RX+SKEW(2)*RY+SKEW(3)*RZ)
2176 LRY =JR(2)*(SKEW(4)*RX+SKEW(5)*RY+SKEW(6)*RZ)
2177 LRZ =JR(3)*(SKEW(7)*RX+SKEW(8)*RY+SKEW(9)*RZ)
2178 RVX=LRY*LZS(I)-LRZ*LYS(I)
2179 RVY=LRX*LZS(I)+LRZ*LXS(I)
2180 RVZ=LRX*LYS(I)-LRY*LXS(I)
2181 V(1,NS) =V(1,NS)+RVX*SKEW(1)+RVY*SKEW(4)+RVZ*SKEW(7)
2182 V(2,NS) =V(2,NS)+RVX*SKEW(2)+RVY*SKEW(5)+RVZ*SKEW(8)
2183 V(3,NS) =V(3,NS)+RVX*SKEW(3)+RVY*SKEW(6)+RVZ*SKEW(9)
2184 ENDDO
2185 END IF
2186C---
2187 RETURN
2188 END
#define my_real
Definition cppsort.cpp:32
subroutine kinchk(ikine, rwl, itab, nprw, lprw, kinet, npby, lpby, irbe2, lrbe2, irbe3, lrbe3, nom_opt, ptr_nopt_rwall, ptr_nopt_rbe2, ptr_nopt_rbe3, itagcyc)
Definition kinchk.F:38
integer, parameter nchartitle
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:895
subroutine fretitl2(titr, iasc, l)
Definition freform.F:799
subroutine velocity(a, ar, v, vr, fzero, itab, nale)
Definition velocity.F:29