sensi1
C SENSI1 SOURCE OF166741 24/10/03 21:15:40 12022 * * BOUCLE SUR LES SOUS ZONES (1 SEUL ELEMENT PAR SOUS ZONE ) * LELEU DIDIER HAZE FREDERIC * 03/03/93 * EXTRAIT DE ADCHEL.ESO * * * ENTREE : * -------- * IPCHE1 POINTEUR SUR LE PREMIER CHAMP (TYPE MCHAML) * IPCHE2 POINTEUR SUR LE DEUXIEME CHAMP (TYPE MCHALM) * * SORTIE : * ________ * * MTAB1 POINTEUR SUR LA TABLE DERIVEES (TYPE TABLE) * = 0 SI L OPERATION EST IMPOSSIBLE * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO REAL*8 MOYS,A CHARACTER*2 B LOGICAL C -INC SMCHAML -INC SMTABLE SEGMENT MZONG INTEGER NZONG(0) ENDSEGMENT * SEGMENT MZON1 INTEGER NZON1(0) ENDSEGMENT * SEGMENT MZON2 INTEGER NZON2(0) ENDSEGMENT * SEGMENT ITAFF INTEGER JTAFF(0) ENDSEGMENT * SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT * PARAMETER ( NINF=3 ) INTEGER INFOS(NINF) CHARACTER*72 MOT CHARACTER*16 CONCH1,CONCH2 * A=0.D0 B=' ' C=.FALSE. IOBIN=0 IVALRE=0 IB=0 MCHEL1=IPCHE1 MCHEL2=IPCHE2 SEGACT MCHEL1 SEGACT MCHEL2 * L1=MCHEL1.TITCHE(/1) MOT=MCHEL1.TITCHE IF (MOT.EQ.'NOEUD'.OR.MOT.EQ.'GRAVITE'.OR.MOT.EQ.'RIGIDITE'. & OR.MOT.EQ.'MASSE'.OR.MOT.EQ.'STRESSES'. & OR.MOT.EQ.'SCALAIRE') THEN MOT=MCHEL2.TITCHE L1=MCHEL2.TITCHE(/1) ENDIF N3=MCHEL1.INFCHE(/2) NSOUS1=MCHEL1.ICHAML(/1) NSOUS2=MCHEL2.ICHAML(/1) * * QUELLES BIJECTIONS ENTRE LES SOUS PAQUETS SI OUI TRAITEMENT AMELIORE * * SEGINI ITAFF DO 17 ISOUS1=1,NSOUS1 IPMAI1 = MCHEL1.IMACHE(ISOUS1) CONCH1 = MCHEL1.CONCHE(ISOUS1) DO 18 ISOUS2=1,NSOUS2 ISOUS=ISOUS2 IPMAI2= MCHEL2.IMACHE(ISOUS) CONCH2= MCHEL2.CONCHE(ISOUS) IF(IPMAI1.EQ.IPMAI2.AND.CONCH1.EQ.CONCH2) THEN * * VERIFICATION POUR LES INFCHE * IF (IRTD.EQ.0) GOTO 18 IMINT1=MCHEL1.INFCHE(ISOUS1,4) IMINT2=MCHEL2.INFCHE(ISOUS2,4) IF (IMINT1.EQ.IMINT2) GOTO 171 IMINT1=MCHEL1.INFCHE(ISOUS1,6) IMINT2=MCHEL2.INFCHE(ISOUS2,6) IF (IMINT1.EQ.IMINT2) GOTO 171 * * ERREUR IMPOSSIBLE D ADDITIONNER DES CHPS/ELMTS * DE SS TYPE DIFFERENTS * MOTERR(1:8)=MCHEL1.TITCHE MOTERR(9:16)=MCHEL2.TITCHE SEGDES MCHEL1,MCHEL2 SEGSUP ITAFF IPCHAD=0 RETURN ENDIF 18 CONTINUE SEGSUP ITAFF GOTO 4000 * 171 CONTINUE JTAFF(**)=MCHEL2.ICHAML(ISOUS) 17 CONTINUE * * ON A TROUVE UNE BIJECTION ET ON VECTORISE * N1=NSOUS1 SEGINI MCHELM TITCHE=MOT IFOCHE=IFOUR M=NSOUS1+1 SEGINI MTABLE MLOTAB=0 DO 400 ISOUS=1,NSOUS1 IMACHE(ISOUS)=MCHEL1.IMACHE(ISOUS) CONCHE(ISOUS)=MCHEL1.CONCHE(ISOUS) DO 401 N33=1,N3 INFCHE(ISOUS,N33)=MCHEL1.INFCHE(ISOUS,N33) 401 CONTINUE * MCHAM1=MCHEL1.ICHAML(ISOUS) * SEGINI,MCHAML=MCHAM1 ICHAML(ISOUS)=MCHAML IPCHA=MCHAML * MCHAM2=JTAFF(ISOUS) SEGACT MCHAM2 IPCHA2=MCHAM2 * & ,IOBIN,'FLOTTANT',IB,MOYS,B, & C,IOBIN) * MOYS=0.D0 IF (IPCHA.EQ.0) THEN SEGSUP ITAFF GOTO 9990 ENDIF * SEGDES MCHAML,MCHAM2 400 CONTINUE MTAB1=MTABLE SEGDES MCHEL1,MCHEL2 SEGSUP ITAFF SEGDES MCHELM GOTO 666 *_______________________________________________________________________ * * ON A PAS TROUVE DE BIJECTION *_______________________________________________________________________ * 4000 CONTINUE SEGINI MZONG,MZON1,MZON2 DO 500 ISOUS1=1,NSOUS1 NZONG(**)=MCHEL1.IMACHE(ISOUS1) NZON1(**)=ISOUS1 NZON2(**)=0 500 CONTINUE IWRN=0 DO 510 ISOUS2=1,NSOUS2 IPMAI2 = MCHEL2.IMACHE(ISOUS2) CONCH2 = MCHEL2.CONCHE(ISOUS2) DO 520 ISOUS1=1,NSOUS1 IPMAI1= MCHEL1.IMACHE(ISOUS1) CONCH1= MCHEL1.CONCHE(ISOUS1) IF(IPMAI1.EQ.IPMAI2 .AND.CONCH1.EQ.CONCH2) THEN IF (IRTD.EQ.0) GOTO 520 * * VERIFICATION POUR LES MINTES * IF ( MCHEL1.INFCHE(ISOUS1,4).EQ. & MCHEL2.INFCHE(ISOUS2,4) ) GOTO 530 * * ERREUR SUR LES SUPPORTS DES MCHAML * MOTERR(1:8)=MCHEL1.TITCHE MOTERR(9:16)=MCHEL2.TITCHE IPCHAD=0 SEGDES MCHEL1,MCHEL2 SEGSUP MZONG,MZON1,MZON2 RETURN * ENDIF 520 CONTINUE IWRN=1 NZONG(**)=IPMAI2 NZON1(**)=0 NZON2(**)=ISOUS2 GOTO 510 * 530 CONTINUE NZON2(ISOUS1)=ISOUS2 510 CONTINUE * * WARNING LES SOUS ZONES GEOMETRIQUES NE SE CORRESPONDENT PAS 2 A 2 * NSOUS=NZONG(/1) N1=NSOUS SEGINI MCHELM TITCHE=MOT IFOCHE=IFOUR IPCHAD=MCHELM * DO 540 ISOUS=1,NSOUS IF(NZON1(ISOUS).NE.0.AND.NZON2(ISOUS).NE.0) GOTO 550 * IF(NZON1(ISOUS).NE.0) THEN MCHAM1=MCHEL1.ICHAML( NZON1(ISOUS) ) SEGINI,MCHAML=MCHAM1 IMACHE(ISOUS)=NZONG(ISOUS) CONCHE(ISOUS)=MCHEL1.CONCHE( NZON1(ISOUS) ) DO 402 N33=1,N3 INFCHE(ISOUS,N33)=MCHEL1.INFCHE(NZON1(ISOUS),N33) 402 CONTINUE * ENDIF IF(NZON2(ISOUS).NE.0) THEN MCHAM2=MCHEL2.ICHAML( NZON2(ISOUS) ) SEGINI,MCHAML=MCHAM2 IMACHE(ISOUS)=NZONG(ISOUS) CONCHE(ISOUS)=MCHEL2.CONCHE( NZON2(ISOUS) ) DO 403 N33=1,N3 INFCHE(ISOUS,N33)=MCHEL2.INFCHE(NZON2(ISOUS),N33) 403 CONTINUE * ENDIF ICHAML(ISOUS)=MCHAML * DO 175 ICOMP=1,IELVAL(/1) MELVA1=IELVAL(ICOMP) SEGINI,MELVAL=MELVA1 IELVAL(ICOMP)=MELVAL SEGDES MELVAL 175 CONTINUE SEGDES MCHAML * GOTO 540 * 550 CONTINUE MCHAM1=MCHEL1.ICHAML( NZON1(ISOUS) ) SEGINI,MCHAML=MCHAM1 IMACHE(ISOUS)=NZONG(ISOUS) CONCHE(ISOUS)=MCHEL1.CONCHE( NZON1(ISOUS) ) DO 404 N33=1,N3 INFCHE(ISOUS,N33)=MCHEL1.INFCHE(NZON1(ISOUS),N33) 404 CONTINUE ICHAML(ISOUS)=MCHAML IPCHA=MCHAML MCHAM2=MCHEL2.ICHAML( NZON2(ISOUS) ) SEGACT MCHAM2 IPCHA2=MCHAM2 * IF (IPCHA.EQ.0) THEN SEGSUP MZONG,MZON1,MZON2 GOTO 9990 ENDIF * SEGDES MCHAML,MCHAM2 540 CONTINUE SEGDES MCHELM * SEGSUP MZONG,MZON1,MZON2 GOTO 666 * 9990 CONTINUE * * ERREUR DANS UNE SOUS ZONE : DESACTIVATION ET RETOUR * SEGDES MCHEL1,MCHEL2,MCHAM2 SEGSUP MCHAML,MCHELM,ITAFF IPCHAD=0 RETURN * 666 CONTINUE SEGDES MCHEL1,MCHEL2 777 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales