tarig1
C TARIG1 SOURCE JK148537 25/12/12 21:15:11 12418 SUBROUTINE TARIG1(JMOD1,IDESCR,LRE) * formulation mecanique * remplissage du DESCR pour ADVE ( voir rigi1) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC CCGEOME -INC CCREEL -INC SMCOORD -INC SMELEME -INC SMRIGID -INC SMMODEL SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT CHARACTER*8 CMATE PARAMETER ( INTTYP=3 ) C INTTYP DEFINIT LE TYPE DE POINTS D'INTEGRATION C UTILISE PAR RIGI PARAMETER ( NINF=3 ) INTEGER INFOS(NINF),nrnlin LOGICAL LDPGE,lsupma,dcmate,dcmat2 imodel = jmod1 dcmat2 = .false. c-----------------------------copie-colle de rigi1------------------ MELE = imodel.NEFMOD IPMAIL = imodel.IMAMOD CMATE = CMATEE MATE = IMATEE INAT = INATUU c** write(ioimp,*) 'RIGI1 : IMODEL = ',imodel,isous,formod(1) c** write(ioimp,*) ' ',mele,ipmail,cmate, noer IF (MELE.EQ.259) return if (noerjk.eq.2 .and. cmate.ne.'NLIN') return IPT1 = IPMAIL NBNOE1 = IPT1.NUM(/1) NBELE1 = IPT1.NUM(/2) C- NSTRS = INFELE(16) MFR = INFELE(13) LW = INFELE( 7) NDDL = INFELE(15) IELE = INFELE(14) LRE = INFELE( 9) IPORE = INFELE( 8) LHOOK = INFELE(10) NBPGAU= INFELE( 6) C COQUE INTEGREE OU PAS ? NPINT = INFMOD(1) IPMINT = INFMOD(2+INTTYP) IPMIN1 = INFELE(12) C- C RECHERCHE DES NOMS D'INCONNUES ET DES DUAUX C MODEPL = imodel.lnomid(1) IF (MODEPL.EQ.0) THEN * write(ioimp,*) 'TRIGI2 : MODELE sans LNOMID(1) ?' ENDIF nomid = MODEPL NDEPL = nomid.lesobl(/2) MOFORC = imodel.lnomid(2) IF (MOFORC.EQ.0) THEN * write(ioimp,*) 'TRIGI2 : MODELE sans LNOMID(2) ?' ENDIF nomid = MOFORC NFORC = nomid.lesobl(/2) if (ndepl.eq.0 .or. nforc.eq.0 .or. ndepl.ne.nforc) then moterr = 'pas d inconnue duale ou primale ' interr(1) = imodel moterr(1:16) = conmod moterr(17:24) = ' ' endif nbnn1 = NBNOE1 c lre : nb de noeuds par mult if (nefmod.eq. 22) lre=nbnn1 c lre : nb de noeuds par sure if (nefmod.eq.259) lre=nbnn1 C C traitement particulier pour milieu poreux IPPORE=0 IF (MFR.EQ.33.OR.MFR.EQ.57.OR.MFR.EQ.59) THEN ENDIF IDECAP=0 IF (MELE.GE.79.AND.MELE.LE.83) THEN IDECAP=1 LRE = LRE + 2*NBNN1 - IPORE ELSE IF (MELE.GE.108.AND.MELE.LE.110) THEN IDECAP=1 LRE = LRE + (3*NBNN1 - IPORE)/2 - NBSOM(IELE) ELSE IF (MELE.GE.173.AND.MELE.LE.177) THEN IDECAP=2 LRE = LRE + (2*NBNN1 - IPORE)*IDECAP LHOOK=4 IF(IFOUR.EQ.1) LHOOK=6 ELSE IF (MELE.GE.185.AND.MELE.LE.187) THEN IDECAP=2 LRE = LRE + ((3*NBNN1 - IPORE)/2 - NBSOM(IELE))*IDECAP LHOOK=2 IF(IFOUR.EQ.1) LHOOK=3 ELSE IF (MELE.GE.178.AND.MELE.LE.182) THEN IDECAP=3 LRE = LRE + (2*NBNN1 - IPORE)*IDECAP LHOOK=4 IF(IFOUR.EQ.1) LHOOK=6 ELSE IF (MELE.GE.188.AND.MELE.LE.190) THEN IDECAP=3 LRE = LRE + ((3*NBNN1 - IPORE)/2 - NBSOM(IELE))*IDECAP LHOOK=2 IF(IFOUR.EQ.1) LHOOK=3 ENDIF C C REMPLISSAGE DU SEGMENT DESCRIPTEUR C NCOMP = NDEPL NBNNS = NBNOE1 NBNN = NBNOE1 IF (MFR.EQ.33.OR.MFR.EQ.57.OR.MFR.EQ.59) THEN NCOMP=NDEPL-IDECAP ENDIF IF (LDPGE) THEN NCOMP = NDEPL - NDPGE NBNN = NBNOE1 + 1 ENDIF IF (MFR.EQ.19.OR.MFR.EQ.21) NBNNS=NBNN/2 if (dcmat2) NCOMP = NDEPL/2 NLIGRP = LRE NLIGRD = LRE IF ((MFR.NE.61) .AND. (NBNNS*NCOMP .GT. NLIGRD)) THEN C erreur dans les dimensions de DESCR C le mode de calcul n'est pas correct RETURN ENDIF SEGINI,DESCR IPDSCR = DESCR IDDL = 1 IF (MFR.EQ.61) THEN NOELEP(1)=1 NOELEP(2)=1 NOELEP(3)=1 NOELEP(4)=3 NOELEP(5)=3 NOELEP(6)=3 NOELEP(7)=2 NOELEP(8)=2 DO IE1=1,LRE NOELED(IE1)=NOELEP(IE1) ENDDO NOMID=MODEPL DO IE1=1,3 LISINC(IE1)=LESOBL(IE1) LISINC(IE1+3)=LESOBL(IE1) ENDDO LISINC(7)=LESOBL(4) LISINC(8)=LESOBL(5) NOMID=MOFORC DO IE1=1,3 LISDUA(IE1)=LESOBL(IE1) LISDUA(IE1+3)=LESOBL(IE1) ENDDO LISDUA(7)=LESOBL(4) LISDUA(8)=LESOBL(5) IDDL = 9 ELSE NFAC=(3*NBNN-IPORE)/2 DO INOEUD = 1, NBNNS IF ((MELE.GE.108.AND.MELE.LE.110.AND.INOEUD.GT.NFAC) & .OR.(MELE.GE.185.AND.MELE.LE.187.AND.INOEUD.GT.NFAC) & .OR.(MELE.GE.188.AND.MELE.LE.190.AND.INOEUD.GT.NFAC)) & GO TO 1004 DO ICOMP=1,NCOMP NOMID=MODEPL LISINC(IDDL)=LESOBL(ICOMP) if (dcmat2) LISINC(IDDL)=LESOBL(IDDL) NOMID=MOFORC LISDUA(IDDL)=LESOBL(ICOMP) if (dcmat2) LISDUA(IDDL)=LESOBL(IDDL) NOELEP(IDDL)=INOEUD NOELED(IDDL)=INOEUD IDDL=IDDL+1 ENDDO 1004 CONTINUE ENDDO ENDIF C CAS DE LA DEFORMATION PLANE GENERALISEE IF (LDPGE) THEN DO ICOMP=(NDPGE-1),0,-1 NOMID=MODEPL LISINC(IDDL)=LESOBL(NDEPL-ICOMP) NOMID=MOFORC LISDUA(IDDL)=LESOBL(NFORC-ICOMP) NOELEP(IDDL)=NBNN NOELED(IDDL)=NBNN IDDL=IDDL+1 ENDDO ENDIF C CAS DES MILIEUX POREUX C POUR LA PRESSION ON MET D'ABORD LES SOMMETS IF (MFR.EQ.33) THEN DO INOEUD=1,NBSOM(IELE) NOMID=MODEPL LISINC(IDDL)=LESOBL(NDEPL) NOMID=MOFORC LISDUA(IDDL)=LESOBL(NDEPL) NOELEP(IDDL)=IBSOM(NSPOS(IELE)+INOEUD-1) NOELED(IDDL)=IBSOM(NSPOS(IELE)+INOEUD-1) IDDL=IDDL+1 ENDDO IF (MELE.GE.79.AND.MELE.LE.83) THEN DO INOEUD=1,NBNN DO INSOM=1,NBSOM(IELE) IF(INOEUD.EQ.IBSOM(NSPOS(IELE)+INSOM-1)) GO TO 1105 ENDDO NOMID=MODEPL LISINC(IDDL)=LESOBL(NDEPL) NOMID=MOFORC LISDUA(IDDL)=LESOBL(NDEPL) NOELEP(IDDL)=INOEUD NOELED(IDDL)=INOEUD IDDL=IDDL+1 1105 CONTINUE ENDDO ELSE IF (MELE.GE.108.AND.MELE.LE.110) THEN DO INOEUD=NFAC+1,NBNN NOMID=MODEPL LISINC(IDDL)=LESOBL(NDEPL) NOMID=MOFORC LISDUA(IDDL)=LESOBL(NDEPL) NOELEP(IDDL)=INOEUD NOELED(IDDL)=INOEUD IDDL=IDDL+1 ENDDO DO INOEUD=1,NFAC DO INSOM=1,NBSOM(IELE) IF(INOEUD.EQ.IBSOM(NSPOS(IELE)+INSOM-1)) GO TO 1110 ENDDO NOMID=MODEPL LISINC(IDDL)=LESOBL(NDEPL) NOMID=MOFORC LISDUA(IDDL)=LESOBL(NDEPL) NOELEP(IDDL)=INOEUD NOELED(IDDL)=INOEUD IDDL=IDDL+1 1110 CONTINUE ENDDO ENDIF ELSE IF (MFR.EQ.57.OR.MFR.EQ.59) THEN DO IPR=1,IDECAP NDECAP = NDEPL-IDECAP+IPR DO INOEUD=1,NBSOM(IELE) NOMID=MODEPL LISINC(IDDL)=LESOBL(NDECAP) NOMID=MOFORC LISDUA(IDDL)=LESOBL(NDECAP) NOELEP(IDDL)=IBSOM(NSPOS(IELE)+INOEUD-1) NOELED(IDDL)=IBSOM(NSPOS(IELE)+INOEUD-1) IDDL=IDDL+1 ENDDO IF (MELE.GE.173.AND.MELE.LE.182) THEN DO INOEUD=1,NBNN DO INSOM=1,NBSOM(IELE) IF(INOEUD.EQ.IBSOM(NSPOS(IELE)+INSOM-1)) GO TO 1205 ENDDO NOMID=MODEPL LISINC(IDDL)=LESOBL(NDECAP) NOMID=MOFORC LISDUA(IDDL)=LESOBL(NDECAP) NOELEP(IDDL)=INOEUD NOELED(IDDL)=INOEUD IDDL=IDDL+1 1205 CONTINUE ENDDO ELSE IF (MELE.GE.185.AND.MELE.LE.190) THEN DO INOEUD=NFAC+1,NBNN NOMID=MODEPL LISINC(IDDL)=LESOBL(NDECAP) NOMID=MOFORC LISDUA(IDDL)=LESOBL(NDECAP) NOELEP(IDDL)=INOEUD NOELED(IDDL)=INOEUD IDDL=IDDL+1 ENDDO DO INOEUD=1,NFAC DO INSOM=1,NBSOM(IELE) IF(INOEUD.EQ.IBSOM(NSPOS(IELE)+INSOM-1)) GO TO 1710 ENDDO NOMID=MODEPL LISINC(IDDL)=LESOBL(NDECAP) NOMID=MOFORC LISDUA(IDDL)=LESOBL(NDECAP) NOELEP(IDDL)=INOEUD NOELED(IDDL)=INOEUD IDDL=IDDL+1 1710 CONTINUE ENDDO C ENDIF ENDDO C CAS DES ELEMENT RACCORD ELSE IF (MFR.EQ.19.OR.MFR.EQ.21) THEN DO INOEUD=NBNNS+1,NBNN DO ICOMP=1,NDEPL NOMID=MODPL LISINC(IDDL)=LESOBL(ICOMP) NOMID=MOFRC LISDUA(IDDL)=LESOBL(ICOMP) NOELEP(IDDL)=INOEUD NOELED(IDDL)=INOEUD IDDL=IDDL+1 ENDDO ENDDO NOMID=MODPL SEGSUP,NOMID NOMID=MOFRC SEGSUP,NOMID ENDIF IDESCR = DESCR RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales