com444
C COM444 SOURCE JC220346 16/11/29 21:15:06 9221 C---------------------------------------------------------------------| C | C | C CETTE SUBROUTINE TENTE DE CREER 3 PYRAMIDES | C A PARTIR DES QUADRANGLES IF1, IF2 ET IF3 EN CREANT UN POINT | C CENTRAL SUPPLEMENTAIRE | C - IGAGNE=1 EN CAS DE SUCCES | C - IGAGNE=0 EN CAS D'ECHEC | C | C---------------------------------------------------------------------| C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC TDEMAIT -INC PPARAM -INC CCOPTIO nfcini=nfcmax nptini=nptmax nvini=nvol ICTP=0 C C METTRE LES FACES DANS L'ORDRE IF1=MF1 * WRITE(6,1000)IF1,IF2,IF3 1000 FORMAT(' COM444 IF1=',I5,' IF2=',I5,' IF3=',I5) C ICTF=0 ICTV=0 C C C CREATION DU POINT CENTRAL : IP C ------------------------------ IP1=II ICTP=1 NPTMAX=NPTMAX+1 IP=NPTMAX C DO 100 I=1,4 * XYZ(I,IP)=(XYZ(I,IP1)+XYZ(I,IP2)+XYZ(I,IP3) * # +XYZ(I,IP4))/4. XYZ(I,IP)=(XYZ(I,IP2)+XYZ(I,IP4))/2. 100 CONTINUE JP1=II C DO 102 I=1,4 * XYZ(I,IP)=XYZ(I,IP)+ * # (XYZ(I,JP1)+XYZ(I,JP2)+XYZ(I,JP3)+XYZ(I,JP4))/4. XYZ(I,IP)=XYZ(I,IP)+ # (XYZ(I,JP2)+XYZ(I,JP4))/2. 102 CONTINUE KP1=II C DO 104 I=1,4 * XYZ(I,IP)=(XYZ(I,IP)+ * # (XYZ(I,KP1)+XYZ(I,KP2)+XYZ(I,KP3)+XYZ(I,KP4))/4.)/3. XYZ(I,IP)=(XYZ(I,IP)+ # (XYZ(I,KP2)+XYZ(I,KP4))/2.)/3. 104 CONTINUE DO 103 I=1,3 XYZ(I,IP)=XYZ(I,II)+expcom*(XYZ(I,IP)-XYZ(I,II)) 103 CONTINUE C * WRITE(6,1010)IP,(XYZ(I,IP),I=1,4) 1010 FORMAT(' POINT:',I3,':',4F7.2) C * verif des volumes IF (IVERB.EQ.1) write (6,*) ' com444 volume positif ' nptmax=nptini return endif IF (IOK.EQ.0) THEN NPTMAX=nptini RETURN ICTP=0 NPTMAX=NPTMAX-1 IP=JP IF (IVERB.EQ.1) WRITE (6,*) ' COM444 POINT ASSIMILE ',JP ENDIF IF (REPONS) GOTO 110 * write (6,*) ' repons faux' NPTMAX=nptini RETURN C 110 CONTINUE C C CREATION D'UNE PYRAMIDE : IF1+IP C -------------------------------- * recherche existence de la face * IF (jf1.ne.0) write (6,*) ' tetra facette assimilee' IF (jf1.eq.0) THEN nfcmax=nfcmax+1 jf1=nfcmax NFC(1,jf1)=ip NFC(2,jf1)=ii NFC(3,jf1)=ip1 NFC(4,jf1)=0 jf1=0 endif * write (6,*) ' com444 jf1 passe ',jf1 C * recherche existence de la face * IF (jf2.ne.0) write (6,*) ' com444 facette assimilee' IF (jf2.eq.0) THEN nfcmax=nfcmax+1 jf2=nfcmax NFC(1,jf2)=ip NFC(2,jf2)=ip1 NFC(3,jf2)=ip2 NFC(4,jf2)=0 jf2=0 endif * write (6,*) ' com444 jf2 passe ',jf2 C * recherche existence de la face * IF (jf3.ne.0) write (6,*) ' com444 facette assimilee' IF (jf3.eq.0) THEN nfcmax=nfcmax+1 jf3=nfcmax NFC(1,jf3)=ip NFC(2,jf3)=ip2 NFC(3,jf3)=ip3 NFC(4,jf3)=0 jf3=0 endif * write (6,*) ' com444 jf3 passe ',jf3 C * recherche existence de la face * IF (jf4.ne.0) write (6,*) ' com444 facette assimilee' IF (jf4.eq.0) THEN nfcmax=nfcmax+1 jf4=nfcmax NFC(1,jf4)=ip NFC(2,jf4)=ip3 NFC(3,jf4)=ii NFC(4,jf4)=0 jf4=0 endif * write (6,*) ' com444 jf4 passe ',jf4 C jf4=0 jf1=0 endif jf1=0 jf2=0 endif jf2=0 jf3=0 endif jf3=0 jf4=0 endif if (jf1*jf2*jf3*jf4.eq.0) then * write (6,*) 'com444 impossibilite ' nfcmax=nfcini jf1=0 jf2=0 jf3=0 jf4=0 goto 131 endif C C LE VOLUME CREE EST-IL VALIDE ? C ------------------------------ goto 130 C C LE VOLUME EST INVALIDE C ---------------------- 129 continue * write (6,*) ' solpyr 1 invalide' NFCMAX=NFCini jf1=0 jf2=0 jf3=0 jf4=0 goto 131 C 130 CONTINUE C C MEMORISATION DU VOLUME OBTENU : IF1, JF1, JF2, JF3 ET JF4 C --------------------------------------------------------- ICTV=ICTV+1 NVOL=NVOL+1 IF (NFV(1,IF1).EQ.0) NFV(1,IF1)=NVOL IF (NFV(1,IF1).NE.NVOL) NFV(2,IF1)=NVOL IF (NFV(1,JF1).EQ.0) NFV(1,JF1)=NVOL IF (NFV(1,JF1).NE.NVOL) NFV(2,JF1)=NVOL IF (NFV(1,JF2).EQ.0) NFV(1,JF2)=NVOL IF (NFV(1,JF2).NE.NVOL) NFV(2,JF2)=NVOL IF (NFV(1,JF3).EQ.0) NFV(1,JF3)=NVOL IF (NFV(1,JF3).NE.NVOL) NFV(1,JF3)=NVOL IF (NFV(1,JF4).EQ.0) NFV(1,JF4)=NVOL IF (NFV(1,JF4).NE.NVOL) NFV(2,JF4)=NVOL IVOL(9,NVOL)=35 C DO 140 I=1,4 IVOL(I,NVOL)=NFC(I,IF1) 140 CONTINUE IVOL(5,NVOL)=IP *C * WRITE(6,1100)NVOL,(IVOL(I,NVOL),I=1,9) *1100 FORMAT(I4,4X,14I4) if (iimpi.eq.1) write (6,1100) nfacet,(ivol(i,nvol),i=1,5) 1100 FORMAT(' COM444-1 facettes ',i5,' PYR5 ',8i5) *C * DO 150 J=1,NPTMAX * WRITE(6,1110)J,(NPF(I,J),I=1,40) *1110 FORMAT(I4,4X,40I3) *150 CONTINUE C PV INC C 131 continue nfcini=nfcmax C 2EME VOLUME : IF2+IP C -------------------- C * recherche existence de la face * IF (kf1.ne.0) write (6,*) ' com444 facette assimilee' IF (kf1.eq.0) THEN nfcmax=nfcmax+1 kf1=nfcmax NFC(1,kf1)=ip NFC(2,kf1)=ii NFC(3,kf1)=ip1 NFC(4,kf1)=0 kf1=0 endif * write (6,*) ' com444 kf1 passe ',kf1 C * recherche existence de la face * IF (kf2.ne.0) write (6,*) ' com444 facette assimilee' IF (kf2.eq.0) THEN nfcmax=nfcmax+1 kf2=nfcmax NFC(1,kf2)=ip NFC(2,kf2)=ip1 NFC(3,kf2)=ip2 NFC(4,kf2)=0 kf2=0 endif * write (6,*) ' com444 kf2 passe ',kf2 C * recherche existence de la face * IF (kf3.ne.0) write (6,*) ' com444 facette assimilee' IF (kf3.eq.0) THEN nfcmax=nfcmax+1 kf3=nfcmax NFC(1,kf3)=ip NFC(2,kf3)=ip2 NFC(3,kf3)=ip3 NFC(4,kf3)=0 kf3=0 endif * write (6,*) ' com444 kf3 passe ',kf3 C C ON RETOMBE SUR JF1 (si on ne l'a pas detruit) if (jf1.ne.0) KF4=JF1 * IF (kf4.ne.0) write (6,*) ' com444 facette deja existante' IF (kf4.eq.0) THEN nfcmax=nfcmax+1 kf4=nfcmax NFC(1,kf4)=ip NFC(2,kf4)=ip3 NFC(3,kf4)=ii NFC(4,kf4)=0 kf4=0 endif * write (6,*) ' com444 kf4 passe ',kf4 C C kf4=0 kf1=0 endif kf1=0 kf2=0 endif kf2=0 kf3=0 endif kf3=0 kf4=0 endif if (kf1*kf2*kf3*kf4.eq.0) then * write (6,*) 'com444 impossibilite ' nfcmax=nfcini kf1=0 kf2=0 kf3=0 kf4=0 goto 161 endif C C LE VOLUME CREE EST-IL VALIDE ? C ------------------------------ goto 170 C 160 CONTINUE C * write (6,*) ' solpyr 2 invalide' NFCMAX=NFCini kf1=0 kf2=0 kf3=0 kf4=0 goto 161 C 170 CONTINUE C C MEMORISATION DU VOLUME IF2, LF1, KF2, KF3 ET LF4 C ------------------------------------------------ ICTV=ICTV+1 NVOL=NVOL+1 IF (NFV(1,IF2).EQ.0) NFV(1,IF2)=NVOL IF (NFV(1,IF2).NE.NVOL) NFV(2,IF2)=NVOL IF (NFV(1,KF1).EQ.0) NFV(1,KF1)=NVOL IF (NFV(1,KF1).NE.NVOL) NFV(2,KF1)=NVOL IF (NFV(1,KF2).EQ.0) NFV(1,KF2)=NVOL IF (NFV(1,KF2).NE.NVOL) NFV(2,KF2)=NVOL IF (NFV(1,KF3).EQ.0) NFV(1,KF3)=NVOL IF (NFV(1,KF3).NE.NVOL) NFV(1,KF3)=NVOL IF (NFV(1,KF4).EQ.0) NFV(1,KF4)=NVOL IF (NFV(1,KF4).NE.NVOL) NFV(2,KF4)=NVOL IVOL(9,NVOL)=35 C DO 180 I=1,4 IVOL(I,NVOL)=NFC(I,IF2) 180 CONTINUE IVOL(5,NVOL)=IP * WRITE(6,1180)NVOL,(IVOL(I,NVOL),I=1,9) *1180 FORMAT(I4,4X,14I4) if (iimpi.eq.1) write (6,1180) nfacet,(ivol(i,nvol),i=1,5) 1180 FORMAT(' COM444-2 facettes ',i5,' PYR5 ',8i5) *C * DO 190 J=1,NPTMAX * WRITE(6,1190)J,(NPF(I,J),I=1,40) *1190 FORMAT(I4,4X,40I3) *190 CONTINUE C 161 continue nfcini=nfcmax C C 3EME VOLUME : IF3+IP C -------------------- C C ON RETOMBE SUR JF4 (si on ne l'a pas detruit) C if (jf4.ne.0) lf1=jf4 * IF (lf1.ne.0) write (6,*) ' com444 facette deja existante' IF (lf1.eq.0) THEN nfcmax=nfcmax+1 lf1=nfcmax NFC(1,lf1)=ip NFC(2,lf1)=ii NFC(3,lf1)=ip1 NFC(4,lf1)=0 lf1=0 endif * write (6,*) ' com444 kf4 passe ',lf1 C C * recherche existence de la face * IF (lf2.ne.0) write (6,*) ' com444 facette assimilee' IF (lf2.eq.0) THEN nfcmax=nfcmax+1 lf2=nfcmax NFC(1,lf2)=ip NFC(2,lf2)=ip1 NFC(3,lf2)=ip2 NFC(4,lf2)=0 lf2=0 endif * write (6,*) ' com444 lf2 passe ',lf2 C * recherche existence de la face * IF (lf3.ne.0) write (6,*) ' com444 facette assimilee' IF (lf3.eq.0) THEN nfcmax=nfcmax+1 lf3=nfcmax NFC(1,lf3)=ip NFC(2,lf3)=ip2 NFC(3,lf3)=ip3 NFC(4,lf3)=0 lf3=0 endif * write (6,*) ' com444 lf3 passe ',lf3 C C ON RETOMBE SUR KF1 (si on ne l'a pas detruit) C if (kf1.ne.0) lf4=kf1 * IF (lf4.ne.0) write (6,*) ' com444 facette deja existante' IF (lf4.eq.0) THEN nfcmax=nfcmax+1 lf4=nfcmax NFC(1,lf4)=ip NFC(2,lf4)=ip3 NFC(3,lf4)=ii NFC(4,lf4)=0 lf4=0 endif if (NFC(4,lf4).ne.0) lf4=0 * write (6,*) ' com444 lf4 passe ',lf4 C lf4=0 lf1=0 endif lf1=0 lf2=0 endif lf2=0 lf3=0 endif lf3=0 lf4=0 endif if (lf1*lf2*lf3*lf4.eq.0) then * write (6,*) 'com444 impossibilite ' NFCMAX=NFCini goto 201 endif C C C C LE VOLUME CREE EST-IL VALIDE ? C ------------------------------ GOTO 210 C 200 CONTINUE IF (IVERB.EQ.1) write (6,*) ' solpyr 3 invalide' C NFCMAX=NFCini goto 201 C 210 CONTINUE C C MEMORISATION DU VOLUME IF3, JF2, KF1, LF1 ET LF2 C ------------------------------------------------ ICTV=ICTV+1 NVOL=NVOL+1 IF (NFV(1,IF3).EQ.0) NFV(1,IF3)=NVOL IF (NFV(1,IF3).NE.NVOL) NFV(2,IF3)=NVOL IF (NFV(1,LF1).EQ.0) NFV(1,LF1)=NVOL IF (NFV(1,LF1).NE.NVOL) NFV(2,LF1)=NVOL IF (NFV(1,LF2).EQ.0) NFV(1,LF2)=NVOL IF (NFV(1,LF2).NE.NVOL) NFV(2,LF2)=NVOL IF (NFV(1,LF3).EQ.0) NFV(1,LF3)=NVOL IF (NFV(1,LF3).NE.NVOL) NFV(2,LF3)=NVOL IF (NFV(1,LF4).EQ.0) NFV(1,LF4)=NVOL IF (NFV(1,LF4).NE.NVOL) NFV(2,LF4)=NVOL IVOL(9,NVOL)=35 C DO 220 I=1,4 IVOL(I,NVOL)=NFC(I,IF3) 220 CONTINUE IVOL(5,NVOL)=IP * WRITE(6,1240)NVOL,(IVOL(I,NVOL),I=1,9) *1240 FORMAT(I4,4X,14I4) if (iimpi.eq.1) write (6,1240) nfacet,(ivol(i,nvol),i=1,5) 1240 FORMAT(' COM444-3 facettes ',i5,' PYR5 ',8i5) C * DO 230 J=1,NPTMAX * WRITE(6,1250)J,(NPF(I,J),I=1,40) *1250 FORMAT(I4,4X,40I3) *230 CONTINUE C 201 continue if (nvol.eq.nvini) then nptmax=nptini return endif C 290 CONTINUE C * if (iimpi.ne.0) write (6,*) ' comm444 point ',nptmax IGAGNE=1 * CALL CONS33(IPRED(JF3,IP),IP,JF3,LF2,IGAG,1) * CALL CONS33(IPRED(KF3,IP),IP,KF3,JF2,IGAG,1) * CALL CONS33(IPRED(LF3,IP),IP,LF3,KF2,IGAG,1) RETURN C C FIN DE LA SUBROUTINE C4443 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales