44
45
46
51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "parit_c.inc"
59#include "scr07_c.inc"
60#include "scr14_c.inc"
61#include "scr16_c.inc"
62#include "com01_c.inc"
63#include "com04_c.inc"
64#include "com06_c.inc"
65#include "com08_c.inc"
66#include "assert.inc"
67
68
69
70 INTEGER NB, LEN, IBC ,ISECIN ,IBAG , NOINT, INACTI,
71 . NSV(*), ISKY(*), ICODT(*), NSTRF(*),ICONTACT(*),
72 . TAGNCONT(NLOADP_HYD_INTER,NUMNOD),
73 . KLOADPINTER(NINTER+1),LOADPINTER(NINTER*NLOADP_HYD),
74 . LOADP_HYD_INTER(NLOADP_HYD),
75 . IADM,INTTH,NIN
76 INTEGER :: SEDGE,NEDGE
77 INTEGER :: LEDGE(SEDGE,NEDGE)
79 . bufr(len,*),
80 . fskyi(lskyi,nfskyi), secfcum(7,numnod,nsect),
81 . fcont(3,*),ftheskyi(lskyi),condnskyi(lskyi)
82 TYPE(H3D_DATABASE) :: H3D_DATA
83
84
85
86 INTEGER I, J, II, N, NOD, K0, K1S, IBCS, IBCM, NBINTER,
87 . NISKY_SAV,TEMP_SIZ,IERROR,NOD1,NOD2,PP,PPL
88 INTEGER NB_EDGE
89
90
91
92 IF ((nisky+nb)> lskyi)THEN
93 CALL ancmsg(msgid=26,anmode=aninfo)
95 ENDIF
96
97 nb_edge = nb
98 nisky_sav = nisky
99 DO i = 1, nb_edge
100 n = nint(bufr(1,i))
101 assert(n > 0)
102 assert(n <= nedge)
103 IF(intth == 0 ) THEN
104
105
106
107
108
109
110 nod = ledge(5,n)
111 nisky = nisky + 1
112 fskyi(nisky,1)=bufr(2,i)
113 fskyi(nisky,2)=bufr(3,i)
114 fskyi(nisky,3)=bufr(4,i)
115 fskyi(nisky,4)=bufr(5,i)
116
117 isky(nisky) = nod
118
119
120
121
122
123
124
125 assert(bufr(6,i) == bufr(1,i))
126
127 nod = ledge(6,n)
128 nisky = nisky + 1
129 fskyi(nisky,1)=bufr(7,i)
130 fskyi(nisky,2)=bufr(8,i)
131 fskyi(nisky,3)=bufr(9,i)
132 fskyi(nisky,4)=bufr(10,i)
133
134 isky(nisky) = nod
135
136
137
138
139
140
141
142
143 ENDIF
144 ENDDO
145
146 IF(intth /= 0 ) THEN
147
148 assert(.false.)
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164 ENDIF
165
166
167
168
169
170 IF((anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT >0.AND.
171 . ((tt>=tanim .AND. tt<=tanim_stop).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP).OR.
172 . (manim>=4.AND.manim<=15)))
173 . .OR.anim_v(26)+h3d_data%N_VECT_CONT_MAX>0)THEN
174
175 DO i = 1, nb_edge
176 n = nint(bufr(1,i))
177 nod = ledge(5,n)
178 fcont(1,nod)=fcont(1,nod)+bufr(2,i)
179 fcont(2,nod)=fcont(2,nod)+bufr(3,i)
180 fcont(3,nod)=fcont(3,nod)+bufr(4,i)
181 nod = ledge(6,n)
182 fcont(1,nod)=fcont(1,nod)+bufr(7,i)
183 fcont(2,nod)=fcont(2,nod)+bufr(8,i)
184 fcont(3,nod)=fcont(3,nod)+bufr(9,i)
185 END DO
186 END IF
187
188
189 IF(nintloadp > 0) THEN
190 DO i = 1, nb
191 n = nint(bufr(1,i))
192 nod1 = ledge(5,n)
193 nod2 = ledge(6,n)
194 DO pp = kloadpinter(nin)+1, kloadpinter(nin+1)
195 ppl = loadp_hyd_inter(pp)
196 tagncont(ppl,nod1) = 1
197 tagncont(ppl,nod2) = 1
198 ENDDO
199 ENDDO
200 ENDIF
201
202 IF(isecin>0)THEN
203
204 k0=nstrf(25)
205 IF(nstrf(1)+nstrf(2)/=0)THEN
206 DO i=1,nsect
207 nbinter=nstrf(k0+14)
208 k1s=k0+30
209 DO j=1,nbinter
210 IF(nstrf(k1s)==noint)THEN
211 IF(isecut/=0)THEN
212 DO ii = 1, nb
213 n = nint(bufr(1,ii))
214 nod = ledge(5,n)
215 IF(secfcum(4,nod,i)==1.)THEN
216 secfcum(1,nod,i)=secfcum(1,nod,i)+bufr(2,ii)
217 secfcum(2,nod,i)=secfcum(2,nod,i)+bufr(3,ii)
218 secfcum(3,nod,i)=secfcum(3,nod,i)+bufr(4,ii)
219 ENDIF
220 nod = ledge(6,n)
221 IF(secfcum(4,nod,i)==1.)THEN
222 secfcum(1,nod,i)=secfcum(1,nod,i)+bufr(7,ii)
223 secfcum(2,nod,i)=secfcum(2,nod,i)+bufr(8,ii)
224 secfcum(3,nod,i)=secfcum(3,nod,i)+bufr(9,ii)
225 ENDIF
226 ENDDO
227 ENDIF
228 ENDIF
229 k1s=k1s+1
230 ENDDO
231 k0=nstrf(k0+24)
232 ENDDO
233 ENDIF
234 ENDIF
235
236 IF((ibag/=0.AND.inacti/=7).OR.
237 . (iadm/=0).OR.(idamp_rdof/=0)) THEN
238
239 DO i = 1, nb
240 IF(bufr(2,i)/=zero.OR.bufr(3,i)/=zero.OR.
241 + bufr(4,i)/=zero) THEN
242 n = nint(bufr(1,i))
243 nod = ledge(5,n)
244 icontact(nod)=1
245 nod = ledge(6,n)
246 icontact(nod)=1
247 END IF
248 END DO
249 END IF
250
251 IF(ibc/=0) THEN
252 ibcm = ibc / 8
253 ibcs = ibc - 8 * ibcm
254
255 IF(ibcs>0) THEN
256 DO i = 1, nb
257 n = nint(bufr(1,i))
258 nod = ledge(5,n)
259 CALL ibcoff(ibcs,icodt(nod))
260 nod = ledge(6,n)
261 CALL ibcoff(ibcs,icodt(nod))
262 END DO
263 END IF
264 END IF
265
266 RETURN
subroutine ibcoff(ibc, icodt)
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)