vecte3
C VECTE3 SOURCE CB215821 24/04/12 21:17:26 11897 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *---------------------------------------------------------------* * 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 * *---------------------------------------------------------------* -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 INFO INTEGER INFELL(JG) 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*8 CMATE CHARACTER*4 CMOT,NOMFIS(3) DATA NOMFIS(1),NOMFIS(2),NOMFIS(3) &/'FIS1','FIS2','FIS3'/ * MVECT0 = 0 * MCHELM = MCHA1 SEGACT MCHELM * * Verification du support : noeuds ou pdi ? * ISUP = INFCHE(1,6) NSC = INFCHE(/1) 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 SEGACT MMODEL NSOUS = KMODEL(/1) * * Boucle sur les zones du MCHAML * DO 100 ISOU = 1,NSOUS IVACOM = 0 IVAEP = 0 IMODEL = KMODEL(ISOU) SEGACT IMODEL IPMAIL = IMAMOD CONM = CONMOD MELE = NEFMOD MELEME = IMAMOD NFOR = FORMOD(/2) NMAT = MATMOD(/2) * * if(infmod(/1).lt.7) then IF (IERR.NE.0) THEN RETURN ENDIF INFO = IPINF NBGS = INFELL(4) MFR = INFELL(13) MINTE = INFELL(11) MINTE1 = INFELL(12) segsup info else NBGS = INFELE(4) MFR = INFELE(13) MINTE=INFMOD(7) MINTE1 = INFMOD(8) endif IPMINT = MINTE * 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 RETURN ENDIF * IF (MFR.EQ.5.AND.MCHA2.EQ.0) THEN MOTERR(1:16) = 'CARACTERISTIQUES' RETURN ENDIF IF (ISUP.EQ.5.AND.MFR.EQ.5) SEGACT MINTE1 * IF (IRET.EQ.0) GOTO 900 * SEGACT MINTE NBPGAU = POIGAU(/1) SEGACT MELEME NBN1 = NUM(/1) NBELE1 = NUM(/2) IF (ISUP.EQ.1) NIPO = NBN1 IF (ISUP.EQ.5) NIPO = NBPGAU SEGINI MWRK1 NPPO = NIPO * NBELE1 IF (ISUP.EQ.5) SEGINI IPPO IF (ISUP.EQ.5.AND.MFR.EQ.5) SEGINI MWRK2 * * Listes de composantes attendues -> NORMALE a la fissure * CMOT = ' ' & NLIST,IER1) IF (IER1.NE.0) THEN SEGSUP MWRK1 RETURN ENDIF * IF (NMO.NE.0.AND.NLIST.NE.NMO) GOTO 900 * NVEC = NLIST * 2 ID = 1 SEGINI MVECTE * * Boucle sur les composantes * DO 150 IC = 1,NLIST NOMID = MOCOMP(IC) SEGACT NOMID 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' * * IF (IF3.EQ.2) THEN * SEGINI MCHPO1 * ICHPO(IC+NLIST) = MCHPO1 * MCHPO1.MTYPOI = 'VECTEUR ' * MCHPO1.MOCHDE = 'CONTRAINTES PRINCIPALES' * MCHPO1.IFOPOI = IFOUR * MCHPO1.JATTRI(1) = 2 * MCHPO1.JATTRI(2) = 0 ** SEGINI MSOUP1 * MCHPO1.IPCHP(1) = MSOUP1 * MSOUP1.NOCOMP(1) = 'FISX' * MSOUP1.NOCOMP(2) = 'FISY' * MSOUP1.NOCOMP(3) = 'FISZ' * ENDIF * N = NIPO * NBELE1 SEGINI MPOVAL IPOVAL = MPOVAL * IF (IF3.EQ.2) THEN * SEGINI MPOVA1 * MSOUP1.IPOVAL = MPOVA1 * ENDIF * NBNN = 1 NBELEM = N NBSOUS = 0 NBREF = 0 SEGINI IPT1 IGEOC = IPT1 * IF (IF3.EQ.2) MSOUP1.IGEOC = IPT1 IPT1.ITYPEL = 1 * NBTYPE = 1 SEGINI NOTYPE MOTYPE = NOTYPE TYPE(1) = 'REAL*8' & MOTYPE,1,INFOS,3,IVACOM) IF (IERR.NE.0) GOTO 900 * AM 23/9/98 ON REACTIVE LE MELEME DESACTIVE PAR KOMCHA SEGACT MELEME MPTVAL = IVACOM NS7 = IVAL(/1) J7 = 1 DO 7 I7=1,NS7 IF (IVAL(I7).EQ.0) J7 = 0 7 CONTINUE SEGSUP NOTYPE IF (J7.EQ.0) GOTO 151 * * Cas des coques epaisses : epaisseur (excentrement) * IF (ISUP.EQ.5.AND.MFR.EQ.5) THEN NBROBL = 1 NBRFAC = 0 SEGINI NOMID MOEP = NOMID LESOBL(1) = 'EPAI' NVEC = NBROBL + NBRFAC NBTYPE = 1 SEGINI NOTYPE MOTYPE = NOTYPE TYPE(1) = 'REAL*8' & MOTYPE,1,INFOS,3,IVAEP) * AM 23/9/98 ON REACTIVE LE MELEME DESACTIVE PAR KOMCHA SEGACT MELEME SEGSUP NOTYPE ENDIF * IPO = 0 * * Boucle sur les elements * DO 200 IEL = 1,NBELE1 * cas general * coques epaisses IF (ISUP.EQ.5.AND.MFR.EQ.5) THEN MPTVAL = IVAEP MELVAL=IVAL(1) DO 201 IP = 1,NBN1 IPMN=MIN(IP ,VELCHE(/1)) IEMN=MIN(IEL,VELCHE(/2)) TH(IP)=VELCHE(IPMN,IEMN) 201 CONTINUE ENDIF IF (MELE.EQ.49) THEN ELSE IF (MELE.EQ.93.OR.MFR.EQ.3) THEN ENDIF * * Boucle sur les points supports * DO 300 IPSU = 1,NIPO IPO = IPO + 1 MPTVAL = IVACOM 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 * U1(1) = 1.D0 * U1(2) = 0.D0 * U1(3) = 0.D0 * U2(1) = 0.D0 * U2(2) = 1.D0 * U2(3) = 0.D0 * CALL PROVEC(U3,U1,W1) * CALL NORME(W1,XW1) * IF (XW1.LT.XEPS) CALL PROVEC(U3,U2,W1) * CALL PROVEC(U3,W1,W2) * CALL NORMER(W1) * CALL NORMER(W2) 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 (IF3.EQ.2) THEN * DO 124 II3 = 1,IDIM * MPOVA1.VPOCHA(IPO,II3) = W2(II3) * 124 CONTINUE * ENDIF * IF (ISUP.EQ.5) THEN IF (IC.EQ.1) THEN IF (ISUP.EQ.5.AND.MFR.EQ.5) THEN Z = DZEGAU(IPSU) DO 400 IL = 1,NBN1 400 CONTINUE ELSE DO 410 IL = 1,NBN1 410 CONTINUE ENDIF * * Le pdi est reference dans MCOORD (PROVISOIRE) * segact mcoord*mod NBPTS = nbpts+1 SEGADJ MCOORD XCOOR((NBPTS-1)*(IDIM+1)+1) = XIGAU(1) XCOOR((NBPTS-1)*(IDIM+1)+2) = XIGAU(2) IF (IDIM.EQ.3) XCOOR((NBPTS-1)*(IDIM+1)+3)=XIGAU(3) XCOOR(NBPTS*(IDIM+1)) = 0.D0 IPT1.NUM(1,IPO) = NBPTS IPPO(IPO) = NBPTS 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 500 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 * IF (IF3.NE.2) THEN MCHPOI = ICHPO(IC1) ICHPO(IC2) = ICHP2 * ENDIF 500 CONTINUE * * Desactivation des segments de la zone ISOU * DO 105 I0 = 1,NCOMP 105 CONTINUE SEGSUP MPTVAL,MWRK1 IF (ISUP.EQ.5.AND.MFR.EQ.5) SEGSUP MWRK2 IF (ISUP.EQ.5) SEGSUP IPPO NCX = NLIST * 2 DO 101 IMX = 1,NCX AMPF(IMX) = AMP 101 CONTINUE * IF (MVECT0.EQ.0) THEN MVECT0 = MVECTE ELSE MVECT0 = MVECT1 ENDIF * 100 CONTINUE RETURN 900 CONTINUE END
© Cast3M 2003 - Tous droits réservés.
Mentions légales