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
51 use element_mod ,
only :nixs
55#include "implicit_f.inc"
66 INTEGER IALLO,INTNITSCHE,NBINFLG(*)
68 . IRECT(4,*), NSV(*),MSEGTYP(*),
69 . MSR(*),ITAB(*),MBINFLG(*),
70 . ISEADD(*) ,ISEDGE(*),ITAG(*),INTPLY,
71 . IXC(*),(*),KNOD2ELC(*),KNOD2ELTG(*),
72 . NOD2ELC(*),NOD2ELTG(*),KNOD2ELS(*),NOD2ELS(*),
73 . IRTSE(5,*) ,IS2SE(*),IS2PT(*) ,IS2ID(*)
74 INTEGER IXS(NIXS,*),IXS10(6,*), IXS16(8,*), IXS20(12,*)
78 TYPE (GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
79 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
83 INTEGER I,J,K,L,LL,NL,ISU1,ISU2,NOD1,NRTM,NRTS,NSN,NMN,
84 . NLINSA,NLINMA,ILEV,IEDGE,NSNE,NMNE,NLN,ISYM,
85 . NLINS,NLINM,LINE1,LINE2,STAT,IADL,IL,IG
86 INTEGER TAG(NUMNOD),TAGS(NUMNOD),NEXTK(4),IWORK(70000),
87 . ishif,nsu1,nls1,nls2,nrtm_sh,etyp,nrtm_sh1,nrtm0,
88 . imbin,im,l24add,icoq(4),nrtse
99 DATA mess/
'INTERFACE INPUT '/
135 nrtm = igrsurf(isu1)%NSEG
136 IF(intnitsche>0) nrts = nrtm
138 nrtm = igrsurf(isu1)%NSEG
139 nrts = igrsurf(isu2)%NSEG
141 IF(intnitsche>0) nrts = nrtm
143 nrtm = igrsurf(isu2)%NSEG
155 DO j=1,igrsurf(isu1)%NSEG
158 irect(k,l) = igrsurf(isu1)%NODES(j,k)
160 msegtyp(l) = igrsurf(isu1)%ELTYP(j)
162 CALL in24coq_sol3(irect(1,l) ,ixc ,ixtg ,msegtyp(l) ,x ,
163 . knod2elc ,knod2eltg ,nod2elc ,nod2eltg,
164 . knod2els,nod2els,ixs ,ixs10 ,ixs16 ,ixs20 )
165 IF(imbin /= 0)mbinflg(l) = bitset(mbinflg(l),0)
169 IF(isu2 /= 0 .AND.ilev /= 1)
THEN
170 DO j=1,igrsurf(isu2)%NSEG
173 irect(k,l) = igrsurf(isu2)%NODES(j,k)
175 msegtyp(l) = igrsurf(isu2)%ELTYP(j)
176 CALL in24coq_sol3(irect(1,l) ,ixc ,ixtg ,msegtyp(l) ,x ,
177 . knod2elc ,knod2eltg ,nod2elc ,nod2eltg,
178 . knod2els,nod2els,ixs ,ixs10 ,ixs16 ,ixs20 )
179 IF(imbin /= 0) mbinflg(l) = bitset(mbinflg(l),1)
184 WRITE(iout,
'(/,A,/)')
' SEGMENTS USED FOR MAIN SURFACE: '
186 WRITE(iout,fmt=fmw_4i)(itab(irect(k,i)),k=1,4)
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
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 IF(tag(i) == 2 .OR. tag(i) == 3)
THEN
254 IF ( ilev == 2.AND.tags(i) == 0 )
THEN
259 IF(ilev == 2)nbinflg(nsn) = bitset(nbinflg(nsn),1)
270 DO j=1,igrsurf(isu1)%NSEG
272 i=igrsurf(isu1)%NODES(j,k)
273 IF(tags(i) == 0 .AND. ilev /= 3 )
THEN
278 IF(ilev == 2)nbinflg(nsn) = bitset(nbinflg(nsn),0)
282 IF(tag(i) == 1 .or. 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 IF(iallo == 2 .and. 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 IF(isu2 /= 0 .AND. 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 IF(isu2 /= 0 .AND. 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)
390 . knod2elc ,knod2eltg ,nod2elc ,nod2eltg,
391 . knod2els,nod2els,ixs ,ixs10 ,ixs16 ,ixs20 )
392 IF(etyp ==3 .OR. etyp ==7 ) nrtm_sh = nrtm_sh + 1
395 IF(isu2 /= 0 .AND. ilev /= 1)
THEN
396 DO j=1,igrsurf(isu2)%NSEG
398 icoq(k) = igrsurf(isu2)%NODES(j,k)
400 etyp = igrsurf(isu2)%ELTYP(j)
402 . knod2elc ,knod2eltg ,nod2elc ,nod2eltg,
403 . knod2els,nod2els,ixs ,ixs10 ,ixs16 ,ixs20 )
404 IF(etyp ==3 .OR. etyp ==7 ) nrtm_sh = nrtm_sh + 1
424 1 SURF_NODES ,ITAB ,ISU ,
425 2 X ,EDG_COS ,MBINFLG ,IADM ,NLS ,
426 3 IRECT ,L24ADD ,ISEADD ,ISEDGE ,NSN ,
434 USE format_mod ,
ONLY : fmw_4i
438#include "implicit_f.inc"
442#include "com04_c.inc"
443#include "units_c.inc"
444#include "scr03_c.inc"
448 INTEGER IALLO,NACTIF,IEDGE,IADM,NLS,L24ADD,NSN,IFIRST,ISU
449 INTEGER ITAB(*),MBINFLG(*),IRECT(4,*),NSEG,SURF_NODES(NSEG,4),
450 . ISEADD(*) ,ISEDGE(*),NSV(*)
457 INTEGER I,J,K,L,NLMAX,STAT,LL,I1,I2,I3,I4,I5,I1M,I2M,NL,IS,
458 . I3M,I4M,I6,I7,IADD,IM,IP,LI
459 INTEGER NEXTK(4),KM1(4),KP2(4),IWORK(70000),NLL,NSE
461 . nx,ny,nz,mx,my,mz,aaa,d1x,d1y,d1z,d2x,d2y,d2z,imj,ipj
462 INTEGER,
DIMENSION(:,:),
ALLOCATABLE ::
463 . lineix,lineix2,ixwork
464 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
465 . INDEX,TAG,ISEADD_L,ISH
466 my_real,
DIMENSION(:,:),
ALLOCATABLE ::
478 IF(isu /= 0)nlmax = 4*nseg
484 ALLOCATE (lineix(2,nlmax) ,stat=stat)
485 ALLOCATE (lineix2(2,nlmax) ,stat=stat)
486 ALLOCATE (xlineix(3,nlmax) ,stat=stat)
487 ALLOCATE (index(2*nlmax) ,stat=stat)
489 ALLOCATE (iseadd_l(numnod) ,stat=stat)
490 ALLOCATE (ish(numnod) ,stat=stat)
491 ALLOCATE (ixwork(8,nlmax) ,stat=stat)
519 d1x = x(1,i3) - x(1,i1)
520 d1y = x(2,i3) - x(2,i1)
521 d1z = x(3,i3) - x(3,i1)
522 d2x = x(1,i4) - x(1,i2)
523 d2y = x(2,i4) - x(2,i2)
524 d2z = x(3,i4) - x(3,i2)
525 nx = d1y * d2z - d1z * d2y
526 ny = d1z * d2x - d1x * d2z
527 nz = d1x * d2y - d1y * d2x
528 aaa = one/
max(sqrt(nx*nx+ny*ny+nz*nz),em20)
534 i2=surf_nodes(j,nextk(k))
554 CALL my_orders(0,iwork,lineix,index,ll,2)
568 IF(ixwork(8,li)==0)
THEN
591 IF(i2 /= i2m .or. i1 /= i1m)
THEN
596 IF(ixwork(8,li)==0)
THEN
611 IF(ixwork(8,li)==0)
THEN
618 aaa = nx*mx + ny * my + nz * mz
619 IF (aaa < edg_cos) ixwork(5,nl) = -1
636 IF(ixwork(5,l) == 1)
THEN
645 ixwork(1,nl)=ixwork(1,l)
646 ixwork(2,nl)=ixwork(2,l)
647 ixwork(3,nl)=ixwork(3,l)
648 ixwork(4,nl)=ixwork(4,l)
650 ixwork(6,nl)=ixwork(6,l)
651 ixwork(7,nl)=ixwork(7,l)
661 ELSEIF(iedge == 2)
THEN
665 IF(ixwork(5,l) == 0)ixwork(5,l)=-1
667 ELSEIF(iedge == 3)
THEN
671 IF(iabs(ixwork(5,l)) == 1)
THEN
677 i5=iabs(ixwork(5,nl))
680 ixwork(1,nl)=ixwork(1,l)
681 ixwork(2,nl)=ixwork(2,l)
682 ixwork(3,nl)=ixwork(3,l)
683 ixwork(4,nl)=ixwork(4,l)
685 ixwork(6,nl)=ixwork(6,l)
686 ixwork(7,nl)=ixwork(7,l)
707 IF(iallo == 2 .AND. ifirst==1)
THEN
709 IF(iabs(ixwork(5,l)) == 1)
THEN
716 mbinflg(j) = bitset(mbinflg(j),i4)
717 IF(ixwork(5,l) == 1)mbinflg(j) = bitset(mbinflg(j),6)
718 mbinflg(j) = bitset(mbinflg(j),8)
723 mbinflg(j) = bitset(mbinflg(j),i7)
724 IF(ixwork(5,l) == 1)mbinflg(j) = bitset(mbinflg(j),6)
737 IF(iallo == 2 .AND. nl >0 .AND. ifirst==1 )
THEN
739 WRITE(iout,
'(/,A,/)')
' ACTIV SEGMENTS USED FOR EDGE'
741 WRITE(iout,fmt=fmw_4i)(itab(ixwork(k,i)),k=1,2)
775 iseadd_l(i1) = iseadd_l(i1) + 1
776 iseadd_l(i2) = iseadd_l(i2) + 1
792 iseadd_l(i1) = iseadd_l(i1) + 1
793 iseadd_l(i2) = iseadd_l(i2) + 1
797 nse = iseadd_l(nsv(i))
803 iseadd_l(nsv(i)) = iseadd(i)
816 isedge(iadd+ish(i1)) = i2
822 im = irect(k,i3+iadm)
824 imj = irect(k,i3+iadm)
826 isedge(iadd+nse+ish(i1)) = im
832 ip = irect(k,i6+iadm)
834 ipj = irect(k,i6+iadm)
836 isedge(iadd+2*nse+ish(i1)) = ip
841 isedge(iadd+ish(i2)) = i1
842 isedge(iadd+nse+ish(i2)) = ipj
843 isedge(iadd+2*nse+ish(i2)) = imj
853 DEALLOCATE (iseadd_l)
939 . KNOD2ELC ,KNOD2ELTG ,NOD2ELC ,NOD2ELTG,
940 . KNOD2ELS,NOD2ELS,IXS ,IXS10 ,IXS16 ,IXS20 )
941 use element_mod ,
only : nixs,nixc,nixtg
945#include "implicit_f.inc"
949#include "com04_c.inc"
953 INTEGER MSEGTYP, KNOD2ELS(*),NOD2ELS(*)
954 INTEGER IRECT(4), IXC(NIXC,*)
956 INTEGER IXS(NIXS,*),IXS10(6,*), IXS16(8,*), IXS20(12,*)
963 INTEGER N, J, II, K, IAD ,NEL,NELTG,NS,NELS,NDS(20),NNOD,JJ,INS
970 IF (msegtyp==3 .OR. msegtyp==7)
GOTO 300
971 IF (msegtyp/=0)
RETURN
974 IF(irect(3)==irect(4).AND.numeltg/=0)
THEN
975 DO 230 iad=knod2eltg(irect(1))+1,knod2eltg(irect(1)+1)
980 IF(ixtg(k+1,n)==ii)
GOTO 220
989 DO 430 iad=knod2elc(irect(1))+1,knod2elc(irect(1)+1)
994 IF(ixc(k+1,n)==ii)
GOTO 420
1004 ELSEIF(neltg>0)
THEN
1010 IF(msegtyp==0.OR.numels==0)
RETURN
1014 DO 330 iad=knod2els(ns)+1,knod2els(ns+1)
1016 IF(n <= numels8)
THEN
1020 IF(ixs(k+1,n)==ii)
GOTO 310
1026 ELSEIF(n <= numels8+numels10)
THEN
1030 IF(ixs(k+1,n)==ii)
GOTO 320
1033 IF(ixs10(k,n-numels8)==ii)
GOTO 320
1041 nds(5:10)=ixs10(1:6,n-numels8)
1043 ELSEIF(n <= numels8+numels10+numels20)
THEN
1047 IF(ixs(k+1,n)==ii)
GOTO 322
1050 IF(ixs20(k,n-numels8-numels10)==ii)
GOTO 322
1055 nds(9:20)=ixs20(1:12,n-numels8-numels10)
1057 ELSEIF(n <= numels8+numels10+numels20+numels16)
THEN
1061 IF(ixs(k+1,n)==ii)
GOTO 324
1064 IF(ixs16(k,n-numels8-numels10-numels20)==ii)
GOTO 324
1069 nds(9:16)=ixs16(1:8,n-numels8-numels10-numels20)
1074 CALL seg_ins(irect,nds,nnod,ins,x )
1075 IF (ins/=0) nels = n
1076 IF (nels>0)
GOTO 500
1080 IF (nels>0 .AND. (msegtyp==3 .OR. msegtyp==7))
THEN
1081 msegtyp = msegtyp + 1
1082 IF (ins <0) msegtyp=-msegtyp
1167 1 SURF_NODES ,ITAB ,ISU ,
1168 2 X ,EDG_COS ,MBINFLG ,IADM ,NLS ,
1169 3 IRECT ,NRTSE ,IRTSE ,NSNE ,IS2SE ,
1170 4 IS2PT ,NSN ,NSV ,IS2ID)
1174#ifndef HYPERMESH_LIB
1177 USE format_mod ,
ONLY : fmw_4i
1181#include "implicit_f.inc"
1185#include "com04_c.inc"
1186#include "units_c.inc"
1187#include "scr03_c.inc"
1191 INTEGER IALLO,NACTIF,IADM,NLS,L24ADD,NSN,IFIRST,ISU
1192 INTEGER ITAB(*),MBINFLG(*),IRECT(4,*),NSEG,SURF_NODES(NSEG,4),
1193 . irtse(5,*) ,nsv(*),nrtse,nsne,is2se(2,*),is2pt(*),is2id(*)
1200 INTEGER I,J,K,L,NLMAX,STAT,LL,I1,I2,I3,I4,I5,I1M,I2M,NL,IS,
1201 . I3M,I4M,I6,I7,IADD,IM,IP,LI
1202 INTEGER NEXTK(4),KM1(4),KP2(4),IWORK(70000),NLL,NSE,NP_EDGE
1204 . NX,NY,NZ,MX,MY,MZ,AAA,D1X,D1Y,D1Z,D2X,D2Y,D2Z,IMJ,IPJ
1205 INTEGER,
DIMENSION(:,:),
ALLOCATABLE ::
1206 . LINEIX,LINEIX2,IXWORK
1207 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
1208 . INDEX,TAG,ISEADD_L,ISH
1209 my_real,
DIMENSION(:,:),
ALLOCATABLE ::
1224 IF(isu /= 0)nlmax = 4*nseg
1230 ALLOCATE (lineix(2,nlmax) ,stat=stat)
1231 ALLOCATE (lineix2(2,nlmax) ,stat=stat)
1232 ALLOCATE (xlineix(3,nlmax) ,stat=stat)
1233 ALLOCATE (index(2*nlmax) ,stat=stat)
1234 ALLOCATE (ixwork(8,nlmax) ,stat=stat)
1236#ifndef HYPERMESH_LIB
1260 d1x = x(1,i3) - x(1,i1)
1261 d1y = x(2,i3) - x(2,i1)
1262 d1z = x(3,i3) - x(3,i1)
1263 d2x = x(1,i4) - x(1,i2)
1264 d2y = x(2,i4) - x(2,i2)
1265 d2z = x(3,i4) - x(3,i2)
1266 nx = d1y * d2z - d1z * d2y
1267 ny = d1z * d2x - d1x * d2z
1268 nz = d1x * d2y - d1y * d2x
1269 aaa = one/
max(sqrt(nx*nx+ny*ny+nz*nz),em20)
1275 i2=surf_nodes(j,nextk(k))
1296 CALL my_orders(0,iwork,lineix,index,ll,2)
1309 IF(ixwork(8,li)==0)
THEN
1332 IF(i2 /= i2m .or. i1 /= i1m)
THEN
1337 IF(ixwork(8,li)==0)
THEN
1352 IF(ixwork(8,li)==0)
THEN
1359 aaa = nx*mx + ny * my + nz * mz
1360 IF (aaa < edg_cos) ixwork(5,nl) = -1
1377 IF(iabs(ixwork(5,l)) == 1)
THEN
1383 i5=iabs(ixwork(5,nl))
1386 ixwork(1,nl)=ixwork(1,l)
1387 ixwork(2,nl)=ixwork(2,l)
1388 ixwork(3,nl)=ixwork(3,l)
1389 ixwork(4,nl)=ixwork(4,l)
1390 ixwork(5,nl)=ixwork(5,l)
1392 ixwork(6,nl)=ixwork(6,l)
1393 ixwork(7,nl)=ixwork(7,l)
1421 IF(iabs(ixwork(5,l)) == 1)
THEN
1427 nsne = nsne + np_edge
1432 nsne = nsne + np_edge
1439 ELSEIF(iallo == 2 )
THEN
1441 IF(iabs(ixwork(5,l)) == 1)
THEN
1448 irtse(1:4,nrtse)=surf_nodes(j,1:4)
1452 nsv(nsn+nsne) = numnod+nsne
1453 is2se(1,nsne) = nrtse
1454 IF (i6/=0.AND.i/=np_edge)
THEN
1455 is2se(2,nsne)=nrtse+1
1468 irtse(1:4,nrtse)=surf_nodes(j,1:4)
1473 nsv(nsn+nsne) = numnod+nsne
1474 is2se(2,nsne) = nrtse
1481 nsv(nsn+nsne) = numnod+nsne
1482 is2se(1,nsne) = nrtse
1484 is2pt(nsne) = np_edge
1493 nactif = nactif + nl
1497#ifndef HYPERMESH_LIB
1498 IF(iallo == 2 .AND. nl >0 )
THEN
1500 WRITE(iout,
'(/,A,/)')
' ACTIV SEGMENTS USED FOR EDGE'
1502 WRITE(iout,fmt=fmw_4i)(itab(ixwork(k,i)),k=1,2)
1528 IF (is2se(1,i)==0 .AND.is2se(2,i)/=0)
THEN
1529 is2se(1,i) = is2se(2,i)
1541 DEALLOCATE (lineix2)
1542 DEALLOCATE (xlineix)
1555 4 NSN ,NSV ,X ,XFIC ,NPT )
1559#include "implicit_f.inc"
1563#include "com04_c.inc"
1567 INTEGER IRTSE(5,*) ,NSV(*),NRTSE,NSNE,IS2SE(2,*),IS2PT(*),NSN,NPT
1583 INTEGER I,J,K,NSN0,NS,IP,IK1(4),IK2(4),IE1,IE2,IED,NS1,NS2,IE,NP0
1587 . x0,y0,z0,xe0,ye0,ze0,s
1594 IF (ns<=0) print *,
'!!!!error, NSV(I),I=',nsv(i),i
1600 IF (irtse(3,ie)==irtse(4,ie))
THEN
1601 x0=third*(x(1,irtse(1,ie))+x(1,irtse(2,ie))+x(1,irtse(3,ie)))
1602 y0=third*(x(2,irtse(1,ie))+x(2,irtse(2,ie))+x(2,irtse(3,ie)))
1605 x0=fourth*(x(1,irtse(1,ie))+x(1,irtse(2,ie))+x(1,irtse(3,ie))+
1607 y0=fourth*(x(2,irtse(1,ie))+x(2,irtse(2,ie))+x(2,irtse(3,ie))+
1609 z0=fourth*(x(3,irtse(1,ie))+x(3,irtse(2,ie))+x(3,irtse(3,ie))+
1613 xe0=half*(x(1,ns1)+x(1,ns2))
1614 ye0=half*(x(2,ns1)+x(2,ns2))
1615 ze0=half*(x(3,ns1)+x(3,ns2))
1617 xfic(1,ns) = third*(x0+two*xe0)
1618 xfic(2,ns) = third*(y0+two*ye0)
1619 xfic(3,ns) = third*(z0+two*ze0)
1621 ELSEIF (ip > 0 )
THEN
1623 xe0=half*(x(1,ns1)+x(1,ns2))
1624 ye0=half*(x(2,ns1)+x(2,ns2))
1625 ze0=half*(x(3,ns1)+x(3,ns2))
1629 s = (ip-np0)*one/(npt-1)
1630 xfic(1,ns) = xe0 +s*(x(1,ns2)-xe0)
1631 xfic(2,ns) = ye0 +s*(x(2,ns2)-ye0)
1632 xfic(3,ns) = ze0 +s*(x(3,ns2)-ze0)
1636 xfic(1,ns) = x(1,ns1) +s*(xe0 -x(1,ns1))
1637 xfic(2,ns) = x(2,ns1) +s*(ye0 -x(2,ns1))
1638 xfic(3,ns) = x(3,ns1) +s*(ze0 -x(3,ns1))