quesuq
C QUESUQ SOURCE CB215821 24/04/12 21:17:01 11897 $ IRET2) *______________________________________________________________________ * * VERIFICATION DU LIEU SUPPORT DES MCHAML * * IPMODE POINTEUR SUR UNE ZONE ELEMENTAIRE DU MODELE * ACTIF EN ENTREE ACTIF EN SORTIE * IPCHE1 POINTEUR SUR LE MCHAML DONT ON SOUHAITE VERIFIER LE SUPPORT * DE CERTAINES COMPOSANTES * (LIEU DU MINTE) * ISUP > 0 : * * ISUP = 1 ON SOUHAITE QUE IPCHE1 SOIT AUX NOEUDS * = 2 ON SOUHAITE QUE IPCHE1 SOIT AUX CENTRE DE GRAVITE * = 3 ON SOUHAITE QUE IPCHE1 SOIT AUX POINTS DE GAUSS POUR * LA RIGIDITE * = 4 ON SOUHAITE QUE IPCHE1 SOIT AUX POINTS DE GAUSS POUR * LA MASSE * = 5 ON SOUHAITE QUE IPCHE1 SOIT AUX POINTS DE GAUSS POUR * LES CONTRAINTES * ISUP = 0 ON VEUDRAIT CONNAITRE LE SUPPORT * * ICOND = 0 SI LE MCHAML PEUT ETRE SUR LE SUPPORT DEMANDE OU AUX * NOEUDS(UTILISE UNIQUEMENT QUAND ISUP >0) * 1 SI LE MCHAML DOIT ETRE IMPERATIVEMENT SUR LE SUPPORT * VOULU (CAS NOTAMENT DES MATRICE DE HOOKES ET DES * DES MATRICES DE HOOKES TANGENTES) * * MOMOT : POINTEUR SUR SEGMENT DES NOMS DES COMPOSANTES A EXAMINER * ACTIF EN ENTREE ACTIF EN SORTIE * * IPINF : POINTEUR SUR SEGMENT INFO * * * DANS LE CAS ISUP > 0 * * IRET = 1 IPCHE1 SE TROUVE AUX NOEUDS * = 0 IPCHE1 EST BIEN SUR LE SUPPORT DEMANDE * = 9999 LE SUPPORT DE UNE OU PLUSIEURS SOUS ZONE N'EST * PAS LE BON * DANS LE CAS ISUP = 0 * * IRET > 0 IL DONNE LE NUMERO DU SUPPORT * = 0 LE CHAMP EST CONSTANT * = 9999 LE CHAMELEM N'EST PAS HOMOGENE AU NIVEAU SUPPORT * * * IRET2 > 0 IL DONNE LE NUMERO DU SUPPORT * = 9999 LE CHAMELEM N'EST PAS HOMOGENE AU NIVEAU SUPPORT * * REMARQUE : SI IPCHE1 EST AUX NOEUDS LE PASSAGE DES VALEURS SUR LE * SUPPORT VOULU SE FAIT DANS VALCHE ET/OU VALMEL SAUF DANS * LE CAS DES MATRICE DE HOOKES * * * INSPIRE DE QUESUP *_______________________________________________________________________ * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMCHAML -INC SMINTE -INC SMMODEL SEGMENT/MTEST/(ITEST(NTEST)) * CHARACTER*16 CONCH * IRET=0 IRET2=0 ICONST=1 * NOMID = MOMOT NBROBL = LESOBL(/2) NBRFAC = LESFAC(/2) * MCHELM=IPCHE1 SEGACT MCHELM NSOUS=ICHAML(/1) NTEST=NSOUS SEGINI,MTEST * * si le chamelem est constant sur l'element quelque soit le * support demande on est bon * DO 10 ISOUS=1,NSOUS MCHAML=ICHAML(ISOUS) SEGACT MCHAML NCOMP=IELVAL(/1) DO 20 ICOMP=1,NCOMP * * TEST SUR LES NOMS DE COMPOSANTES * JELAI=0 DO 21 ICOCO=1,NBROBL IF(NOMCHE(ICOMP).EQ.LESOBL(ICOCO)) JELAI=1 21 CONTINUE IF(JELAI.EQ.0) THEN DO 22 ICOCO=1,NBRFAC IF(NOMCHE(ICOMP).EQ.LESFAC(ICOCO)) JELAI=1 22 CONTINUE ENDIF IF(JELAI.EQ.0) GO TO 20 ITEST(ISOUS)=MAX(ITEST(ISOUS),JELAI) * MELVAL=IELVAL(ICOMP) IF(MELVAL.NE.0)THEN SEGACT MELVAL IF(TYPCHE(ICOMP)(1:8).NE.'POINTEUR')THEN IPOIN=VELCHE(/1) ELSE IPOIN=IELCHE(/1) ENDIF IF(IPOIN.NE.1)THEN ICONST=0 GOTO 500 ENDIF ENDIF 20 CONTINUE 10 CONTINUE * 500 CONTINUE N3=INFCHE(/2) IF (N3.LT.4) GOTO 1000 IF(N3.GE.6) THEN ISUP1=INFCHE(1,6) IRET2=ISUP1 IF (ICONST.EQ.1) GOTO 666 ELSE GOTO 3000 ENDIF * IFLAG=0 * * CAS ISUP = 0 * ------------ * IF(ISUP.EQ.0)THEN IF(N3.GE.6)ISUP1=INFCHE(1,6) DO 1 ISOUS=1,NSOUS IF (INFCHE(ISOUS,4).EQ.0) GOTO 1 IF (ITEST(ISOUS).EQ.0) GOTO 1 IF (N3.GE.6) THEN INFCH=INFCHE(ISOUS,6) IF (INFCH.EQ.1) GOTO 1 IF (INFCH.NE.ISUP1) THEN MINTE=INFCHE(1,4) MINTE1=INFCHE(ISOUS,4) SEGACT MINTE SEGACT MINTE1 NBPGAU=POIGAU(/1) NBPGA1=MINTE1.POIGAU(/1) IF(NBPGAU.EQ.NBPGA1)THEN IFLAG=IFLAG+1 ELSE GOTO 2000 ENDIF ELSE IFLAG=IFLAG+1 ENDIF ELSE GOTO 3000 ENDIF 1 CONTINUE * * TOUTES LES SOUS ZONES DOIVENT ETRE SUR LE BON SUPPORT * IF (IFLAG.EQ.0) GOTO 1000 IF (IFLAG.EQ.NSOUS) THEN IF(ISUP.EQ.0) THEN IRET=ISUP1 IRET2=ISUP1 ENDIF GOTO 666 ELSE GOTO 2000 ENDIF * * CAS ISUP > 0 * ------------ * DANS CE CAS CE SONT LES ZONES DU MODELE QUI PILOTENT * ELSE ISUP1=ISUP * * ETUDE DE LA SOUS ZONE DU MODELE * IMODEL=IPMODE MELE=NEFMOD * * BOUCLE SUR LES ZONES DU CHAMELEM * DO 2 ISOUS=1,NSOUS CONCH=CONCHE(ISOUS) IPMAIL=IMACHE(ISOUS) IF(IMAMOD.NE.IPMAIL.OR.CONCH.NE.CONMOD)GOTO 2 IF (INFCHE(ISOUS,4).EQ.0) GOTO 2 IF (ITEST(ISOUS).EQ.0) GOTO 2 * IF (N3.GE.6) THEN INFCH=INFCHE(ISOUS,6) IF (INFCH.EQ.1) GOTO 2 IF (INFCH.NE.ISUP1) THEN IF(ISUP1.EQ.6)THEN ELSE * INFO=IPINF IPMIN1=INFMOD(lesupp+2) ENDIF MINTE=INFCHE(ISOUS,4) MINTE1=IPMIN1 SEGACT MINTE SEGACT MINTE1 NBPGAU=POIGAU(/1) NBPGA1=MINTE1.POIGAU(/1) IF(NBPGAU.EQ.NBPGA1)THEN IRT=1 ELSE IRT=0 ENDIF IF(IRT.EQ.1)THEN IFLAG=IFLAG+1 ELSE GOTO 2000 ENDIF ELSE IFLAG=IFLAG+1 ENDIF ELSE GOTO 3000 ENDIF 2 CONTINUE * * LA SOUS-ZONE DOIT ETRE SUR LE BON SUPPORT * IF (IFLAG.EQ.0) GOTO 1000 IF (IFLAG.EQ.1) THEN IF(ISUP.EQ.0) THEN IRET=ISUP1 IRET2=ISUP1 ENDIF GOTO 666 ELSE GOTO 2000 ENDIF ENDIF * 1000 CONTINUE * * IPCHE1 EST AUX NOEUDS * IRET=1 IF (ISUP.EQ.1) IRET=0 IF (ICOND.EQ.1.AND.IRET.EQ.1.AND.ISUP.NE.0) GOTO 2000 GOTO 666 * 2000 CONTINUE * IF(ISUP.NE.0)THEN * * IPCHE1 EST SUR UN AUTRE SUPPORT QUE CELUI VOULU ET PAS AUX NOEUDS * * ==> MESSAGE D'ERREUR POUR QUE L'ON DONNE LE CHAMELEM SUR UN * SUPPORT CORRECT * MOTERR(1:8)=TITCHE ELSE * * LES DIFFERENTS SOUS-ZONES DU CHAMELEM ONT DES POINTS SUPPORTS DIFFERENTS * ENDIF IRET=9999 IRET2=9999 RETURN * 3000 CONTINUE * * IPCHE1 A UN POINTEUR SUR UN MINTE <> 0 MAIS L'INFCHE(..,6) * N'EST PAS RENSEIGNE (NE DOIT PAS ARRIVE NORMALEMENT) * IRET=9999 IRET2=9999 * 666 CONTINUE SEGSUP,MTEST END
© Cast3M 2003 - Tous droits réservés.
Mentions légales