28 SUBROUTINE i20normn(NRTM,IRECT,NUMNOD,X,NOD_NORMAL,
33#include "implicit_f.inc"
40 INTEGER NRTM,NUMNOD,IRECT(4,NRTM),NMN,MSR(*),,NLG(NLN)
43 . x(3,numnod), nod_normal(3,numnod)
47 INTEGER I ,J ,N1,N2,N3,N4
49 . surfx,surfy,surfz,x13,y13,z13,x24,y24,z24,aaa
54 nod_normal(1,n1) = zero
55 nod_normal(2,n1) = zero
56 nod_normal(3,n1) = zero
71 x13 = x(1,n3) - x(1,n1)
72 y13 = x(2,n3) - x(2,n1)
73 z13 = x(3,n3) - x(3,n1)
75 x24 = x(1,n4) - x(1,n2)
76 y24 = x(2,n4) - x(2,n2)
77 z24 = x(3,n4) - x(3,n2)
79 surfx = y13*z24 - z13*y24
80 surfy = z13*x24 - x13*z24
81 surfz = x13*y24 - y13*x24
83 aaa=one/
max(em30,sqrt(surfx*surfx+surfy*surfy+surfz*surfz))
88 nod_normal(1,n1) = nod_normal(1,n1) + surfx
89 nod_normal(2,n1) = nod_normal(2,n1) + surfy
90 nod_normal(3,n1) = nod_normal(3,n1) + surfz
91 nod_normal(1,n2) = nod_normal(1,n2) + surfx
92 nod_normal(2,n2) = nod_normal(2,n2) + surfy
93 nod_normal(3,n2) = nod_normal(3,n2) + surfz
94 nod_normal(1,n3) = nod_normal(1,n3) + surfx
95 nod_normal(2,n3) = nod_normal(2,n3) + surfy
96 nod_normal(3,n3) = nod_normal(3,n3) + surfz
97 nod_normal(1,n4) = nod_normal(1,n4) + surfx
98 nod_normal(2,n4) = nod_normal(2,n4) + surfy
99 nod_normal(3,n4) = nod_normal(3,n4) + surfz
113 SUBROUTINE i20normnp(NRTM ,IRECT ,NUMNOD ,X ,NOD_NORMAL,
114 . NMN ,MSR ,LENT ,MAXCC,ISDSIZ ,
115 . IRCSIZ,IAD_ELEM,FR_ELEM,ITAG ,NLN,NLG)
119#include "implicit_f.inc"
123#include "com01_c.inc"
128 INTEGER NRTM,NUMNOD,NMN,MAXCC,LENT,
129 . IRECT(4,NRTM),MSR(*),NLN,NLG(NLN),
130 . IAD_ELEM(2,*),FR_ELEM(*),ISDSIZ(*),IRCSIZ(*),ITAG(*)
133 . x(3,numnod), nod_normal(3,numnod)
137 INTEGER I ,J ,N1,N2,N3,N4, IAD, LENR, LENS, CC, ERROR,
140 . surfx,surfy,surfz,x13,y13,z13,x24,y24,z24,aaa,
141 . fskyt(3,lent), fskyt2(maxcc), perm(maxcc)
146 adskyt(n1+1) = adskyt(n1)+itag(n1)
147 itag(n1) = adskyt(n1)
148 nod_normal(1,n1) = zero
149 nod_normal(2,n1) = zero
150 nod_normal(3,n1) = zero
165 x13 = x(1,n3) - x(1,n1)
166 y13 = x(2,n3) - x(2,n1)
167 z13 = x(3,n3) - x(3,n1)
169 x24 = x(1,n4) - x(1,n2)
170 y24 = x(2,n4) - x(2,n2)
171 z24 = x(3,n4) - x(3,n2)
173 surfx = y13*z24 - z13*y24
174 surfy = z13*x24 - x13*z24
175 surfz = x13*y24 - y13*x24
177 aaa=one/
max(em30,sqrt(surfx*surfx+surfy*surfy+surfz*surfz))
183 adskyt(n1) = adskyt(n1)+1
188 adskyt(n2) = adskyt(n2)+1
193 adskyt(n3) = adskyt(n3)+1
198 adskyt(n4) = adskyt(n4)+1
205 lenr = ircsiz(nspmd+1)*3+iad_elem(1,nspmd+1)-iad_elem(1,1)
206 lens = isdsiz(nspmd+1)*3+iad_elem(1,nspmd+1)-iad_elem(1,1)
208 . isdsiz,ircsiz,itag ,lenr ,lens )
220 fskyt2(cc-n2+1) = fskyt(j,cc)
223 CALL myqsort(n4,fskyt2,perm,error)
225 nod_normal(j,n1) = nod_normal(j,n1) + fskyt2(cc-n2+1)
229 nod_normal(1,n1) = fskyt(1,n2)
230 nod_normal(2,n1) = fskyt(2,n2)
231 nod_normal(3,n1) = fskyt(3,n2)
288 SUBROUTINE i20rcurv(NRTMFT,NRTMLT ,X ,NOD_NORMAL ,IRECT ,
289 . RCURV ,NRADM ,ANGLM ,ANGLT ,NLN,NLG)
293#include "implicit_f.inc"
294#include "comlock.inc"
298 INTEGER NRTMFT, NRTMLT , IRECT(4,*), NRADM,NLN,NLG(NLN)
301 . X(3,*), NOD_NORMAL(3,*), RCURV(*), ANGLM(*), ANGLT
305 INTEGER I ,N1, N2, N3, N4
310 . nnx1, nnx2, nnx3, nnx4,
311 . nny1, nny2, nny3, nny4,
312 . nnz1, nnz2, nnz3, nnz4,
313 . surfx, surfy, surfz,
314 . erx, ery, erz, dnx, dny, dnz, dnt, ll, aaa, rr,
315 . x13, y13, z13, x24, y24, z24, nx, ny, nz, cc
317 rcurv(nrtmft:nrtmlt) = ep30
318 anglm(nrtmft:nrtmlt) = ep30
348 nnx1=nod_normal(1,n1)
349 nny1=nod_normal(2,n1)
350 nnz1=nod_normal(3,n1)
352 nnx2=nod_normal(1,n2)
353 nny2=nod_normal(2,n2)
354 nnz2=nod_normal(3,n2)
356 nnx3=nod_normal(1,n3)
357 nny3=nod_normal(2,n3)
358 nnz3=nod_normal(3,n3)
360 nnx4=nod_normal(1,n4)
361 nny4=nod_normal(2,n4)
362 nnz4=nod_normal(3,n4)
365 erx = (x2+x3)-(x1+x4)
366 ery = (y2+y3)-(y1+y4)
367 erz = (z2+z3)-(z1+z4)
370 ll = sqrt(erx*erx+ery*ery+erz*erz)
376 dnx= (nnx2+nnx3)-(nnx1+nnx4)
377 dny= (nny2+nny3)-(nny1+nny4)
378 dnz= (nnz2+nnz3)-(nnz1+nnz4)
381 dnt=(dnx*erx+dny*ery+dnz*erz)
383 rr=ll/
max(em20,abs(dnt))
384 rcurv(i)=
min(rcurv(i),rr)
386 erx = (x4+x3)-(x1+x2)
387 ery = (y4+y3)-(y1+y2)
388 erz = (z4+z3)-(z1+z2)
391 ll = sqrt(erx*erx+ery*ery+erz*erz)
397 dnx= (nnx4+nnx3)-(nnx1+nnx2)
398 dny= (nny4+nny3)-(nny1+nny2)
399 dnz= (nnz4+nnz3)-(nnz1+nnz2)
402 dnt=(dnx*erx+dny*ery+dnz*erz)
404 rr=ll/(nradm*
max(em20,abs(dnt)))
405 rcurv(i)=
min(rcurv(i),rr)
419 surfx = y13*z24 - z13*y24
420 surfy = z13*x24 - x13*z24
421 surfz = x13*y24 - y13*x24
423 aaa=one/
max(em30,sqrt(surfx*surfx+surfy*surfy+surfz*surfz))
428 cc=(surfx*nnx1+surfy*nny1+surfz*nnz1)/
max(em20,anglt)
429 anglm(i)=
min(anglm(i),cc)
431 cc=(surfx*nnx2+surfy*nny2+surfz*nnz2)/
max(em20,anglt)
432 anglm(i)=
min(anglm(i),cc)
434 cc=(surfx*nnx3+surfy*nny3+surfz*nnz3)/
max(em20,anglt)
435 anglm(i)=
min(anglm(i),cc)
437 cc=(surfx*nnx4+surfy*nny4+surfz*nnz4)/
max(em20,anglt)
438 anglm(i)=
min(anglm(i),cc)
subroutine i20mainf(timers, ipari, x, a, icodt, fsav, v, ms, dt2t, neltst, ityptst, itab, stifn, fskyi, isky, fcont, nin, lindmax, kinet, jtask, nb_jlt, nb_jlt_new, nb_stok_n, niskyfi, newfront, nstrf, secfcum, icontact, viscn, num_imp, ns_imp, ne_imp, ind_imp, fsavsub, nrtmdim, fsavbag, eminx, ixs, ixs16, ixs20, fncont, ftcont, iad_elem, fr_elem, rcontact, acontact, pcontact, temp, fthe, ftheskyi, pm, iparg, iad17, weight, niskyfie, irlen20, islen20, irlen20t, islen20t, irlen20e, islen20e, mskyi_sms, iskyi_sms, nodnx_sms, npc, tf, intbuf_tab, fbsav6, isensint, dimfb, h3d_data, theaccfact)