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, NFT,
82 . NOINT, ,
83 . IGAP, IFQ, MFROT, IGSTI, NISUB,
84 . INTTH,IFORM,INTKG,
85 . IDNJ,IDHJ
86 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
87 . NSVG(MVSIZ)
88
90 . startt, fric, gap, stopt,
91 . visc,viscf,stiglo,gapmin,
92 . kmin, kmax, gapmax,rstif,fheat,tint,eps
93
94
96 . xi(mvsiz), yi(mvsiz), zi(mvsiz), stif(mvsiz),
97 . vxi(mvsiz), vyi(mvsiz), vzi(mvsiz),
98 . n1(mvsiz), n2(mvsiz), n3(mvsiz), pene(mvsiz),
99 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
100 . nm1(mvsiz), nm2(mvsiz), nm3(mvsiz),
101 . msi(mvsiz),
102 . ki11(9,mvsiz),kj11(9,mvsiz),off(mvsiz),
103 . kk11(9,mvsiz),kl11(9,mvsiz),ki12(9,mvsiz),
104 . kj12(9,mvsiz),kk12(9,mvsiz),kl12(9,mvsiz)
105
106 INTEGER ICURV,INTKG1
107 INTEGER, DIMENSION(:),ALLOCATABLE :: TAG_S,TAG_M
108 INTEGER :: NSN, NMN
109
110
111
112
113
114
115
116
117
118 nsn =ipari(5,nin)
119 nmn = ipari(6,nin)
120 IF(ipari(33,nin)==1) RETURN
121 noint =ipari(15,nin)
122 igap =ipari(21,nin)
123 mfrot =ipari(30,nin)
124 ifq =ipari(31,nin)
125 ibag =ipari(32,nin)
126 igsti=ipari(34,nin)
127 nisub =ipari(36,nin)
128 icurv =ipari(39,nin)
129 intkg =ipari(65,nin)
130
131
132
133
134
135
136 intth = ipari(47,nin)
137 iform = ipari(48,nin)
138
139 stiglo=-intbuf_tab%STFAC(1)
140 startt=intbuf_tab%VARIABLES(3)
141 stopt =intbuf_tab%VARIABLES(11)
142 IF(startt>tt) RETURN
143 IF(tt>stopt) RETURN
144
145 fric =intbuf_tab%VARIABLES(1)
146 gap =intbuf_tab%VARIABLES(2)
147 gapmin=intbuf_tab%VARIABLES(13)
148 visc =intbuf_tab%VARIABLES(14)
149 viscf =intbuf_tab%VARIABLES(15)
150
151 gapmax=intbuf_tab%VARIABLES(16)
152 kmin =intbuf_tab%VARIABLES(17)
153 kmax =intbuf_tab%VARIABLES(18)
154
155 rstif = intbuf_tab%VARIABLES(20)
156 fheat = intbuf_tab%VARIABLES(21)
157 tint = intbuf_tab%VARIABLES(22)
158 eps = intbuf_tab%VARIABLES(39)
159
160
161
162
163 IF(icurv==3)THEN
164 endif
165
166
167
168
169
170
171
172
173 i_stok = intbuf_tab_imp%I_STOK(1)
174 IF(i_stok== 0) RETURN
175
176 intkg1 = 0
177 IF (intkg>0.AND.iikgoff/=1) intkg1=1
178 IF(intkg1 > 0) THEN
179 ALLOCATE(tag_s(numnod),tag_m(numnod))
180 tag_s =0
181 tag_m =0
182 DO i=1,nsn
183 j=intbuf_tab%NSV(i)
184 tag_s(j) =i
185 END DO
186 DO i=1,nmn
187 j=intbuf_tab%MSR(i)
188 tag_m(j) =i
189 END DO
190 END IF !(intkg1 > 0) THEN
191
192 CALL ffizero(i_stok ,nin ,nsn ,intbuf_tab_imp%CAND_N )
193
194 DO nft = 0 , i_stok - 1 , nvsiz
195 jlt =
min( nvsiz, i_stok - nft )
196 idnj = 3*nft + 1
197 idhj = 4*nft + 1
199 1 jlt ,x ,intbuf_tab%IRECTM,intbuf_tab%NSV,
200 + intbuf_tab_imp%CAND_E(nft+1) ,intbuf_tab_imp%CAND_N(nft+1),
201 2 stif ,intbuf_tab_imp%STIF
202 + xi ,yi ,zi ,
203 3 vxi ,vyi ,vzi ,ix1 ,
204 4 ix2 ,ix3 ,ix4 ,nsvg ,intbuf_tab%NVOISIN,
205 5 ms ,msi ,nsn ,v ,nin ,
206 6 n1 ,n2 ,n3 ,h1 ,h2 ,
207 7 h3 ,h4 ,intbuf_tab_imp%NJ(idnj),intbuf_tab_imp%HJ(idhj),
208 8 intbuf_tab_imp%INDSUBT(nft+1))
209 CALL i24keg3(jlt ,a ,v ,ms ,fric ,
210 1 ix1 ,ix2 ,ix3 ,ix4 ,nsvg ,
211 2 stif ,vxi ,vyi ,vzi ,msi ,
212 5 n1 ,n2 ,n3 ,h1 ,h2 ,
213 6 h3 ,h4 ,pene ,stiglo,x ,
214 3 ki11 ,ki12 ,kj11 ,kj12 ,kk11 ,
215 4 kk12 ,kl11 ,kl12 ,off ,sk_int,
216 5 nin ,lrem ,intbuf_tab%STIF_OLD ,
217 + intbuf_tab_imp%CAND_N(nft+1),
218 6 igsti ,intbuf_tab%PENE_OLD,nm1 ,nm2 ,
219 7 nm3 )
220 IF(intkg1 > 0) THEN
221 CALL i24kgeo3(jlt ,ix1 ,ix2 ,ix3 ,ix4 ,
222 1 nsvg ,stif ,h1 ,h2 ,h3 ,
223 2 h4 ,pene ,stiglo ,ki11 ,ki12 ,
224 3 kj11 ,kj12 ,kk11 ,kk12 ,kl11 ,
225 4 kl12 ,sk_int ,intbuf_tab%NOD_2RY_LGTH,
226 . intbuf_tab%NOD_MAS_LGTH,
227 5 tag_s ,tag_m ,nsn )
228 DEALLOCATE(tag_s,tag_m)
229 END IF
230
231 IF (nspmd > 1) THEN
232 lrem = lrem + jlt
233 CALL ass_spmd(3 ,nsvg ,ix1 ,ix2 ,ix3 ,
234 1 ix4 ,jlt ,iddl ,k_diag ,k_lt ,
235 2 iadk ,jdik ,ki11 ,ki12 ,kj11 ,
236 3 kj12 ,kk11 ,kk12 ,kl11 ,kl12 ,
237 4 off ,nin )
238 lrem = lrem - jlt
239 ENDIF
240
242 1 ix4 ,jlt ,iddl ,k_diag ,k_lt ,
243 2 iadk ,jdik ,ki11 ,ki12 ,kj11 ,
244 3 kj12 ,kk11 ,kk12 ,kl11 ,kl12 ,
245 4 off )
246 ENDDO
247
248 intbuf_tab_imp%I_STOK(1) = 0
249
250 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)