OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i18for3.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| i18for3_mod ../engine/source/interfaces/int18/i18for3.F
25!||--- called by ------------------------------------------------------
26!|| i7mainf ../engine/source/interfaces/int07/i7mainf.F
27!||====================================================================
29 CONTAINS
30!||====================================================================
31!|| i18for3 ../engine/source/interfaces/int18/i18for3.f
32!||--- called by ------------------------------------------------------
33!|| i7mainf ../engine/source/interfaces/int07/i7mainf.F
34!||--- calls -----------------------------------------------------
35!|| i7ass0 ../engine/source/interfaces/int07/i7ass3.F
36!|| i7ass2 ../engine/source/interfaces/int07/i7ass3.F
37!|| i7ass3 ../engine/source/interfaces/int07/i7ass3.F
38!|| multi_i18_force_poff ../engine/source/interfaces/int18/multi_i18_force_poff.F
39!|| multi_i18_force_pon ../engine/source/interfaces/int18/multi_i18_force_pon.F
40!||--- uses -----------------------------------------------------
41!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
42!|| element_mod ../common_source/modules/elements/element_mod.F90
43!|| h3d_mod ../engine/share/modules/h3d_mod.F
44!|| multi_fvm_mod ../common_source/modules/ale/multi_fvm_mod.F90
45!|| output_mod ../common_source/modules/output/output_mod.F90
46!|| tri7box ../engine/share/modules/tri7box.F
47!||====================================================================
48 SUBROUTINE i18for3(OUTPUT, JLT ,A ,V ,IBCC ,ICODT ,
49 2 FSAV ,GAP ,FRIC ,MS ,VISC ,
50 3 VISCF ,NOINT ,STFN ,ITAB ,CN_LOC ,
51 4 STFVAL ,STIFN ,STIF ,FSKYI ,ISKY ,
52 6 NX1 ,NX2 ,NX3 ,NX4 ,NY1 ,
53 7 NY2 ,NY3 ,NY4 ,NZ1 ,NZ2 ,
54 8 NZ3 ,NZ4 ,LB1 ,LB2 ,LB3 ,
55 9 LB4 ,LC1 ,LC2 ,LC3 ,LC4 ,
56 A P1 ,P2 ,P3 ,P4 ,FCONT ,
57 B IX1 ,IX2 ,IX3 ,IX4 ,NSVG ,
58 C IVIS2 ,NELTST ,ITYPTST ,DT2T ,IXS ,
59 D GAPV ,CAND_P ,INDEX ,NISKYFI ,
60 E KINET ,NEWFRONT ,ISECIN ,NSTRF ,SECFCUM ,
61 F X ,IRECT ,CE_LOC ,MFROT ,IFQ ,
62 G FROT_P ,CAND_FX ,CAND_FY ,CAND_FZ ,
63 H IFPEN ,ICONTACT ,IGROUPS ,IPARG ,
64 J VISCN ,VXI ,VYI ,VZI ,MSI ,
65 K KINI ,NIN ,NISUB ,LISUB ,ADDSUBS ,
66 L ADDSUBM ,LISUBS ,LISUBM ,FSAVSUB ,CAND_N ,
67 M ILAGM ,ICURV ,FNCONT ,MS0 ,
68 N JTASK ,ISENSINT ,FSAVPARIT ,NFT ,MULTI_FVM ,
69 O H3D_DATA ,ELBUF_TAB ,IDIR )
70C-----------------------------------------------
71C D e s c r i p t i o n
72C-----------------------------------------------
73C This subroutine is computing reaction forces
74C for fluid structure interaction /INTER/TYPE18
75C It also outputs contour and time histories.
76C
77C I=1:JLT : local loop (JLT<=128)
78C INDEX(I) is Node id (internal)
79C
80C-----------------------------------------------
81C M o d u l e s
82C-----------------------------------------------
83 USE tri7box
84 USE multi_fvm_mod
85 USE h3d_mod
86 USE elbufdef_mod
87 USE output_mod
88 use element_mod , only : nixs
89C-----------------------------------------------
90C I m p l i c i t T y p e s
91C-----------------------------------------------
92#include "implicit_f.inc"
93#include "comlock.inc"
94C-----------------------------------------------
95C G l o b a l P a r a m e t e r s
96C-----------------------------------------------
97#include "mvsiz_p.inc"
98C-----------------------------------------------
99C C o m m o n B l o c k s
100C-----------------------------------------------
101#include "com01_c.inc"
102#include "com04_c.inc"
103#include "com06_c.inc"
104#include "com08_c.inc"
105#include "scr07_c.inc"
106#include "scr14_c.inc"
107#include "scr16_c.inc"
108#include "scr18_c.inc"
109#include "units_c.inc"
110#include "parit_c.inc"
111#include "param_c.inc"
112#include "kincod_c.inc"
113C-----------------------------------------------
114C D u m m y A r g u m e n t s
115C-----------------------------------------------
116 TYPE(output_), INTENT(INOUT) :: OUTPUT
117 INTEGER, INTENT(IN) :: IDIR
118 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
119 INTEGER NELTST,ITYPTST,JLT,IBCC,IVIS2,NIN,
120 . ICODT(*), ITAB(*), ISKY(*), KINET(*),
121 . MFROT, IFQ, NOINT,NEWFRONT,ISECIN, NSTRF(*),
122 . IRECT(4,*),IFPEN(*) ,ICONTACT(*), CAND_N(*),
123 . KINI(*),IGROUPS(NUMELS),
124 . ISET, NISKYFI,INTTH,IFORM,JTASK,NFT,IPARG(NPARG)
125 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
126 . CN_LOC(MVSIZ),CE_LOC(MVSIZ),INDEX(MVSIZ),NSVG(MVSIZ),
127 . NISUB, LISUB(*), ADDSUBS(*), ADDSUBM(*), LISUBS(*),
128 . LISUBM(*),ILAGM,ICURV(3),ISENSINT(*),IXS(NIXS,NUMELS)
129 my_real
130 . STFVAL,CAND_P(*),FROT_P(*), X(3,*),MS0(*),
131 . A(3,*), MS(*), V(3,*), FSAV(*),FCONT(3,*),
132 . CAND_FX(*),CAND_FY(*),CAND_FZ(*),
133 . GAP, FRIC,VISC,VISCF,VIS,DT2T,STFN(*),STIFN(*),
134 . FSKYI(LSKYI,NFSKYI),FSAVSUB(NTHVKI,*),FNCONT(3,*),
135 . FSAVPARIT(NISUB+1,11,*)
136 my_real
137 . nx1(mvsiz), nx2(mvsiz), nx3(mvsiz), nx4(mvsiz),
138 . ny1(mvsiz), ny2(mvsiz), ny3(mvsiz), ny4(mvsiz),
139 . nz1(mvsiz), nz2(mvsiz), nz3(mvsiz), nz4(mvsiz),
140 . lb1(mvsiz), lb2(mvsiz), lb3(mvsiz), lb4(mvsiz),
141 . lc1(mvsiz), lc2(mvsiz), lc3(mvsiz), lc4(mvsiz),
142 . p1(mvsiz), p2(mvsiz), p3(mvsiz), p4(mvsiz), stif(mvsiz),
143 . gapv(mvsiz),
144 . secfcum(7,numnod,nsect), tmp(mvsiz),
145 . stifsav(mvsiz), viscn(*),
146 . vxi(mvsiz),vyi(mvsiz),vzi(mvsiz),msi(2*mvsiz),
147 . rstif
148 TYPE(multi_fvm_struct), INTENT(INOUT) :: MULTI_FVM
149 TYPE(H3D_DATABASE) :: H3D_DATA
150C-----------------------------------------------
151C L o c a l V a r i a b l e s
152C-----------------------------------------------
153 INTEGER I, J, JG, K0, NBINTER, K1S, K, IE, NN, NI,
154 . NA1,NA2
155 my_real
156 . FXI(MVSIZ), FYI(MVSIZ), FZI(MVSIZ), FNI(MVSIZ),
157 . fxt(mvsiz),fyt(mvsiz),fzt(mvsiz),
158 . fx1(mvsiz), fx2(mvsiz), fx3(mvsiz), fx4(mvsiz),
159 . fy1(mvsiz), fy2(mvsiz), fy3(mvsiz), fy4(mvsiz),
160 . fz1(mvsiz), fz2(mvsiz), fz3(mvsiz), fz4(mvsiz),
161 . n1(mvsiz), n2(mvsiz), n3(mvsiz), pene(mvsiz),
162 . vis2(mvsiz), dtmi(mvsiz), xmu(mvsiz),
163 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
164 . vx(mvsiz), vy(mvsiz), vz(mvsiz), vn(mvsiz),dist(mvsiz),
165 . vnx, vny, vnz, aa, crit,s2,rdist,
166 . v2, fm2, dt1inv, visca, fac,ff,alphi,alpha,beta,
167 . fx, fy, fz, f2, mas2, m2sk, dtmi0,ft,fn,fmax,ftn,
168 . facm1, econtt, econvt, h0, la1, la2, la3, la4,
169 . d1,d2,d3,d4,a1,a2,a3,a4,econtdt,
170 . fsav1, fsav2, fsav3, fsav4, fsav5, fsav6, fsav7, fsav8,
171 . fsav9, fsav10, fsav11, fsav12, fsav13, fsav14, fsav15, ffo,
172 . e10, h0d, s2d, sum,
173 . la1d,la2d,la3d,la4d,t1,t1d,t2,t2d,ffd,visd,facd,d1d,
174 . p1s(mvsiz),p2s(mvsiz),p3s(mvsiz),p4s(mvsiz),
175 . d2d,d3d,d4d,vnxd,vnyd,vnzd,v2d,fm2d,f2d,aad,fxd,fyd,fzd,
176 . a1d,a2d,a3d,a4d,vv,ax1,ax2,ay1,ay2,az1,az2,ax,ay,az,
177 . area,p,vv1,vv2,v21,dmu, h00 ,a0x,a0y,a0z,rx,ry,rz,
178 . anx,any,anz,aan,aax,aay,aaz ,rr,rs,aaa ,tm,ts
179 my_real
180 . surfx,surfy,surfz,surf
181 my_real
182 . st1(mvsiz),st2(mvsiz),st3(mvsiz),st4(mvsiz),stv(mvsiz),
183 . kt(mvsiz),c(mvsiz),cf(mvsiz),
184 . ks(mvsiz),k1(mvsiz),k2(mvsiz),k3(mvsiz),k4(mvsiz),
185 . cs(mvsiz),c1(mvsiz),c2(mvsiz),c3(mvsiz),c4(mvsiz),
186 . cx,cy,cfi,aux,phi1(mvsiz), phi2(mvsiz), phi3(mvsiz),
187 . phi4(mvsiz),dx, dti
188 INTEGER JSUB, KSUB, JJ, KK, IN, NSUB, IBID, ITASK
189 my_real FSAVSUB1(15,NISUB),IMPX,IMPY,IMPZ,PP1,PP2,PP3,PP4,BID
190C-----------------------------------------------
191C S o u r c e L i n e s
192C-----------------------------------------------
193
194 IBID = 0
195 bid = zero
196 econtt = zero
197 econtdt = zero
198
199 dt1inv =zero
200 IF(dt1 > zero)dt1inv = one/dt1
201
202 itask = jtask-1
203
204 !---------------------
205 ! PENETRATION CALCULATION (PENE)
206 ! & LOCAL COORDINATES (H1,H2,H3,H4) ON FACE FOR VELOCITY INTERPOLATION ON FACE
207 !---------------------
208 DO i=1,jlt
209 IF(ix3(i) /= ix4(i))THEN
210 !distance from triangles
211 d1 = sqrt(p1(i))
212 d2 = sqrt(p2(i))
213 d3 = sqrt(p3(i))
214 d4 = sqrt(p4(i))
215 !penetration into each triangle gap
216 pp1 = max(zero, gap - d1)
217 pp2 = max(zero, gap - d2)
218 pp3 = max(zero, gap - d3)
219 pp4 = max(zero, gap - d4)
220 !MAIN face penetration
221 pene(i) = max(pp1,pp2,pp3,pp4)
222 !ratios
223 a1 = pp1/max(em20,d1)
224 a2 = pp2/max(em20,d2)
225 a3 = pp3/max(em20,d3)
226 a4 = pp4/max(em20,d4)
227 !sum(ratio[k]*2Sn[k],k=1..4)
228 n1(i) = a1*nx1(i) + a2*nx2(i) + a3*nx3(i) + a4*nx4(i)
229 n2(i) = a1*ny1(i) + a2*ny2(i) + a3*ny3(i) + a4*ny4(i)
230 n3(i) = a1*nz1(i) + a2*nz2(i) + a3*nz3(i) + a4*nz4(i)
231 la1 = one - lb1(i) - lc1(i)
232 la2 = one - lb2(i) - lc2(i)
233 la3 = one - lb3(i) - lc3(i)
234 la4 = one - lb4(i) - lc4(i)
235 h0 = fourth * (pp1*la1 + pp2*la2 + pp3*la3 + pp4*la4)
236 h1(i) = h0 + pp1 * lb1(i) + pp4 * lc4(i)
237 h2(i) = h0 + pp2 * lb2(i) + pp1 * lc1(i)
238 h3(i) = h0 + pp3 * lb3(i) + pp2 * lc2(i)
239 h4(i) = h0 + pp4 * lb4(i) + pp3 * lc3(i)
240 h00 = one/max(em20,h1(i) + h2(i) + h3(i) + h4(i))
241 h1(i) = h1(i) * h00
242 h2(i) = h2(i) * h00
243 h3(i) = h3(i) * h00
244 h4(i) = h4(i) * h00
245 ELSE
246 d1 = sqrt(p1(i))
247 pp1 = max(zero, gap - d1)
248 pene(i) = pp1
249 n1(i) = nx1(i)
250 n2(i) = ny1(i)
251 n3(i) = nz1(i)
252 h1(i) = lb1(i)
253 h2(i) = lc1(i)
254 h3(i) = one - lb1(i) - lc1(i)
255 h4(i) = zero
256 ENDIF
257 ENDDO
258 !---------------------
259 ! UNITARY NORMAL VECTOR
260 !---------------------
261 DO i=1,jlt
262 s2 = one/max(em30,sqrt(n1(i)*n1(i) + n2(i)*n2(i) + n3(i)*n3(i)))
263 n1(i) = n1(i)*s2
264 n2(i) = n2(i)*s2
265 n3(i) = n3(i)*s2
266 ENDDO
267 !---------------------
268 ! RELATIVE VELOCITY (VX,VY,VZ)
269 ! & ITS NORMAL COMPONENT (VN)
270 !---------------------
271 DO i=1,jlt
272 vx(i) = vxi(i) - h1(i)*v(1,ix1(i)) - h2(i)*v(1,ix2(i)) - h3(i)*v(1,ix3(i)) - h4(i)*v(1,ix4(i))
273 vy(i) = vyi(i) - h1(i)*v(2,ix1(i)) - h2(i)*v(2,ix2(i)) - h3(i)*v(2,ix3(i)) - h4(i)*v(2,ix4(i))
274 vz(i) = vzi(i) - h1(i)*v(3,ix1(i)) - h2(i)*v(3,ix2(i)) - h3(i)*v(3,ix3(i)) - h4(i)*v(3,ix4(i))
275 vn(i) = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
276 !hourglass correction
277 h0 = -fourth*(h1(i) - h2(i) + h3(i) - h4(i))
278 h0 = min(h0,h2(i),h4(i))
279 h0 = max(h0,-h1(i),-h3(i))
280 IF(ix3(i) == ix4(i))h0 = zero
281 h1(i) = h1(i) + h0
282 h2(i) = h2(i) - h0
283 h3(i) = h3(i) + h0
284 h4(i) = h4(i) - h0
285 ENDDO
286
287 !----------------------------------------------!
288 ! CONSTANT STIFFNESS !
289 !----------------------------------------------!
290 DO i=1,jlt
291 IF(pene(i) > zero )THEN
292 dist(i)=gap-pene(i)
293 cand_p(index(i)) = cand_p(index(i)) + vn(i)*dt1
294 ! IF(CAND_P(INDEX(I)) > ZERO)CAND_P(INDEX(I))=ZERO !contact lost
295 stif(i) = stfval * pene(i)/gap !STVAL:constant user param
296 ELSE
297 !remove old candidates
298 cand_p(index(i)) = zero
299 stif(i) = zero
300 ENDIF
301 ENDDO
302
303 !----------------------------------------------!
304 ! REACTION FORCE !
305 !----------------------------------------------!
306 DO i=1,jlt
307 IF(pene(i) > zero )THEN
308 fni(i) = stif(i) * cand_p(index(i))
309 ELSE
310 fni(i)=zero
311 ENDIF
312 ENDDO
313
314 !!KINEMATIC TIME STEP
315 !DTI = EP20
316 !IF(INTER18_AUTOPARAM == 1)THEN
317 ! DO i=1,jlt
318 ! DX =GAP/TEN
319 ! RDIST = DX / MAX(EM20,ABS(VN(I)))
320 ! DTI = MIN(RDIST,DTI)
321 ! ENDDO
322 !ENDIF
323 !IF(DTI<DT2T)THEN
324 ! DT2T = DTI
325 ! NELTST = NOINT
326 ! ITYPTST = 10
327 !ENDIF
328
329 !---------------------------------
330 ! EXPERIMENTAL SURFACE ORIENTATION
331 !---------------------------------
332 IF(idir == -1)THEN
333 DO i=1,jlt
334 fni(i) = min(fni(i),zero)
335 ENDDO
336 ELSEIF(idir == 1)THEN
337 DO i=1,jlt
338 fni(i) = max(fni(i),zero)
339 ENDDO
340 ENDIF
341
342 !---------------------------------
343 ! DAMPING
344 !---------------------------------
345 IF(visc /= zero)THEN
346 DO i=1,jlt
347 IF(vn(i) > zero)THEN
348 fac = stif(i) / max(em30,stif(i))
349 ff = fac * visc * pene(i)/gap
350 stif(i) = stif(i) + two * ff * dt1inv
351 ff = ff * vn(i)
352 econtdt = econtdt + ff * vn(i) * dt1 ! Damping Energy
353 fni(i) = fni(i) + ff
354 ENDIF
355 ENDDO
356 ENDIF
357
358 !---------------------------------
359 ! NORMAL IMPULSE OUTPUT
360 !---------------------------------
361 fsav1 = zero
362 fsav2 = zero
363 fsav3 = zero
364 fsav8 = zero
365 fsav9 = zero
366 fsav10= zero
367 fsav11= zero
368 DO i=1,jlt
369 econtt = econtt + dt1*vn(i)*fni(i) ! Elastic energy : it is cumulated energy per cycle
370 fxi(i)=n1(i)*fni(i)
371 fyi(i)=n2(i)*fni(i)
372 fzi(i)=n3(i)*fni(i)
373 impx=fxi(i)*dt12
374 impy=fyi(i)*dt12
375 impz=fzi(i)*dt12
376 fsav1 =fsav1 +impx
377 fsav2 =fsav2 +impy
378 fsav3 =fsav3 +impz
379 fsav8 =fsav8 +abs(impx)
380 fsav9 =fsav9 +abs(impy)
381 fsav10=fsav10+abs(impz)
382 fsav11=fsav11+fni(i)*dt12
383 ENDDO
384#include "lockon.inc"
385 fsav(1)=fsav(1)+fsav1
386 fsav(2)=fsav(2)+fsav2
387 fsav(3)=fsav(3)+fsav3
388 fsav(8)=fsav(8)+fsav8
389 fsav(9)=fsav(9)+fsav9
390 fsav(10)=fsav(10)+fsav10
391 fsav(11)=fsav(11)+fsav11
392#include "lockoff.inc"
393 IF(isensint(1)/=0) THEN
394 DO i=1,jlt
395 fsavparit(1,1,i+nft) = fsavparit(1,1,i+nft) + sqrt((fxi(i)**2)+(fyi(i)**2)+(fzi(i)**2))
396 ENDDO
397 ENDIF
398 !---------------------------------
399 ! TH OUTPUT FOR SUB INTERFACES
400 !---------------------------------
401 IF(nisub /= 0)THEN
402 DO jsub=1,nisub
403 DO j=1,15
404 fsavsub1(j,jsub)=zero
405 END DO
406 END DO
407 DO i=1,jlt
408 nn = nsvg(i)
409 IF(nn > 0)THEN
410 in=cn_loc(i)
411 ie=ce_loc(i)
412 jj =addsubs(in)
413 kk =addsubm(ie)
414 DO WHILE(jj<addsubs(in+1))
415 jsub=lisubs(jj)
416 DO WHILE(kk<addsubm(ie+1))
417 ksub=lisubm(kk)
418 IF(ksub == jsub)THEN
419 impx=fxi(i)*dt12
420 impy=fyi(i)*dt12
421 impz=fzi(i)*dt12
422 !MAIN side
423 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
424 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
425 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
426 IF(isensint(jsub)/=0) THEN
427 fsavparit(jsub+1,1,i+nft) = fsavparit(jsub+1,1,i+nft) + sqrt((fxi(i)**2)+(fyi(i)**2)+(fzi(i)**2))
428 ENDIF
429 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
430 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
431 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
432 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
433 kk=kk+1
434 EXIT
435 ELSE IF(ksub<jsub)THEN
436 kk=kk+1
437 ELSE
438 EXIT
439 END IF
440 END DO
441 jj=jj+1
442 END DO !WHILE
443 ELSE
444 nn = -nn
445 ie=ce_loc(i)
446 jj =addsubsfi(nin)%P(nn)
447 kk =addsubm(ie)
448 DO WHILE(jj<addsubsfi(nin)%P(nn+1))
449 jsub=lisubsfi(nin)%P(jj)
450 DO WHILE(kk<addsubm(ie+1))
451 ksub=lisubm(kk)
452 IF(ksub == jsub)THEN
453 impx=fxi(i)*dt12
454 impy=fyi(i)*dt12
455 impz=fzi(i)*dt12
456 ! MAIN side
457 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
458 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
459 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
460 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
461 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
462 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
463 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
464 kk=kk+1
465 EXIT
466 ELSE IF(ksub<jsub)THEN
467 kk=kk+1
468 ELSE
469 EXIT
470 END IF
471 END do! WHILE (KK<ADDSUBM(IE+1))
472 jj=jj+1
473 END do! WHILE (JJ<ADDSUBSFI(NIN)%P(NN+1))
474 END IF
475 END DO !NEXT I=1,JLT
476 END IF
477 !---------------------------------
478 ! SORTIES TH PAR SOUS INTERFACE
479 !---------------------------------
480 IF(nisub /= 0)THEN
481 DO i=1,jlt
482 nn = nsvg(i)
483 IF(nn > 0)THEN
484 in=cn_loc(i)
485 ie=ce_loc(i)
486 jj =addsubs(in)
487 kk =addsubm(ie)
488 DO WHILE(jj<addsubs(in+1))
489 jsub=lisubs(jj)
490 DO WHILE(kk<addsubm(ie+1))
491 ksub=lisubm(kk)
492 IF(ksub == jsub)THEN
493 !CURRENTLY NO TANGENTIAL FORCE IN INTER18
494 !IMPX=FXT(I)*DT12
495 !IMPY=FYT(I)*DT12
496 !IMPZ=FZT(I)*DT12
497 !FSAVSUB1(4,JSUB)=FSAVSUB1(4,JSUB)+IMPX
498 !FSAVSUB1(5,JSUB)=FSAVSUB1(5,JSUB)+IMPY
499 !FSAVSUB1(6,JSUB)=FSAVSUB1(6,JSUB)+IMPZ
500 impx=fxi(i)*dt12
501 impy=fyi(i)*dt12
502 impz=fzi(i)*dt12
503 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
504 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
505 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
506 fsavsub1(15,jsub)= fsavsub1(15,jsub) + sqrt(impx*impx+impy*impy+impz*impz)
507 kk=kk+1
508 EXIT
509 ELSE IF(ksub<jsub)THEN
510 kk=kk+1
511 ELSE
512 EXIT
513 END IF
514 END do!WHILE (KK<ADDSUBM(IE+1))
515 jj=jj+1
516 END do! WHILE (JJ<ADDSUBS(IN+1))
517 ELSE
518 nn = -nn
519 ie=ce_loc(i)
520 jj =addsubsfi(nin)%P(nn)
521 kk =addsubm(ie)
522 DO WHILE(jj<addsubsfi(nin)%P(nn+1))
523 jsub=lisubsfi(nin)%P(jj)
524 DO WHILE(kk<addsubm(ie+1))
525 ksub=lisubm(kk)
526 IF(ksub == jsub)THEN
527 !CURRENTLY NO TANGENTIAL FORCE IN INTER18
528 !IMPX=FXT(I)*DT12
529 !IMPY=FYT(I)*DT12
530 !IMPZ=FZT(I)*DT12
531 !!MAIN side :
532 !FSAVSUB1(4,JSUB)=FSAVSUB1(4,JSUB)+IMPX
533 !FSAVSUB1(5,JSUB)=FSAVSUB1(5,JSUB)+IMPY
534 !FSAVSUB1(6,JSUB)=FSAVSUB1(6,JSUB)+IMPZ
535 impx=fxi(i)*dt12
536 impy=fyi(i)*dt12
537 impz=fzi(i)*dt12
538 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
539 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
540 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
541 fsavsub1(15,jsub)= fsavsub1(15,jsub)+sqrt(impx*impx+impy*impy+impz*impz)
542 kk=kk+1
543 EXIT
544 ELSE IF(ksub<jsub)THEN
545 kk=kk+1
546 ELSE
547 EXIT
548 END IF
549 END do!DO WHILE(KK<ADDSUBM(IE+1))
550 jj=jj+1
551 END do!WHILE(JJ<ADDSUBSFI(NIN)%P(NN+1))
552 END IF
553 END DO !NEXT I=1,JLT
554#include "lockon.inc"
555 DO jsub=1,nisub
556 nsub=lisub(jsub)
557 DO j=1,15
558 fsavsub(j,nsub)=fsavsub(j,nsub)+fsavsub1(j,jsub)
559 END DO
560 END DO
561#include "lockoff.inc"
562 END IF
563C---------------------------------
564#include "lockon.inc"
565 econtd = econtd + econtdt ! Damping Energy
566 econt_cumu = econt_cumu + econtt ! ELASTIC ENERGY
567 fsav(26) = fsav(26) + econtt
568 fsav(28) = fsav(28) + econtdt
569#include "lockoff.inc"
570C---------------------------------
571
572 IF(idtmin(10) == 1.OR.idtmin(10) == 2.OR.idtmin(10) == 5.OR.idtmin(10) == 6)THEN
573 dtmi0 = ep20
574 DO i=1,jlt
575 dtmi(i) = ep20
576 mas2 = two * msi(i)
577 IF(mas2>zero.AND.stif(i)>zero .AND. irb(kini(i))==0.AND.irb2(kini(i))==0)THEN
578 dtmi(i) = min(dtmi(i),dtfac1(10)*sqrt(mas2/stif(i)))
579 ENDIF
580 mas2 = two* ms(ix1(i))
581 IF(mas2>zero.AND.h1(i)*stif(i)>zero .AND. irb(kinet(ix1(i)))==0.AND.irb2(kinet(ix1(i)))==0)THEN
582 dtmi(i) = min(dtmi(i),dtfac1(10)*sqrt(mas2/(h1(i)*stif(i))))
583 ENDIF
584 mas2 = two * ms(ix2(i))
585 IF(mas2>zero.AND.h2(i)*stif(i)>zero .AND. irb(kinet(ix2(i)))==0.AND.irb2(kinet(ix2(i)))==0)THEN
586 dtmi(i) = min(dtmi(i),dtfac1(10)*sqrt(mas2/(h2(i)*stif(i))))
587 ENDIF
588 mas2 = two* ms(ix3(i))
589 IF(mas2 > zero.AND.h3(i)*stif(i) > zero .AND. irb(kinet(ix3(i))) == 0.AND.irb2(kinet(ix3(i))) == 0)THEN
590 dtmi(i) = min(dtmi(i),dtfac1(10)*sqrt(mas2/(h3(i)*stif(i))))
591 ENDIF
592 mas2 = two * ms(ix4(i))
593 IF(mas2 > zero.AND.h4(i)*stif(i) > zero .AND. irb(kinet(ix4(i))) == 0.AND.irb2(kinet(ix4(i))) == 0)THEN
594 dtmi(i) = min(dtmi(i),dtfac1(10)*sqrt(mas2/(h4(i)*stif(i))))
595 ENDIF
596 dtmi0 = min(dtmi0,dtmi(i))
597 ENDDO
598 IF(dtmi0<=dtmin1(10))THEN
599 DO i=1,jlt
600 IF(dtmi(i)<=dtmin1(10))THEN
601 jg = nsvg(i)
602 IF(jg > 0)THEN
603 ni = itab(jg)
604 ELSE
605 ni = itafi(nin)%P(-jg)
606 ENDIF
607 IF(idtmin(10) == 1)THEN
608#include "lockon.inc"
609 WRITE(iout,'(A,E12.4,A,I10,A,E12.4,A)')
610 . ' **WARNING MINIMUM TIME STEP ',dtmi(i),
611 . ' IN INTERFACE ',noint
612 WRITE(iout,'(A,I10)') ' SECONDARY NODE : ',ni
613 WRITE(iout,'(A,4I10)')' MAIN NODES : ',
614 . itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
615#include "lockoff.inc"
616 tstop = tt
617 IF ( istamping == 1) THEN
618 WRITE(istdo,'(A)')'The run encountered a problem in an interface Type 7.'
619 WRITE(istdo,'(A)')'You may need to check if there is enou gh clearance between the tools,'
620 WRITE(istdo,'(A)')'and that they do not penetrate each other during their travel'
621 WRITE(iout, '(A)')'The run encountered a problem in an interface Type 7.'
622 WRITE(iout, '(A)')'You may need to check if there is enough clearance between the tools,'
623 WRITE(iout, '(A)')'and that they do not penetrate each other during their travel'
624 ENDIF
625 ELSEIF(idtmin(10) == 2)THEN
626#include "lockon.inc"
627 WRITE(iout,'(A,E12.4,A,I10,A,E12.4,A)')' **WARNING MINIMUM TIME STEP ',dtmi(i),' IN INTERFACE ',noint
628 WRITE(iout,'(A,I10,A,I10)')' DELETE SECONDARY NODE ',ni,' FROM INTERFACE ',noint
629 WRITE(iout,'(A,4I10)')' MAIN NODES : ',itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
630 IF(jg > 0) THEN
631 stfn(cn_loc(i)) = -abs(stfn(cn_loc(i)))
632 ELSE
633 stifi(nin)%P(-jg) = -abs(stifi(nin)%P(-jg))
634 ENDIF
635#include "lockoff.inc"
636 IF ( istamping == 1) THEN
637 WRITE(istdo,'(A)')'The run encountered a problem in an interface Type 7.'
638 WRITE(istdo,'(A)')'You may need to check if there is enou gh clearance between the tools,'
639 WRITE(istdo,'(A)')'and that they do not penetrate each other during their travel'
640 WRITE(iout, '(A)')'The run encountered a problem in an interface Type 7.'
641 WRITE(iout, '(A)')'You may need to check if there is enough clearance between the tools,'
642 WRITE(iout, '(A)')'and that they do not penetrate each other during their travel'
643 ENDIF
644 newfront = -1
645 ELSEIF(idtmin(10) == 5)THEN
646#include "lockon.inc"
647 WRITE(iout,'(A,E12.4,A,I10,A,E12.4,A)')' **WARNING MINIMUM TIME STEP ',dtmi(i),' IN INTERFACE ',noint
648 WRITE(iout,'(A,I10)') ' SECONDARY NODE : ',ni
649 WRITE(iout,'(A,4I10)')' MAIN NODES : ',
650 . itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
651#include "lockoff.inc"
652 mstop = 2
653 IF ( istamping == 1) THEN
654 WRITE(istdo,'(A)')'the run encountered a problem in an interface type 7.'
655 WRITE(ISTDO,'(a)')'you may need to check if there is enou gh clearance between the tools,'
656 WRITE(ISTDO,'(a)')'and that they do not penetrate each other during their travel'
657 WRITE(IOUT, '(a)')'the run encountered a problem in an interface type 7.'
658 WRITE(IOUT, '(a)')'you may need to check if there is enough clearance between the tools,'
659 WRITE(IOUT, '(a)')'and that they do not penetrate each other during their travel'
660 ENDIF
661.AND. ELSEIF(IDTMIN(10) == 6ILAGM == 2)THEN
662 IF(KINET(JG)+KINET(IX1(I))+KINET(IX2(I))+KINET(IX3(I))+KINET(IX4(I)) == 0 )THEN
663 CAND_N(INDEX(I)) = -IABS(CAND_N(INDEX(I)))
664 STIF(I) = ZERO
665 FXI(I) = ZERO
666 FYI(I) = ZERO
667 FZI(I) = ZERO
668 ENDIF
669 ENDIF
670 ENDIF
671 ENDDO
672 ENDIF
673 ENDIF
674C---------------------------------
675 DO I=1,JLT
676 FX1(I)=FXI(I)*H1(I)
677 FY1(I)=FYI(I)*H1(I)
678 FZ1(I)=FZI(I)*H1(I)
679 !
680 FX2(I)=FXI(I)*H2(I)
681 FY2(I)=FYI(I)*H2(I)
682 FZ2(I)=FZI(I)*H2(I)
683 !
684 FX3(I)=FXI(I)*H3(I)
685 FY3(I)=FYI(I)*H3(I)
686 FZ3(I)=FZI(I)*H3(I)
687 !
688 FX4(I)=FXI(I)*H4(I)
689 FY4(I)=FYI(I)*H4(I)
690 FZ4(I)=FZI(I)*H4(I)
691 !case law151 with single lagrangian fluid brick and constant velocity
692 !FXI(I)=ZERO
693 !FYI(I)=ZERO
694 !FZI(I)=ZERO
695 ENDDO
696
697 !SPMD: Identification of interf nodes.useful to send
698 IF (NSPMD > 1) THEN
699 DO I = 1,JLT
700 NN = NSVG(I)
701 IF(NN<0)THEN
702 ! temporary tag of nsvfi a -
703 NSVFI(NIN)%P(-NN) = -ABS(NSVFI(NIN)%P(-NN))
704 ENDIF
705 ENDDO
706 ENDIF
707 IF (MULTI_FVM%IS_USED) THEN
708 IF (IPARIT == 0) THEN
709 CALL MULTI_I18_FORCE_POFF(
710 1 DT1 ,JLT ,IX1 ,IX2 ,IX3 ,IX4 ,
711 2 NSVG ,H1 ,H2 ,H3 ,H4 ,STIF ,
712 3 FX1 ,FY1 ,FZ1 ,FX2 ,FY2 ,FZ2 ,
713 4 FX3 ,FY3 ,FZ3 ,FX4 ,FY4 ,FZ4 ,
714 5 FXI ,FYI ,FZI ,A ,STIFN ,NIN ,
715 7 JTASK ,MULTI_FVM ,X ,IXS ,V ,
716 8 ELBUF_TAB,IGROUPS ,IPARG,MSI)
717 ELSE
718 CALL MULTI_I18_FORCE_PON(
719 1 JLT ,IX1 ,IX2 ,IX3 ,IX4 ,
720 2 NSVG ,H1 ,H2 ,H3 ,H4 ,STIF ,
721 3 FX1 ,FY1 ,FZ1 ,FX2 ,FY2 ,FZ2 ,
722 4 FX3 ,FY3 ,FZ3 ,FX4 ,FY4 ,FZ4 ,
723 5 FXI ,FYI ,FZI ,FSKYI,ISKY ,NISKYFI,
724 6 NIN ,NOINT ,MULTI_FVM,DT1,JTASK)
725 ENDIF
726 ELSE
727 IF(IPARIT == 3)THEN
728 CALL I7ASS3( JLT ,IX1 ,IX2 ,IX3 ,IX4 ,
729 2 NSVG ,H1 ,H2 ,H3 ,H4 ,STIF ,
730 3 FX1 ,FY1 ,FZ1 ,FX2 ,FY2 ,FZ2 ,
731 4 FX3 ,FY3 ,FZ3 ,FX4 ,FY4 ,FZ4 ,
732 5 FXI ,FYI ,FZI ,A ,STIFN)
733
734 ELSEIF(IPARIT == 0)THEN
735 CALL I7ASS0(JLT ,IX1 ,IX2 ,IX3 ,IX4 ,
736 2 NSVG ,H1 ,H2 ,H3 ,H4 ,STIF ,
737 3 FX1 ,FY1 ,FZ1 ,FX2 ,FY2 ,FZ2 ,
738 4 FX3 ,FY3 ,FZ3 ,FX4 ,FY4 ,FZ4 ,
739 5 FXI ,FYI ,FZI ,A ,STIFN ,NIN ,
740 6 IBID ,BID ,BID ,BID ,BID ,BID ,
741 7 BID ,BID ,BID ,JTASK,IBID ,IBID )
742 ELSE
743 CALL I7ASS2(JLT ,IX1 ,IX2 ,IX3 ,IX4 ,
744 2 NSVG ,H1 ,H2 ,H3 ,H4 ,STIF ,
745 3 FX1 ,FY1 ,FZ1 ,FX2 ,FY2 ,FZ2 ,
746 4 FX3 ,FY3 ,FZ3 ,FX4 ,FY4 ,FZ4 ,
747 5 FXI ,FYI ,FZI ,FSKYI,ISKY ,NISKYFI,
748 6 NIN ,NOINT ,IBID ,BID ,BID ,BID ,
749 7 BID ,BID ,BID ,BID ,BID ,
750 A IBID ,IBID )
751 ENDIF
752 ENDIF
753 IF(ANIM_V(4)+OUTP_V(4)+H3D_DATA%N_VECT_CONT > 0)THEN
754#include "lockon.inc"
755 !---REACTION FORCE ON THE SOLID SURFACE
756 ! /H3D/NODA/CONT (STAGGERED SCHEME)
757 DO I=1,JLT
758 FCONT(1,IX1(I)) =FCONT(1,IX1(I)) + FX1(I)
759 FCONT(2,IX1(I)) =FCONT(2,IX1(I)) + FY1(I)
760 FCONT(3,IX1(I)) =FCONT(3,IX1(I)) + FZ1(I)
761 FCONT(1,IX2(I)) =FCONT(1,IX2(I)) + FX2(I)
762 FCONT(2,IX2(I)) =FCONT(2,IX2(I)) + FY2(I)
763 FCONT(3,IX2(I)) =FCONT(3,IX2(I)) + FZ2(I)
764 FCONT(1,IX3(I)) =FCONT(1,IX3(I)) + FX3(I)
765 FCONT(2,IX3(I)) =FCONT(2,IX3(I)) + FY3(I)
766 FCONT(3,IX3(I)) =FCONT(3,IX3(I)) + FZ3(I)
767 FCONT(1,IX4(I)) =FCONT(1,IX4(I)) + FX4(I)
768 FCONT(2,IX4(I)) =FCONT(2,IX4(I)) + FY4(I)
769 FCONT(3,IX4(I)) =FCONT(3,IX4(I)) + FZ4(I)
770 ENDDO
771 !---REACTION FORCE ON THE FLUID SIDE
772 ! /H3D/ELEM/VECT/CONT WITH LAW151 (COLOCATED SCHEME)
773 IF (MULTI_FVM%IS_USED) THEN
774 IF(H3D_DATA%N_VECT_CONT > 0)THEN
775 DO I=1,JLT
776 JG=NSVG(I)-NUMNOD
777 IF(JG>0) THEN ! local cell
778 OUTPUT%DATA%FANI_CELL%F18(1,JG)=OUTPUT%DATA%FANI_CELL%F18(1,JG)-FXI(I)
779 OUTPUT%DATA%FANI_CELL%F18(2,JG)=OUTPUT%DATA%FANI_CELL%F18(2,JG)-FYI(I)
780 OUTPUT%DATA%FANI_CELL%F18(3,JG)=OUTPUT%DATA%FANI_CELL%F18(3,JG)-FZI(I)
781 ENDIF
782 ENDDO
783 ENDIF
784 ELSE
785 !/H3D/NODA/CONT (STAGGERED SCHEME)
786 DO I=1,JLT
787 JG = NSVG(I)
788 IF(JG > 0) THEN
789 ! SPMD : reprocess required after receiving a remote node if JG < 0
790 FCONT(1,JG)=FCONT(1,JG)- FXI(I)
791 FCONT(2,JG)=FCONT(2,JG)- FYI(I)
792 FCONT(3,JG)=FCONT(3,JG)- FZI(I)
793 ENDIF
794 ENDDO
795 ENDIF
796#include "lockoff.inc"
797 ENDIF
798.AND. IF((ANIM_V(12)+OUTP_V(12)+H3D_DATA%N_VECT_PCONT > 0
799.AND..OR..OR..AND..OR. . ((TT>=OUTPUT%TANIM TT<=OUTPUT%TANIM_STOP)TT>=TOUTP(TT>=H3D_DATA%TH3DTT<=H3D_DATA%TH3D_STOP)
800.AND..OR. . (MANIM>=4MANIM<=15)H3D_DATA%MH3D /= 0))
801.OR. . H3D_DATA%N_VECT_PCONT_MAX>0)THEN
802#include "lockon.inc"
803 DO I=1,JLT
804 FNCONT(1,IX1(I)) =FNCONT(1,IX1(I)) + FXI(I)*H1(I)
805 FNCONT(2,IX1(I)) =FNCONT(2,IX1(I)) + FYI(I)*H1(I)
806 FNCONT(3,IX1(I)) =FNCONT(3,IX1(I)) + FZI(I)*H1(I)
807 FNCONT(1,IX2(I)) =FNCONT(1,IX2(I)) + FXI(I)*H2(I)
808 FNCONT(2,IX2(I)) =FNCONT(2,IX2(I)) + FYI(I)*H2(I)
809 FNCONT(3,IX2(I)) =FNCONT(3,IX2(I)) + FZI(I)*H2(I)
810 FNCONT(1,IX3(I)) =FNCONT(1,IX3(I)) + FXI(I)*H3(I)
811 FNCONT(2,IX3(I)) =FNCONT(2,IX3(I)) + FYI(I)*H3(I)
812 FNCONT(3,IX3(I)) =FNCONT(3,IX3(I)) + FZI(I)*H3(I)
813 FNCONT(1,IX4(I)) =FNCONT(1,IX4(I)) + FXI(I)*H4(I)
814 FNCONT(2,IX4(I)) =FNCONT(2,IX4(I)) + FYI(I)*H4(I)
815 FNCONT(3,IX4(I)) =FNCONT(3,IX4(I)) + FZI(I)*H4(I)
816 ENDDO
817#include "lockoff.inc"
818 ENDIF
819C-----------------------------------------------------
820 IF(ISECIN > 0)THEN
821 K0=NSTRF(25)
822 IF(NSTRF(1)+NSTRF(2) /= 0)THEN
823 DO I=1,NSECT
824 NBINTER=NSTRF(K0+14)
825 K1S=K0+30
826 DO J=1,NBINTER
827 IF(NSTRF(K1S) == NOINT)THEN
828 IF(ISECUT /= 0)THEN
829#include "lockon.inc"
830 DO K=1,JLT
831 ! Be careful with sign conventions during force accumulation
832 ! Ensure consistency with CFORC3 implementation
833 IF(SECFCUM(4,IX1(K),I) == ONE)THEN
834 SECFCUM(1,IX1(K),I)=SECFCUM(1,IX1(K),I)-FX1(K)
835 SECFCUM(2,IX1(K),I)=SECFCUM(2,IX1(K),I)-FY1(K)
836 SECFCUM(3,IX1(K),I)=SECFCUM(3,IX1(K),I)-FZ1(K)
837 ENDIF
838 IF(SECFCUM(4,IX2(K),I) == ONE)THEN
839 SECFCUM(1,IX2(K),I)=SECFCUM(1,IX2(K),I)-FX2(K)
840 SECFCUM(2,IX2(K),I)=SECFCUM(2,IX2(K),I)-FY2(K)
841 SECFCUM(3,IX2(K),I)=SECFCUM(3,IX2(K),I)-FZ2(K)
842 ENDIF
843 IF(SECFCUM(4,IX3(K),I) == ONE)THEN
844 SECFCUM(1,IX3(K),I)=SECFCUM(1,IX3(K),I)-FX3(K)
845 SECFCUM(2,IX3(K),I)=SECFCUM(2,IX3(K),I)-FY3(K)
846 SECFCUM(3,IX3(K),I)=SECFCUM(3,IX3(K),I)-FZ3(K)
847 ENDIF
848 IF(SECFCUM(4,IX4(K),I) == ONE)THEN
849 SECFCUM(1,IX4(K),I)=SECFCUM(1,IX4(K),I)-FX4(K)
850 SECFCUM(2,IX4(K),I)=SECFCUM(2,IX4(K),I)-FY4(K)
851 SECFCUM(3,IX4(K),I)=SECFCUM(3,IX4(K),I)-FZ4(K)
852 ENDIF
853 JG = NSVG(K)
854 IF(JG > 0) THEN
855 ! SPMD : reprocess required after receiving a remote node if JG < 0
856 IF(SECFCUM(4,JG,I) == 1.)THEN
857 SECFCUM(1,JG,I)=SECFCUM(1,JG,I)+FXI(K)
858 SECFCUM(2,JG,I)=SECFCUM(2,JG,I)+FYI(K)
859 SECFCUM(3,JG,I)=SECFCUM(3,JG,I)+FZI(K)
860 ENDIF
861 ENDIF
862 ENDDO
863#include "lockoff.inc"
864 ENDIF
865 ENDIF
866 K1S=K1S+1
867 ENDDO!NEXT J
868 K0=NSTRF(K0+24)
869 ENDDO!NEXT I
870 ENDIF!(NSTRF(1)+NSTRF(2) /= 0)
871 ENDIF!(ISECIN > 0)
872C-----------------------------------------------------
873 RETURN
874 END SUBROUTINE I18FOR3
875C-----------------------------------------------------
876 END MODULE I18FOR3_MOD
end diagonal values have been computed in the(sparse) matrix id.SOL
#define alpha
Definition eval.h:35
subroutine area(d1, x, x2, y, y2, eint, stif0)
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine i18for3(output, jlt, a, v, ibcc, icodt, fsav, gap, fric, ms, visc, viscf, noint, stfn, itab, cn_loc, stfval, stifn, stif, fskyi, isky, nx1, nx2, nx3, nx4, ny1, ny2, ny3, ny4, nz1, nz2, nz3, nz4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, p1, p2, p3, p4, fcont, ix1, ix2, ix3, ix4, nsvg, ivis2, neltst, ityptst, dt2t, ixs, gapv, cand_p, index, niskyfi, kinet, newfront, isecin, nstrf, secfcum, x, irect, ce_loc, mfrot, ifq, frot_p, cand_fx, cand_fy, cand_fz, ifpen, icontact, igroups, iparg, viscn, vxi, vyi, vzi, msi, kini, nin, nisub, lisub, addsubs, addsubm, lisubs, lisubm, fsavsub, cand_n, ilagm, icurv, fncont, ms0, jtask, isensint, fsavparit, nft, multi_fvm, h3d_data, elbuf_tab, idir)
Definition i18for3.F:70
type(int_pointer), dimension(:), allocatable lisubsfi
Definition tri7box.F:501
type(int_pointer), dimension(:), allocatable addsubsfi
Definition tri7box.F:509