quesuq
C QUESUQ SOURCE OF166741 24/10/03 21:15:38 12022 $ 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 c* SEGACT MCHELM NSOUS = ICHAML(/1) N3 = INFCHE(/2) IF (N3.NE.6) THEN write(ioimp,*) 'QUESUQ : N3 = INFCHE(/2) != 6' ENDIF c* CAS NSOUS = 0 - MCHELM VIDE ? 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) c* 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 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 ISUP1 = INFCHE(1,6) IRET2 = ISUP1 IF (ICONST.EQ.1) GOTO 666 * IFLAG=0 * * CAS ISUP = 0 * ------------ * IF(ISUP.EQ.0)THEN ISUP1=INFCHE(1,6) MINTE1=INFCHE(1,4) IF (MINTE1.NE.0) NBPGA1=MINTE1.POIGAU(/1) DO 1 ISOUS=1,NSOUS IF (ITEST(ISOUS).EQ.0) GOTO 1 MINTE=INFCHE(ISOUS,4) INFCH=INFCHE(ISOUS,6) IF (MINTE.EQ.0) GOTO 1 IF (INFCH.EQ.1) GOTO 1 IF (INFCH.NE.ISUP1) THEN NBPGAU=POIGAU(/1) IF(NBPGAU.EQ.NBPGA1)THEN IFLAG=IFLAG+1 ELSE GOTO 2000 ENDIF ELSE IFLAG=IFLAG+1 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 * INFCH=INFCHE(ISOUS,6) IF (INFCH.EQ.1) GOTO 2 IF (INFCH.NE.ISUP1) THEN IF(ISUP1.EQ.6)THEN ELSE IPMIN1=INFMOD(lesupp+2) ENDIF MINTE=INFCHE(ISOUS,4) MINTE1=IPMIN1 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 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 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales