37 SUBROUTINE i24surfi(IALLO ,IPARI ,IGRNOD ,IGRSURF ,
40 3 NBINFLG ,MBINFLG ,MSEGTYP ,ISEADD ,
41 4 ISEDGE ,ITAG ,INTPLY ,IXC ,
42 5 IXTG ,KNOD2ELC,KNOD2ELTG,NOD2ELC,
43 6 NOD2ELTG,KNOD2ELS,NOD2ELS ,IXS ,
44 7 IXS10 ,IXS16 ,IXS20 ,IRTSE ,
45 8 IS2SE ,IS2PT ,IS2ID ,INTNITSCHE)
50 USE format_mod ,
ONLY : fmw_10i, fmw_4i
54#include "implicit_f.inc"
65 INTEGER ,INTNITSCHE,NBINFLG(*)
67 . IRECT(4,*), NSV(*),MSEGTYP(*),
68 . MSR(*),ITAB(*),MBINFLG(*),
73INTEGER IXS(NIXS,*),IXS10(6,*), IXS16(8,*), IXS20(12,*)
77 TYPE (GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
78 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
82 INTEGER I,J,K,L,LL,NL,ISU1,ISU2,NOD1,NRTM,NRTS,NSN,NMN,
83 . NLINSA,NLINMA,ILEV,IEDGE,NSNE,NMNE,NLN,ISYM,
84 . NLINS,NLINM,LINE1,LINE2,STAT,IADL,IL,IG
85 INTEGER TAG(NUMNOD),TAGS(),NEXTK(4),IWORK(70000),
86 . ishif,nsu1,nls1,nls2,nrtm_sh,etyp,nrtm_sh1,nrtm0,
87 . imbin,im,l24add,icoq(4),nrtse
98 DATA mess/'
INTERFACE input
'/
134 NRTM = IGRSURF(ISU1)%NSEG
135 IF(INTNITSCHE>0) NRTS = NRTM
137 NRTM = IGRSURF(ISU1)%NSEG
138 NRTS = IGRSURF(ISU2)%NSEG
140 IF(INTNITSCHE>0) NRTS = NRTM
142 NRTM = IGRSURF(ISU2)%NSEG
154 DO J=1,IGRSURF(ISU1)%NSEG
157 IRECT(K,L) = IGRSURF(ISU1)%NODES(J,K)
159 MSEGTYP(L) = IGRSURF(ISU1)%ELTYP(J)
161 CALL IN24COQ_SOL3(IRECT(1,L) ,IXC ,IXTG ,MSEGTYP(L) ,X ,
162 . KNOD2ELC ,KNOD2ELTG ,NOD2ELC ,NOD2ELTG,
163 . KNOD2ELS,NOD2ELS,IXS ,IXS10 ,IXS16 ,IXS20 )
164 IF(IMBIN /= 0)MBINFLG(L) = BITSET(MBINFLG(L),0)
168.AND.
IF(ISU2 /= 0 ILEV /= 1)THEN
169 DO J=1,IGRSURF(ISU2)%NSEG
172 IRECT(K,L) = IGRSURF(ISU2)%NODES(J,K)
174 MSEGTYP(L) = IGRSURF(ISU2)%ELTYP(J)
175 CALL IN24COQ_SOL3(IRECT(1,L) ,IXC ,IXTG ,MSEGTYP(L) ,X ,
176 . KNOD2ELC ,KNOD2ELTG ,NOD2ELC ,NOD2ELTG,
177 . KNOD2ELS,NOD2ELS,IXS ,IXS10 ,IXS16 ,IXS20 )
178 IF(IMBIN /= 0) MBINFLG(L) = BITSET(MBINFLG(L),1)
183 WRITE(IOUT,'(/,a,/)
')' segments used
for main surface:
'
185 WRITE(IOUT,FMT=FMW_4I)(ITAB(IRECT(K,I)),K=1,4)
197 TAG(I)=0 ! initialisation
198 TAGS(I)=0 ! initialisation
201 DO J=1,IGRSURF(ISU2)%NSEG
203 TAG(IGRSURF(ISU2)%NODES(J,K)) = 2
208 DO J=1,IGRSURF(ISU1)%NSEG
210 I=IGRSURF(ISU1)%NODES(J,K)
213 ELSEIF(TAG(I) == 2)THEN
222 DO J=1,IGRSURF(ISU2)%NSEG
224!! IF(ITAG(IBUFSSG(IAD)) > 0) INTPLY = 1
225 I=IGRSURF(ISU2)%NODES(J,K)
226 IF(ITAG(I) > 0) INTPLY = 1
231 DO J=1,IGRSURF(ISU1)%NSEG
233 I=IGRSURF(ISU1)%NODES(J,K)
234 IF(ITAG(I) > 0) INTPLY = 1
243 DO J=1,IGRSURF(ISU2)%NSEG
245 I=IGRSURF(ISU2)%NODES(J,K)
248 IF(IALLO == 2)MSR(NMN) = I
252.OR.
IF(TAG(I) == 2 TAG(I) == 3)THEN
254.AND.
IF ( ILEV == 2TAGS(I) == 0 ) THEN
259 IF(ILEV == 2)NBINFLG(NSN) = BITSET(NBINFLG(NSN),1)
261 END IF !( ILEV == 2 ) THEN
270 DO J=1,IGRSURF(ISU1)%NSEG
272 I=IGRSURF(ISU1)%NODES(J,K)
273.AND.
IF(TAGS(I) == 0 ILEV /= 3 ) THEN
278 IF(ILEV == 2)NBINFLG(NSN) = BITSET(NBINFLG(NSN),0)
282.or.
IF(TAG(I) == 1 TAG(I) == -3)THEN
285 IF(IALLO == 2)MSR(NMN) = I
294 DO J=1,IGRNOD(NOD1)%NENTITY
295 I = IGRNOD(NOD1)%ENTITY(J)
301 IF(ILEV == 2)NBINFLG(NSN) = BITSET(NBINFLG(NSN),2)
308.and.
IF(IALLO == 2 IPRI >= 5) THEN
309 WRITE(IOUT,'(/,a,/)
')' nodes used
for secondary side
'
310 WRITE(IOUT,FMT=FMW_10I)(ITAB(NSV(I)),I=1,NSN)
319 CALL I24EDGE2(IALLO ,IGRSURF(ISU1)%NSEG,NLN ,
320 1 IGRSURF(ISU1)%NODES ,ITAB ,ISU1 ,
321 2 X ,EDG_COS ,MBINFLG ,ISHIF ,NLS1 ,
322 3 IRECT ,NRTSE ,IRTSE ,NSNE ,IS2SE ,
323 4 IS2PT ,NSN ,NSV ,IS2ID)
325.AND.
IF(ISU2 /= 0 ILEV /= 1) THEN
326 CALL I24EDGE2(IALLO ,IGRSURF(ISU2)%NSEG,NLN ,
327 1 IGRSURF(ISU2)%NODES ,ITAB ,ISU2 ,
328 2 X ,EDG_COS ,MBINFLG ,ISHIF ,NLS2 ,
329 3 IRECT ,NRTSE ,IRTSE ,NSNE ,IS2SE ,
330 4 IS2PT ,NSN ,NSV ,IS2ID)
333 ELSEIF(IEDGE /= 0)THEN
335 CALL I24EDGE1(IALLO,IGRSURF(ISU1)%NSEG,NLN ,IEDGE ,
336 1 IGRSURF(ISU1)%NODES ,ITAB ,ISU1 ,
337 2 X ,EDG_COS ,MBINFLG ,ISHIF ,NLS1 ,
338 3 IRECT ,L24ADD ,ISEADD ,ISEDGE ,NSN ,
341.AND.
IF(ISU2 /= 0 ILEV /= 1) THEN
342 CALL I24EDGE1(IALLO,IGRSURF(ISU2)%NSEG,NLN ,IEDGE ,
343 1 IGRSURF(ISU2)%NODES ,ITAB ,ISU2 ,
344 2 X ,EDG_COS ,MBINFLG ,ISHIF ,NLS2 ,
345 3 IRECT ,L24ADD ,ISEADD ,ISEDGE ,NSN ,
358 IF (IEDGE == 4) IPARI(52) = NRTSE
362 NRTM0 = IPARI(4) - NRTM_SH
363 CALL SH2SURF(NRTM0,IRECT,IMBIN,MBINFLG,MSEGTYP,IPARI(4))
365 IF (IEDGE == 4) IPARI(58) = 0
369 IF(INTNITSCHE > 0) THEN
379 IF (IEDGE == 4) IPARI(52) = NRTSE
384 DO J=1,IGRSURF(ISU1)%NSEG
386 ICOQ(K) = IGRSURF(ISU1)%NODES(J,K)
388 ETYP = IGRSURF(ISU1)%ELTYP(J)
389 CALL IN24COQ_SOL3(ICOQ ,IXC ,IXTG ,ETYP ,X ,
390 . KNOD2ELC ,KNOD2ELTG ,NOD2ELC ,NOD2ELTG,
391 . KNOD2ELS,NOD2ELS,IXS ,IXS10 ,IXS16 ,IXS20 )
392.OR.
IF(ETYP ==3 ETYP ==7 ) NRTM_SH = NRTM_SH + 1
395.AND.
IF(ISU2 /= 0 ILEV /= 1)THEN
396 DO J=1,IGRSURF(ISU2)%NSEG
398 ICOQ(K) = IGRSURF(ISU2)%NODES(J,K)
400 ETYP = IGRSURF(ISU2)%ELTYP(J)
401 CALL IN24COQ_SOL3(ICOQ ,IXC ,IXTG ,ETYP ,X ,
402 . KNOD2ELC ,KNOD2ELTG ,NOD2ELC ,NOD2ELTG,
403 . KNOD2ELS,NOD2ELS,IXS ,IXS10 ,IXS16 ,IXS20 )
404.OR.
IF(ETYP ==3 ETYP ==7 ) NRTM_SH = NRTM_SH + 1
1552 SUBROUTINE I24XFIC_INI(NRTSE ,IRTSE ,NSNE ,IS2SE ,IS2PT ,
1553 4 NSN ,NSV ,X ,XFIC ,NPT )
1557#include "implicit_f.inc"
1561#include "com04_c.inc"
1565 INTEGER IRTSE(5,*) ,NSV(*),NRTSE,NSNE,IS2SE(2,*),IS2PT(*),NSN,NPT
1579! 1---o1------o2--2 NPT=3
1581 INTEGER I,J,K,NSN0,NS,IP,IK1(4),IK2(4),IE1,IE2,IED,NS1,NS2,IE,NP0
1585 . X0,Y0,Z0,XE0,YE0,ZE0,S
1592 IF (NS<=0) print *,'
1598 IF (irtse(3,ie)==irtse(4,ie))
THEN
1599 x0=third*(x(1,irtse(1,ie))+x(1,irtse(2,ie))+x(1,irtse(3,ie)))
1600 y0=third*(x(2,irtse(1,ie))+x(2,irtse(2,ie))+x(2,irtse(3,ie)))
1603 x0=fourth*(x(1,irtse(1,ie))+x(1,irtse(2,ie))+x(1,irtse(3,ie))+
1605 y0=fourth*(x(2,irtse(1,ie))+x(2,irtse(2,ie))+x(2,irtse(3,ie))+
1607 z0=fourth*(x(3,irtse(1,ie))+x(3,irtse(2,ie))+x(3,irtse(3,ie))+
1611 xe0=half*(x(1,ns1)+x(1,ns2))
1612 ye0=half*(x(2,ns1)+x(2,ns2))
1613 ze0=half*(x(3,ns1)+x(3,ns2))
1615 xfic(1,ns) = third*(x0+two*xe0)
1616 xfic(2,ns) = third*(y0+two*ye0)
1617 xfic(3,ns) = third*(z0+two*ze0)
1619 ELSEIF (ip > 0 )
THEN
1621 xe0=half*(x(1,ns1)+x(1,ns2))
1622 ye0=half*(x(2,ns1)+x(2,ns2))
1623 ze0=half*(x(3,ns1)+x(3,ns2
1627 s = (ip-np0)*one/(npt-1)
1628 xfic(1,ns) = xe0 +s*(x(1,ns2)-xe0)
1629 xfic(2,ns) = ye0 +s*(x(2,ns2)-ye0)
1630 xfic(3,ns) = ze0 +s*(x(3,ns2)-ze0)
1634 xfic(1,ns) = x(1,ns1) +s*(xe0 -x(1,ns1))
1635 xfic(2,ns) = x(2,ns1) +s*(ye0 -x(2,ns1))
1636 xfic(3,ns) = x(3,ns1) +s*(ze0 -x(3,ns1))
1654#include "implicit_f.inc"
1658#include "com04_c.inc"
1662 INTEGER IRTSE(5,*) ,NSV(*),NSNE,IS2SE(2,*),NPT,IS2PT(*),NSN
1678 INTEGER I,J,K,,NS,NSF,IE1,IE2,IED,NS1,NS2,IE,NP0,N
1679 INTEGER ITAG(NUMNOD),IK1(4),IK2(4)
1683 . X0,Y0,Z0,XE0,YE0,ZE0,S
1698 ns1= irtse(ik1(ied),ie)
1699 ns2= irtse(ik2(ied),ie)
1700 ELSEIF(ie2 > 0)
THEN
1703 ns1= irtse(ik2(ied),ie)
1704 ns2= irtse(ik1(ied),ie)
1706 print *,
'problem EDGE **** I,IE1,IE2=',i,ie1,ie2
1708 s =
max(fic_s(itag(ns1)),fic_s(itag(ns2)))
1724#include "implicit_f.inc"
1728#include "com04_c.inc"
1732 INTEGER IRTSE(5,*),NSV(*),NSNE,IS2SE(2,*),NPT,IS2PT(*),NSN,
1747 INTEGER I,J,K,NSN0,NS,NSF,IE1,IE2,IED,NS1,NS2,IE,NP0,N,IS
1748 INTEGER ITAG(NUMNOD),IK1(4),(4)
1752 . X0,Y0,Z0,XE0,YE0,ZE0
1767 ns1= irtse(ik1(ied),ie)
1768 ns2= irtse(ik2(ied),ie)
1769 ELSEIF(ie2 > 0)
THEN
1772 ns1= irtse(ik2(ied),ie)
1773 ns2= irtse(ik1(ied),ie)
1775 print *,
'problem EDGE **** I,IE1,IE2=',i,ie1,ie2
1777 is =
max(fic_i(itag(ns1)),fic_i(itag(ns2)))
1791 4 NSN ,ISEGPT ,NPT , ISPT2)
1795#include "implicit_f.inc"
1799#include "com04_c.inc"
1803 INTEGER IRTSE(5,*),NSV(*),NSNE,IS2SE(2,*),NPT,IS2PT(*),NSN,
1819 INTEGER I,J,K,NSN0,NS,IP,NS1,NS2,IE,NP0,N,IS1,IS2,IPT
1820 INTEGER ITAG(NUMNOD)
1839 ELSEIF (ip == 1.OR.(ip == npt-1))
THEN
1848 IF (isegpt(is1) ==0) isegpt(is1)=i
1851 IF (isegpt(is2) ==0) isegpt(is2)=i
1970#include "implicit_f.inc"
1974#include "com04_c.inc"
1978 INTEGER IRTSE(5,*) ,NSV(*),NSNE,IS2SE(2,*),NPT,IS2PT(*),NSN
1995 INTEGER I,J,K,NSN0,NS,NSF,IE1,IE2,IED,NS1,NS2,IE,NP0,N
1996 INTEGER ITAG(NUMNOD),IK1(4),IK2(4),IP
2015 ns1= irtse(ik1(ied),ie)
2016 ns2= irtse(ik2(ied),ie)
2017 ELSEIF(ie2 > 0)
THEN
2020 ns1= irtse(ik2(ied),ie)
2021 ns2= irtse(ik1(ied),ie)
2023 print *,
'problem EDGE **** IE1,IE2=',ie1,ie2
2033 n = itag(irtse(j,ie))
2034 nx = nx + fic_v(1,n)
2035 ny = ny + fic_v(2,n)
2036 nz = nz + fic_v(3,n)
2038 IF (irtse(3,ie)/=irtse(4,ie))
THEN
2039 n = itag(irtse(4,ie))
2040 nx = nx + fic_v(1,n)
2041 ny = ny + fic_v(2,n)
2042 nz = nz + fic_v(3,n)
2046 nx = nx + fic_v(1,n)
2047 ny = ny + fic_v(2,n)
2048 nz = nz + fic_v(3,n)
2050 nx = nx + fic_v(1,n)
2051 ny = ny + fic_v(2,n)
2052 nz = nz + fic_v(3,n)
2054 det = one/
max(em20,sqrt(nx*nx+ ny*ny+ nz*nz))
subroutine i24surfi(iallo, ipari, igrnod, igrsurf, irect, frigap, nsv, msr, itab, x, nbinflg, mbinflg, msegtyp, iseadd, isedge, itag, intply, ixc, ixtg, knod2elc, knod2eltg, nod2elc, nod2eltg, knod2els, nod2els, ixs, ixs10, ixs16, ixs20, irtse, is2se, is2pt, is2id, intnitsche)
subroutine inint3(inscr, x, ixs, ixc, pm, geo, ipari, nin, itab, ms, mwa, rwa, ixtg, iwrn, ikine, ixt, ixp, ixr, nelemint, iddlevel, ifiend, ale_connectivity, nsnet, nmnet, igrbric, iwcont, nsnt, nmnt, nsn2t, nmn2t, iwcin2, knod2els, knod2elc, knod2eltg, nod2els, nod2elc, nod2eltg, igrsurf, ikine1, ielem21, sh4tree, sh3tree, ipart, ipartc, iparttg, thk, thk_part, nod2el1d, knod2el1d, ixs10, i_mem, resort, inter_cand, ixs16, ixs20, id, titr, iremnode, nremnode, iparts, kxx, ixx, igeo, intercep, lelx, intbuf_tab, fillsol, pm_stack, iworksh, kxig3d, ixig3d, tagprt_fric, intbuf_fric_tab, ipartt, ipartp, ipartx, ipartr, nsn_multi_connec, t2_add_connec, t2_nb_connec, t2_connec, nom_opt, icode, iskew, iremnode_edg, s_append_array, x_append, mass_append, n2d, flag_removed_node, nspmd, inter_type2_number, elem_linked_to_segment, sinscr, sicode, sitab, nin25, flag_elem_inter25, multi_fvm)