5 &(xx,yy,nubo,vnoin,npoin,nelem,nseg,cmi,airst,
6 & gloseg,coord_g,eltseg,oriseg,ifabor)
73 INTEGER,
INTENT(IN) :: NSEG,NPOIN,NELEM
75 INTEGER,
INTENT(INOUT) :: NUBO(2,nseg)
76 INTEGER,
INTENT(IN) :: GLOSEG(nseg,2)
77 INTEGER,
INTENT(IN) :: ELTSEG(nelem,3)
78 INTEGER,
INTENT(IN) :: ORISEG(nelem,3)
79 DOUBLE PRECISION,
INTENT(IN) :: XX(npoin),YY(npoin),CMI(2,nseg)
80 DOUBLE PRECISION,
INTENT(INOUT) :: VNOIN(3,nseg)
81 DOUBLE PRECISION,
INTENT(INOUT) :: AIRST(2,*)
82 DOUBLE PRECISION,
INTENT(IN) :: COORD_G(nseg,4)
83 INTEGER,
INTENT(IN) :: IFABOR(nelem,3)
87 INTEGER NB1,NB2,ISEG,IEL,FACT,I,IER
88 DOUBLE PRECISION,
PARAMETER :: EPS= 1.d-14
89 DOUBLE PRECISION X1,Y1,X2,Y2,RNORM,XGG,YGG,XG1,YG1,XG2,YG2
93 LOGICAL,
ALLOCATABLE :: YESNO(:)
94 ALLOCATE(yesno(nseg),stat=ier)
95 CALL check_allocate(ier,
'INFCEL')
116 IF(.NOT.yesno(eltseg(iel,i)))
THEN 131 xg1 = coord_g(iseg,1)
132 yg1 = coord_g(iseg,2)
133 xg2 = coord_g(iseg,3)
134 yg2 = coord_g(iseg,4)
135 IF(ifabor(iel,i).EQ.-1.OR.ifabor(iel,i).EQ.0)
THEN 136 IF(abs(xg1).LT.eps.AND.abs(yg1).LT.eps)
THEN 139 ELSEIF(abs(xg2).LT.eps.AND.abs(yg2).LT.eps)
THEN 145 airst(1,iseg)=0.5d0*abs((x1-xg1)*(y1-yg2)-
147 airst(2,iseg)=0.5d0*abs((x2-xg1)*(y2-yg2)-
152 rnorm=sqrt(xgg**2+ygg**2)
153 IF(rnorm.GT.eps)
THEN 154 IF(oriseg(iel,i).EQ.2) fact=-fact
155 vnoin(1,iseg) = fact*ygg/rnorm
156 vnoin(2,iseg) = -fact*xgg/rnorm
157 vnoin(3,iseg) = rnorm
159 WRITE(lu,*)
'**************************************' 160 WRITE(lu,*)
'INFCEL: INTERFACE LENGTH NIL',rnorm
161 WRITE(lu,*)
'FOR SEGMENT',iseg
162 WRITE(lu,*)
'WITH GLOBAL NODES',nb1,nb2
163 WRITE(lu,*)
'**************************************' subroutine infcel(XX, YY, NUBO, VNOIN, NPOIN, NELEM, NSEG, CMI, AIRST, GLOSEG, COORD_G, ELTSEG, ORISEG, IFABOR)