vecte2
C VECTE2 SOURCE OF166741 24/09/27 21:15:26 12018 *---------------------------------------------------------------* * Creation d'un MVECTE a partir d'un MCHAML en vue * * d'un trace avec des petites fleches * * * * MCHA1 MCHAML de CONTRAINTES PRINCIPALES * * MCHA2 MCHAML de CARACTERISTIQUES (coques epaisses) * * MOD1 MMODEL * * AMP coefficient d'amplification (FLOTTANT) * * CMOT composante a visualiser (MOT) * * LMOT1 liste des couleurs affectees aux composantes * * MVECT0 pointeur sur MVECTE resultat * * * * D. R.-M. mai & juin 1994 * *---------------------------------------------------------------* IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCGEOME -INC SMCHPOI -INC SMCHAML -INC SMMODEL -INC SMVECTE -INC SMELEME -INC SMINTE -INC SMCOORD -INC SMLMOTS SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT SEGMENT MPTVAL INTEGER IPOS(NS),NSOF(NS),IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT SEGMENT IPPO(NPPO) SEGMENT MWRK1 REAL*8 XEL(3,NBN1) ENDSEGMENT SEGMENT MWRK2 REAL*8 TXR(3,3,NBN1),TH(NBN1) ENDSEGMENT CHARACTER*(*) CMOT PARAMETER (NINF = 3) INTEGER INFOS(NINF) DIMENSION XIGAU(3),MOCOMP(3) CHARACTER*(NCONCH) CONM MVECT0 = 0 SMAX = 0.D0 IDIMP1 = IDIM + 1 MCHELM = MCHA1 NSC = INFCHE(/1) IF (NSC.EQ.0) THEN write(ioimp,*) 'MCHELM (MCHA1) VIDE' return ENDIF * Verification du support : noeuds ou pdi ? ISUP = INFCHE(1,6) DO ISC=2,NSC ISUP1 = INFCHE(ISC,6) IF (ISUP1.NE.ISUP) ISUP = 0 ENDDO * si ISUP = 1 : MCHAML aux noeuds * si ISUP = 5 : MCHAML aux pdi IF (ISUP.NE.1.AND.ISUP.NE.5) THEN RETURN ENDIF NMO = 0 IF (LMOT1.NE.0) THEN MLMOTS = LMOT1 SEGACT MLMOTS ENDIF SEGACT,mcoord*MOD nbtype = 1 SEGINI,notype notype.TYPE(1) = 'REAL*8' MOTYR8 = notype MMODEL = MOD1 NSOUS = KMODEL(/1) * Boucle sur les zones du MCHAML DO 100 ISOU = 1,NSOUS IVACOM = 0 MELVEP = 0 IMODEL = KMODEL(ISOU) CONM = CONMOD MELE = NEFMOD IPMAIL = IMAMOD MELEME = IMAMOD NBN1 = meleme.NUM(/1) NBELE1 = meleme.NUM(/2) if (infmod(/1).lt.8) then write(ioimp,*) 'VECTE2 : infmod(/1) < 8' ENDIF IF (IRET.EQ.0) GOTO 900 NBGS = INFELE(4) MFR = INFELE(13) IPMINT = INFMOD(7) c* MINTE1 = INFELE(12) MINTE1 = INFMOD(8) MINTE = IPMINT NBPGAU = minte.POIGAU(/1) * Cas des coques epaisses : epaisseur (excentrement) IF (MFR.EQ.5) THEN IF (MCHA2.EQ.0) THEN MOTERR(1:16) = 'CARACTERISTIQUES' GOTO 900 ENDIF IF (ISUP.EQ.5) THEN NBROBL = 1 NBRFAC = 0 SEGINI NOMID LESOBL(1) = 'EPAI' MOEP = NOMID & MOTYR8,1,INFOS,3,IVAEP) SEGSUP,NOMID IF (IERR.NE.0) GOTO 900 MPTVAL = IVAEP MELVEP = IVAL(1) ENDIF ENDIF IF (ISUP.EQ.1) NIPO = NBN1 IF (ISUP.EQ.5) NIPO = NBPGAU NPPO = NIPO * NBELE1 SEGINI MWRK1 IF (ISUP.EQ.5) THEN SEGINI IPPO NBPTS5 = NBPTS NBPTS = NBPTS + NPPO SEGADJ,MCOORD IF (MFR.EQ.5) SEGINI MWRK2 ENDIF * Listes de composantes attendues & NLIST,IER1) IF (IER1.NE.0) GOTO 900 c* IF (IERR.NE.0) GOTO 900 IF (NMO.NE.0) THEN IF ((CMOT.EQ.' '.AND.LMOT1.NE.0.AND.NLIST.NE.NMO).OR. & (CMOT.NE.' '.AND.NMO.NE.1)) GOTO 900 ENDIF IF (CMOT.EQ.' ') THEN NVEC = NLIST * 2 ELSE NVEC = 2 ENDIF ID = 1 SEGINI MVECTE DO i = 1, NVEC IGEOV(i) = 0 AMPF(i) = AMP ENDDO * Boucle sur les composantes DO 150 IC = 1, NLIST NOMID = MOCOMP(IC) IF (CMOT.NE.' '.AND.LESOBL(1).NE.CMOT) GOTO 151 IC2 = IC IF (CMOT.EQ.LESOBL(1)) IC2 = 1 NOCOVE(IC2,1) = LESOBL(1) IF (LMOT1.EQ.0) THEN NOCOUL(IC2) = IC2+1 ELSE ICOUL=IDCOUL+1 NOCOUL(IC2) = ICOUL-1 ENDIF * Creation du MCHPOI puis du MSOUPO et du MPOVAL NAT = 2 NSOUPO = 1 SEGINI MCHPOI ICHPO(IC2) = MCHPOI MTYPOI = 'VECTEUR ' MOCHDE = 'CONTRAINTES PRINCIPALES' IFOPOI = IFOUR JATTRI(1) = 2 JATTRI(2) = 0 NC = IDIMP1 SEGINI MSOUPO IPCHP(1) = MSOUPO NOCOMP(1) = 'SIPX' NOCOMP(2) = 'SIPY' IF (IDIM.EQ.3) NOCOMP(3) = 'SIPZ' NOCOMP(IDIMP1) = 'SIGN' N = NIPO * NBELE1 SEGINI MPOVAL IPOVAL = MPOVAL NBNN = 1 NBELEM = N NBSOUS = 0 NBREF = 0 SEGINI IPT1 IGEOC = IPT1 IPT1.ITYPEL = 1 & MOTYR8,1,INFOS,3,IVACOM) IF (IERR.NE.0) GOTO 900 IPO = 0 * Boucle sur les elements DO 200 IEL = 1, NBELE1 c* IF (ISUP.EQ.5.AND.MFR.EQ.5) THEN IF (MELVEP.NE.0) THEN MELVAL = MELVEP DO IP = 1,NBN1 IPMN=MIN(IP ,VELCHE(/1)) IEMN=MIN(IEL,VELCHE(/2)) TH(IP)=VELCHE(IPMN,IEMN) ENDDO ENDIF MPTVAL = IVACOM * Boucle sur les points supports DO 300 IPSU = 1,NIPO IPO = IPO + 1 MELVAL = IVAL(1) IPMN = MIN(IPSU,VELCHE(/1)) IEMN = MIN(IEL ,VELCHE(/2)) SMWW = VELCHE(IPMN,IEMN) IF (SMWW.GE.0.D0) VPOCHA(IPO,IDIMP1) = 0.D0 IF (SMWW.LT.0.D0) VPOCHA(IPO,IDIMP1) = 1.D0 SMAX = MAX(SMAX, ABS(SMWW)) DO I1 = 1, IDIM MELVAL = IVAL(1+I1) IPMN = MIN(IPSU,VELCHE(/1)) IEMN = MIN(IEL ,VELCHE(/2)) VPOCHA(IPO,I1) = SMWW * VELCHE(IPMN,IEMN) ENDDO IF (ISUP.EQ.5) THEN IF (IC2.EQ.1) THEN IF (MFR.EQ.5) THEN Z = 0.5D0*DZEGAU(IPSU) r_z = 0.D0 DO IL = 1,NBN1 r_z = r_z +(SHPTOT(1,IL,IPSU)* ENDDO ENDDO ELSE r_z = 0.D0 DO IL = 1,NBN1 ENDDO ENDDO ENDIF * Le pdi est reference dans MCOORD (PROVISOIRE) IREF = NBPTS5 + IPO IPPO(IPO) = IREF IPT1.NUM(1,IPO) = IREF IREF = (IREF-1)*IDIMP1 XCOOR(IREF+1) = XIGAU(1) XCOOR(IREF+2) = XIGAU(2) IF (IDIM.EQ.3) XCOOR(IREF+3) = XIGAU(3) XCOOR(IREF+IDIMP1) = 0.D0 ELSE IPT1.NUM(1,IPO) = IPPO(IPO) ENDIF ELSE IPT1.NUM(1,IPO) = NUM(IPSU,IEL) ENDIF 300 CONTINUE 200 CONTINUE SEGDES MPOVAL,MSOUPO,MCHPOI,IPT1 151 CONTINUE 150 CONTINUE IC1 = 0 DO 500 IC2 = NLIST+1,NLIST*2 IC1 = IC1 + 1 NOMID = MOCOMP(IC1) IF (CMOT.NE.' '.AND.CMOT.NE.LESOBL(1)) GOTO 501 IF (CMOT.EQ.LESOBL(1)) THEN IC3 = 2 IC1 = 1 MCHPOI = ICHPO(1) ELSE IC3 = IC2 MCHPOI = ICHPO(IC1) ENDIF NOCOVE(IC3,1) = LESOBL(1) IF (LMOT1.EQ.0) THEN NOCOUL(IC3) = IC1 + 1 ELSE ICOUL=IDCOUL+1 NOCOUL(IC3) = ICOUL-1 ENDIF ICHPO(IC3) = ICHP2 501 CONTINUE 500 CONTINUE * Desactivation des segments de la zone ISOU MPTVAL = IVACOM SEGSUP MPTVAL,MWRK1 IF (ISUP.EQ.5) SEGSUP IPPO IF (ISUP.EQ.5.AND.MFR.EQ.5) SEGSUP MWRK2 DO i = 1, 3 nomid = MOCOMP(i) IF (nomid.NE.0) SEGSUP,nomid ENDDO IF (MVECT0.EQ.0) THEN MVECT0 = MVECTE ELSE MVECT0 = MVECT1 ENDIF 100 CONTINUE 900 CONTINUE IF (LMOT1.NE.0) SEGDES,MLMOTS notype = MOTYR8 SEGSUP,notype SEGACT,mcoord*NOMOD C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales