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