49
50
51
52 USE output_mod, ONLY : output_
54 USE intbufdef_mod
57
58
59
60#include "implicit_f.inc"
61
62
63
64#include "mvsiz_p.inc"
65
66
67
68#include "com01_c.inc"
69#include "com04_c.inc"
70#include "param_c.inc"
71#include "parit_c.inc"
72
73
74
75 TYPE(OUTPUT_), INTENT(INOUT) :: OUTPUT
76 INTEGER IPARI(NPARI),
77 . ISKY(*), NPC(*),
78 . NELTST, ITYPTST,
79 . ITAB(*)
80
82 . bufsf(*) ,a(3,*) ,x(3,*) ,v(3,*) ,
83 . fsav(nthvki) ,wa(*) ,in(*) ,stifn(*) ,fcont(3,*) ,
84 . ms(*) ,fskyi(lsky,nfskyi) ,pld(*),
85 . dt2t
86
87 TYPE(INTBUF_STRUCT_) INTBUF_TAB
88 TYPE(H3D_DATABASE) :: H3D_DATA
89 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
90
91
92
93 INTEGER NOINT,N,K,NRTS,NSN,INOD
94 INTEGER I,NDEB,NREST, NSC, NTC, NNC, MAXFCT
95 INTEGER KSC, KTC, KNC, KMARQND, KWNF, KWTF, KWNS, KWLENG
96
97
99 . stfac, fric, stf,
100 . xp1(3,mvsiz) ,xp2(3,mvsiz) ,xp3(3,mvsiz) , xp4(3,mvsiz),
101 . gx(3,mvsiz) ,xtk(4,mvsiz) ,ytk(4,mvsiz) ,ztk(4,mvsiz) ,
102 . ntx(4,mvsiz) ,nty(4,mvsiz) ,ntz(4,mvsiz) ,
103 . ans(4,mvsiz) ,depth(4,mvsiz),
104 . xi(4,mvsiz) ,yi(4,mvsiz) ,zi(4,mvsiz) ,
105 . nxi(4,mvsiz) ,nyi(4,mvsiz) ,nzi(4,mvsiz) ,
106 . de, ansmx, ftot,
107 . fnormx,fnormy,fnormz,ftangx,ftangy,ftangz
108
109 noint=ipari(15)
110
111
112 maxfct=6*numels+numelc+numeltg
113 ksc =1
114 ktc =maxfct +ksc
115 knc =maxfct +ktc
116 kmarqnd=knc +numnod
117 kwnf =kmarqnd+numnod
118 kwtf =kwnf +3*numnod
119 kwns =kwtf +3*numnod
120
121 kwleng=kwns+numnod-1
122 IF (kwleng>lenwa) THEN
123 CALL ancmsg(msgid=83,anmode=aninfo)
125 END IF
126
127 nrts =ipari(3)
128 nsn =ipari(5)
129
130
131
132 CALL i15can(nrts,intbuf_tab%IRECTS,x,intbuf_tab%KSURF(1),igrsurf,
133 2 bufsf,nsc,wa(ksc),ntc,wa(ktc),
134 3 intbuf_tab%IMPACT)
135
136 stfac =intbuf_tab%STFAC(1)
137 fric =intbuf_tab%VARIABLES(1)
138
139 ansmx =zero
140 de =zero
141
142 ftangx=zero
143 ftangy=zero
144 ftangz=zero
145 fnormx=zero
146 fnormy=zero
147 fnormz=zero
148
149#include "vectorize.inc"
150 DO i=1,nsn
151 inod=intbuf_tab%NSV(i)
152 wa(kwnf+3*(inod-1)) =zero
153 wa(kwnf+3*(inod-1)+1)=zero
154 wa(kwnf+3*(inod-1)+2)=zero
155 wa(kwtf+3*(inod-1)) =zero
156 wa(kwtf+3*(inod-1)+1)=zero
157 wa(kwtf+3*(inod-1)+2)=zero
158 wa(kwns+inod-1)=zero
159 ENDDO
160
161
162
163 ndeb =0
164 10 CONTINUE
165 CALL i15tot1(noint ,ndeb, nsc,x ,intbuf_tab%KSURF(1) ,
166 2 igrsurf ,bufsf ,wa(ksc) ,intbuf_tab%IRECTS ,intbuf_tab%NOLD,
167 3 xp1 ,xp2 ,xp3 ,xp4 ,gx ,
168 4 xtk ,ytk ,ztk ,ntx ,nty ,
169 5 ntz ,ans ,depth ,xi ,yi ,
170 6 zi ,nxi ,nyi ,nzi ,ansmx ,
171 7 intbuf_tab%HOLD ,intbuf_tab%IMPACT ,itab )
172 CALL i15for1(ndeb, nsc, stfac,x ,v ,
173 2 intbuf_tab%KSURF ,igrsurf ,bufsf ,wa(ksc) ,intbuf_tab%IRECTS,
174 3 intbuf_tab%IMPACT,intbuf_tab%IOLD ,intbuf_tab%HOLD ,intbuf_tab%NOLD ,
175 4 intbuf_tab%DOLD ,xp1 ,xp2 ,xp3 ,xp4 ,gx ,
176 5 xtk ,ytk ,ztk ,ntx ,nty ,
177 6 ntz ,ans ,depth ,xi ,yi ,
178 7 zi ,nxi ,nyi ,nzi ,ms ,
179 8 de ,npc ,pld ,wa(kwnf) ,wa(kwtf) ,
180 9 wa(kwns) ,fnormx,fnormy,fnormz,ftangx,
181 a ftangy,ftangz ,dt2t ,noint ,neltst ,
182 b ityptst ,fric )
183 ndeb=ndeb+mvsiz
184 IF (ndeb<nsc) GOTO 10
185
186
187
188 ndeb =0
189 20 CONTINUE
190 CALL i15tott1(noint ,ndeb, ntc,x ,intbuf_tab%KSURF(1) ,
191 2 igrsurf ,bufsf ,wa(ktc) ,intbuf_tab%IRECTS ,intbuf_tab%NOLD ,
192 3 xp1 ,xp2 ,xp3 ,xtk ,ytk ,
193 4 ztk ,ntx ,nty ,ntz ,ans ,
194 5 depth ,xi ,yi ,zi ,nxi ,
195 6 nyi ,nzi ,ansmx ,intbuf_tab%HOLD ,intbuf_tab%IMPACT ,
196 7 itab )
197 CALL i15fort1(ndeb, ntc, stfac,x ,v ,
198 2 intbuf_tab%KSURF(1) ,igrsurf ,bufsf ,wa(ktc) ,intbuf_tab%IRECTS,
199 3 intbuf_tab%IMPACT,intbuf_tab%IOLD ,intbuf_tab%HOLD ,intbuf_tab%NOLD,
200 4 intbuf_tab%DOLD ,xp1 ,xp2 ,xp3 ,xtk ,ytk ,
201 5 ztk ,ntx ,nty ,ntz ,ans ,
202 6 depth ,xi ,yi ,zi ,nxi ,
203 7 nyi ,nzi ,ms ,de ,npc ,
204 8 pld ,wa(kwnf) ,wa(kwtf) ,wa(kwns) ,fnormx,
205 9 fnormy,fnormz,ftangx,ftangy,ftangz ,
206 a dt2t ,noint , neltst ,ityptst ,fric )
207 ndeb=ndeb+mvsiz
208 IF (ndeb<ntc) GOTO 20
209
210
211
212 CALL i15marq(intbuf_tab%IRECTS,nsc,wa(ksc),ntc,wa(ktc),
213 2 intbuf_tab%IMPACT,nsn,intbuf_tab%NSV,wa(kmarqnd),nnc,
214 3 wa(knc))
215
216
217
218 CALL i15ass(output,a ,x ,v ,intbuf_tab%KSURF ,igrsurf ,
219 2 bufsf ,stifn ,fsav ,fcont ,fskyi ,
220 3 isky ,de ,wa(kwnf) ,wa(kwtf) ,wa(kwns) ,
221 4 fnormx ,fnormy ,fnormz ,ftangx ,ftangy ,
222 5 ftangz ,nnc ,wa(knc),h3d_data )
223
224 intbuf_tab%VARIABLES(9)=de
225
2269999 CONTINUE
227 RETURN
subroutine i15ass(output, af, x, v, ksurf, igrsurf, bufsf, stifn, fs, fcont, fskyi, isky, de, wnf, wtf, wns, fnormx, fnormy, fnormz, ftangx, ftangy, ftangz, nnc, knc, h3d_data)
subroutine i15can(nsi, ksi, x, ksurf, igrsurf, bufsf, nsc, ksc, ntc, ktc, iactiv)
subroutine i15for1(ndeb, nsc, stfac, x, v, ksurf, igrsurf, bufsf, ksc, ksi, iactiv, iold, hold, nold, dold, xp1, xp2, xp3, xp4, gx, xtk, ytk, ztk, ntx, nty, ntz, penet, depth, xi, yi, zi, nxi, nyi, nzi, ms, de, npc, pld, wnf, wtf, wns, fnormx, fnormy, fnormz, ftangx, ftangy, ftangz, dt2t, noint, neltst, ityptst, vfric)
subroutine i15fort1(ndeb, ntc, stfac, x, v, ksurf, igrsurf, bufsf, ktc, ksi, iactiv, iold, hold, nold, dold, xp1, xp2, xp3, xtk, ytk, ztk, ntx, nty, ntz, penet, depth, xi, yi, zi, nxi, nyi, nzi, ms, de, npc, pld, wnf, wtf, wns, fnormx, fnormy, fnormz, ftangx, ftangy, ftangz, dt2t, noint, neltst, ityptst, vfric)
subroutine i15marq(ksi, nsc, ksc, ntc, ktc, iactiv, nsn, ksn, imarqnd, nnc, knc)
subroutine i15tot1(noint, ndeb, nsc, x, ksurf, igrsurf, bufsf, ksc, ksi, nold, xp1, xp2, xp3, xp4, gx, xtk, ytk, ztk, ntx, nty, ntz, penet, depth, xi, yi, zi, nxi, nyi, nzi, ansmx, hold, iactiv, itab)
subroutine i15tott1(noint, ndeb, ntc, x, ksurf, igrsurf, bufsf, ktc, ksi, nold, xp1, xp2, xp3, xtk, ytk, ztk, ntx, nty, ntz, penet, depth, xi, yi, zi, nxi, nyi, nzi, ansmx, hold, iactiv, itab)
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)