30
31
32
33#include "implicit_f.inc"
34
35
36
37#include "com04_c.inc"
38#include "units_c.inc"
39
40
41
42 INTEGER EIGIPM(*), EIGIBUF(*),NDOF(*), LDIAG, LJDIK, LJDIK2,
43 . NDDL, IADK(*), JDIK(*), IKC(*), NMS, INLOC(*), IDDL(*)
45 . k_diag(*), k_lt(*)
46
47
48
49 INTEGER ICT, ICR, NN1, NN2, BDOF(6), I, II, J, JD, ITAG(NDDL),
50 . NBDOF, IND_IB(NDDL), ITAGN(NUMNOD), N, ITAG2(NDDL)
51
52 ict=eigipm(3)
53 icr=eigipm(4)
54 nn1=eigipm(10)
55 nn2=eigipm(11)
56 DO i=1,6
57 bdof(i)=0
58 ENDDO
59 IF (ict==1) THEN
60 bdof(3)=1
61 nbdof=1
62 ELSEIF (ict==2) THEN
63 bdof(2)=1
64 nbdof=1
65 ELSEIF (ict==3) THEN
66 bdof(2)=1
67 bdof(3)=1
68 nbdof=2
69 ELSEIF (ict==4) THEN
70 bdof(1)=1
71 nbdof=1
72 ELSEIF (ict==5) THEN
73 bdof(1)=1
74 bdof(3)=1
75 nbdof=2
76 ELSEIF (ict==6) THEN
77 bdof(1)=1
78 bdof(2)=1
79 nbdof=2
80 ELSEIF (ict==7) THEN
81 bdof(1)=1
82 bdof(2)=1
83 bdof(3)=1
84 nbdof=3
85 ENDIF
86 IF (icr==1) THEN
87 bdof(6)=1
88 nbdof=nbdof+1
89 ELSEIF (icr==2) THEN
90 bdof(5)=1
91 nbdof=nbdof+1
92 ELSEIF (icr==3) THEN
93 bdof(5)=1
94 bdof(6)=1
95 nbdof=nbdof+2
96 ELSEIF (icr==4) THEN
97 bdof(4)=1
98 nbdof=nbdof+1
99 ELSEIF (icr==5) THEN
100 bdof(4)=1
101 bdof(6)=1
102 nbdof=nbdof+2
103 ELSEIF (icr==6) THEN
104 bdof(4)=1
105 bdof(5)=1
106 nbdof=nbdof+2
107 ELSEIF (icr==7) THEN
108 bdof(4)=1
109 bdof(5)=1
110 bdof(6)=1
111 nbdof=nbdof+3
112 ENDIF
113
114 DO i=1,numnod
115 itagn(i)=0
116 ENDDO
117 DO i=1,nn1
118 ii=eigibuf(i)
119 itagn(ii)=1
120 ENDDO
121 DO i=1,nn2
122 ii=eigibuf(nn1+i)
123 itagn(ii)=2
124 ENDDO
125
126 DO i=1,nddl
127 itag(i)=0
128 ENDDO
129 nms=0
130 DO i=1,numnod
131 n=inloc(i)
132 ii=iddl(n)
133 IF (itagn(n)==1) THEN
134 DO j=1,ndof(n)
135 itag(ii+j)=1
136 ENDDO
137 ELSEIF (itagn(n)==2) THEN
138 DO j=1,ndof(n)
139 IF (ikc(ii+j)<1.AND.bdof(j)==1) nms=nms+1
140 itag(ii+j)=bdof(j)+1
141 ENDDO
142 ENDIF
143 DO j=1,ndof(n)
144 IF (ikc(ii+j)>=1) itag(ii+j)=-1
145 ENDDO
146 ENDDO
147
148 DO i=1,nddl
149 itag2(i)=itag(i)
150 itag(i)=0
151 ENDDO
152 ii=0
153 DO i=1,nddl
154 IF (itag2(i)>=0) THEN
155 ii=ii+1
156 itag(ii)=itag2(i)
157 ENDIF
158 ENDDO
159
160 DO i=1,nddl
161 ind_ib(i)=0
162 ENDDO
163 ldiag=0
164 ljdik=0
165 ljdik2=0
166 DO i=1,nddl
167 IF (itag(i)>=1) THEN
168 ldiag=ldiag+1
169 DO j=iadk(i),iadk(i+1)-1
170 jd=jdik(j)
171 IF (itag(jd)>=1) THEN
172 ljdik=ljdik+1
173 IF (itag(jd)==2.AND.itag(i)==1)
174 . ind_ib(i)=ind_ib(i)+1
175 IF (itag(jd)==1.AND.itag(i)==2)
176 . ind_ib(jd)=ind_ib(jd)+1
177 ENDIF
178 ENDDO
179 ENDIF
180 ENDDO
181 DO i=1,nddl
182 ljdik2=ljdik2+ind_ib(i)
183 ENDDO
184
185 RETURN