OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i22for3.F File Reference
#include "implicit_f.inc"
#include "comlock.inc"
#include "mvsiz_p.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "com06_c.inc"
#include "com08_c.inc"
#include "scr07_c.inc"
#include "scr11_c.inc"
#include "scr14_c.inc"
#include "scr16_c.inc"
#include "parit_c.inc"
#include "param_c.inc"
#include "lockon.inc"
#include "lockoff.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine i22for3 (output, jlt, a, v, ibc, icodt, fsav, gap, fric, ms, visc, viscf, noint, stfn, itab, cb_loc, stiglo, 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, intth, gapv, inacti, cand_p, index, niskyfi, kinet, newfront, isecin, nstrf, secfcum, x, irect, ce_loc, mfrot, ifq, frot_p, cand_fx, cand_fy, cand_fz, alpha0, ifpen, ibag, icontact, viscn, vxi, vyi, vzi, msi, kini, nin, nisub, lisub, addsubs, addsubm, lisubs, lisubm, fsavsub, cand_n, ilagm, icurv, pres, fncont, ms0, n_scut, n_surf, cog, cand_e, swet, elbuf_tab, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, ixs, nv46, delta, isensint, fsavparit, iparg, h3d_data)

Function/Subroutine Documentation

◆ i22for3()

subroutine i22for3 ( type(output_), intent(inout) output,
integer jlt,
a,
v,
integer ibc,
integer, dimension(*) icodt,
fsav,
gap,
fric,
ms,
visc,
viscf,
integer noint,
stfn,
integer, dimension(*) itab,
integer, dimension(mvsiz) cb_loc,
stiglo,
stifn,
stif,
fskyi,
integer, dimension(*) 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,
integer, dimension(mvsiz) ix1,
integer, dimension(mvsiz) ix2,
integer, dimension(mvsiz) ix3,
integer, dimension(mvsiz) ix4,
integer, dimension(mvsiz) nsvg,
integer ivis2,
integer neltst,
integer ityptst,
dt2t,
integer intth,
gapv,
integer inacti,
cand_p,
integer, dimension(mvsiz) index,
integer niskyfi,
integer, dimension(*) kinet,
integer newfront,
integer isecin,
integer, dimension(*) nstrf,
secfcum,
x,
integer, dimension(4,*) irect,
integer, dimension(mvsiz) ce_loc,
integer mfrot,
integer ifq,
frot_p,
cand_fx,
cand_fy,
cand_fz,
alpha0,
integer, dimension(*) ifpen,
integer ibag,
integer, dimension(*) icontact,
viscn,
vxi,
vyi,
vzi,
msi,
integer, dimension(*) kini,
integer nin,
integer nisub,
integer, dimension(*) lisub,
integer, dimension(*) addsubs,
integer, dimension(*) addsubm,
integer, dimension(*) lisubs,
integer, dimension(*) lisubm,
fsavsub,
integer, dimension(*) cand_n,
integer ilagm,
integer, dimension(3) icurv,
pres,
fncont,
ms0,
n_scut,
n_surf,
cog,
integer, dimension(*) cand_e,
swet,
type (elbuf_struct_), dimension(ngroup), target elbuf_tab,
x1,
x2,
x3,
x4,
y1,
y2,
y3,
y4,
z1,
z2,
z3,
z4,
integer, dimension(nixs,*) ixs,
integer nv46,
delta,
integer, dimension(*) isensint,
fsavparit,
integer, dimension(nparg,*) iparg,
type(h3d_database) h3d_data )

Definition at line 40 of file i22for3.F.

65C-----------------------------------------------
66C D e s c r i p t i o n
67C-----------------------------------------------
68C Interface Type22 (/INTER/TYPE22) is an FSI coupling method based on cut cell method.
69C This experimental cut cell method is not completed, abandoned, and is not an official option.
70C
71C-----------------------------------------------
72C M o d u l e s
73C-----------------------------------------------
74 USE elbufdef_mod
75 USE i22tri_mod
77 USE h3d_mod
78 USE output_mod
79 use element_mod , only : nixs
80C-----------------------------------------------
81C I m p l i c i t T y p e s
82C-----------------------------------------------
83#include "implicit_f.inc"
84#include "comlock.inc"
85C-----------------------------------------------
86C G l o b a l P a r a m e t e r s
87C-----------------------------------------------
88#include "mvsiz_p.inc"
89C-----------------------------------------------
90C C o m m o n B l o c k s
91C-----------------------------------------------
92#include "com01_c.inc"
93#include "com04_c.inc"
94#include "com06_c.inc"
95#include "com08_c.inc"
96#include "scr07_c.inc"
97#include "scr11_c.inc"
98#include "scr14_c.inc"
99#include "scr16_c.inc"
100#include "parit_c.inc"
101#include "param_c.inc"
102C-----------------------------------------------
103C D u m m y A r g u m e n t s
104C-----------------------------------------------
105 TYPE(OUTPUT_), INTENT(INOUT) :: OUTPUT
106 TYPE (ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
107
108 INTEGER NELTST,ITYPTST,JLT,IBC,IBCM,IBCS,IVIS2,INACTI,IBAG,NIN,
109 . ICODT(*), ITAB(*), ISKY(*), KINET(*),
110 . MFROT, IFQ, NOINT,NEWFRONT,ISECIN, NSTRF(*),
111 . IRECT(4,*),IFPEN(*) ,ICONTACT(*), CAND_N(*),
112 . KINI(*),
113 . ISET, NISKYFI,INTTH,IFORM,NV46
114 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
115 . CB_LOC(MVSIZ),CE_LOC(MVSIZ),INDEX(MVSIZ),NSVG(MVSIZ),
116 . NISUB, LISUB(*), ADDSUBS(*), ADDSUBM(*), LISUBS(*),
117 . LISUBM(*),ILAGM,ICURV(3),CAND_E(*),ixs(nixs,*),
118 . ISENSINT(*), IPARG(NPARG,*)
119 my_real
120 . stiglo,cand_p(*),frot_p(*), x(3,*),ms0(*),
121 . a(3,*), ms(*), v(3,*), fsav(*),fcont(3,*),
122 . cand_fx(*),cand_fy(*),cand_fz(*),alpha0,
123 . gap, fric,visc,viscf,vis,dt2t,stfn(*),stifn(*),
124 . fskyi(lskyi,nfskyi),fsavsub(nthvki,*),fncont(3,*)
125 my_real
126 . nx1(mvsiz), nx2(mvsiz), nx3(mvsiz), nx4(mvsiz),
127 . ny1(mvsiz), ny2(mvsiz), ny3(mvsiz), ny4(mvsiz),
128 . nz1(mvsiz), nz2(mvsiz), nz3(mvsiz), nz4(mvsiz),
129 . lb1(mvsiz), lb2(mvsiz), lb3(mvsiz), lb4(mvsiz),
130 . lc1(mvsiz), lc2(mvsiz), lc3(mvsiz), lc4(mvsiz),
131 . p1(mvsiz), p2(mvsiz), p3(mvsiz), p4(mvsiz), stif(mvsiz),
132 . gapv(mvsiz),
133 . secfcum(7,numnod,nsect),tmp(mvsiz),
134 . stifsav(mvsiz), viscn(*),
135 . vxi(mvsiz),vyi(mvsiz),vzi(mvsiz),msi(mvsiz),
136 . pres(*), rstif ,
137 . cog(1:3,nbcut_max,mvsiz), n_scut(3,nbcut_max, mvsiz), swet(nbcut_max,mvsiz)
138 my_real ::
139 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
140 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
141 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
142 . delta(4,nbcut_max,mvsiz),fsavparit(nisub+1,11,*),face
143 TYPE(H3D_DATABASE) :: H3D_DATA
144
145C-----------------------------------------------
146C L o c a l V a r i a b l e s
147C-----------------------------------------------
148 TYPE(G_BUFEL_) ,POINTER :: GBUF1, GBUF2
149 INTEGER I, J1, J2, IG, J, JG , K0,NBINTER,K1S,K,IL,IE, NN, NI,NA1,NA2
150 INTEGER IBv, Jv, NBCUTv, IEv, LLT1, LLT2
151 my_real
152 . fxi(mvsiz), fyi(mvsiz), fzi(mvsiz), fni(mvsiz),
153 . fxt(mvsiz),fyt(mvsiz),fzt(mvsiz),
154 . fx1(mvsiz), fx2(mvsiz), fx3(mvsiz), fx4(mvsiz),
155 . fy1(mvsiz), fy2(mvsiz), fy3(mvsiz), fy4(mvsiz),
156 . fz1(mvsiz), fz2(mvsiz), fz3(mvsiz), fz4(mvsiz),
157 . n1(mvsiz), n2(mvsiz), n3(mvsiz), pene(mvsiz),
158 . vis2(mvsiz), dtmi(mvsiz), xmu(mvsiz),stif0(mvsiz),
159 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
160 . vx(mvsiz), vy(mvsiz), vz(mvsiz), vn(mvsiz),dist(mvsiz),
161 . vnx, vny, vnz, aa, crit,s2,rdist,
162 . v2, fm2, visca, fac,ff(3),alphi,alpha,beta,
163 . fx, fy, fz, f2, mas2, m2sk, dtmi0,dti,ft,fn,fmax,ftn,
164 . facm1, econtt, econvt, h0, la1, la2, la3, la4,
165 . d1,d2,d3,d4,a1,a2,a3,a4,
166 . fsav1, fsav2, fsav3, fsav4, fsav5, fsav6, fsav7, fsav8,
167 . fsav9, fsav10, fsav11, fsav12, fsav13, fsav14, fsav15, ffo,
168 . e10, h0d, s2d,
169 . la1d,la2d,la3d,la4d,t1,t1d,t2,t2d,ffd,visd,facd,d1d,
170 . p1s(mvsiz),p2s(mvsiz),p3s(mvsiz),p4s(mvsiz),
171 . d2d,d3d,d4d,vnxd,vnyd,vnzd,v2d,fm2d,f2d,aad,fxd,fyd,fzd,
172 . a1d,a2d,a3d,a4d,vv,ax1,ax2,ay1,ay2,az1,az2,ax,ay,az,
173 . area,p,vv1,vv2,v21,dmu, dti2,h00 ,a0x,a0y,a0z,rx,ry,rz,
174 . anx,any,anz,aan,aax,aay,aaz ,rr,rs,aaa ,tm,ts
175 my_real
176 . surfx,surfy,surfz,n_surf(3,*),m1,m2,mf,theta
177 my_real
178 . st1(mvsiz),st2(mvsiz),st3(mvsiz),st4(mvsiz),stv(mvsiz),
179 . kt(mvsiz),c(mvsiz),cf(mvsiz),
180 . ks(mvsiz),k1(mvsiz),k2(mvsiz),k3(mvsiz),k4(mvsiz),
181 . cs(mvsiz),c1(mvsiz),c2(mvsiz),c3(mvsiz),c4(mvsiz),
182 . cx,cy,cfi,aux,phi1(mvsiz), phi2(mvsiz), phi3(mvsiz),
183 . phi4(mvsiz), n_scut_(3)
184
185 INTEGER JSUB,KSUB,JJ,KK,IN,NSUB,IBID, NG, IB,IV, NBCUT,ICUT, NP_RECT(MVSIZ),
186 . IEM1,IEM2, IBM1, IBM2, JM1,JM2
187 INTEGER NG1,NG2,IDLOC1,IDLOC2,NP
188
189 my_real
190 . fsavsub1(15,nisub),impx,impy,impz,pp1,pp2,pp3,pp4,bid
191 my_real :: dp(mvsiz), w(4,mvsiz), q, slag, tmp2(3), pt1(3),pt2(3), pt3(3), pt4(3),distance(4),dsum,un1,un2,zc1,zc2
192
193 INTEGER :: ICELL1, ICELL2, ICELLv, MCELL1, MCELL2, IB1, IB2
194C-----------------------------------------------
195 INTERFACE
196 FUNCTION i22aera(NPTS,P, C)
197 INTEGER :: NPTS
198 my_real :: p(3,npts), i22aera(3), c(3)
199 END FUNCTION
200 END INTERFACE
201C-----------------------------------------------
202C S o u r c e L i n e s
203C-----------------------------------------------
204 econtt = zero
205 econvt = zero
206 DO i=1,jlt
207 stif0(i) = stif(i)
208 ENDDO
209
210
211 bid = zero
212 ibid = 0
213
214! !---------------------------------!
215! ! PRESSURE CORRECTION !
216! !---------------------------------!
217! IF (IBAG/=0)THEN
218!#include "lockon.inc"
219! DO I=1,JLT
220! PRES(CE_LOC(I)) = PRES(CE_LOC(I)) + FNI(I)
221! ENDDO
222!#include "lockoff.inc"
223! END IF
224
225C---------------------------------
226#include "lockon.inc"
227 econtv = econtv + econvt
228 econt = econt + econtt
229#include "lockoff.inc"
230C---------------------------------
231C
232 !---------------------------------!
233 ! PARAMETER INIT. !
234 !---------------------------------!
235 DO i=1,jlt
236 IF(ix3(i)/=ix4(i))THEN
237 np_rect(i) = 4
238 w(1:4,i) = fourth
239 ELSE
240 np_rect(i) = 3
241 w(1:4,i) = third
242 ENDIF
243 ENDDO
244
245 !---------------------------------!
246 ! CONTACT FORCES. !
247 !---------------------------------!
248
249 DO i=1,jlt
250
251c print *, " I===== : ", I
252c print *, " CELL : ", IXS(11,BRICK_LIST(NIN,CB_LOC(I))%ID)
253c print *, " NBCUT : ", BRICK_LIST(NIN,CB_LOC(I))%NBCUT
254c print *, " SHELL : ", ITAB(IRECT(1:4,iabs(CE_LOC(I))))
255c print *, " NCYCLE : ", NCYCLE
256
257
258 ib = cb_loc(i)
259 ie = brick_list(nin,ib)%ID
260 nbcut = brick_list(nin,ib)%NBCUT
261
262 fx1(i) = zero
263 fy1(i) = zero
264 fz1(i) = zero
265 fx2(i) = zero
266 fy2(i) = zero
267 fz2(i) = zero
268 fx3(i) = zero
269 fy3(i) = zero
270 fz3(i) = zero
271 fx4(i) = zero
272 fy4(i) = zero
273 fz4(i) = zero
274 fxi(i) = zero
275 fyi(i) = zero
276 fzi(i) = zero
277 dp(i) = zero
278 fni(i) = zero
279
280c IF(NBCUT==0) print *, " C Y C L E"
281 IF(nbcut==0) cycle
282
283
284 pt1(1:3) = (/x1(i),y1(i),z1(i)/)
285 pt2(1:3) = (/x2(i),y2(i),z2(i)/)
286 pt3(1:3) = (/x3(i),y3(i),z3(i)/)
287 pt4(1:3) = (/x4(i),y4(i),z4(i)/)
288 tmp(1:3) = i22aera( np_rect(i), (/pt1,pt2,pt3,pt4/) ,tmp2) !to be optimized, almoste calculated in i22cor or i22dst3
289 slag= sqrt(sum(tmp(1:3)*tmp(1:3)))
290
291 DO icut=1,nbcut
292
293 IF(cand_e(i)<0) cycle !ICUT=1,8 do not project shell which do not intersect
294 !
295 ! +------------+------------+
296 ! + | + | + 20 with facette 1 + ( + : intersection)
297 ! + | + | + 20 with facette 2 - ( - : couple sans intersection)
298 ! + 20 | + 30 | + 30 with facette 1 -
299 ! + | + | + 30 with facette 2 +
300 ! + IX | I + I | IX +
301 ! +------------+------------+
302 !
303 ! +--------\----+
304 ! + \I +
305 ! + ---+-\
306 ! + 20 + | <---non intersecting edges but near virtual face (closure hypothesis)
307 ! + __+_/
308 ! + IX /II+
309 ! +---------/---+
310 !
311 ! +--------\----+-------|----+
312 ! + \I + | +
313 ! + ---+-\ | +
314 ! + 20 + | 30 | +
315 ! + __+_/ | +
316 ! + IX /II+ I | IX +
317 ! +---------/---+-------|----+
318 ! |
319 ! | <------ face of this edge must not be projected on virtual cut surface from cell 20
320 ! this case is not treated (lagrangian face too complex or multiple surface, self-impact, etc...)
321 ! Use a simple surface : smooth and without holes
322
323 !-------------------------------!
324 ! GET RELATIVE PRESSURE. !
325 ! FROM BOTH SIDE OF CUT SURFACE !
326 !-------------------------------!
327 ! %P is pressure in cut cell buffer.
328 !Bijection : Scut=Icut <-> (icell1,icell2)
329 icell1 = icut
330 icell2 = 9
331 !Surjection (icell1,icell2) ->> ( (mcell1,ibv1) , (mcell2,ibv2) )
332 iem1 = brick_list(nin,ib)%POLY(icell1)%WhereIsMain(3)
333 iem2 = brick_list(nin,ib)%POLY(icell2)%WhereIsMain(3)
334 jm1 = brick_list(nin,ib)%POLY(icell1)%WhereIsMain(1)
335 jm2 = brick_list(nin,ib)%POLY(icell2)%WhereIsMain(1)
336 IF(iem1==ie)THEN
337 ibm1 = ib
338 ELSE
339 IF(jm1<=nv46)THEN
340 ibm1 = brick_list(nin,ib)%Adjacent_Brick(jm1,4)
341 ELSE
342 j1 = jm1/10
343 j2 = mod(jm1,10)
344 ibm1 = brick_list(nin,ib )%Adjacent_Brick(j1,4)
345 ibm1 = brick_list(nin,ibm1)%Adjacent_Brick(j2,4)
346 ENDIF
347 ENDIF
348 IF(iem2==ie)THEN
349 ibm2 = ib
350 ELSE
351 IF(jm2<=nv46)THEN
352 ibm2 = brick_list(nin,ib)%Adjacent_Brick(jm2,4)
353 ELSE
354 j1 = jm2/10
355 j2 = mod(jm2,10)
356 ibm2 = brick_list(nin,ib )%Adjacent_Brick(j1,4)
357 ibm2 = brick_list(nin,ibm2)%Adjacent_Brick(j2,4)
358 ENDIF
359 ENDIF
360 ng1 = brick_list(nin,ibm1)%NG
361 ng2 = brick_list(nin,ibm2)%NG
362 idloc1 = brick_list(nin,ibm1)%IDLOC
363 idloc2 = brick_list(nin,ibm2)%IDLOC
364 gbuf1 => elbuf_tab(ng1)%GBUF
365 gbuf2 => elbuf_tab(ng2)%GBUF
366 llt1 = iparg(2,ng1)
367 llt2 = iparg(2,ng2)
368 p1(i) = -third * (gbuf1%SIG(idloc1 )+
369 . gbuf1%SIG(idloc1 +llt1 )+
370 . gbuf1%SIG(idloc1 +llt1*2) )
371 m1 = brick_list(nin,ibm1)%MACH
372 un1 = brick_list(nin,ib )%POLY(icell1)%FACE0%U_N(1) !for poly_id=ICELL1 in [1,NBCUT], there is a single cut section
373 zc1 = brick_list(nin,ibm1)%RHOC
374
375 p2(i) = -third * (gbuf2%SIG(idloc2 )+
376 . gbuf2%SIG(idloc2 +llt2 )+
377 . gbuf2%SIG(idloc2 +llt2*2) )
378 un2 = brick_list(nin,ib )%POLY(icell2)%FACE0%U_N(icell1) !icell2=9 => cut surface sharing icell1=icut and icell2=9, is Scut_id=icut=icell1
379 zc2 = brick_list(nin,ibm2)%RHOC
380 m2 = brick_list(nin,ibm2)%MACH
381
382 mf = half*(m1+m2) ! with grid velocity Mi must be calculated consequently in alefvm_stress*
383 theta = min(one,mf)
384
385 p1(i) = p1(i) + zc1*un1*theta
386 p2(i) = p2(i) + zc2*un2*theta
387
388 dp(i) = p1(i) - p2(i)
389
390 !print *, i, dp(i), dp(i)+ZC1*UN1-ZC2*UN2
391 !-------------------------------!
392 q = sum( n_surf(1:3,iabs(cand_e(i))) * n_scut(1:3,icut,i) ) !N_SCUT(1:3,ICUT,I)= S*n(1:3)
393 ffo = dp(i) * swet(icut,i)
394 IF(q<zero) ffo = -ffo !sign change to adjust normal direction (non oriented surface)
395
396 !force at cog
397 ff(:) = ffo * n_surf(:,iabs(cand_e(i)))
398 !rint *, "F_cog=", FF(:)
399
400 !distributed forces using weighting coefficients
401 fx1(i)= fx1(i) + delta(1,icut,i) * ff(1)
402 fy1(i)= fy1(i) + delta(1,icut,i) * ff(2)
403 fz1(i)= fz1(i) + delta(1,icut,i) * ff(3)
404
405 fx2(i)= fx2(i) + delta(2,icut,i) * ff(1)
406 fy2(i)= fy2(i) + delta(2,icut,i) * ff(2)
407 fz2(i)= fz2(i) + delta(2,icut,i) * ff(3)
408
409 fx3(i)= fx3(i) + delta(3,icut,i) * ff(1)
410 fy3(i)= fy3(i) + delta(3,icut,i) * ff(2)
411 fz3(i)= fz3(i) + delta(3,icut,i) * ff(3)
412
413 IF(np_rect(i)==4)THEN
414 fx4(i)= fx4(i) + delta(4,icut,i) * ff(1)
415 fy4(i)= fy4(i) + delta(4,icut,i) * ff(2)
416 fz4(i)= fz4(i) + delta(4,icut,i) * ff(3)
417 ENDIF
418
419C print *, "FF=", FF(1), ITAB(IRECT(1:4,CE_LOC(I)))
420
421 fxi(i)= fxi(i) + ff(1)
422 fyi(i)= fyi(i) + ff(2)
423 fzi(i)= fzi(i) + ff(3)
424
425 if(ibug22_fcont==-1)then
426 print *, "######################################################"
427 print *, "##I22FOR ; candidat I=", i, " ICUT=", icut
428 print *, "######################################################"
429 print *, " JLT : ", i,"/",jlt
430 print *, " CELL : ", ixs(11,brick_list(nin,cb_loc(i))%ID)
431 print *, " SHELL : ", itab(irect(1:4,iabs(ce_loc(i))))
432 print *, " ICUT : ", icut
433 print *, " NCYCLE : ", ncycle
434 print *, " P1 =", p1(i)
435 print *, " P2 =", p2(i)
436 print *, " DP =", dp(i)
437 print *, " swet(icut,i) =", Swet(ICUT,I)
438 print *, " f=dp*swet =", DP(I) * Swet(ICUT,I)
439 print *, " slag =", Slag
440 print *, " n_surf() =", N_SURF(:,iabs(CAND_E(I)))
441 print *, "-----------------"
442 write (*,FMT='(A,4E20.12,A,E20.12)') " delta : ", delta(1:4,ICUT,I), " | sum=", SUM(delta(1:4,ICUT,I))
443 write(*,FMT='(A,I8,A,3E30.16)')"fx(",itab(IRECT(1,iabs(CE_LOC(I)))),") = ", FX1(I),FY1(I),FZ1(I)
444 write(*,FMT='(A,I8,A,3E30.16)')"fx(",itab(IRECT(2,iabs(CE_LOC(I)))),") = ", FX2(I),FY2(I),FZ2(I)
445 write(*,FMT='(A,I8,A,3E30.16)')"fx(",itab(IRECT(3,iabs(CE_LOC(I)))),") = ", FX3(I),FY3(I),FZ3(I)
446 write(*,FMT='(A,I8,A,3E30.16)')"fx(",itab(IRECT(4,iabs(CE_LOC(I)))),") = ", FX4(I),FY4(I),FZ4(I)
447 print *, "-----------------"
448 print *, " fxi(i)=",FXI(I)
449 print *, " fyi(i)=",FYI(I)
450 print *, " fzi(i)=",FZI(I)
451 print *, ""
452 endif
453 ENDDO!next ICUT
454
455 !previous treatment was for face0
456 !now treating other faces
457
458 DO J=1,6
459 NP = BRICK_LIST(NIN,IB)%PCUT(8+J)%NP
460 IF(NP<=0)CYCLE
461 ICELL1 = 9
462 FACE = BRICK_LIST(NIN,IB)%POLY(9)%FACE(J)%Surf
463 IF(FACE<=ZERO) CYCLE
464 !-------------------------------!
465 ! GET RELATIVE PRESSURE. !
466 ! FROM BOTH SIDE OF CUT SURFACE !
467 !-------------------------------!
468 !Bijection : Scut=Icut <-> (icell1,icell2)
469 !Surjection (icell1,icell2) ->> ( (mcell1,ibv1) , (mcell2,ibv2) )
470 IEM1 = BRICK_LIST(NIN,IB)%POLY(ICELL1)%WhereIsMain(3)
471 JM1 = BRICK_LIST(NIN,IB)%POLY(ICELL1)%WhereIsMain(1)
472 IBv = BRICK_LIST(NIN,IB)%Adjacent_Brick(J,4)
473 IEv = BRICK_LIST(NIN,IB)%Adjacent_Brick(J,1)
474 Jv = BRICK_LIST(NIN,IB)%Adjacent_Brick(J,5)
475.OR. IF(IEv == 0 IBv == 0) CYCLE !closed surface is outside the domain
476 NBCUTv = BRICK_LIST(NIN,IBv)%NBCUT
477 IF(NBCUTv == 0)THEN
478 ICELL2 = 1
479 ELSE
480 ICELL2 = 9
481 ENDIF
482 IF(ICELL2 == 0) ICELL2 = 1 !closed surface hypothesis
483 IEM2 = BRICK_LIST(NIN,IBv)%POLY(ICELL2)%WhereIsMain(3)
484 JM2 = BRICK_LIST(NIN,IBv)%POLY(ICELL2)%WhereIsMain(1)
485 IF(IEM1==IE)THEN
486 IBM1 = IB
487 ELSE
488 IF(JM1<=NV46)THEN !1<= direct <=6 ; indirect >= 10
489C if (jm1==0)then
490C print *, "i22for3.F:issue"
491C pause
492C endif
493 IBM1 = BRICK_LIST(NIN,IB)%Adjacent_Brick(JM1,4)
494 ELSE
495 J1 = JM1/10
496 J2 = MOD(JM1,10)
497 IBM1 = BRICK_LIST(NIN,IB )%Adjacent_Brick(J1,4)
498 IBM1 = BRICK_LIST(NIN,IBM1)%Adjacent_Brick(J2,4)
499 ENDIF
500 ENDIF
501 IF(IEM2 == IEv)THEN
502 IBM2 = IBv
503 ELSE
504 IF(JM2<=NV46)THEN
505 IBM2 = BRICK_LIST(NIN,IBv)%Adjacent_Brick(JM2,4)
506 ELSE
507 J1 = JM2/10
508 J2 = MOD(JM2,10)
509 IBM2 = BRICK_LIST(NIN,IB )%Adjacent_Brick(J1,4)
510 IBM2 = BRICK_LIST(NIN,IBM2)%Adjacent_Brick(J2,4)
511 ENDIF
512 ENDIF
513 NG1 = BRICK_LIST(NIN,IBM1)%NG
514 NG2 = BRICK_LIST(NIN,IBM2)%NG
515 IDLOC1 = BRICK_LIST(NIN,IBM1)%IDLOC
516 IDLOC2 = BRICK_LIST(NIN,IBM2)%IDLOC
517 M1 = BRICK_LIST(NIN,IBM1)%MACH
518 M2 = BRICK_LIST(NIN,IBM2)%MACH
519 GBUF1 => ELBUF_TAB(NG1)%GBUF
520 GBUF2 => ELBUF_TAB(NG2)%GBUF
521 LLT1 = IPARG(2,NG1)
522 LLT2 = IPARG(2,NG2)
523 P1(I) = -THIRD * (GBUF1%SIG(IDLOC1 )+
524 . GBUF1%SIG(IDLOC1 +LLT1 )+
525 . GBUF1%SIG(IDLOC1 +LLT1*2) )
526 P2(I) = -THIRD * (GBUF2%SIG(IDLOC2 )+
527 . GBUF2%SIG(IDLOC2 +LLT2 )+
528 . GBUF2%SIG(IDLOC2 +LLT2*2) )
529
530 UN1 = BRICK_LIST(NIN,IB )%POLY(ICELL1)%FACE(J)%U_N
531 UN2 = BRICK_LIST(NIN,IBv )%POLY(ICELL2)%FACE(Jv)%U_N
532
533 ZC1 = BRICK_LIST(NIN,IBM1)%RHOC
534 ZC2 = BRICK_LIST(NIN,IBM1)%RHOC
535
536 MF = HALF*(M1+M2)
537 THETA = MIN(ONE,MF)
538
539 P1(I) = P1(I) + ZC1*UN1*THETA
540 P2(I) = P2(I) + ZC2*UN2*THETA
541 DP(I) = P1(I) - P2(I)
542 !-------------------------------!
543 N_SCUT_(1:3) = BRICK_LIST(NIN,IB)%N(J,1:3)*BRICK_LIST(NIN,IB)%POLY(9)%FACE(J)%Surf
544 Q = SUM( N_SURF(1:3,iabs(CAND_E(I))) * N_SCUT_(1:3) )
545 FFO = DP(I) * Swet(8+J,I)
546 IF(Q<ZERO) FFO = -FFO !sign change to adjust normal direction (non oriented surface)
547
548 !force at cog
549 FF(:) = FFO * N_SURF(:,iabs(CAND_E(I)))
550 !rint *, "f_cog=", FF(:)
551
552 !distributed forces using weighting coefficients
553 FX1(I) = FX1(I) + delta(1,8+J,I) * FF(1)
554 FY1(I) = FY1(I) + delta(1,8+J,I) * FF(2)
555 FZ1(I) = FZ1(I) + delta(1,8+J,I) * FF(3)
556
557 FX2(I) = FX2(I) + delta(2,8+J,I) * FF(1)
558 FY2(I) = FY2(I) + delta(2,8+J,I) * FF(2)
559 FZ2(I) = FZ2(I) + delta(2,8+J,I) * FF(3)
560
561 FX3(I) = FX3(I) + delta(3,8+J,I) * FF(1)
562 FY3(I) = FY3(I) + delta(3,8+J,I) * FF(2)
563 FZ3(I) = FZ3(I) + delta(3,8+J,I) * FF(3)
564
565 IF(NP_RECT(I)==4)THEN
566 FX4(I) = FX4(I) + delta(4,8+J,I) * FF(1)
567 FY4(I) = FY4(I) + delta(4,8+J,I) * FF(2)
568 FZ4(I) = FZ4(I) + delta(4,8+J,I) * FF(3)
569 ENDIF
570
571C print *, "FF=", FF(1), ITAB(IRECT(1:4,CE_LOC(I)))
572
573 FXI(I) = FXI(I) + FF(1)
574 FYI(I) = FYI(I) + FF(2)
575 FZI(I) = FZI(I) + FF(3)
576
577 if(ibug22_fcont==-1)then
578 print *, "#################################"
579 print *, "##I22FOR ; facette I=", i
580 print *, "#################################"
581 print *, " CELL : ", ixs(11,brick_list(nin,cb_loc(i))%ID)
582 print *, " SHELL : ", itab(irect(1:4,iabs(ce_loc(i))))
583 print *, " NCYCLE : ", ncycle
584 print *, " P1 =", p1(i)
585 print *, " P2 =", p2(i)
586 print *, " DP =", dp(i)
587 print *, " Swet(8+J,I) =", swet(8+j,i)
588 print *, " F=DP*Swet =", dp(i) * swet(8+j,i)
589 print *, " Slag =", slag
590 print *, " N_SURF() =", n_surf(:,iabs(cand_e(i)))
591 print *, " FN =", ffo
592 print *, "-----------------"
593 write (*,fmt='(A,4E20.12,A,E20.12)') " DELTA : ", delta(1:4,8+j,i), " | SUM=", sum(delta(1:4,8+j,i))
594 write(*,fmt='(A,I8,A,3E30.16)')"FX(",itab(irect(1,iabs(ce_loc(i)))),") = ", fx1(i),fy1(i),fz1(i)
595 write(*,fmt='(A,I8,A,3E30.16)')"FX(",itab(irect(2,iabs(ce_loc(i)))),") = ", fx2(i),fy2(i),fz2(i)
596 write(*,fmt='(A,I8,A,3E30.16)')"FX(",itab(irect(3,iabs(ce_loc(i)))),") = ", fx3(i),fy3(i),fz3(i)
597 write(*,fmt='(A,I8,A,3E30.16)')"FX(",itab(irect(4,iabs(ce_loc(i)))),") = ", fx4(i),fy4(i),fz4(i)
598 print *, "-----------------"
599 print *, " FXI(I)=",fxi(i)
600 print *, " FYI(I)=",fyi(i)
601 print *, " FZI(I)=",fzi(i)
602 print *, ""
603 endif
604 enddo!next J
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626 enddo!next I
627
628C---------------------------------
629C SAUVEGARDE DE L'IMPULSION NORMALE
630C---------------------------------
631 fsav1 = zero
632 fsav2 = zero
633 fsav3 = zero
634 fsav8 = zero
635 fsav9 = zero
636 fsav10 = zero
637 fsav11 = zero
638 DO i=1,jlt
639 impx = fxi(i)*dt12
640 impy = fyi(i)*dt12
641 impz = fzi(i)*dt12
642 fni(i) = sqrt(fxi(i)*fxi(i) + fyi(i)*fyi(i) + fzi(i)*fzi(i))
643 !FNX,FNY,FNZ
644 fsav1 = fsav1 +impx
645 fsav2 = fsav2 +impy
646 fsav3 = fsav3 +impz
647 !|FNX|,|FNY|,|FNZ|
648 fsav8 = fsav8 +abs(impx)
649 fsav9 = fsav9 +abs(impy)
650 fsav10 = fsav10+abs(impz)
651
652 fsav11 = fsav11+fni(i)*dt12
653 ENDDO
654#include "lockon.inc"
655 fsav(1) = fsav(1) + fsav1
656 fsav(2) = fsav(2) + fsav2
657 fsav(3) = fsav(3) + fsav3
658 fsav(8) = fsav(8) + fsav8
659 fsav(9) = fsav(9) + fsav9
660 fsav(10)= fsav(10)+ fsav10
661 fsav(11)= fsav(11)+ fsav11
662#include "lockoff.inc"
663C
664 IF(isensint(1)/=0) THEN
665 DO i=1,jlt
666 fsavparit(1,1,i) = fxi(i)
667 fsavparit(1,2,i) = fyi(i)
668 fsavparit(1,3,i) = fzi(i)
669 ENDDO
670 ENDIF
671
672 !---------------------------------!
673 ! ASSEMBLY PARITH ON/OFF !
674 !---------------------------------!
675 !these array could be removed from inter22 later during source cleaning
676 h1 = zero
677 h2 = zero
678 h3 = zero
679 h4 = zero
680
681 SELECT CASE (iparit)
682 CASE (0)
683c print *, "PARITH=OFF (IPARIT=0)"
684 CALL i22ass0(
685 1 jlt ,ix1 ,ix2 ,ix3 ,ix4 ,
686 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
687 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,fz2 ,
688 4 fx3 ,fy3 ,fz3 ,fx4 ,fy4 ,fz4 ,
689 5 fxi ,fyi ,fzi ,a ,stifn,nin ,
690 6 intth ,bid ,bid ,bid ,bid ,bid ,
691 7 bid )
692 CASE (3)
693c print *, "PARITH=ON (new) (IPARIT=3)"
694 CALL i7ass3(
695 1 jlt ,ix1 ,ix2 ,ix3 ,ix4 ,
696 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
697 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,fz2 ,
698 4 fx3 ,fy3 ,fz3 ,fx4 ,fy4 ,fz4 ,
699 5 fxi ,fyi ,fzi ,a ,stifn)
700 CASE DEFAULT
701 CALL i22ass2(
702 1 jlt ,ix1 ,ix2 ,ix3 ,ix4 ,itab ,
703 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
704 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,fz2 ,
705 4 fx3 ,fy3 ,fz3 ,fx4 ,fy4 ,fz4 ,
706 5 fxi ,fyi ,fzi ,fskyi ,isky ,niskyfi,
707 6 nin ,noint ,intth ,bid ,bid ,bid ,
708 7 bid ,bid ,bid ,cb_loc ,ce_loc ,irect ,
709 8 ixs)
710
711 END SELECT
712
713C
714 !---------------------------------!
715 ! /ANIM/VECT/CONT !
716 !---------------------------------!
717 IF(anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT>0)THEN
718#include "lockon.inc"
719 DO i=1,jlt
720 ib = cb_loc(i)
721 nbcut = brick_list(nin,ib)%NBCUT
722 IF(nbcut == 0) cycle
723 fcont(1,ix1(i)) =fcont(1,ix1(i)) + fx1(i)
724 fcont(2,ix1(i)) =fcont(2,ix1(i)) + fy1(i)
725 fcont(3,ix1(i)) =fcont(3,ix1(i)) + fz1(i)
726 fcont(1,ix2(i)) =fcont(1,ix2(i)) + fx2(i)
727 fcont(2,ix2(i)) =fcont(2,ix2(i)) + fy2(i)
728 fcont(3,ix2(i)) =fcont(3,ix2(i)) + fz2(i)
729 fcont(1,ix3(i)) =fcont(1,ix3(i)) + fx3(i)
730 fcont(2,ix3(i)) =fcont(2,ix3(i)) + fy3(i)
731 fcont(3,ix3(i)) =fcont(3,ix3(i)) + fz3(i)
732 fcont(1,ix4(i)) =fcont(1,ix4(i)) + fx4(i)
733 fcont(2,ix4(i)) =fcont(2,ix4(i)) + fy4(i)
734 fcont(3,ix4(i)) =fcont(3,ix4(i)) + fz4(i)
735 if(ibug22_fcont==-1)then
736 print *, "#################################"
737 print *, "##I22FOR ; facette I=", i
738 print *, "## FCONT /ANIM/VECT/CONT #"
739 print *, "#################################"
740 print *, " CELL : ", ixs(11,brick_list(nin,cb_loc(i))%ID)
741 print *, " SHELL : ", itab(irect(1:4,iabs(ce_loc(i))))
742 print *, " NCYCLE : ", ncycle
743 print *, "------------------"
744 write(*,fmt='(A,I8,A,3E30.16)')"FCONT(",itab(irect(1,iabs(ce_loc(i)))),") = ", fcont(1:3,ix1(i))
745 write(*,fmt='(A,I8,A,3E30.16)')"FCONT(",itab(irect(2,iabs(ce_loc(i)))),") = ", fcont(1:3,ix2(i))
746 write(*,fmt='(A,I8,A,3E30.16)')"FCONT(",itab(irect(3,iabs(ce_loc(i)))),") = ", fcont(1:3,ix3(i))
747 write(*,fmt='(A,I8,A,3E30.16)')"FCONT(",itab(irect(4,iabs(ce_loc(i)))),") = ", fcont(1:3,ix4(i))
748 print *, ""
749 endif
750 ENDDO
751#include "lockoff.inc"
752 ENDIF
753
754
755 ! A TRAITER PLUS TARD
756
757 !---------------------------------!
758 ! /ANIM/VECT/PCONT !
759 !---------------------------------!
760 IF((anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT>0.AND.
761 . ((tt>=output%TANIM.AND.tt<=output%TANIM_STOP).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP).OR.
762 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0))
763 . .OR.h3d_data%N_VECT_PCONT_MAX>0)THEN
764#include "lockon.inc"
765 DO i=1,jlt
766 fncont(1,ix1(i)) =fncont(1,ix1(i)) + fxi(i)
767 fncont(2,ix1(i)) =fncont(2,ix1(i)) + fyi(i)
768 fncont(3,ix1(i)) =fncont(3,ix1(i)) + fzi(i)
769 fncont(1,ix2(i)) =fncont(1,ix2(i)) + fxi(i)
770 fncont(2,ix2(i)) =fncont(2,ix2(i)) + fyi(i)
771 fncont(3,ix2(i)) =fncont(3,ix2(i)) + fzi(i)
772 fncont(1,ix3(i)) =fncont(1,ix3(i)) + fxi(i)
773 fncont(2,ix3(i)) =fncont(2,ix3(i)) + fyi(i)
774 fncont(3,ix3(i)) =fncont(3,ix3(i)) + fzi(i)
775 fncont(1,ix4(i)) =fncont(1,ix4(i)) + fxi(i)
776 fncont(2,ix4(i)) =fncont(2,ix4(i)) + fyi(i)
777 fncont(3,ix4(i)) =fncont(3,ix4(i)) + fzi(i)
778 if(ibug22_fcont==-1)then
779 print *, "#################################"
780 print *, "##I22FOR ; facette I=", i
781 print *, "## FCONT /ANIM/VECT/CONT #"
782 print *, "#################################"
783 print *, " CELL : ", ixs(11,brick_list(nin,cb_loc(i))%ID)
784 print *, " SHELL : ", itab(irect(1:4,iabs(ce_loc(i))))
785 print *, " NCYCLE : ", ncycle
786 print *, "-------------------"
787 write(*,fmt='(A,I8,A,3E30.16)')"FNCONT(",itab(irect(1,iabs(ce_loc(i)))),") = ", fncont(1:3,ix1(i))
788 write(*,fmt='(A,I8,A,3E30.16)')"FNCONT(",itab(irect(2,iabs(ce_loc(i)))),") = ", fncont(1:3,ix2(i))
789 write(*,fmt='(A,I8,A,3E30.16)')"FNCONT(",itab(irect(3,iabs(ce_loc(i)))),") = ", fncont(1:3,ix3(i))
790 write(*,fmt='(A,I8,A,3E30.16)')"FNCONT(",itab(irect(4,iabs(ce_loc(i)))),") = ", fncont(1:3,ix4(i))
791
792 print *, ""
793 endif
794 ENDDO
795#include "lockoff.inc"
796 ENDIF
797C-----------------------------------------------------
798
799
800
801C-----------------------------------------------------
802C
803 if(ibug22_fcont==-1)then
804 print *, "================================================="
805 print *, ""
806 print *, ""
807 print *, ""
808 endif
809
810 RETURN
#define my_real
Definition cppsort.cpp:32
#define alpha
Definition eval.h:35
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine i22ass2(jlt, ix1, ix2, ix3, ix4, itab, nsvg, h1, h2, h3, h4, stif, fx1, fy1, fz1, fx2, fy2, fz2, fx3, fy3, fz3, fx4, fy4, fz4, fxi, fyi, fzi, fskyi, isky, niskyfi, nin, noint, intth, phi, ftheskyi, phi1, phi2, phi3, phi4, cb_loc, ce_loc, irect, ixs)
subroutine i22ass0(jlt, ix1, ix2, ix3, ix4, nsvg, h1, h2, h3, h4, stif, fx1, fy1, fz1, fx2, fy2, fz2, fx3, fy3, fz3, fx4, fy4, fz4, fxi, fyi, fzi, a, stifn, nin, intth, phi, fthe, phi1, phi2, phi3, phi4)
Definition i22assembly.F:37
function i22aera(npts, p, c)
Definition i22subvol.F:2382
subroutine i7ass3(jlt, ix1, ix2, ix3, ix4, nsvg, h1, h2, h3, h4, stif, fx1, fy1, fz1, fx2, fy2, fz2, fx3, fy3, fz3, fx4, fy4, fz4, fxi, fyi, fzi, i8a, i8stifn)
Definition i7ass3.F:332
#define min(a, b)
Definition macros.h:20
type(brick_entity), dimension(:,:), allocatable, target brick_list