masse4
C MASSE4 SOURCE OF166741 24/10/21 21:15:18 12042 *---------------------------------------------------------------------* * ________________________________ * * | | * * | calcul de la matrice de masse | * * |________________________________| * * * * raccords liquide/massifs,raccords liquide/coque,barre,homogenise * * cerce,joints 2-3d * * * *---------------------------------------------------------------------* * * * entrees : * * ________ * * * * ipmail pointeur sur un segment meleme * * lw dimension du tableau de travail de l'element * * lre nombre de ddl dans la matrice de masse * * ivamat pointeur sur un segment mptval pour le materiau * * nmatt nombre de composante de materiau (imat=1) * * ivacar pointeur sur un segment mptval pour les caracteri- * * stiques * * ncarr nombre de caracteristiques geometriques * * nbpgau nombre de point d'integration pour la masse * * ipmint pointeur sur un segment minte * * ipmin1 pointeur sur un segment minte (aux noeuds) * * nddl nombre de degre de liberte /noeud * * mele numero de l'element fini * * nbpgmi nombre de noeuds /element * * ilump =1 si l'opeateur LUMP est appele * * * * sorties : * * ________ * * * * ipmatr pointeur sur la matrice de masse de la sous-zone * * * *---------------------------------------------------------------------* & NBPGAU,IPMINT,NDDL,MELE,MFR,IPMATR,ILUMP, & ISOUS,IIPDPG,IMOD) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC CCREEL -INC SMRIGID -INC SMCHAML -INC SMELEME -INC SMCOORD -INC SMINTE -INC SMMODEL -INC SMLMOTS SEGMENT WRK1 REAL*8 REL(LRE,LRE),XE(3,NBBB) ENDSEGMENT SEGMENT WRK2 ENDSEGMENT SEGMENT WRK3 ENDSEGMENT SEGMENT WRK4 REAL*8 BPSS(3,3),XEL(3,NBBB) ENDSEGMENT SEGMENT WRK5 REAL*8 XGENE(NCOM,LRN) ENDSEGMENT SEGMENT MVELCH REAL*8 VALMAT(NV1) ENDSEGMENT SEGMENT MPTVAL INTEGER IPOS(NS),NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT CHARACTER*8 CMATE CHARACTER*4 lesinc(7),lesdua(7) DATA lesinc/'UX','UY','UZ','RX','RY','RZ','UR'/ DATA lesdua/'FX','FY','FZ','MX','MY','MZ','FR'/ INTEGER KERRE MELEME=IPMAIL NBNN=NUM(/1) NBELEM=NUM(/2) xMATRI=IPMATR NV1=NMATT SEGINI,MVELCH KERRE=0 I195=0 I259=0 WRK1 = 0 WRK2 = 0 WRK3 = 0 WRK4 = 0 WRK5 = 0 * * introduction du point autour duquel se fait le mouvement * de la section en defo plane generalisee * IF (IFOUR.EQ.-3.AND.MFR.NE.35) THEN IREF=(IIPDPG-1)*(IDIM+1) XDPGE=XCOOR(IREF+1) YDPGE=XCOOR(IREF+2) ELSE XDPGE=0.D0 YDPGE=0.D0 ENDIF NHRM=NIFOUR MINTE=IPMINT IMODEL = IMOD CMATE = imodel.CMATEE jmat = 0 iinc = 0 idua = 0 DO imat = 1 , matmod(/2) if (matmod(imat).eq.'IMPEDANCE') then jmat = imat goto 45 endif ENDDO IF (mfr.eq.28) THEN jgn = 8 if (ifour.eq.2) then jgm = 6 segini mlmots iinc = mlmots do igm = 1,jgm enddo segini mlmots idua = mlmots do igm= 1,jgm enddo else if (ifour.lt.0) then jgm = 4 segini mlmots iinc = mlmots segini mlmots idua = mlmots else if (ifour.eq.0) then jgm = 3 segini mlmots iinc = mlmots segini mlmots idua = mlmots else if (ifour.eq.1) then * a faire endif ENDIF c numero des etiquettes : c etiquettes de 1 a 98 pour traitement specifique a l element c dans la zone specifique a chaque element commencant par : c 5 continue c element 5 etiquettes 1005 2005 3005 4005 ... c 44 continue c element 44 etiquettes 1044 2044 3044 4044 ... c_______________________________________________________________________ * CABL SEG2 SEG3 TRI3 TRI4 TRI6 TRI7 QUA4 QUA5 QUA8 QUA9 GOTO ( 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * RAC2 RAC3 CUB8 CU20 PRI6 PR15 LIA3 LIA4 LIA6 LIA8 MULT & , 12, 99, 99, 99, 99, 99, 18, 18, 99, 99, 99 * TET4 TE10 PYR5 PY13 COQ3 DKT POUT LISP FAC3 FAC4 FAC6 & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * FAC8 LTR3 LQU4 LCU8 LPR6 LTE4 LPY5 COQ8 TUYA TUFI COQ2 & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * POI1 BARR RACO LSU2 COQ4 LISM COF3 RES2 LSU3 LSU4 LICO & , 45, 46, 47, 99, 99, 99, 99, 99, 99, 99, 55 * COQ6 CVS2 CVS3 CVT3 CVT6 CVQ4 CVQ8 THP5 TH13 THP6 TH15 & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * THC8 TH20 ICT3 ICQ4 ICT6 ICQ8 ICC8 ICT4 ICP6 IC20 IC10 & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * IC15 TRIP QUAP CUBP TETP PRIP TIMO JOI2 JOI3 JOT3 JOI4 & , 99, 99, 99, 99, 99, 99, 99, 85, 99, 87, 88 * JOI6 JOI8 LISC TRIH DST LIC4 CERC TUYO LSE2 LITU HYT3 & , 99, 99, 99, 92, 99, 94, 46, 99, 99, 12, 99 * HYQ4 HYT4 HYP6 HYC8 TRIS QUAS POIS FOR3 JOP3 JOP6 JOP8 & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * POL3 POL4 POL5 POL6 POL7 POL8 POL9 PO10 PO11 PO12 PO13 & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * PO14 BAR3 BAEX LIA2 QUAH CUBH ROT3 SEF2 TRF3 QUF4 CUF8 & , 99, 46, 124, 99, 126, 127, 99, 99, 99, 99, 99 * PRF6 TEF4 PYF5 MSE3 MTR6 MQU9 MC27 MP18 MT10 MP14 SEF3 & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * TRF7 QUF9 CF27 PF21 TF15 PF19 SEG6 TR21 QU36 C216 P126 & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * TE56 PY91 TRH6 & , 99, 99, 157),MELE * GOTO(168,169,170,171,172),MELE-167 * * JOI1 GOTO(265),MELE-264 C--- CAS NON PREVUS ICI------------------------------------------------- 99 CONTINUE MOTERR(1:4)=NOMTP(MELE) MOTERR(5:12)='MASSE4' GOTO 510 c_______________________________________________________________________ c secteur de calcul pour les elements de raccord rac2 rac3 litu c liquide massif lineaire cas bidimensionnel c_______________________________________________________________________ 12 CONTINUE IF (ILUMP .EQ. 1) GOTO 99 NBBB=NBNN IF (MELE.NE.98) LW=IDIM SEGINI WRK1,WRK3 DO 3012 IB=1,NBELEM c on cherche les coordonnees de l element ib c calcul des coefficients de normalisation MPTVAL=IVAMAT IF (MELE.NE.98) THEN DO 5012 IM=1,NMATT MELVAL=IVAL(IM) IBMN=MIN(IB,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) 5012 CONTINUE RHOREF=VALMAT(1) RLCAR = VALMAT(2) CFPI= RHOREF*RLCAR ELSE c cas de l'element litu DO 7012 IM=1,NMATT MELVAL=IVAL(IM) IBMN=MIN(IB,VELCHE(/2)) 7012 CONTINUE ENDIF c lecture des caracteristiques dans work MPTVAL=IVACAR DO 4012 IC=1,NCARR IF (IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF 4012 CONTINUE IF (MELE.EQ.98) THEN ELSE 1 POIGAU,SHPTOT,REL,LRE) ENDIF c remplissage de xmatri 3012 CONTINUE GOTO 510 c_______________________________________________________________________ c secteur de calcul pour les elements de raccord lia3 lia4 c liquide massif lineaire cas tridimensionnel c_______________________________________________________________________ 18 CONTINUE IF (ILUMP .EQ. 1) GOTO 99 NBBB=NBNN LW=IDIM SEGINI WRK1,WRK3 DO 3018 IB=1,NBELEM c on cherche les coordonnees de l element ib c calcul des coefficients de normalisation MPTVAL=IVAMAT DO 5018 IM=1,NMATT MELVAL=IVAL(IM) IBMN=MIN(IB,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) 5018 CONTINUE RHOREF=VALMAT(1) RLCAR = VALMAT(2) CFPI= RHOREF*RLCAR MPTVAL=IVACAR DO 4018 IC=1,NCARR IF (IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF 4018 CONTINUE 1 SHPTOT,REL,LRE,IER246) IF(IER246.NE.0) THEN GOTO 510 ENDIF c remplissage de xmatri 3018 CONTINUE GOTO 510 c_______________________________________________________________________ c impedance c_______________________________________________________________________ 45 CONTINUE IF (jmat.gt.0) THEN MPTVAL=IVAMAT MELVAL=IVAL(1) if (ival(/1).gt.1) then melva1 = ival(2) else melva1 = 0 endif jddl = LRE/NBPGAU DO IB = 1,NBELEM JDIAG = 0 XMASS = 0.D0 if (melval.gt.0) IBMN=MIN(IB,VELCHE(/2)) do IG = 1, NBPGAU if (melval.gt.0) then igmn = MIN(IG,VELCHE(/1)) XMASS=VELCHE(IGMN,IBMN) endif XINER = XMASS if (melva1.gt.0) then igmn = MIN(IG,melva1.VELCHE(/1)) XINER = melva1.VELCHE(IGMN,IBMN) endif do idl = 1,jddl JDIAG = JDIAG + 1 RE(JDIAG,JDIAG,ib) = XMASS if (idim.eq.3.and.idl.gt.3) RE(JDIAG,JDIAG,ib) = XINER if (idim.ne.3.and.idl.gt.2) RE(JDIAG,JDIAG,ib) = XINER enddo enddo ENDDO GOTO 510 ENDIF IF (MFR.EQ.26) THEN * MODAL (car goto 510 sous IMPEDANCE) MPTVAL=IVAMAT MELVAL=IVAL(2) DO IB = 1,NBELEM IBMN=MIN(IB,VELCHE(/2)) RE(1,1,ib) = VELCHE(1,IBMN) ENDDO * ELSE IF (MFR.EQ.28) THEN * STATIQUE (car goto 510 sous IMPEDANCE) MPTVAL=IVAMAT DO IB = 1,NBELEM MELVAL=IVAL(1) IBMN=MIN(IB,IELCHE(/2)) idepl=IELCHE(1,IBMN) MELVAL=IVAL(3) IBMN=MIN(IB,IELCHE(/2)) imade=IELCHE(1,IBMN) re(1,1,ib) = x1 ENDDO ENDIF GOTO 510 c_______________________________________________________________________ c element point (poi1) en defos planes generalisees c_______________________________________________________________________ IF(MELE.EQ.45.AND.IFOUR.NE.-3) GOTO 99 NBBB=NBNN SEGINI WRK1,WRK3 c boucle de calcul pour les differents elements DO 3045 IB=1,NBELEM c on cherche les coordonnees de l element ib c on recherche rho et la section MPTVAL=IVAMAT MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) RR=VELCHE(1,IBMN) MPTVAL=IVACAR MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) RR=RR*VELCHE(1,IBMN) c on calcule la matrice de masse 3045 CONTINUE GO TO 510 c_______________________________________________________________________ c elements barre et cerce c_______________________________________________________________________ 46 CONTINUE * IF(MELE.EQ.95.AND.IFOUR.NE.0.AND.IFOUR.NE.1) GOTO 99 * NBBB=NBNN SEGINI WRK1,WRK3 IF(MELE.EQ.123) THEN NCOM=NBNN LRN =LRE SEGINI WRK5 ENDIF c boucle de calcul pour les differents elements DO 3046 IB=1,NBELEM c on cherche les coordonnees de l element ib MPTVAL=IVAMAT MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) RR=VELCHE(1,IBMN) MPTVAL=IVACAR MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) RR=RR*VELCHE(1,IBMN) c on calcule la matrice de masse IF (KERRE.NE.0) THEN INTERR(1)=ISOUS INTERR(2)=IB GOTO 510 ENDIF IF (ILUMP .EQ. 1) THEN ELSE ENDIF 3046 CONTINUE GO TO 510 c_______________________________________________________________________ c JOINT UNIDIMENSIONNEL JOI1 c_______________________________________________________________________ 265 CONTINUE NBBB=NBNN SEGINI WRK1,WRK3,WRK4 IAW1=101 IAW2=IAW1+LRE*LRE IAW3=IAW2+LRE*LRE IAW4=IAW3+LRE*LRE MPTVAL=IVAMAT DO 3265 IB=1,NBELEM DO IC=1,NMATT IF (IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF END DO c on calcule la matrice de masse localement c on passe en repère global IF (ILUMP .EQ. 1) THEN ELSE ENDIF 3265 CONTINUE GO TO 510 c_______________________________________________________________________ c element barre 3d excentre (baex) c_______________________________________________________________________ 124 CONTINUE NBBB=NBNN NCOM=2 LRN =LRE SEGINI WRK1,WRK3,WRK5 c boucle de calcul pour les differents elements DO 3199 IB=1,NBELEM c on recupere la section de l'element, ses excentrements et son c orientation. les caracteristiques sont rangees dans work c selon l'ordre suivant: sect excz excy vx vy vz MPTVAL=IVACAR DO IC=1,NCARR IF(IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF END DO c xgene stocke la matrice de passage de l'element excentre IF (KERRE.NE.0) THEN INTERR(1)=ISOUS INTERR(2)=IB ENDIF MPTVAL=IVAMAT MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) RR=VELCHE(1,IBMN)*SECT c on calcule la matrice de masse IF (ILUMP .EQ. 1) THEN ELSE ENDIF 3199 CONTINUE GO TO 510 c_______________________________________________________________________ c secteur de calcul pour les elements de raccord c liquide coque cas bidimensionnel c_______________________________________________________________________ 47 CONTINUE IF (ILUMP .EQ. 1) GOTO 99 NBBB=NBNN LW=IDIM SEGINI WRK1,WRK3 DO 3047 IB=1,NBELEM c on cherche les coordonnees de l element ib c calcul des coefficients de normalisation MPTVAL=IVAMAT DO 5047 IM=1,NMATT MELVAL=IVAL(IM) IBMN=MIN(IB,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) 5047 CONTINUE RHOREF=VALMAT(1) RLCAR = VALMAT(2) CFPI= RHOREF*RLCAR MPTVAL=IVACAR DO 4047 IC=1,NCARR IF (IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF 4047 CONTINUE c remplissage de xmatri 3047 CONTINUE GOTO 510 c_______________________________________________________________________ c secteur de calcul pour les elements de raccord c liquide coque 3 noeuds - cas tridimensionnel c_______________________________________________________________________ 55 CONTINUE IF (ILUMP .EQ. 1) GOTO 99 NBBB=NBNN LW=IDIM SEGINI WRK1,WRK3 DO 3055 IB=1,NBELEM c on cherche les coordonnees de l element ib c calcul des coefficients de normalisation MPTVAL=IVAMAT DO 5055 IM=1,NMATT MELVAL=IVAL(IM) IBMN=MIN(IB,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) 5055 CONTINUE RHOREF=VALMAT(1) RLCAR = VALMAT(2) CFPI= RHOREF*RLCAR MPTVAL=IVACAR DO 4055 IC=1,NCARR IF (IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF 4055 CONTINUE 1 QSIGAU,ETAGAU,SHPTOT,REL,LRE,IER246) IF (IER246.NE.0) THEN GOTO 510 ENDIF c remplissage de xmatri 3055 CONTINUE GOTO 510 c_______________________________________________________________________ c secteur de calcul pour les elements joints joi2 c_______________________________________________________________________ 85 CONTINUE IF (ILUMP .EQ. 1) GOTO 99 NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 DO 3085 IB=1,NBELEM c on cherche les coordonnees des noeuds de l element ib c calcul des coordonnees locales de l'element c boucle sur les points de gauss ISDJC=0 DO 4085 IGAU=1,NBPGAU 1 1.D0,XEL,SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE) * IF(DJAC.LT.0.) ISDJC=ISDJC+1 IF(DJAC.EQ.0.) I259=IB DJAC=ABS(DJAC)*POIGAU(IGAU) MPTVAL=IVAMAT IF (IVAL(1).NE.0) THEN MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) VALMAT(1)=VELCHE(IGMN,IBMN) ELSE VALMAT(1)=0.D0 ENDIF CCCCCCCCCCC DJAC=DJAC*VALMAT(1)/3.0D0 C IL FAUT DIVISER PAR 4, CE QUI CORRESPOND PLUS EXACTEMENT A DIVISER C LE B PAR 2... DJAC=DJAC*VALMAT(1)/4.0D0 c cas axisymetrique : multiplication par le rayon de courbure IF (IFOUR.EQ.0) THEN RAYON = 0.D0 DO 4185 IRAY=1,NUMSUP RAYON=RAYON + ( SHPTOT(1,IRAY,IGAU)*XE(1,IRAY) ) 4185 CONTINUE DJAC=DJAC*RAYON ENDIF 4085 CONTINUE IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB c remplissage de xmatri 3085 CONTINUE GOTO 510 c_______________________________________________________________________ c secteur de calcul pour les elements joints jot3 c_______________________________________________________________________ 87 CONTINUE IF (ILUMP .EQ. 1) GOTO 99 NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 DO 3087 IB=1,NBELEM c on cherche les coordonnees des noeuds de l element ib c calcul des coordonnees locales de l'element c boucle sur les points de gauss ISDJC=0 DO 4087 IGAU=1,NBPGAU 1 1.D0,XEL,SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE) IF(DJAC.LT.0.) ISDJC=ISDJC+1 IF(DJAC.EQ.0.) I259=IB DJAC=ABS(DJAC)*POIGAU(IGAU) MPTVAL=IVAMAT IF (IVAL(1).NE.0) THEN MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) VALMAT(1)=VELCHE(IGMN,IBMN) ELSE VALMAT(1)=0.D0 ENDIF DJAC=DJAC*VALMAT(1) C IL FAUT DIVISER PAR 4, CE QUI CORRESPOND PLUS EXACTEMENT A DIVISER C LE B PAR 2... DJAC=DJAC/4.0D0 4087 CONTINUE IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB c remplissage de xmatri 3087 CONTINUE GOTO 510 c_______________________________________________________________________ c secteur de calcul pour les elements joints joi4 c_______________________________________________________________________ 88 CONTINUE IF (ILUMP .EQ. 1) GOTO 99 NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 DO 3088 IB=1,NBELEM c on cherche les coordonnees des noeuds de l element ib c calcul des coordonnees locales de l'element c boucle sur les points de gauss ISDJC=0 DO 4088 IGAU=1,NBPGAU 1 1.D0,XEL,SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE) IF(DJAC.LT.0.) ISDJC=ISDJC+1 IF(DJAC.EQ.0.) I259=IB DJAC=ABS(DJAC)*POIGAU(IGAU) MPTVAL=IVAMAT IF (IVAL(1).NE.0) THEN MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) VALMAT(1)=VELCHE(IGMN,IBMN) ELSE VALMAT(1)=0.D0 ENDIF DJAC=DJAC*VALMAT(1) C IL FAUT DIVISER PAR 4, CE QUI CORRESPOND PLUS EXACTEMENT A DIVISER C LE B PAR 2... DJAC=DJAC/4.0D0 4088 CONTINUE IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB c remplissage de xmatri 3088 CONTINUE GOTO 510 c_______________________________________________________________________ c secteur de calcul pour les elements joints jgi2 c_______________________________________________________________________ 170 CONTINUE IF (IFOUR.EQ.-3) NDDL=NDDL+1 IF (ILUMP .EQ. 1) GOTO 99 NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 IG1=0 DO IB=1,NBELEM c on cherche les coordonnees des noeuds de l element ib c calcul des coordonnees locales de l'element c boucle sur les points de gauss ISDJC=0 DO IGAU=1,NBPGAU MPTVAL=IVAMAT DO IM=1,NMATT MELVAL=IVAL(IM) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) VALMAT(IM)=VELCHE(IGMN,IBMN) ENDDO EPAIST=VALMAT(2) IF(EPAIST.EQ.0.D0)THEN . SHPWRK,EPAIST,BGENE,DJAC,XDPGE,YDPGE,IERT) IF(IERT.NE.0) IG1=IB ENDIF 1 1.D0,XEL,SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE) * IF(DJAC.LT.0.) ISDJC=ISDJC+1 IF(DJAC.EQ.0.) I259=IB DJAC=ABS(DJAC)*POIGAU(IGAU) * c valmat(1)=rho, valmat(2)=epai c /4 correspnnd en fait a diviser les matrices B par 2 CCCCCCCCCCCC DJAC=DJAC*VALMAT(1)*VALMAT(2)/4.0D0 DJAC=DJAC*VALMAT(1)*EPAIST/4.0D0 c cas axisymetrique : multiplication par le rayon de courbure IF (IFOUR.EQ.0) THEN RAYON = 0.D0 DO IRAY=1,NUMSUP RAYON=RAYON + ( SHPTOT(1,IRAY,IGAU)*XE(1,IRAY) ) ENDDO DJAC=DJAC*RAYON ENDIF ENDDO IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB c remplissage de xmatri ENDDO IF (IG1.NE.0) THEN INTERR(1)=IG1 ENDIF GOTO 510 c_______________________________________________________________________ c secteur de calcul pour les elements joints jct3 en 2D cisaillement c_______________________________________________________________________ 168 CONTINUE IF (ILUMP .EQ. 1) GOTO 99 NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 DO IB=1,NBELEM c on cherche les coordonnees des noeuds de l element ib c calcul des coordonnees locales de l'element c boucle sur les points de gauss ISDJC=0 DO IGAU=1,NBPGAU 1 1.D0,XEL,SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE) IF(DJAC.LT.0.) ISDJC=ISDJC+1 IF(DJAC.EQ.0.) I259=IB DJAC=ABS(DJAC)*POIGAU(IGAU) MPTVAL=IVAMAT IF (IVAL(1).NE.0) THEN MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) VALMAT(1)=VELCHE(IGMN,IBMN) ELSE VALMAT(1)=0.D0 ENDIF DJAC=DJAC*VALMAT(1) C Il faut diviser par 4, ce qui correspond plus exactement a diviser C le B par 2... DJAC=DJAC/4.0D0 ENDDO IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB c remplissage de xmatri ENDDO GOTO 510 c_______________________________________________________________________ c secteur de calcul pour les elements joints jgt3 generalise c_______________________________________________________________________ 171 CONTINUE IF (ILUMP .EQ. 1) GOTO 99 NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 IG1=0 DO IB=1,NBELEM c on cherche les coordonnees des noeuds de l element ib c calcul des coordonnees locales de l'element c boucle sur les points de gauss ISDJC=0 DO IGAU=1,NBPGAU MPTVAL=IVAMAT DO IM=1,NMATT MELVAL=IVAL(IM) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) VALMAT(IM)=VELCHE(IGMN,IBMN) ENDDO EPAIST=VALMAT(2) IF(EPAIST.EQ.0.D0)THEN . SHPWRK,EPAIST,BGENE,DJAC,IERT) IF(IERT.NE.0) IG1=IB ENDIF 1 1.D0,XEL,SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE) * IF(DJAC.LT.0.) ISDJC=ISDJC+1 IF(DJAC.EQ.0.) I259=IB DJAC=ABS(DJAC)*POIGAU(IGAU) * c valmat(1)=rho, valmat(2)=epai c /4 correspond en fait a diviser les matrices B par 2 DJAC=DJAC*VALMAT(1)*EPAIST/4.0D0 * ENDDO IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB c remplissage de xmatri ENDDO IF (IG1.NE.0) THEN INTERR(1)=IG1 ENDIF GOTO 510 c_______________________________________________________________________ c secteur de calcul pour les elements joints jci4 en 2D cisaillement c_______________________________________________________________________ 169 CONTINUE IF (ILUMP .EQ. 1) GOTO 99 NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 DO IB=1,NBELEM c on cherche les coordonnees des noeuds de l element ib c calcul des coordonnees locales de l'element c boucle sur les points de gauss ISDJC=0 DO IGAU=1,NBPGAU 1 1.D0,XEL,SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE) IF(DJAC.LT.0.) ISDJC=ISDJC+1 IF(DJAC.EQ.0.) I259=IB DJAC=ABS(DJAC)*POIGAU(IGAU) MPTVAL=IVAMAT IF (IVAL(1).NE.0) THEN MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) VALMAT(1)=VELCHE(IGMN,IBMN) ELSE VALMAT(1)=0.D0 ENDIF DJAC=DJAC*VALMAT(1) CCCCCCCCCCC DJAC=DJAC/3.0D0 C Il faut diviser par 4, ce qui correspond plus exactement a diviser C le B par 2... DJAC=DJAC/4.0D0 ENDDO IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB c remplissage de xmatri ENDDO GOTO 510 c_______________________________________________________________________ c secteur de calcul pour les elements joints jgi4 generalise c_______________________________________________________________________ 172 CONTINUE IF (ILUMP .EQ. 1) GOTO 99 NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 IG1=0 DO IB=1,NBELEM c on cherche les coordonnees des noeuds de l element ib c calcul des coordonnees locales de l'element c boucle sur les points de gauss ISDJC=0 DO IGAU=1,NBPGAU MPTVAL=IVAMAT DO IM=1,NMATT MELVAL=IVAL(IM) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) VALMAT(IM)=VELCHE(IGMN,IBMN) ENDDO EPAIST=VALMAT(2) IF(EPAIST.EQ.0.D0)THEN . BGENE,DJAC,IERT) IF(IERT.NE.0) IG1=IB ENDIF 1 1.D0,XEL,SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE) * IF(DJAC.LT.0.) ISDJC=ISDJC+1 IF(DJAC.EQ.0.) I259=IB DJAC=ABS(DJAC)*POIGAU(IGAU) * c valmat(1)=rho, valmat(2)=epai c /4 correspnnd en fait a diviser les matrices B par 2 CCCCCCCCCCCC DJAC=DJAC*VALMAT(1)*VALMAT(2)/4.0D0 DJAC=DJAC*VALMAT(1)*EPAIST/4.0D0 * ENDDO IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB c remplissage de xmatri ENDDO IF (IG1.NE.0) THEN INTERR(1)=IG1 ENDIF GOTO 510 c_______________________________________________________________________ c secteur de calcul pour les elements homogeneises c (liquide solide) trih c_______________________________________________________________________ 92 CONTINUE IF (ILUMP .EQ. 1) GOTO 99 NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2 DO 3092 IB=1,NBELEM c on cherche les coordonnees des noeuds de l element ib c on cherche les caracteristiques du materiau de l element ib MPTVAL=IVAMAT DO 8092 IM=1,NMATT MELVAL=IVAL(IM) IBMN=MIN(IB,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) 8092 CONTINUE B11 =VALMAT(1) B22 =VALMAT(2) B12 =VALMAT(3) RHOF =VALMAT(4) RHOS =VALMAT(5) C =VALMAT(6) RHOREF=VALMAT(7) CREF =VALMAT(8) RLCAR =VALMAT(9) c on cherche les caracteristiques geometriques de l element ib MPTVAL=IVACAR IF (IFOUR.EQ.0.OR.IFOUR.EQ.1) THEN MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) SECT=VELCHE(1,IBMN) MELVAL=IVAL(2) IBMN=MIN(IB,VELCHE(/2)) SCEL=VELCHE(1,IBMN) MELVAL=IVAL(3) IBMN=MIN(IB,VELCHE(/2)) SFLU=VELCHE(1,IBMN) MELVAL=IVAL(4) IBMN=MIN(IB,VELCHE(/2)) EPS =VELCHE(1,IBMN) ELSE SECT=1.D0 MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) SCEL=VELCHE(1,IBMN) MELVAL=IVAL(2) IBMN=MIN(IB,VELCHE(/2)) SFLU=VELCHE(1,IBMN) MELVAL=IVAL(3) IBMN=MIN(IB,VELCHE(/2)) EPS =VELCHE(1,IBMN) MELVAL=IVAL(4) IBMN=MIN(IB,VELCHE(/2)) F11 =VELCHE(1,IBMN) MELVAL=IVAL(5) IBMN=MIN(IB,VELCHE(/2)) F12 =VELCHE(1,IBMN) ENDIF c calcul de la masse m0/eps**2 RHOSS=RHOS*SECT/(EPS*EPS) c calcul des coefficients de normalisation COEFPR=(RHOREF*CREF*CREF)/RLCAR COEFPI=RHOREF*RLCAR VKL12 =-(COEFPR*COEFPI*SFLU)/(RHOF*C*C*SCEL) VKL22 =-(COEFPI*COEFPI)/(RHOF*SCEL) VKL23 = COEFPI/SCEL VKL33 = 1.D0/SCEL IF(IFOUR.EQ.0.OR.IFOUR.EQ.1) THEN VKL23 =COEFPI*0.5D0*(2.D0*SCEL-B11-B22)/SCEL VKL33 =(RHOSS+RHOF*(SFLU-(B11+B22)/2.D0))/SCEL c calcul des termes en pi*pi c integration par nbpgau points de gauss ISDJC=0 DO 4092 IGAU=1,NBPGAU POIGA2=MINTE.POIGAU(IGAU) # IFOUR,NHRM,B11,B22,SFLU,POIGA2,VKL22,LRE,REL,IRRT) IF(IRRT.NE.1) GOTO 7092 c calcul du reste des termes de la matrice masse c integration par nbpgau points de gauss # ,IFOUR,NHRM,VKL12,VKL23,VKL33,POIGA2,ISDJC,LRE,REL,IRRT) IF(IRRT.NE.1) GOTO 7092 4092 CONTINUE IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB ELSE c boucle sur les points de gauss c cas plan ISDJC=0 DO 6092 IGAU1=1,NBPGAU POIGA1=MINTE.POIGAU(IGAU1) # ,RHOSS,RHOF, # B11,B22,B12,F11,F12,SFLU,SCEL,POIGA1,VKL12,VKL22, # VKL23,VKL33,LRE,REL,ISDJC,IRRT) IF(IRRT.NE.1) GOTO 7092 6092 CONTINUE IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB ENDIF c remplissage de xmatri 3092 CONTINUE c impression d un eventuel message d erreur 7092 CONTINUE IF(IRRT.EQ.0) THEN MOTERR(1:4)=NOMTP(MELE) ELSE IF(IRRT.EQ.2) THEN INTERR(1) = IB ENDIF ENDIF GOTO 510 c_______________________________________________________________________ c secteur de calcul pour les elements de raccord c liquide coque 4 noeuds - cas tridimensionnel c_______________________________________________________________________ 94 CONTINUE IF (ILUMP .EQ. 1) GOTO 99 NBBB=NBNN LW=IDIM SEGINI WRK1,WRK3 DO 3094 IB=1,NBELEM c on cherche les coordonnees de l element ib c calcul des coefficients de normalisation MPTVAL=IVAMAT DO 5094 IM=1,NMATT MELVAL=IVAL(IM) IBMN=MIN(IB,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) 5094 CONTINUE RHOREF=VALMAT(1) RLCAR = VALMAT(2) CFPI= RHOREF*RLCAR MPTVAL=IVACAR DO 4094 IC=1,NCARR IF (IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF 4094 CONTINUE 1 QSIGAU,ETAGAU,SHPTOT,REL,LRE,IER246) IF(IER246.NE.0) THEN GOTO 510 ENDIF c remplissage de xmatri 3094 CONTINUE GOTO 510 c_______________________________________________________________________ c secteur de calcul pour les elements homogeneises c (liquide solide) quah c_______________________________________________________________________ 126 CONTINUE IF (ILUMP .EQ. 1) GOTO 99 NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2 DO 3126 IB=1,NBELEM c on cherche les coordonnees des noeuds de l element ib c on cherche les caracteristiques du materiau de l element ib MPTVAL=IVAMAT DO 8126 IM=1,NMATT MELVAL=IVAL(IM) IBMN=MIN(IB,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) 8126 CONTINUE B11 =VALMAT(1) B22 =VALMAT(2) B12 =VALMAT(3) RHOF =VALMAT(4) RHOS =VALMAT(5) C =VALMAT(6) RHOREF=VALMAT(7) CREF =VALMAT(8) RLCAR =VALMAT(9) c on cherche les caracteristiques geometriques de l element ib MPTVAL=IVACAR MELVAL=IVAL(4) IBMN=MIN(IB,VELCHE(/2)) SECT=VELCHE(1,IBMN) MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) SCEL=VELCHE(1,IBMN) MELVAL=IVAL(2) IBMN=MIN(IB,VELCHE(/2)) SFLU=VELCHE(1,IBMN) MELVAL=IVAL(3) IBMN=MIN(IB,VELCHE(/2)) EPS =VELCHE(1,IBMN) c calcul de la masse m0/eps**2 RHOSS=RHOS*SECT/(EPS*EPS) c calcul des coefficients de normalisation COEFPR=(RHOREF*CREF*CREF)/RLCAR COEFPI=RHOREF*RLCAR VKL12 =-(COEFPR*COEFPI*SFLU)/(RHOF*C*C*SCEL) VKL22 =-(COEFPI*COEFPI)/(RHOF*SCEL) VKL23 =COEFPI*0.5D0*(2.D0*SCEL-B11-B22)/SCEL VKL33 =(RHOSS+RHOF*(SFLU-(B11+B22)/2.D0))/SCEL c calcul des termes en pi*pi c integration par nbpgau points de gauss ISDJC=0 DO 4126 IGAU=1,NBPGAU POIGA2=MINTE.POIGAU(IGAU) # ,NHRM,B11,B22,SFLU,POIGA2,VKL22,LRE,REL,IRRT) IF(IRRT.NE.1) GOTO 7126 c calcul du reste des termes de la matrice masse c integration par nbpgau points de gauss # ,IFOUR,NHRM,VKL12,VKL23,VKL33,POIGA2,ISDJC,LRE,REL,IRRT) IF(IRRT.NE.1) GOTO 7126 4126 CONTINUE IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB c remplissage de xmatri 3126 CONTINUE c impression d un eventuel message d erreur 7126 CONTINUE IF(IRRT.EQ.0) THEN MOTERR(1:4)=NOMTP(MELE) ELSE IF(IRRT.EQ.2) THEN INTERR(1) = IB ENDIF ENDIF GOTO 510 c_______________________________________________________________________ c secteur de calcul pour les elements homogeneises c (liquide solide) cubh c_______________________________________________________________________ 127 CONTINUE IF (ILUMP .EQ. 1) GOTO 99 NBNO=NBNN NBBB=NBNN LW=IDIM SEGINI WRK1,WRK2 DO 3127 IB=1,NBELEM c on cherche les coordonnees des noeuds de l element ib c on cherche les caracteristiques du materiau de l element ib MPTVAL=IVAMAT DO 8127 IM=1,NMATT MELVAL=IVAL(IM) IBMN=MIN(IB,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) 8127 CONTINUE B11 =VALMAT(1) B22 =VALMAT(2) B12 =VALMAT(3) RHOF =VALMAT(4) RHOS =VALMAT(5) C =VALMAT(6) RHOREF=VALMAT(7) CREF =VALMAT(8) RLCAR =VALMAT(9) c on cherche les caracteristiques geometriques de l element ib MPTVAL=IVACAR MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) SCEL=VELCHE(1,IBMN) MELVAL=IVAL(2) IBMN=MIN(IB,VELCHE(/2)) SFLU=VELCHE(1,IBMN) MELVAL=IVAL(3) IBMN=MIN(IB,VELCHE(/2)) EPS =VELCHE(1,IBMN) MELVAL=IVAL(4) IBMN=MIN(IB,VELCHE(/2)) SECT =VELCHE(1,IBMN) c calcul de la masse m0/eps**2 RHOSS=RHOS*SECT/(EPS*EPS) c calcul des coefficients de normalisation COEFPR=(RHOREF*CREF*CREF)/RLCAR COEFPI=RHOREF*RLCAR VKL12 =-(COEFPR*COEFPI*SFLU)/(RHOF*C*C*SCEL) VKL22 =-(COEFPI*COEFPI)/(RHOF*SCEL) VKL23 = COEFPI/SCEL VKL33 = 1.D0/SCEL ISDJC=0 DO 6127 IGAU1=1,NBPGAU POIGA1=MINTE.POIGAU(IGAU1) # RHOSS,RHOF,B11,B22,B12,SFLU,SCEL,POIGA1,VKL12,VKL22,VKL23, # VKL33,LRE,REL,ISDJC,IRRT) IF(IRRT.NE.1) GOTO 7127 6127 CONTINUE IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB c remplissage de xmatri 3127 CONTINUE c impression d un eventuel message d erreur 7127 CONTINUE IF(IRRT.EQ.0) THEN MOTERR(1:4)=NOMTP(MELE) ELSE IF(IRRT.EQ.2) THEN INTERR(1) = IB ENDIF ENDIF GOTO 510 c_______________________________________________________________________ c secteur de calcul pour les elements homogeneises c (liquide solide) trh6 c_______________________________________________________________________ 157 CONTINUE IF (ILUMP .EQ. 1) GOTO 99 NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2 DO 3157 IB=1,NBELEM c on cherche les coordonnees des noeuds de l element ib c on cherche les caracteristiques du materiau de l element ib MPTVAL=IVAMAT DO 8157 IM=1,NMATT MELVAL=IVAL(IM) IBMN=MIN(IB,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) 8157 CONTINUE B11 =VALMAT(1) B22 =VALMAT(2) B12 =VALMAT(3) RHOF =VALMAT(4) RHOS =VALMAT(5) C =VALMAT(6) RHOREF=VALMAT(7) CREF =VALMAT(8) RLCAR =VALMAT(9) E111 =VALMAT(10) E112 =VALMAT(11) E121 =VALMAT(12) E122 =VALMAT(13) E221 =VALMAT(14) E222 =VALMAT(15) c on cherche les caracteristiques geometriques de l element ib MPTVAL=IVACAR IF (IFOUR.EQ.0.OR.IFOUR.EQ.1) THEN MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) SECT=VELCHE(1,IBMN) MELVAL=IVAL(2) IBMN=MIN(IB,VELCHE(/2)) SCEL=VELCHE(1,IBMN) MELVAL=IVAL(3) IBMN=MIN(IB,VELCHE(/2)) SFLU=VELCHE(1,IBMN) MELVAL=IVAL(4) IBMN=MIN(IB,VELCHE(/2)) EPS =VELCHE(1,IBMN) ELSE SECT=1.D0 MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) SCEL=VELCHE(1,IBMN) MELVAL=IVAL(2) IBMN=MIN(IB,VELCHE(/2)) SFLU=VELCHE(1,IBMN) MELVAL=IVAL(3) IBMN=MIN(IB,VELCHE(/2)) EPS =VELCHE(1,IBMN) MELVAL=IVAL(4) IBMN=MIN(IB,VELCHE(/2)) F11 =VELCHE(1,IBMN) MELVAL=IVAL(5) IBMN=MIN(IB,VELCHE(/2)) F12 =VELCHE(1,IBMN) ENDIF c calcul de la masse m0/eps**2 RHOSS=RHOS*SECT/(EPS*EPS) c calcul des coefficients de normalisation COEFPR=(RHOREF*CREF*CREF)/RLCAR COEFPI=RHOREF*RLCAR VKL12 =-(COEFPR*COEFPI*SFLU)/(RHOF*C*C*SCEL) VKL22 =-(COEFPI*COEFPI)/(RHOF*SCEL) VKL23 = COEFPI/SCEL VKL33 = 1.D0/SCEL VKL41 = EPS*EPS/2.D0/SCEL*(COEFPR*COEFPI) VKL42 = EPS*EPS/2.D0/SCEL*COEFPI*COEFPI VKL43 = EPS*EPS/2.D0/SCEL*COEFPI VKL44 = EPS*EPS/2.D0/SCEL c boucle sur les points de gauss c cas plan ISDJC=0 DO 6157 IGAU1=1,NBPGAU POIGA1=MINTE.POIGAU(IGAU1) # ,RHOSS,RHOF, # B11,B22,B12,F11,F12,SFLU,SCEL,POIGA1,VKL12,VKL22, # VKL23,VKL33,VKL42,VKL43,VKL44,E111,E112,E121,E122, # E221,E222,LRE,REL,ISDJC,IRRT) IF (IRRT.NE.1) GOTO 7157 6157 CONTINUE IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB c remplissage de xmatri 3157 CONTINUE c impression d un eventuel message d erreur 7157 CONTINUE IF(IRRT.EQ.0) THEN MOTERR(1:4)=NOMTP(MELE) ELSE IF(IRRT.EQ.2) THEN INTERR(1) = IB ENDIF ENDIF GOTO 510 c_______________________________________________________________________ 510 CONTINUE IF (I195.NE.0) THEN INTERR(1)=I195 ENDIF IF (I259.NE.0) THEN INTERR(1)=I259 ENDIF SEGSUP,MVELCH SEGSUP,WRK1 IF (WRK2.NE.0) SEGSUP,WRK2 IF (WRK3.NE.0) SEGSUP,WRK3 IF (WRK4.NE.0) SEGSUP,WRK4 IF (WRK5.NE.0) SEGSUP,WRK5 mlmots = iinc if (mlmots.gt.0) segsup mlmots mlmots = idua if (mlmots.gt.0) segsup mlmots RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales