kgrav1
C KGRAV1 SOURCE CB215821 24/04/12 21:16:32 11897 * *_______________________________________________________________________ * * APPELE PAR KP * * ENTREES : * ======== * * IPMODL: POINTEUR SUR UN MMODEL * IPOIN1: NUMERO DU POINT(VECTEUR) QUI DEFINIT LE SENS * LA PESANTEUR * XRG : COEFFICIENT MULTIPLICATEUR DE RIGIDITE * IDISS : 0 ---> MATRICE SYMETRIQUE * 1 ---> MATRICE DISSYMETRIQUE * IFLAM : 0 ---> SOUS TYPE RIGIDITE * 1 ---> SOUS TYPE MASSE * * SORTIES : * ========= * * IPRIG POINTEUR SUR LA RIGIDITE CONSTRUITE * IRET 1 SI OK, 0 SINON * * I. Politopoulos juillet 1995 *_______________________________________________________________________ IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCREEL -INC CCHAMP -INC SMRIGID -INC SMELEME -INC SMCOORD -INC SMINTE -INC SMMODEL LOGICAL lsupfo,lsupdp C SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT C C C NHRM=NIFOUR IRET=1 C C ACTIVATION DU MODELE C MMODEL=IPMODL SEGACT MMODEL NSOUS=KMODEL(/1) C C RECUPERATION DES MODELES C SEGINI,LIMODL DO 100 ISOUS=1,NSOUS IMODEL=KMODEL(ISOUS) SEGACT, IMODEL IF(FORMOD(1).EQ.'MECANIQUE'.OR.(FORMOD(1).EQ.'CHARGEMENT'.AND. & MATMOD(1).EQ.'PRESSION')) THEN ELSE SEGDES,IMODEL ENDIF 100 CONTINUE C IF (NSOUS.LE.0) THEN SEGDES, MMODEL SEGSUP, LIMODL RETURN ENDIF C C CREATION DE L'OBJET MATRICE DE RIGIDITE C NRIGE=7 NRIGEL=NSOUS SEGINI MRIGID IPRIG=MRIGID IF (IFLAM.EQ.1) THEN MTYMAT='MASSE' ELSE MTYMAT='RIGIDITE' ENDIF IFORIG=IFOUR ICHOLE=0 IMGEO1=0 IMGEO2=0 ISUPEQ=0 C C BOUCLE SUR LES SOUS ZONES C DO 499 ISOUS=1,NSOUS IRIGEL(4,ISOUS)=0 COERIG(ISOUS)=1.D0 499 CONTINUE C_______________________________________________________________________ C C DEBUT DE LA BOUCLE SUR LES DIFFERENTES SOUS ZONES C_______________________________________________________________________ C DO 500 ISOUS=1,NSOUS C C ON RECUPERE LINFORMATION GENERALES C IMODEL=KMODEL(ISOUS) SEGACT IMODEL IPMAIL=IMAMOD C C TRAITEMENT DU MODELE C MELEME=IMAMOD MELE=NEFMOD NFOR=FORMOD(/2) NMAT=MATMOD(/2) C_______________________________________________________________________ C C INFORMATION SUR L ELEMENT FINI C_______________________________________________________________________ C * CALL ELQUOI(MELE,0,4,IPINF,IMODEL) IF (IERR.NE.0) THEN SEGDES IMODEL,MMODEL SEGSUP MRIGID IRET=0 RETURN ENDIF * INFO=IPINF MFR =INFELE(13) LRE =INFELE(9) LW =INFELE(7) NDDL =INFELE(15) IELE=INFELE(14) * MINTE=INFELE(11) MINTE=infmod(6) IPMINT=MINTE C C INITIALISATION DE MINTE C SEGACT MINTE NBPGAU=POIGAU(/1) C C ON RECUPERE LES MELEME C MELEME=IPMAIL SEGACT MELEME NBNN =NUM(/1) NBELEM=NUM(/2) C C ---------------------------------------------------------* C INITIALISATION DU SEGMENT DESCR, SEGMENT DESCRIPTEUR DES * C DES INCONNUES RELATIVES A LA MATRICE DE RIGIDITE * C ---------------------------------------------------------* NLIGRP = INFELE(9) NLIGRD = INFELE(9) SEGINI DESCR IPDSCR=DESCR if(lnomid(1).ne.0) then nomid=lnomid(1) segact nomid modepl=nomid ndepl=lesobl(/2) ndum=lesfac(/2) lsupdp=.false. else lsupdp=.true. endif if(lnomid(2).ne.0) then nomid=lnomid(2) segact nomid moforc=nomid nforc=lesobl(/2) lsupfo=.false. else lsupfo=.true. endif C IF (NDEPL.EQ.0.OR.NFORC.EQ.0.OR.NDEPL.NE.NFORC) THEN SEGSUP DESCR,MRIGID SEGDES MMODEL,MELEME IRET=0 RETURN ENDIF C C REMPLISSAGE DU SEGMENT DESCRIPTEUR C IDDL=1 NCOMP=NDEPL NBNNS=NBNN IF (MFR.EQ.33) NCOMP=NDEPL-1 IF (IFOUR.EQ.-3) THEN NCOMP=NDEPL-3 NBNNS=NBNN-1 ENDIF IF (MFR.EQ.19.OR.MFR.EQ.21) NBNNS=NBNN/2 NOMID=MODEPL SEGACT NOMID NOMID=MOFORC SEGACT NOMID DO 1004 INOEUD=1,NBNNS DO 1005 ICOMP=1,NCOMP NOMID=MODEPL LISINC(IDDL)=LESOBL(ICOMP) NOMID=MOFORC LISDUA(IDDL)=LESOBL(ICOMP) NOELEP(IDDL)=INOEUD NOELED(IDDL)=INOEUD IDDL=IDDL+1 1005 CONTINUE 1004 CONTINUE * NOMID=MODEPL SEGDES NOMID NOMID=MOFORC SEGDES NOMID SEGDES DESCR C C ------------------------------------------------------------* C INITIALISATION DU SEGMENT IMATRI, CHAPEAU SUR LES SEGMENTS * C CONTENANT LES MATRICES DE RIGIDITE ELEMENTAIRES * C ------------------------------------------------------------* C NBELEM: NB D'ELEMENTS DANS LA SOUS ZONE NLIGRP=LRE NLIGRD=LRE NELRIG=NBELEM SEGINI xMATRI IPMATR=xMATRI C C------------------------------------------------------* C C TRAITEMENT DU CHAPEAU DES RIGIDITES, SEGMENT MRIGID * C------------------------------------------------------* C IRIGEL(1,ISOUS)=IPMAIL IRIGEL(2,ISOUS)=0 IRIGEL(3,ISOUS)=IPDSCR IRIGEL(4,ISOUS)=xMATRI IRIGEL(5,ISOUS)=NHRM IF (IDISS.EQ.0) IRIGEL(7,ISOUS)= 0 IF (IDISS.EQ.0) xmatri.symre=0 IF (IDISS.EQ.1) IRIGEL(7,ISOUS)= 2 IF (IDISS.EQ.1) xmatri.symre=2 C_______________________________________________________________________ C C coq3/dkt/dst/coq4 C_______________________________________________________________________ C IF (MELE.EQ.27.OR.MELE.EQ.28.OR.MELE.EQ.93) THEN c coq3/dkt/dst ELSE IF (MELE.EQ.49) THEN c coq4 ELSE SEGSUP xMATRI IRIGEL(4,ISOUS)=0 MOTERR(1:4)=NOMTP(MELE) MOTERR(5:12)='KGRAV1' GOTO 9990 ENDIF C C_______________________________________________________________________ C_______________________________________________________________________ C C DESACTIVATION DES SEGMENTS PROPRES A LA ZONE GEOMETRIQUE IA C_______________________________________________________________________ C SEGDES MELEME SEGDES IMODEL C NOMID=MOFORC if(lsupfo)SEGSUP NOMID NOMID=MODEPL if(lsupdp)SEGSUP NOMID C SEGDES MINTE * INFO=IPINF * SEGSUP INFO C C ERREUR DANS KGRAV3 C IF (IERR.NE.0) THEN IRET=0 GOTO 888 ENDIF 500 CONTINUE 888 CONTINUE SEGDES MMODEL SEGDES MRIGID GOTO 666 C 9990 CONTINUE IRET=0 C C ERREUR DANS UNE SOUS ZONE, DESACTIVATION ET RETOUR C NOMID=MOFORC if(lsupfo)SEGSUP NOMID NOMID=MODEPL if(lsupdp)SEGSUP NOMID C SEGDES MELEME SEGDES IMODEL C SEGDES MMODEL SEGSUP MRIGID C SEGDES MINTE * INFO=IPINF * SEGSUP INFO RETURN 666 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales