7 FUNCTION i2char2 (INT_IN)
18 INTEGER,
INTENT(IN) :: INT_IN
19 CHARACTER (LEN=12) :: I2CHAR2
22 CHARACTER(LEN=12) :: STRING
23 CHARACTER(LEN=5) :: THEFORMAT
29 DO WHILE (int_in.GE.10**n)
37 WRITE(unit=theformat,fmt=
'(''(I'',I1,'')'')') n
38 WRITE(unit=string,fmt=theformat) int_in
40 ELSE IF ( (n .GE. 10) .AND. (n .LE. 12) )
THEN 43 WRITE(unit=theformat,fmt=
'(''I'',I2)') n
44 WRITE(unit=string,fmt=theformat) int_in
48 WRITE(*,*)
'FORMAT ERROR IN I2CHAR2.' 52 i2char2 = trim(string)
58 SUBROUTINE calc_neleb(IKLE, NELEM, NPOIN,NELEB)
68 INTEGER,
INTENT(IN) :: NELEM
69 INTEGER,
INTENT(IN) :: NPOIN
70 INTEGER,
INTENT(IN) :: IKLE(nelem,4)
71 INTEGER,
INTENT(OUT) :: NELEB
75 INTEGER :: NVOIS(npoin),IADR(npoin)
76 INTEGER :: I,INOEUD,IELEM,IPOIN,ADR,IMAX,NBTRI,NV,NMXVOISIN,
77 & ivois,iface,m1,m2,m3,i1,i2,i3,nface,itri,ielem2,iface2
78 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NEIGH
79 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IKLE_TRI,VOIS_TRI,IFABOR
85 INTEGER :: SOMFAC(3,4)
86 parameter( somfac = reshape((/ 1,2,3 , 4,1,2 ,
87 & 2,3,4 , 3,4,1 /),(/3,4/) ))
99 ipoin = ikle( ielem , inoeud )
100 nvois(ipoin) = nvois(ipoin) + 1
117 nmxvoisin = max(nmxvoisin,nv)
120 imax = iadr(npoin) + nvois(npoin)
122 ALLOCATE(neigh(imax))
130 ipoin = ikle( ielem , inoeud )
131 nv = nvois(ipoin) + 1
133 neigh(iadr(ipoin)+nv) = ielem
140 nbtri = nmxvoisin * 3
142 ALLOCATE(ikle_tri(nbtri,3))
143 ALLOCATE(vois_tri(nbtri,2))
144 ALLOCATE(ifabor(nelem,4))
153 ielem = neigh(adr+ivois)
155 IF ( ifabor(ielem,iface) .EQ. 0 )
THEN 156 i1 = ikle(ielem,somfac(1,iface))
157 i2 = ikle(ielem,somfac(2,iface))
158 i3 = ikle(ielem,somfac(3,iface))
159 m1 = max(i1,(max(i2,i3)))
160 m3 = min(i1,(min(i2,i3)))
164 IF ( ikle_tri(itri,1) .EQ. m1 )
THEN 165 IF ( ikle_tri(itri,2) .EQ. m2 .AND.
166 & ikle_tri(itri,3) .EQ. m3 )
THEN 167 ielem2 = vois_tri(itri,1)
168 iface2 = vois_tri(itri,2)
169 ifabor(ielem ,iface ) = ielem2
170 ifabor(ielem2,iface2) = ielem
175 IF ( .NOT. found)
THEN 177 ikle_tri(nbtri,1) = m1
178 ikle_tri(nbtri,2) = m2
179 ikle_tri(nbtri,3) = m3
180 vois_tri(nbtri,1) = ielem
181 vois_tri(nbtri,2) = iface
189 neleb = count(ifabor==0)
196 END SUBROUTINE calc_neleb