35
37
38
39
40#include "implicit_f.inc"
41
42
43
44
45
46
47 INTEGER, INTENT(IN) :: NLINK,NUMLINK,IPRI,NUMNOD,NS10E
48 INTEGER, DIMENSION(10,NLINK), INTENT (INOUT) :: NNLINK
49 INTEGER, DIMENSION(NUMLINK), INTENT (INOUT) :: LNLINK
50 INTEGER, DIMENSION(NUMNOD), INTENT (IN ) :: ITAB
51 INTEGER, DIMENSION(NUMNOD), INTENT (INOUT) :: ITAGND
52 INTEGER, DIMENSION(3,NS10E), INTENT (IN ) :: ICNDS10
53
54
55
56
57 LOGICAL INTAB
59
60
61
62 INTEGER I,J,K, N,ND,N1,N2,NNEW,ID,IER1,IER2
63 INTEGER IAD,IU,NSL,NS,NN,NNSL
64 LOGICAL IS1,IS2
65 INTEGER, DIMENSION(:), ALLOCATABLE :: LL_TMP
66
67 k = 0
68 nnew = 0
69 ier1 = 0
70 ier2 = 0
71 DO n=1,nlink
72 nsl = nnlink(1,n)
73 iu = nnlink(2,n)
74 DO i=1,nsl
75 ns = lnlink(k+i)
76 IF (itagnd(ns) /=0 ) THEN
81 is1 =
intab(nsl,lnlink(k+1),n1)
82 is2 =
intab(nsl,lnlink(k+1),n2)
83 IF (is1.AND.is2) THEN
84 itagnd(ns) = itagnd(ns) + ns10e
85 nnew = nnew + 1
86 lnlink(k+i) = -lnlink(k+i)
87 ier1 =1
88 IF (ipri>=5)
90 . msgtype=msginfo,
91 . anmode=aninfo_blind_1,
92 . c1='RIGID LINK ',
93 . i1=itab(nd),
94 . prmod=msg_cumu)
95 ELSEIF (.NOT.(is1).AND..NOT.(is2)) THEN
96
98 . msgtype=msgerror,
99 . anmode=aninfo_blind_1,
100 . i1=itab(nd),
101 . c1='RIGID LINK ',
102 . i2=iu,
103 . c2='RIGID LINK ')
104 ELSE
105
106 nnew = nnew + 1
107 lnlink(k+i) = -lnlink(k+i)
108 ier2 =1
109 IF (ipri>=5)
111 . msgtype=msginfo,
112 . anmode=aninfo_blind_1,
113 . c1='RIGID LINK ',
114 . i1=itab(nd),
115 . prmod=msg_cumu)
116 END IF
117 END IF
118 END DO
119 IF (ier1 >0.AND.ipri>=5) THEN
121 .
122 . anmode=aninfo_blind_1,
123 . c1='RIGID LINK ',
124 . c2='RIGID LINK ',
125 . i1=iu,
126 . prmod=msg_print)
127 END IF
128 IF (ier2 >0.AND.ipri>=5) THEN
130 . msgtype=msginfo,
131 . anmode=aninfo_blind_1,
132 . c1='RIGID LINK ',
133 . c2='RIGID LINK ',
134 . i1=iu,
135 . prmod=msg_print)
136 END IF
137 k = k + nsl
138 END DO
139
140 IF (nnew>0) THEN
141 ALLOCATE(ll_tmp(numlink))
142 ll_tmp = lnlink
143 k = 0
144 nn = 0
145 DO n=1,nlink
146 nsl = nnlink(1,n)
147 nnsl=0
148 DO i=1,nsl
149 ns = ll_tmp(k+i)
150 IF (ns>0) THEN
151 nnsl = nnsl+1
152 lnlink(nn+i) = ns
153 END IF
154 END DO
155 nnlink(1,n) = nnsl
156 k = k + nsl
157 nn = nn + nnsl
158 END DO
159 DEALLOCATE(ll_tmp)
160 END IF
161
162 RETURN
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)