trpls2
C TRPLS2 SOURCE CHAT 06/03/29 21:36:43 5360
> ITVL,NTIMAX,RTVL,NTRMAX,
C > ITRPOL,FCRMIN,QTMIN,iarr)
> ITRPOL,QTMIN,iarr)
C *****************************************************************
C OBJET : ALLOCATION DES TABLEAU DANS LA PILE (ITVL,RTVL)
C ET APPEL A TRPLSI
C
C EN ENTREE :
C X : COORDONNEES DES POINTS DU POLYGONE
C IPOLYG : NUMERO DES NOEUDS DU POLYGONE
C NCP : NOMBRE DE POINT DU POLYGONE
C FCRMIN: FONCTION RENVOYANT LA VALEUR DU CRITERE
C FUNCTION REAL FCRMIN(P1,P2,P3)
C REAL*8 P1(*),P2(*),P3(*)
C OU P1,P2,P3 SONT LES COORDONNEES DES POINTS
C DU TRIANGLE
C ITVL : TABLEAU DE TRAVAIL DE TAILLE NTIMAX
C RTVL : TABLEAU DE TRAVAIL DE TAILLE NTRMAX
C
C QTMIN : VALEUR MINIMUM DU CRITERE
C
C EN SORTIE :
C ITRPOL: TRIANGULATION RESULANTE
C ITRPOL((I-1)*3+1) PREMIER NOEUD DU TRIANGLE I
C ITRPOL((I-1)*3+2) DEUXIEME NOEUD DU TRIANGLE I
C ITRPOL((I-1)*3+3) TROISIEME NOEUD DU TRIANGLE I
C QTMIN : VALEUR MINIMUM DE FCRMIN SUR ITRPOL
C iarr : 0 SI TOUT EST OK
C -1 SI QTMIN N'A PAS PU ETRE ATTEINT
C -2 SI UN PROBLEME DE TAILLE MEMOIRE
C *****************************************************************
IMPLICIT INTEGER(I-N)
REAL*8 X(*),QTMIN
INTEGER IPOLYG(*),NCP,ITVL(*),NTIMAX,NTRMAX
REAL*8 RTVL(*)
INTEGER ITRPOL(*),iarr
C
C NPMAX : LE NOMBRE MAXIMUM DE POLYGONES EMPILES
C NCMAX : LE NOMBRE MAXIMUM DE COTE DU POLYGONE
C PARAMETER (NPMAX = 1000,NCMAX = 20, IDIMC = 2)
C
C REAL*8 FCRMIN
C EXTERNAL FCRMIN
INTEGER IND,ICARD,JT,IFD,IFG,IT,ITM,IPERE
INTEGER ITPOLY,ITRIA,ITRMIN,IQTRIA,IQMIN
INTEGER NPMAX,NCMAX
C
NCMAX = NCP
NPMAX = (NTIMAX - 3*(NCMAX-2)) / (2*(2*NCMAX+1))
C WRITE (*,*) '---- LE RESPECT D ARETE ----'
C WRITE (*,*) 'COTES DU POLYGONE NCP =',NCP
C WRITE (*,*) 'PLACE DISPONIBLE NTIMAX =',NTIMAX
C WRITE (*,*) 'TAILLE DE LA PILE NPMAX =',NPMAX
C
NPMAX = MIN( (NTRMAX / 2),NPMAX )
C WRITE (*,*) 'TAILLE DE LA PILE POUR LE RESPECT D ARETE =',NPMAX
IF((NPMAX.LE.0).OR.(NTRMAX.LT.(2*NCMAX)))THEN
iarr = -2
GOTO 999
ENDIF
C --- ALLOCATION DE TOUS LES TABLEAUX ---
IND = 1
ICARD = NPMAX + IND
JT = NPMAX + ICARD
IFD = NPMAX + JT
IFG = NPMAX + IFD
IT = NPMAX + IFG
ITM = NPMAX + IT
IPERE = NPMAX + ITM
ITPOLY= NPMAX + IPERE
ITRIA = (NPMAX*NCMAX) + ITPOLY
ITRMIN= ((NCMAX-2)*3) + ITRIA
C ITRMIN((NCMAX-2)*3*NPMAX)
C
IQTRIA= 1
IQMIN = NPMAX + IQTRIA
C IQMIN(NPMAX)
C
> ITVL(IND),ITVL(ICARD),ITVL(JT),ITVL(IFD),
> ITVL(IFG),ITVL(IT),ITVL(ITM),ITVL(IPERE),
> ITVL(ITPOLY),ITVL(ITRIA),
> ITVL(ITRMIN),
> RTVL(IQTRIA),RTVL(IQMIN),NPMAX,NCMAX,
C > ITRPOL,FCRMIN,QTMIN,iarr)
> ITRPOL,QTMIN,iarr)
C
999 END
					© Cast3M 2003 - Tous droits réservés.
					Mentions légales