42
43
44
45 USE intbufdef_mod
46 USE imp_intbufdef
47
48
49
50#include "implicit_f.inc"
51
52
53
54#include "mvsiz_p.inc"
55
56
57
58#include "com01_c.inc"
59#include "com04_c.inc"
60#include "com08_c.inc"
61#include "param_c.inc"
62#include "impl2_c.inc"
63#include "impl1_c.inc"
64
65
66
67 INTEGER IPARI(NPARI,NINTER)
68 INTEGER NIN,IDDL(*),IADK(*) ,JDIK(*),LREM
69
71 . a(3,*), ms(*), v(3,*),x(*),k_diag(*),k_lt(*)
73 . gap_imp
74
75
76 TYPE(INTBUF_STRUCT_) INTBUF_TAB
77 TYPE(IMP_INTBUF_STRUCT_) INTBUF_TAB_IMP
78
79
80
81 INTEGER I, J,I_STOK, JLT_NEW, JLT , NFT, IVIS2,
82 . IBC, NOINT, NSEG, ISECIN, IBAG, IADM,
83 . IGAP, INACTI, IFQ, MFROT, IGSTI, NISUB,
84 . NB_LOC, I_STOK_LOC,DEBUT,
85 . ILAGM, LENR, LENT, MAXCC,INTTH,IFORM,INTKG,
86 . IDNJ,IDHJ
87 INTEGER IX1(), IX2(), IX3(MVSIZ), IX4(MVSIZ),
88 . NSVG(MVSIZ),KINI(MVSIZ),IXX(MVSIZ,13),ITRIV(4,MVSIZ)
89
91 . startt, fric, gap, stopt,
92 . visc,viscf,stiglo,gapmin,
93 . kmin, kmax, gapmax,rstif,fheat,tint,rhoh,eps
94
95
97 . nx1(mvsiz), nx2(mvsiz), nx3(mvsiz), nx4(mvsiz),
98 . ny1(mvsiz), ny2(mvsiz), ny3(mvsiz), ny4(mvsiz),
99 . nz1(mvsiz), nz2(mvsiz), nz3(mvsiz), nz4(mvsiz),
100 . subtria(mvsiz),
101 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
102 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
103 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
104 . xi(mvsiz), yi(mvsiz), zi(mvsiz), stif(mvsiz),
105 . vx1(mvsiz), vx2(mvsiz), vx3(mvsiz), vx4(mvsiz),
106 . vy1(mvsiz), vy2(mvsiz), vy3(mvsiz), vy4(mvsiz),
107 . vz1(mvsiz), vz2(mvsiz), vz3(mvsiz), vz4(mvsiz),
108 . vxi(mvsiz), vyi(mvsiz), vzi(mvsiz),
109 . n1(mvsiz), n2(mvsiz), n3(mvsiz), pene(mvsiz),
110 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
111 . nm1(mvsiz), nm2(mvsiz), nm3(mvsiz),
112 . gapv(mvsiz),msi(mvsiz),gaps(mvsiz),
113 . ki11(9,mvsiz),kj11(9,mvsiz),off(mvsiz),
114 . kk11(9,mvsiz),kl11(9,mvsiz),ki12(9,mvsiz),
115 . kj12(9,mvsiz),kk12(9,mvsiz),kl12(9,mvsiz),
116 . ll_sl(mvsiz),ll_ml(mvsiz)
117 INTEGER NRTMFT, NRTMLT, NMNFT, NMNLT, NRADM
118 INTEGER ICURV,INTKG1
119 INTEGER, DIMENSION(:),ALLOCATABLE :: TAG_S,TAG_M
120 INTEGER :: NSN, NMN
121
122
123
124
125
126
127
128
129
130 nsn =ipari(5,nin)
131 nmn = ipari(6,nin)
132 IF(ipari(33,nin)==1) RETURN
133 noint =ipari(15,nin)
134 igap =ipari(21,nin)
135 mfrot =ipari(30,nin)
136 ifq =ipari(31,nin)
137 ibag =ipari(32,nin)
138 igsti=ipari(34,nin)
139 nisub =ipari(36,nin)
140 icurv =ipari(39,nin)
141 intkg =ipari(65,nin)
142
143
144
145
146
147
148 intth = ipari(47,nin)
149 iform = ipari(48,nin)
150
151 stiglo=-intbuf_tab%STFAC(1)
152 startt=intbuf_tab%VARIABLES(3)
153 stopt =intbuf_tab%VARIABLES(11)
154 IF(startt>tt) RETURN
155 IF(tt>stopt) RETURN
156
157 fric =intbuf_tab%VARIABLES(1)
158 gap =intbuf_tab%VARIABLES(2)
159 gapmin=intbuf_tab%VARIABLES(13)
160 visc =intbuf_tab%VARIABLES(14)
161 viscf =intbuf_tab%VARIABLES(15)
162
163 gapmax=intbuf_tab%VARIABLES(16)
164 kmin =intbuf_tab%VARIABLES(17)
165 kmax =intbuf_tab%VARIABLES(18)
166
167 rstif = intbuf_tab%VARIABLES(20)
168 fheat = intbuf_tab%VARIABLES(21)
169 tint = intbuf_tab%VARIABLES(22)
170 eps = intbuf_tab%VARIABLES(39)
171
172
173
174
175 IF(icurv==3)THEN
176 endif
177
178
179
180
181
182
183
184
185 i_stok = intbuf_tab_imp%I_STOK(1)
186 IF(i_stok== 0) RETURN
187
188 intkg1 = 0
189 IF (intkg>0.AND.iikgoff/=
190 IF(intkg1 > 0) THEN
191 ALLOCATE(tag_s(numnod),tag_m(numnod))
192 tag_s =0
193 tag_m =0
194 DO i=1,nsn
195 j=intbuf_tab%NSV(i)
196 tag_s(j) =i
197 END DO
198 DO i=1,nmn
199 j=intbuf_tab%MSR(i)
200 tag_m(j) =i
201 END DO
202 END IF
203
204 CALL ffizero(i_stok ,nin ,nsn ,intbuf_tab_imp%CAND_N
205
206 DO nft = 0 , i_stok - 1 , nvsiz
207 jlt =
min( nvsiz, i_stok - nft )
208 idnj = 3*nft + 1
209 idhj = 4*nft + 1
211 1 jlt ,x ,intbuf_tab%IRECTM,intbuf_tab%NSV,
212 + intbuf_tab_imp%CAND_E(nft+1) ,intbuf_tab_imp%CAND_N(nft+1),
213 2 stif ,intbuf_tab_imp%STIF(nft+1),
214 + xi ,yi ,zi ,
215 3 vxi ,vyi ,vzi ,ix1 ,
216 4 ix2 ,ix3 ,ix4 ,nsvg ,intbuf_tab%NVOISIN,
217 5 ms ,msi ,nsn ,v ,nin ,
218 6 n1 ,n2 ,n3 ,h1 ,h2 ,
219 7 h3 ,h4 ,intbuf_tab_imp%NJ(idnj),intbuf_tab_imp%HJ(idhj),
220 8 intbuf_tab_imp%INDSUBT(nft+1))
221 CALL i24keg3(jlt ,a ,v ,ms ,fric ,
222 1 ix1 ,ix2 ,ix3 ,ix4 ,nsvg ,
223 2 stif ,vxi ,vyi ,vzi ,msi ,
224 5 n1 ,n2 ,n3 ,h1 ,h2 ,
225 6 h3 ,h4 ,pene ,stiglo,x ,
226 3 ki11 ,ki12 ,kj11 ,kj12 ,kk11 ,
227 4 kk12 ,kl11 ,kl12 ,off ,sk_int,
228 5 nin ,lrem ,intbuf_tab%STIF_OLD ,
229 + intbuf_tab_imp%CAND_N(nft+1),
230 6 igsti ,intbuf_tab%PENE_OLD,nm1 ,nm2 ,
231 7 nm3 )
232 IF(intkg1 > 0) THEN
233 CALL i24kgeo3(jlt ,ix1 ,ix2 ,ix3 ,ix4 ,
234 1 nsvg ,stif ,h1 ,h2 ,h3 ,
235 2 h4 ,pene ,stiglo ,ki11 ,ki12 ,
236 3 kj11 ,kj12 ,kk11 ,kk12 ,kl11 ,
237 4 kl12 ,sk_int ,intbuf_tab%NOD_2RY_LGTH,
238 . intbuf_tab%NOD_MAS_LGTH,
239 5 tag_s ,tag_m ,nsn )
240 DEALLOCATE(tag_s,tag_m)
241 END IF
242
243 IF (nspmd > 1) THEN
244 lrem = lrem + jlt
245 CALL ass_spmd(3 ,nsvg ,ix1 ,ix2 ,ix3 ,
246 1 ix4 ,jlt ,iddl ,k_diag ,k_lt ,
247 2 iadk ,jdik ,ki11 ,ki12 ,kj11 ,
248 3 kj12 ,kk11 ,kk12 ,kl11 ,kl12 ,
249 4 off ,nin )
250 lrem = lrem - jlt
251 ENDIF
252
254 1 ix4 ,jlt ,iddl ,k_diag ,k_lt ,
255 2 iadk ,jdik ,ki11 ,ki12 ,kj11 ,
256 3 kj12 ,kk11 ,kk12 ,kl11 ,kl12 ,
257 4 off )
258 ENDDO
259
260 intbuf_tab_imp%I_STOK(1) = 0
261
262 RETURN
subroutine ass_spmd(nd, ns, n1, n2, n3, n4, nel, iddl, k_diag, k_lt, iadk, jdik, ki11, ki12, kj11, kj12, kk11, kk12, kl11, kl12, off, nin)
subroutine assem_int(nd, ns, n1, n2, n3, n4, nel, iddl, k_diag, k_lt, iadk, jdik, ki11, ki12, kj11, kj12, kk11, kk12, kl11, kl12, off)
subroutine i24corkm(jlt, x, irect, nsv, cand_e, cand_n, stif, stif_imp, xi, yi, zi, vxi, vyi, vzi, ix1, ix2, ix3, ix4, nsvg, nvoisin, ms, msi, nsn, v, nin, n1, n2, n3, h1, h2, h3, h4, nj_imp, hj_imp, subtria)
subroutine i24kgeo3(jlt, ix1, ix2, ix3, ix4, nsvg, stif, h1, h2, h3, h4, pene, stiglo, ki11, ki12, kj11, kj12, kk11, kk12, kl11, kl12, scalk, ll_s, ll_m, tag_s, tag_m, nsn)
subroutine i24keg3(jlt, a, v, ms, fric, ix1, ix2, ix3, ix4, nsvg, stif, vxi, vyi, vzi, msi, n1, n2, n3, h1, h2, h3, h4, pene, stiglo, x, ki11, ki12, kj11, kj12, kk11, kk12, kl11, kl12, off, scalk, nin, lrem, stif_old, cand_n, igsti, pene_old, nm1, nm2, nm3)
subroutine ffizero(jlt, nin, nsn, cand_n)