C NORMA5 SOURCE CHAT 05/01/13 02:00:08 5004 SUBROUTINE NORMA5(ITBAS,IPLMOT,MOTCLE,IFLUI,COEFP,COEFPI) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) ************************************************************************ * * N O R M A 5 * ----------- * * FONCTION: * --------- * * NORMER UNE 'TABLE' EN RAMENANT SA PLUS GRANDE VALEUR A 1 * ON NE CREE PAS UNE NOUVELL TABLE. LA NORMALISATION EST FAITE * SUR LES CHAMPS DE DEPLACEMENT UNIQUEMENT. * * MODE D'APPEL: * ------------- * * CALL NORMA5 (ITBAS,IPLMOT,MOTCLE,IFLUI,COEFP,COEFPI) * * ARGUMENTS: (E)=ENTREE (S)=SORTIE * ---------- * * ITBAS ENTIER (E) POINTEUR SUR L'OBJET 'TABLE' A NORMER. * IPLMOT ENTIER (E) VOIR LE S.P. "MAXIM1". * MOTCLE CHARACTER (E) VOIR LE S.P. "MAXIM1". * IFLUI ENTIER (E) IL Y A DES COEF POUR P ET PI (0 SINON) * COEFP REEL (E) COEFFICIENT A APPLIQUER A LA COMPOSANTE P * COEFPI REEL (E) COEFFICIENT A APPLIQUER A LA COMPOSANTE PI * * SOUS-PROGRAMMES APPELES: * ------------------------ * * NORMA3 * * AUTEUR, DATE DE CREATION: * ------------------------- * * LIONEL VIVAN 2 AOUT 90 * * LANGAGE: * -------- * * ESOPE + FORTRAN77 * ************************************************************************ * -INC CCOPTIO -INC SMTABLE * SEGMENT/MTEMP2/ (MAXSOU,MAXN,MAXNC) * (REMPLI DANS LE S.P. "MAXIM1") CHARACTER*4 MOTCLE CHARACTER*8 TYPRET,CHARRE LOGICAL L0,L1 * SEGINI MTEMP2 ITEMP2 = MTEMP2 * IM = 0 10 CONTINUE IM = IM + 1 TYPRET = ' ' CALL ACCTAB(ITBAS,'ENTIER',IM,X0,' ',L0,IP0, & TYPRET,I1,X1,CHARRE,L1,ITMOD) IF (ITMOD.NE.0 .AND. TYPRET.EQ.'TABLE ') THEN CALL ACCTAB(ITMOD,'MOT',I0,X0,'DEFORMEE_MODALE',L0,IP0, & 'CHPOINT',I1,X1,' ',L1,ICHPOI) CALL NORMA3(ICHPOI,IPLMOT,MOTCLE,IFLUI,COEFP,COEFPI, & ITEMP2,PGRAND) IF (IERR.NE.0) RETURN CALL ECCTAB(ITMOD,'MOT',I0,X0,'DEFORMEE_MODALE',L0,IP0, & 'CHPOINT',I1,X1,' ',L1,ICHPOI) * CALL ACCTAB(ITMOD,'MOT',I0,X0,'MASSE_GENERALISEE',L0,IP0, & 'FLOTTANT',I1,XMGEN,' ',L1,IP1) XMGEN = XMGEN / ( PGRAND * PGRAND ) CALL ECCTAB(ITMOD,'MOT',I0,X0,'MASSE_GENERALISEE',L0,IP0, & 'FLOTTANT',I1,XMGEN,' ',L1,IP1) * CALL ACCTAB(ITMOD,'MOT',I0,X0,'DEPLACEMENTS_GENERALISES',L0, & IP0,'TABLE',I1,X1,' ',L1,ITDG) DO 12 IN = 1,3 CALL ACCTAB(ITDG,'ENTIER',IN,X0,' ',L0,IP0, & 'FLOTTANT',I1,XQ,' ',L1,IP1) XQ = XQ / PGRAND CALL ECCTAB(ITDG,'ENTIER',IN,X0,' ',L0,IP0, & 'FLOTTANT',I1,XQ,' ',L1,IP1) 12 CONTINUE TYPRET = ' ' CALL ACCTAB(ITMOD,'MOT',I0,X0,'CONTRAINTE_MODALE',L0,IP0, & TYPRET,I1,X1,CHARRE,L1,ICHML) IF (ICHML.NE.0 .AND. TYPRET.EQ.'MCHAML ') THEN CALL MUCHEL (ICHML,PGRAND,ICHML2,-1) CALL ECCTAB(ITMOD,'MOT',I0,X0,'CONTRAINTE_MODALE',L0,IP0, & 'MCHAML',I1,X1,' ',L1,ICHML2) ENDIF * GOTO 10 ENDIF * END