56 SUBROUTINE kinset(IK,NODE,IKINE,IDIR,ISK,IKINE1)
62#include "implicit_f.inc"
68#include "kincod_c.inc"
72 INTEGER IK,NODE,IDIR,ISK,IKINE(*),IKINE1(*)
78 CHARACTER(LEN=NCHARLINE) :: ERR_CATEGORY_TMP
80 INTEGER JWARN, ISKWT, ISKWR, ITRAN, IROTA, NK,
81 . JDIR(7), KDIR(7,3),LTYPE, LTYPEB, LDIRECT
82 INTEGER JWARN1, , ISKWR1, ITRAN1, IROTA1
84 DATA jdir/1,2,4,1,2,4,7/
85 DATA kdir/1,0,1,0,1,0,1,
91 err_category_tmp=err_category
92 err_category=
'KINEMATIC CONDITIONS'
96 iskwt = ikine(1+numnod)/10
97 itran = ikine(1+numnod) - 10*iskwt
100 ikine(1+numnod) = jdir(idir)+10*isk
103 ikine(1+numnod) = ikine(1+numnod)+jdir(idir)
104 ELSEIF(kdir(itran,idir)==0)
THEN
106 ikine(1+numnod) = ikine(1+numnod)+jdir(idir)
107 ELSEIF(iskwt==isk)
THEN
115 iskwr = ikine(1+2*numnod)/10
116 irota = ikine(1+2*numnod) - 10*iskwr
119 ikine(1+2*numnod) = jdir(idir)+10*isk
120 ELSEIF(iskwr==isk.AND.kdir(irota,idir-3)==0)
THEN
122 ikine(1+2*numnod) = ikine(1+2*numnod)+jdir(idir)
123 ELSEIF(kdir(irota,idir-3)==0)
THEN
125 ikine(1+2*numnod) = ikine(1+2*numnod)+jdir(idir)
126 ELSEIF(iskwr==isk)
THEN
134 iskwt = ikine(1+ numnod)/10
135 iskwr = ikine(1+2*numnod)/10
136 itran = ikine(1+ numnod) - 10*iskwt
137 irota = ikine(1+2*numnod) - 10*iskwr
138 IF(itran/=0.AND.itran/=7.OR.irota/=0.AND.irota/=7)
THEN
140 ikine(1+ numnod) = ikine(1+ numnod)+jdir(idir)
141 ikine(1+2*numnod) = ikine(1+2*numnod)+jdir(idir)
143 ikine(1+ numnod) = ikine(1+ numnod)+jdir(idir)
144 ikine(1+2*numnod) = ikine(1+2*numnod)+jdir(idir)
155 iskwt1 = ikine1(1+numnod)/10
156 itran1 = ikine1(1+numnod) - 10*iskwt1
159 ikine1(1+numnod) = jdir(idir)+10*isk
160 ELSEIF(iskwt1==isk.AND.kdir(itran1,idir)==0)
THEN
162 ikine1(1+numnod) = ikine1(1+numnod)+jdir(idir)
163 ELSEIF(kdir(itran1,idir)==0)
THEN
165 ikine1(1+numnod) = ikine1(1+numnod)+jdir(idir)
166 ELSEIF(iskwt1==isk)
THEN
174 iskwr1 = ikine1(1+2*numnod)/10
175 irota1 = ikine1(1+2*numnod) - 10*iskwr1
178 ikine1(1+2*numnod) = jdir(idir)+10*isk
179 ELSEIF(iskwr1==isk.AND.kdir(irota1,idir-3)==0)
THEN
181 ikine1(1+2*numnod) = ikine1(1+2*numnod)+jdir(idir)
182 ELSEIF(kdir(irota1,idir-3)==0)
THEN
184 ikine1(1+2*numnod) = ikine1(1+2*numnod)+jdir(idir)
185 ELSEIF(iskwr1==isk)
THEN
193 iskwt1 = ikine1(1+ numnod)/10
194 iskwr1 = ikine1(1+2*numnod)/10
195 itran1 = ikine1(1+ numnod) - 10*iskwt1
196 irota1 = ikine1(1+2*numnod) - 10*iskwr1
197 IF(itran1/=0.AND.itran1
198 . .AND.irota1/=7)
THEN
200 ikine1(1+ numnod) = ikine1(1+ numnod)+jdir(idir)
201 ikine1(1+2*numnod) = ikine1(1+2*numnod)+jdir(idir)
203 ikine1(1+ numnod) = ikine1(1+ numnod)+jdir(idir)
204 ikine1(1+2*numnod) = ikine1(1+2*numnod)+jdir(idir)
215 IF (jwarn1 == 1)
THEN
217 IF(ibc(ikine(1))== 1 .AND. ibc(ikine(1+3*numnod))== 0)
218 . ikine(1+3*numnod) = ikine(1+3*numnod) + 1
220 IF(itf(ikine(1))== 1 .AND. itf(ikine(1+3*numnod))== 0)
221 . ikine(1+3*numnod) = ikine(1+3*numnod) + 2
223 IF(iwl(ikine(1))== 1 .AND. iwl(ikine(1+3*numnod))== 0)
224 . ikine(1+3*numnod) = ikine(1+3*numnod) + 4
226 IF(irb(ikine(1))== 1 .AND. irb(ikine(1+3*numnod))== 0)
227 . ikine(1+3*numnod) = ikine(1+3*numnod) + 8
229 IF(ivf(ikine(1))== 1 .AND. ivf(ikine(1+3*numnod))== 0)
230 . ikine(1+3*numnod) = ikine(1+3*numnod) + 16
232 IF(irv(ikine(1))== 1 .AND. irv(ikine(1+3*numnod))== 0)
233 . ikine(1+3*numnod) = ikine(1+3*numnod) + 32
235 IF(ijo(ikine(1))== 1 .AND. ijo(ikine(1+3*numnod))== 0)
236 . ikine(1+3*numnod) = ikine(1+3*numnod) + 64
238 IF(irb2(ikine(1))== 1 .AND. irb2(ikine(1+3*numnod))== 0)
239 . ikine(1+3*numnod) = ikine(1+3*numnod) + 128
241 IF(irbm(ikine(1))== 1 .AND. irbm(ikine(1+3*numnod))== 0)
242 . ikine(1+3*numnod) = ikine(1+3*numnod) + 256
244 IF(ilmult(ikine(1))==1.AND.ilmult(ikine(1+3*numnod))==0)
245 . ikine(1+3*numnod) = ikine(1+3*numnod) + 512
247 IF(irlk(ikine(1))== 1 .AND. irlk(ikine(1+3*numnod))== 0)
248 . ikine(1+3*numnod) = ikine(1+3*numnod) + 1024
250 IF(ikrbe2(ikine(1))==1.AND.ikrbe2(ikine(1+3*numnod))== 0)
251 . ikine(1+3*numnod) = ikine(1+3*numnod) + 2048
253 IF(ikrbe3(ikine(1))==1.AND.ikrbe3(ikine(1+3*numnod))== 0)
254 . ikine(1+3*numnod) = ikine(1+3*numnod) + 4096
265 IF(ibc(ikine(1))==0 .AND. ibc(ikine(1+4*numnod))==0
267 . ikine(1+4*numnod) = ikine(1+4*numnod) + 1
269 IF(itf(ikine(1))==0 .AND. itf(ikine(1+4*numnod))==0
271 . ikine(1+4*numnod) = ikine(1+4*numnod) + 2
273 IF(iwl(ikine(1))==0 .AND. iwl(ikine(1+4*numnod))==0
275 . ikine(1+4*numnod) = ikine(1+4*numnod) + 4
277 IF(irb(ikine(1))==0 .AND. irb(ikine(1+4*numnod))==0
279 . ikine(1+4*numnod) = ikine(1+4*numnod) + 8
281 IF(ivf(ikine(1))==0 .AND. ivf(ikine(1+4*numnod))==0
283 . ikine(1+4*numnod) = ikine(1+4*numnod) + 16
285 IF(irv(ikine(1))==0 .AND. irv(ikine(1+4*numnod
287 . ikine(1+4*numnod) = ikine(1+4*numnod) + 32
289 IF(ijo(ikine(1))==0 .AND. ijo(ikine(1+4*numnod))==0
291 . ikine(1+4*numnod) = ikine(1+4*numnod) + 64
293 IF(irb2(ikine(1))==0 .AND. irb2(ikine(1+4*numnod))==0
295 . ikine(1+4*numnod) = ikine(1+4*numnod) + 128
297 IF(irbm(ikine(1))==0 .AND. irbm(ikine(1+4*numnod))==0
299 . ikine(1+4*numnod) = ikine(1+4*numnod) + 256
301 IF(ilmult(ikine(1))==0 .AND. ilmult(ikine(1+4*numnod))==0
303 . ikine(1+4*numnod)=ikine(1+4*numnod) + 512
305 IF(irlk(ikine(1))==0 .AND. irlk(ikine(1+4*numnod))==0
307 . ikine(1+4*numnod)=ikine(1+4*numnod) + 1024
309 IF(ikrbe2(ikine(1))==0 .AND. ikrbe2(ikine(1+4*numnod))==0
311 . ikine(1+4*numnod)=ikine(1+4*numnod) + 2048
313 IF(ikrbe3(ikine(1))==0 .AND. ikrbe3(ikine(1+4*numnod))==0
315 . ikine(1+4*numnod)=ikine(1+4*numnod) + 4096
319 IF(ibc(ikine(1))==0)ikine(1) = ikine(1) + 1
321 IF(itf(ikine(1))==0)ikine(1) = ikine(1) + 2
323 IF(iwl(ikine(1))==0)ikine(1) = ikine(1) + 4
325 IF(irb(ikine(1))==0)ikine(1) = ikine(1) + 8
327 IF(ivf(ikine(1))==0)ikine(1) = ikine(1) + 16
329 IF(irv(ikine(1))==0)ikine(1) = ikine(1) + 32
331 IF(ijo(ikine(1))==0)ikine(1) = ikine(1) + 64
333 IF(irb2(ikine(1))==0)ikine(1) = ikine(1) + 128
335 IF(irbm(ikine(1))==0)ikine(1) = ikine(1) + 256
337 IF(ilmult(ikine(1))==0)ikine(1)=ikine(1) + 512
339 IF(irlk(ikine(1))==0)ikine(1)=ikine(1) + 1024
341 IF(ikrbe2(ikine(1))==0)ikine(1)=ikine(1) + 2048
343 IF(ikrbe3(ikine(1))==0)ikine(1)=ikine(1) + 4096
346 nk = ibc(ikine(1))+itf(ikine(1))+iwl(ikine(1))+
347 . irb(ikine(1))+irb2(ikine(1))+
348 . ivf(ikine(1))+irv(ikine(1))+ijo(ikine(1))+
349 . irbm(ikine(1))+ilmult(ikine(1))+irlk(ikine(1))+
350 . ikrbe2(ikine(1))+ikrbe3(ikine(1))
353 IF (iwl(ikine(1))/=1 .OR. irb(ikine(1))/=1)
THEN
354 kwarn = kwarn + jwarn
364 IF(ibc(ikine(1))==1)
THEN
366 TYPE((ltype+1):(ltype+1+ltypeb)) =
'-BOUNDARY CONDITION'
367 ltype = ltype + ltypeb
369 IF(itf(ikine(1))==1)
THEN
371 TYPE((ltype+1):(ltype+1+ltypeb))=
372 .
'-INTERFACE TYPE 1 2 12 OR 9'
373 ltype = ltype + ltypeb
375 IF(iwl(ikine(1))==1)
THEN
377 TYPE((ltype+1):(ltype+1+ltypeb)) =
'-RIGID WALL'
378 ltype = ltype + ltypeb
380 IF(irb(ikine(1))==1)
THEN
382 TYPE((ltype+1):(ltype+1+ltypeb)) =
'-RIGID BODY'
383 ltype = ltype + ltypeb
385 IF(irb2(ikine(1))==1)
THEN
387 TYPE((ltype+1):(ltype+1+ltypeb))=
'-RIGID BODY'
388 ltype = ltype + ltypeb
390 IF(ivf(ikine(1))==1)
THEN
392 TYPE((ltype+1):(ltype+1+ltypeb))=
393 .
'-FIXED VELOCITY/DISPLACEMENT'
394 ltype = ltype + ltypeb
396 IF(irv(ikine(1))==1)
THEN
398 TYPE((ltype+1):(ltype+1+ltypeb))=
'-RIVET'
399 ltype = ltype + ltypeb
401 IF(ijo(ikine(1))==1)
THEN
403 TYPE((ltype+1):(ltype+1+ltypeb))=
'-CYLINDRICAL JOINT'
404 ltype = ltype + ltypeb
406 IF(irbm(ikine(1))==1)
THEN
408 TYPE((ltype+1):(ltype+1+ltypeb))=
'-IMPOSED BODY VELOCITY'
409 ltype = ltype + ltypeb
411 IF(ilmult(ikine(1))==1)
THEN
413 TYPE((ltype+1):(ltype+1+ltypeb))=
'-LAGRANGE MULTIPLIERS'
414 ltype = ltype + ltypeb
416 IF(irlk(ikine(1))==1)
THEN
418 TYPE((ltype+1):(ltype+1+ltypeb))='-rigid link
'
419 LTYPE = LTYPE + LTYPEB
421 IF(IKRBE2(IKINE(1))==1) THEN
423 TYPE((LTYPE+1):(LTYPE+1+LTYPEB))='-rbe2'
424 ltype = ltype + ltypeb
426 IF(ikrbe3(ikine(1))==1)
THEN
428 TYPE((ltype+1):(ltype+1+ltypeb))=
'-RBE3'
429 ltype = ltype + ltypeb
433 direct =
'TRANSLATION X'
435 ELSE IF (idir == 2)
THEN
436 direct =
'TRANSLATION Y'
438 ELSE IF (idir == 3)
THEN
439 direct =
'TRANSLATION Z'
441 ELSE IF (idir == 4)
THEN
442 direct =
'ROTATION X'
444 ELSE IF (idir == 5)
THEN
445 direct =
'ROTATION Y'
447 ELSE IF (idir == 6)
THEN
448 direct =
'ROTATION Z'
455 IF ((iwl(ikine(1))/=1 .OR. irb(ikine(1))/=1) .AND.
460 . msgtype=msgwarning,
461 . anmode=aninfo_blind_2,
470 err_category=err_category_tmp
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)