vecte3
C VECTE3 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 VARIables INTERnes * * MCHA2 MCHAML de CARACTERISTIQUES (coques epaisses) * * MOD1 MMODEL * * AMP coefficient d'amplification (FLOTTANT) * * LMOT1 liste des couleurs affectees aux composantes * * MVECT0 pointeur sur MVECTE resultat * * * * D. R.-M. mai & juin 1994 * * D. R.-M. juillet 1995 --> massifs isotropes 3D * * coques 2D et 3D * *---------------------------------------------------------------* 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),XEL2(3,NBN1) ENDSEGMENT SEGMENT MWRK2 REAL*8 TXR(3,3,NBN1),TH(NBN1) ENDSEGMENT * NOMFIS PARAMETER (NINF = 3, XEPS = 1.D-6) INTEGER INFOS(NINF) DIMENSION XIGAU(3),MOCOMP(3),BPSS(3,3),APSS(3,3) DIMENSION U1(3),U2(3),U3(3),W1(3),W2(3) CHARACTER*(NCONCH) CONM CHARACTER*4 CMOT, NOMFIS(3) DATA NOMFIS(1),NOMFIS(2),NOMFIS(3) & /'FIS1','FIS2','FIS3'/ MVECT0 = 0 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 50 ISC = 2, NSC ISUP1 = INFCHE(ISC,6) IF (ISUP1.NE.ISUP) ISUP = 0 50 CONTINUE * 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 MMODEL = MOD1 NSOUS = KMODEL(/1) nbtype = 1 SEGINI,notype notype.TYPE(1) = 'REAL*8' MOTYR8 = notype SEGACT,mcoord*MOD * Boucle (100) 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 (IRET.EQ.0) GOTO 900 if (infmod(/1).lt.7) then write(ioimp,*) 'VECTE3 : infmod(/1) < 7' endif NBGS = INFELE(4) MFR = INFELE(13) MINTE = INFMOD(7) MINTE1 = INFELE(12) c* MINTE1 = INFMOD(8) IPMINT = MINTE IF (MFR.EQ.5.AND.MCHA2.EQ.0) THEN MOTERR(1:16) = 'CARACTERISTIQUES' GOTO 900 ENDIF IF3 = 0 IF (MFR.EQ.3.OR.MFR.EQ.5.OR.MFR.EQ.9) THEN IF3 = 1 ELSE IF (MFR.EQ.1) THEN IF (IDIM.EQ.3) IF3 = 2 IF (IDIM.EQ.2) IF3 = 3 ELSE GOTO 900 ENDIF * Listes de composantes attendues -> NORMALE a la fissure CMOT = ' ' & NLIST,IER1) IF (IER1.NE.0) GOTO 900 IF (NMO.NE.0.AND.NLIST.NE.NMO) GOTO 900 NBPGAU = POIGAU(/1) 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 NVEC = NLIST * 2 ID = 1 SEGINI MVECTE DO i = 1, NVEC IGEOV(i) = 0 AMPF(i) = AMP ENDDO * Cas des coques epaisses : epaisseur (excentrement) IF (ISUP.EQ.5.AND.MFR.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 = mptval.IVAL(1) SEGSUP,mptval ENDIF * Boucle sur les composantes DO 150 IC = 1,NLIST NOMID = MOCOMP(IC) NOCOVE(IC,1) = NOMFIS(IC) IF (LMOT1.EQ.0) THEN NOCOUL(IC) = IC+1 ELSE ICOUL=IDCOUL+1 NOCOUL(IC) = ICOUL-1 ENDIF IGEOV(IC) = 0 * Creation du MCHPOI puis du MSOUPO et du MPOVAL NAT = 2 NSOUPO = 1 SEGINI MCHPOI ICHPO(IC) = MCHPOI MTYPOI = 'VECTEUR ' MOCHDE = 'CONTRAINTES PRINCIPALES' IFOPOI = IFOUR JATTRI(1) = 2 JATTRI(2) = 0 NC = IDIM SEGINI MSOUPO IPCHP(1) = MSOUPO NOCOMP(1) = 'FISX' NOCOMP(2) = 'FISY' IF (IDIM.EQ.3) NOCOMP(3) = 'FISZ' 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 MPTVAL = IVACOM IPO = 0 * Boucle sur les elements DO 200 IEL = 1,NBELE1 * cas general * coques epaisses 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 IF (MELE.EQ.49) THEN ELSE IF (MELE.EQ.93.OR.MFR.EQ.3) THEN ENDIF * Boucle sur les points supports MPTVAL = IVACOM DO 300 IPSU = 1,NIPO IPO = IPO + 1 XFISS = 1.D0 MELVAL = IVAL(1) IPMN = MIN(IPSU,VELCHE(/1)) IEMN = MIN(IEL ,VELCHE(/2)) U3(1) = VELCHE(IPMN,IEMN) MELVAL = IVAL(2) IPMN = MIN(IPSU,VELCHE(/1)) IEMN = MIN(IEL ,VELCHE(/2)) U3(2) = VELCHE(IPMN,IEMN) IF (IF3.EQ.2) THEN MELVAL = IVAL(3) IPMN = MIN(IPSU,VELCHE(/1)) IEMN = MIN(IEL ,VELCHE(/2)) U3(3) = VELCHE(IPMN,IEMN) ELSE U3(3) = 0.D0 ENDIF IF (XU3.LT.XEPS) THEN UV11 = 0.D0 UV12 = 0.D0 UV13 = 0.D0 GOTO 123 ENDIF * a verifier dans le cas des coques IF (IF3.EQ.1) THEN VF1X = -1.D0 * XFISS * U3(2) VF1Y = XFISS * U3(1) APSS(1,1)=BPSS(2,2)*BPSS(3,3)-BPSS(3,2)*BPSS(2,3) APSS(2,1)=BPSS(3,1)*BPSS(2,3)-BPSS(2,1)*BPSS(3,3) APSS(3,1)=BPSS(2,1)*BPSS(3,2)-BPSS(3,1)*BPSS(2,2) APSS(1,2)=BPSS(3,2)*BPSS(1,3)-BPSS(1,2)*BPSS(3,3) APSS(2,2)=BPSS(1,1)*BPSS(3,3)-BPSS(3,1)*BPSS(1,3) APSS(3,2)=BPSS(3,1)*BPSS(1,2)-BPSS(1,1)*BPSS(3,2) UV11=APSS(1,1)*VF1X+APSS(1,2)*VF1Y UV12=APSS(2,1)*VF1X+APSS(2,2)*VF1Y UV13=APSS(3,1)*VF1X+APSS(3,2)*VF1Y ELSE IF (IF3.EQ.3) THEN IF (ABS(U3(2)).LT.XEPS) THEN VF1X = 0.D0 VF1Y = 1.D0 * XFISS ELSE IF (ABS(U3(1)).LT.XEPS) THEN VF1X = 1.D0 * XFISS VF1Y = 0.D0 ELSE VF1X = -1.D0 * XFISS * U3(2) VF1Y = XFISS * U3(1) ENDIF UV11 = VF1X UV12 = VF1Y ELSE IF (IF3.EQ.2) THEN UV11 = U3(1) UV12 = U3(2) UV13 = U3(3) ENDIF 123 CONTINUE VPOCHA(IPO,1) = UV11 VPOCHA(IPO,2) = UV12 IF (IF3.EQ.1.OR.IF3.EQ.2) VPOCHA(IPO,3) = UV13 IF (ISUP.EQ.5) THEN IF (IC.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 151 CONTINUE 150 CONTINUE IC1 = 0 DO IC2 = NLIST+1,NLIST*2 IC1 = IC1 + 1 NOCOVE(IC2,1) = NOMFIS(IC1) IF (LMOT1.EQ.0) THEN NOCOUL(IC2) = IC1 + 1 ELSE ICOUL=IDCOUL+1 NOCOUL(IC2) = ICOUL-1 ENDIF IGEOV(IC2) = 0 MCHPOI = ICHPO(IC1) ICHPO(IC2) = ICHP2 ENDDO * Desactivation des segments de la zone ISOU SEGSUP MPTVAL,MWRK1 IF (ISUP.EQ.5.AND.MFR.EQ.5) SEGSUP MWRK2 IF (ISUP.EQ.5) SEGSUP IPPO 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