grad2
C GRAD2 SOURCE CB215821 24/04/12 21:16:11 11897 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *____________________________________________________________________* * * * Sous-programme de l'operateur GRADIENT * * * * Entree: * * * * IPMODL Pointeur sur un objet MMODEL * * IPCHA1 Pointeur sur un MCHAML de DEPLACEMENT * * IPCHE1 Pointeur sur un MCHAML de CARACTERISTIQUES * * * * Sortie: * * * * IPGRAD Pointeur sur un MCHAML de gradients * * IRET 1 si succes , 0 sinon * * * *____________________________________________________________________* * -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC CCGEOME -INC SMCHAML -INC SMMODEL -INC SMELEME -INC SMINTE -INC SMCOORD * SEGMENT INFO INTEGER INFELL(JG) ENDSEGMENT * SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT * SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT * SEGMENT WRK1 ENDSEGMENT * SEGMENT WRK2 ENDSEGMENT * SEGMENT WRK3 REAL*8 XGENE(NSTN,LRN) ENDSEGMENT * SEGMENT WRK4 REAL*8 XLOC(3,3),XGLOB(3,3),TXR(IDIM,IDIM) REAL*8 VALMAT(NMATT) REAL*8 PMAT(NSTB,NSTB),PMAT1(IDIM,IDIM),PMAT2(IDIM,IDIM) ENDSEGMENT * SEGMENT WRK5 REAL*8 BPSS(3,3),XEL(3,NBBB) REAL*8 XNTH(LRN,LRN),XNTB(LRN,LRN),XNTT(LRN) ENDSEGMENT * SEGMENT WRK6 REAL*8 PKK(NSTB,NSTB) ENDSEGMENT * CHARACTER*8 CMATE CHARACTER*(NCONCH) CONM PARAMETER ( NINF=3 ) INTEGER INFOS(NINF) * IRET = 0 IPGRAD = 0 NHRM=NIFOUR MCHAML=0 C C VERIFICATION DU LIEU SUPPORT DU MCHAML DE MATERIAU C ISUP=0 IF (ISUP.GT.1) RETURN C C ACTIVATION DU MODELE C MMODEL=IPMODL SEGACT MMODEL NSOUS=KMODEL(/1) C KEL22 = 0 DO ISOUS = 1,NSOUS IMODEL=KMODEL(ISOUS) SEGACT IMODEL IF (FORMOD(1).NE.'POREUX') THEN GOTO 888 ENDIF IF ((NEFMOD.EQ.22).OR.(NEFMOD.EQ.259)) KEL22 = KEL22 + 1 IF (FORMOD(1).EQ.'CHARGEMENT') KEL22 = KEL22 + 1 ENDDO C C INITIALISATION DU MCHAML RESULTAT C N1=NSOUS-KEL22 N3=6 L1=11 SEGINI MCHELM TITCHE='GRADIENT' IFOCHE=IFOUR IPGRAD=MCHELM C____________________________________________________________________ C C DEBUT DE LA BOUCLE SUR LES DIFFERENTES ZONES C____________________________________________________________________ C isouss=0 DO 500 ISOUS=1,NSOUS * * INITIALISATION * IVAMAT=0 IVAGRA=0 IVADEP=0 IVACAR=0 NMATR=0 NMATF=0 NGRAD=0 NDEP=0 MOMATR=0 MOGRAD=0 MODEPL=0 C C ON RECUPERE L INFORMATION GENERALE C IMODEL=KMODEL(ISOUS) SEGACT IMODEL C C TRAITEMENT DU MODELE C MELE=NEFMOD if ((MELE.EQ.22).OR.(MELE.EQ.259)) go to 500 IF (FORMOD(1).EQ.'CHARGEMENT') GO TO 500 C isouss=isouss+1 MELEME=IMAMOD IPMAIL=IMAMOD CONM =CONMOD IMACHE(ISOUSs)=IPMAIL CONCHE(ISOUSs)=CONMOD C C NATURE DU MATERIAU C * NFOR=FORMOD(/2) * NMAT=MATMOD(/2) * CALL NOMATE(FORMOD,NFOR,MATMOD,NMAT,CMATE,MATE,INAT) CMATE = CMATEE MATE = IMATEE MAPL = INATUU IF (CMATE.EQ.' ')THEN SEGSUP MCHELM GOTO 888 ENDIF C____________________________________________________________________ C C INFORMATION SUR L'ELEMENT FINI C____________________________________________________________________ C if(infmod(/1).lt.5) then IF (IERR.NE.0) THEN SEGSUP MCHELM GOTO 888 ENDIF INFO=IPINF MFR =INFELL(13) IELE =INFELL(14) IPORE=INFELL(8) MINTE=INFELL(11) segsup info else MFR =INFELE(13) IELE =INFELE(14) IPORE=INFELE(8) MINTE=INFMOD(5) endif IPMINT=MINTE C C CREATION DU TABLEAU INFOS C IF (IRTD.EQ.0) GOTO 9990 C INFCHE(ISOUSs,1)=0 INFCHE(ISOUSs,2)=0 INFCHE(ISOUSs,3)=NHRM INFCHE(ISOUSs,4)=MINTE INFCHE(ISOUSs,5)=0 INFCHE(ISOUSs,6)=3 C C ACTIVATIONS C SEGACT MINTE NBPGAU=POIGAU(/1) SEGACT MELEME NBNN =NUM(/1) NBELEM=NUM(/2) C____________________________________________________________________ C C RECHERCHE DES COMPOSANTES DE DEPLACEMENTS C____________________________________________________________________ C NBROBL=0 NBRFAC=0 IPPORE=0 * IF(MFR.EQ.33) THEN IPPORE=NBNN NBROBL=1 SEGINI NOMID LESOBL(1)='P ' ELSE IF(MFR.EQ.57) THEN IPPORE=NBNN NBROBL=2 SEGINI NOMID LESOBL(1)='P ' LESOBL(2)='PQ ' ELSE IF(MFR.EQ.59) THEN IPPORE=NBNN NBROBL=3 SEGINI NOMID LESOBL(1)='P ' LESOBL(2)='PQ ' LESOBL(3)='TP ' ENDIF IDECAP=NBROBL NDEP=NBROBL MODEPL = NOMID C NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' SEGSUP NOTYPE IF (IERR.NE.0) GOTO 9990 C____________________________________________________________________ C C RECHERCHE DES COMPOSANTES DE MATERIAU C____________________________________________________________________ C NBROBL=0 NBRFAC=0 * cas isotrope IF (MATE.EQ.1) THEN * IF (MELE.GE.79.AND.MELE.LE.83) THEN NBROBL=2 SEGINI NOMID LESOBL(1)='PERM' LESOBL(2)='VISC' ELSE IF (MELE.GE.108.AND.MELE.LE.110) THEN NBROBL=4 SEGINI NOMID LESOBL(1)='PERH' LESOBL(2)='PERB' LESOBL(3)='PERT' LESOBL(4)='VISC' ELSE IF (MELE.GE.173.AND.MELE.LE.177) THEN NBROBL=4 SEGINI NOMID LESOBL(1)='PK11' LESOBL(2)='PK12' LESOBL(3)='PK21' LESOBL(4)='PK22' ELSE IF (MELE.GE.178.AND.MELE.LE.182) THEN NBROBL=9 SEGINI NOMID LESOBL(1)='PK11' LESOBL(2)='PK12' LESOBL(3)='PK13' LESOBL(4)='PK21' LESOBL(5)='PK22' LESOBL(6)='PK23' LESOBL(7)='PK31' LESOBL(8)='PK32' LESOBL(9)='PK33' ELSE IF (MELE.GE.185.AND.MELE.LE.187) THEN NBROBL=12 SEGINI NOMID LESOBL(1)='PH11' LESOBL(2)='PB11' LESOBL(3)='PT11' LESOBL(4)='PH12' LESOBL(5)='PB12' LESOBL(6)='PT12' LESOBL(7)='PH21' LESOBL(8)='PB21' LESOBL(9)='PT21' LESOBL(10)='PH22' LESOBL(11)='PB22' LESOBL(12)='PT22' ELSE IF (MELE.GE.188.AND.MELE.LE.190) THEN NBROBL=27 SEGINI NOMID LESOBL(1)='PH11' LESOBL(2)='PB11' LESOBL(3)='PT11' LESOBL(4)='PH12' LESOBL(5)='PB12' LESOBL(6)='PT12' LESOBL(7)='PH13' LESOBL(8)='PB13' LESOBL(9)='PT13' LESOBL(10)='PH21' LESOBL(11)='PB21' LESOBL(12)='PT21' LESOBL(13)='PH22' LESOBL(14)='PB22' LESOBL(15)='PT22' LESOBL(16)='PH23' LESOBL(17)='PB23' LESOBL(18)='PT23' LESOBL(19)='PH31' LESOBL(20)='PB31' LESOBL(21)='PT31' LESOBL(22)='PH32' LESOBL(23)='PB32' LESOBL(24)='PT32' LESOBL(25)='PH33' LESOBL(26)='PB33' LESOBL(27)='PT33' ENDIF * cas orthotrope ELSE IF (MATE.EQ.2) THEN IF (IDIM.EQ.3) THEN NBROBL=10 SEGINI NOMID LESOBL(1)='PER1' LESOBL(2)='PER2' LESOBL(3)='PER3' LESOBL(4)='VISC' LESOBL(5)='V1X ' LESOBL(6)='V1Y ' LESOBL(7)='V1Z ' LESOBL(8)='V2X ' LESOBL(9)='V2Y ' LESOBL(10)='V2Z ' ELSE IF(IDIM.EQ.2) THEN IF (IFOUR.LE.0) THEN NBROBL=5 SEGINI NOMID LESOBL(1)='PER1' LESOBL(2)='PER2' LESOBL(3)='VISC' LESOBL(4)='V1X ' LESOBL(5)='V1Y ' ELSE IF (IFOUR.EQ.1) THEN NBROBL=6 SEGINI NOMID LESOBL(1)='PER1' LESOBL(2)='PER2' LESOBL(3)='PER3' LESOBL(4)='VISC' LESOBL(5)='V1X ' LESOBL(6)='V1Y ' ENDIF ENDIF * cas anisotrope ELSE IF (MATE.EQ.3)THEN IF(IDIM.EQ.3)THEN NBROBL=13 SEGINI NOMID LESOBL(1)='PER1' LESOBL(2)='PER2' LESOBL(3)='PER3' LESOBL(4)='PE12' LESOBL(5)='PE13' LESOBL(6)='PE23' LESOBL(7)='VISC' LESOBL(8)='V1X ' LESOBL(9)='V1Y ' LESOBL(10)='V1Z ' LESOBL(11)='V2X ' LESOBL(12)='V2Y ' LESOBL(13)='V2Z ' ELSE IF (IDIM.EQ.2) THEN IF (IFOUR.LE.0) THEN NBROBL=6 SEGINI NOMID LESOBL(1)='PER1' LESOBL(2)='PER2' LESOBL(3)='PE12' LESOBL(4)='VISC' LESOBL(5)='V1X ' LESOBL(6)='V1Y ' ELSE IF (IFOUR.EQ.1) THEN NBROBL=7 SEGINI NOMID LESOBL(1)='PER1' LESOBL(2)='PER2' LESOBL(3)='PE12' LESOBL(4)='PER3' LESOBL(5)='VISC' LESOBL(6)='V1X ' LESOBL(7)='V1Y ' ENDIF ENDIF * cas unidirectionnel ELSE IF (MATE.EQ.4) THEN IF (IDIM.EQ.3) THEN NBROBL=8 SEGINI NOMID LESOBL(1)='PERM' LESOBL(2)='VISC' LESOBL(3)='V1X ' LESOBL(4)='V1Y ' LESOBL(5)='V1Z ' LESOBL(6)='V2X ' LESOBL(7)='V2Y ' LESOBL(8)='V2Z ' ELSE NBROBL=4 SEGINI NOMID LESOBL(1)='PERM' LESOBL(2)='VISC' LESOBL(3)='V1X ' LESOBL(4)='V1Y ' ENDIF ENDIF * NMATR=NBROBL NMATF=NBRFAC NMATT = NMATR+NMATF MOMATR=NOMID * NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' SEGSUP NOTYPE IF (IERR.NE.0) GOTO 9990 IF (ISUP.EQ.1) THEN ENDIF * *_______________________________________________________________________ * * COMPOSANTES EN SORTIE *_______________________________________________________________________ * * CAS JOINTS * IF((MELE.GE.108.AND.MELE.LE.110).OR. . (MELE.GE.185.AND.MELE.LE.190)) THEN IF(IFOUR.LE.0) THEN * CAS PLAN NCOVEC=3 ELSE IF (IFOUR.EQ.2) THEN * 3D NCOVEC=4 ENDIF ELSE IF(IFOUR.LE.0) THEN * CONTRAINTES PLANES - DEFORMATIONS PLANES * DEFO PLAN GENE * AXISYMETRIQUE NCOVEC=2 ELSE IF (IFOUR.GT.0) THEN * FOURIER * 3D NCOVEC=3 ENDIF ENDIF * NBROBL=NCOVEC*IDECAP NBRFAC=0 NGRAD=NBROBL SEGINI NOMID MOGRAD=NOMID IF((MELE.GE.108.AND.MELE.LE.110).OR. . (MELE.GE.185.AND.MELE.LE.190)) THEN DO 121 IPR=1,IDECAP IPRDEC = (IPR-1)*NCOVEC IF(IPR.EQ.1) THEN LESOBL(IPRDEC+1)='VCPH' LESOBL(IPRDEC+2)='VCPB' LESOBL(IPRDEC+3)='VCP1' IF(NCOVEC.EQ.4) LESOBL(IPRDEC+4)='VCP2' ELSE IF(IPR.EQ.2) THEN LESOBL(IPRDEC+1)='VCQH' LESOBL(IPRDEC+2)='VCQB' LESOBL(IPRDEC+3)='VCQ1' IF(NCOVEC.EQ.4) LESOBL(IPRDEC+4)='VCQ2' ELSE IF(IPR.EQ.3) THEN LESOBL(IPRDEC+1)='VCTH' LESOBL(IPRDEC+2)='VCTB' LESOBL(IPRDEC+3)='VCT1' IF(NCOVEC.EQ.4) LESOBL(IPRDEC+4)='VCT2' ENDIF 121 CONTINUE ELSE DO 120 IPR=1,IDECAP IPRDEC = (IPR-1)*NCOVEC IF(IPR.EQ.1) THEN LESOBL(IPRDEC+1)='VCP1' LESOBL(IPRDEC+2)='VCP2' IF(NCOVEC.EQ.3) LESOBL(IPRDEC+3)='VCP3' ELSE IF(IPR.EQ.2) THEN LESOBL(IPRDEC+1)='VCQ1' LESOBL(IPRDEC+2)='VCQ2' IF(NCOVEC.EQ.3) LESOBL(IPRDEC+3)='VCQ3' ELSE IF(IPR.EQ.3) THEN LESOBL(IPRDEC+1)='VCT1' LESOBL(IPRDEC+2)='VCT2' IF(NCOVEC.EQ.3) LESOBL(IPRDEC+3)='VCT3' ENDIF 120 CONTINUE ENDIF * * SEGDES NOMID *_______________________________________________________________________ * * CREATION DU MCHAML DE LA SOUS ZONE *_______________________________________________________________________ * N1PTEL=NBPGAU N1EL=NBELEM NBPTEL=N1PTEL NEL=N1EL N2=NGRAD * SEGINI MCHAML ICHAML(ISOUSs)=MCHAML NS=1 NCOSOU=NGRAD SEGINI MPTVAL IVAGRA=MPTVAL NOMID=MOGRAD SEGACT NOMID DO 100 ICOMP=1,NGRAD NOMCHE(ICOMP)=LESOBL(ICOMP) TYPCHE(ICOMP)='REAL*8' N2PTEL=0 N2EL=0 SEGINI MELVAL IELVAL(ICOMP)=MELVAL IVAL(ICOMP)=MELVAL 100 CONTINUE * IF(MELE.GE.79.AND.MELE.LE.83) GO TO 79 IF(MELE.GE.173.AND.MELE.LE.182) GO TO 79 IF(MELE.GE.108.AND.MELE.LE.110) GO TO 80 IF(MELE.GE.185.AND.MELE.LE.190) GO TO 80 * GOTO 99 * C_______________________________________________________________________ C C MILIEUX POREUX C_______________________________________________________________________ C 79 CONTINUE C C POUR CES ELEMENTS NBBB = NOMBRE DE NOEUDS C NBNO = NOMBRE DE FONCTIONS DE FORME C DIM3=1.D0 NBNO=IPORE NBBB=NBNN LPP=NBNO-NBBB LRN =IDECAP*LPP LRE=NBNN*IDECAP NSTBE=2 IF(IFOUR.GT.0) NSTBE=3 NSTB=NSTBE*IDECAP NSTN=1 * CAS NON ISOTROPES * RECUPERATION DES FONCTIONS DE FORME ET LEURS DERIVEES * AU CENTRE DE L'ELEMENT POUR LE CALCUL DES AXES LOCAUX * IF(MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4) THEN MINTE2=IPMIN2 SEGACT MINTE2 SEGINI WRK4 ENDIF * SEGINI WRK1,WRK2,WRK3,WRK6 I195=0 I259=0 I367=0 C DO 3079 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C C C ON RECUPERE LES DEPLACEMENTS C MPTVAL=IVADEP NCOSOU=IVAL(/1) IE=1 DO 8079 I=1,NCOSOU MELVAL=IVAL(I) DO 8079 IGAU=1,LPP IGAUSO=IBSOM(NSPOS(IELE)+IGAU-1) IGMN=MIN(IGAUSO,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 8079 CONTINUE * WRITE(6,44551) (XDDL(I),I=1,LRN) *44551 FORMAT(2X,'XDDL'/(4(1X,1PE12.5)/)) * * CALCUL DES AXES LOCAUX DANS LES CAS NON ISOTROPES * IF(MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4) THEN NBSH=MINTE2.SHPTOT(/2) IF (NBSH.EQ.-1) THEN RETURN ENDIF ENDIF C C BOUCLE SUR LES POINTS DE GAUSS C ISDJC=0 DO 5079 IGAU=1,NBPGAU C C RECUPERATION DE L'EPAISSEUR C IF (IFOUR.EQ.-2)THEN MPTVAL=IVACAR IF (IVACAR.NE.0) THEN MELVAL=IVAL(1) IF (MELVAL.NE.0) THEN IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) DIM3=VELCHE(IGMN,IBMN) ELSE DIM3=1.D0 ENDIF ENDIF ENDIF C LHOO=NSTB . XE,SHPTOT,SHPWRK,BGENE,XGENE,DJAC,IDECAP,LHOO,2) * IF(IGAU.EQ.1) THEN * PRINT *,' MATRICE B LIGNE PAR LIGNE ' * DO 3367 IPZ = 1,NSTB * PRINT *,' LIGNE ',IPZ * WRITE(6,3368) (BGENE(IPZ,JPZ), JPZ=1,LRE) *3368 FORMAT(8(1X,1PE10.3)/) *3367 CONTINUE * ENDIF IF(DJAC.LT.0.D0) ISDJC=ISDJC+1 IF(DJAC.EQ.0.D0) I259=IB C C ON RECUPERE LE MATERIAU C EREF=1.D0 MPTVAL=IVAMAT * * le cas isotrope * IF (MATE.EQ.1) THEN IF(MFR.EQ.33) THEN MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XK =VELCHE(IGMN,IBMN) * MELVAL=IVAL(2) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XMU =VELCHE(IGMN,IBMN) IF(XMU.EQ.0.D0) THEN I367=IB GO TO 5079 ENDIF COMJAC=EREF*EREF*XK/XMU DO 1729 I=1,NSTB PKK(I,I)=COMJAC 1729 CONTINUE ELSE IF (MFR.EQ.57.OR.MFR.EQ.59) THEN ICO=1 IDECA2=IDECAP*IDECAP DO 1731 ICD = 1,IDECAP ICDA =(ICD -1) * NSTBE DO 1732 JCD = 1,IDECAP JCDA =(JCD -1) * NSTBE MELVAL=IVAL(ICO) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) DO 1733 KCD = 1,NSTBE PKK(ICDA+KCD,JCDA+KCD) =VELCHE(IGMN,IBMN) 1733 CONTINUE ICO=ICO+1 1732 CONTINUE 1731 CONTINUE ENDIF * * IF(IGAU . EQ . 1 ) THEN * PRINT *,' MATRICE PKK' * * IF (IDECAP.EQ.1) THEN * WRITE (6,1341) ((PKK(I,J),J=1,NSTB),I=1,NSTB) *1341 FORMAT(2(1X,1PE12.5)/) * * ELSE IF (IDECAP.EQ.2) THEN * WRITE (6,1342) ((PKK(I,J),J=1,NSTB),I=1,NSTB) *1342 FORMAT(4(1X,1PE12.5)/) * * ELSE IF (IDECAP.EQ.3) THEN * WRITE (6,1343) ((PKK(I,J),J=1,NSTB),I=1,NSTB) *1343 FORMAT(6(1X,1PE12.5)/) * ENDIF * ENDIF * * les cas non isotropes * ELSE IF(MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4) THEN * IF(MFR.EQ.33) THEN DO 4379 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 4379 CONTINUE * IF(KERRE.EQ.1) GO TO 99 IF(KERRE.EQ.2) THEN I367=IB GO TO 5079 ENDIF * * REMPLISSAGE POUR CAS MFR=33 UNIQUEMENT * DO 4479 I=1,NSTBE DO 4479 J=1,NSTBE PKK(I,J)=PMAT(I,J) 4479 CONTINUE * IF(IGAU . EQ . 1 ) THEN * * PRINT *,' MATRICE PKK' * IF(NSTBE.EQ.3) THEN * WRITE (6,1441) ((PKK(I,J),J=1,NSTB),I=1,NSTB) *1441 FORMAT(3(1X,1PE12.5)/) * ELSE * WRITE (6,1341) ((PKK(I,J),J=1,NSTB),I=1,NSTB) * ENDIF * ENDIF * ELSE IF (MFR.EQ.57.OR.MFR.EQ.59) THEN * * CAS NON PREVU GO TO 99 ENDIF * * les cas non pr\E9vus * ELSE GO TO 99 ENDIF * * CALCUL DES GRADIENTS * DO 9179 IPR=1,IDECAP LPPDEC=(IPR-1)*LPP NSTDEC=(IPR-1)*NSTBE NBBDEC=(IPR-1)*NBBB DO 9079 I=1,NSTBE AUX(I+NSTDEC)=0.D0 DO 9079 J=1,LPP AUX(I+NSTDEC)= AUX(I+NSTDEC) + . BGENE(I+NSTDEC,J+NBBDEC)*XDDL(J+LPPDEC) 9079 CONTINUE 9179 CONTINUE * IF(IGAU.EQ.1) THEN * WRITE(6,44552) (AUX (I),I=1,NSTB) *44552 FORMAT(2X,'AUX '/(4(1X,1PE12.5)/)) * ENDIF * DO 9279 I=1,NSTB DO 9279 J=1,NSTB 9279 CONTINUE * IF(IGAU.EQ.1) THEN * WRITE(6,44553) (GRAD (I),I=1,NSTB) *44553 FORMAT(2X,'GRAD '/(4(1X,1PE12.5)/)) * ENDIF C C REMPLISSAGE DU SEGMENT CONTENANT LES GRADIENTS C MPTVAL=IVAGRA DO 4179 I=1,NSTB MELVAL=IVAL(I) 4179 CONTINUE 5079 CONTINUE * IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB C 3079 CONTINUE SEGSUP WRK1,WRK2,WRK3 IF(MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4) THEN SEGDES MINTE2 SEGSUP WRK4 ENDIF * IF(I195.NE.0) THEN INTERR(1)=I195 GOTO 9990 ELSE IF(I259.NE.0) THEN INTERR(1)=I259 GOTO 9990 ELSE IF(I367.NE.0) THEN INTERR(1)=I367 GOTO 9990 ENDIF * GOTO 9990 C C_______________________________________________________________________ C C JOINTS POREUX C_______________________________________________________________________ C 80 CONTINUE C C POUR CES ELEMENTS NBBB = NOMBRE DE NOEUDS C NBNO = NOMBRE DE FONCTIONS DE FORME C DIM3=1.D0 NBNO=IPORE NBBB=NBNN LPP=(NBNO-NBBB)*3/2 LRN =LPP*IDECAP LRE=LRN NSTBE=3 IF(IFOUR.EQ.2) NSTBE=4 NSTB=NSTBE*IDECAP NSTN=1 NMIL=LPP-NBSOM(IELE) * PRINT *,'NSTBE=',NSTBE * PRINT *,'NSTB=',NSTB * PRINT *,'IDECAP=',IDECAP * PRINT *,'LPP =',LPP * PRINT *,'LRN =',LRN * PRINT *,'LRE =',LRE * PRINT *,'NBNO =',NBNO * PRINT *,'NBBB =',NBBB * PRINT *,'NSTN =',NSTN * PRINT *,'IFOUR =',IFOUR * PRINT *,'NMIL =',NMIL SEGINI WRK1,WRK2,WRK3,WRK5,WRK6 I195=0 I259=0 I367=0 C DO 3080 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C C C ON RECUPERE LES DEPLACEMENTS C MPTVAL=IVADEP NCOSOU=IVAL(/1) IE=1 * PRINT *,' NBSOM(IELE) =', NBSOM(IELE) * PRINT *,' LPP = ', LPP * PRINT *,' NCOSOU = ', NCOSOU IE=0 DO 8080 I=1,NCOSOU MELVAL=IVAL(I) DO 8180 IGAU=1,NBSOM(IELE) IGAUSO=IBSOM(NSPOS(IELE)+IGAU-1) IGMN=MIN(IGAUSO,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) IE=IE+1 XDDL(IE)=VELCHE(IGMN,IBMN) 8180 CONTINUE * DO 8280 IGAU=1,NMIL IE=IE+1 IGAUSO=NBBB - NMIL + IGAU IGMN=MIN(IGAUSO,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) 8280 CONTINUE 8080 CONTINUE * WRITE(6,48551) (XDDL(I),I=1,LRN) *48551 FORMAT(2X,'XDDL'/(4(1X,1PE12.5)/)) C C CALCUL DES AXES LOCAUX ET DES COORDONNEES LOCALES C * PRINT *, 'MATRICE BPSS ' * WRITE(6,67564) ((BPSS(I,J),J=1,3),I=1,3) *67564 FORMAT(2X,3(1X,1PE12.5)/) C C BOUCLE SUR LES POINTS DE GAUSS C ISDJC=0 DO 5080 IGAU=1,NBPGAU C C RECUPERATION DE L'EPAISSEUR C * IF (IFOUR.EQ.-2)THEN * MPTVAL=IVACAR * IF (IVACAR.NE.0) THEN * MELVAL=IVAL(1) * IF (MELVAL.NE.0) THEN * IGMN=MIN(IGAU,VELCHE(/1)) * IBMN=MIN(IB,VELCHE(/2)) * DIM3=VELCHE(IGMN,IBMN) * ELSE * DIM3=1.D0 * ENDIF * ENDIF * ENDIF C . SHPTOT,SHPWRK,BPSS,BGENE,XGENE,DJAC,IDECAP,1) * IF(IGAU.EQ.1) THEN * PRINT *,' MATRICE B LIGNE PAR LIGNE ' * DO 3867 IPZ = 1,NSTB * PRINT *,' LIGNE ',IPZ * WRITE(6,3868) (BGENE(IPZ,JPZ), JPZ=1,LRE) *3868 FORMAT(8(1X,1PE10.3)/) *3867 CONTINUE * WRITE(6,77442) ((BGENE(I,J),J=1,LRE),I=1,NSTB) *77442 FORMAT(//6(1X,1PE12.5)) * WRITE(6,77443) (XDDL(I),I=1,LRN) *77443 FORMAT(//6(1X,1PE12.5)) * ENDIF IF(DJAC.LT.0.D0) ISDJC=ISDJC+1 IF(DJAC.EQ.0.D0) I259=IB * * CALCUL DES GRADIENTS * DO 9180 IPR=1,IDECAP LPPDEC=(IPR-1)*LPP NSTDEC=(IPR-1)*NSTBE DO 9080 I=1,NSTBE II=I+NSTDEC r_z = 0.D0 DO 9081 J=1,LPP JJ=J+LPPDEC r_z = r_z + BGENE(II,JJ)*XDDL(JJ) 9081 CONTINUE AUX(II)=r_z 9080 CONTINUE 9180 CONTINUE C C ON RECUPERE LE MATERIAU C EREF=1.D0 MPTVAL=IVAMAT * * le cas isotrope (le seul) * IF(MELE.GE.108.AND.MELE.LE.110) THEN MELVAL=IVAL(4) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XMU =VELCHE(IGMN,IBMN) IF(XMU.EQ.0.D0) THEN I367=IB GO TO 5080 ENDIF * FAC = EREF*EREF/XMU * H MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) PKK(1,1)=VELCHE(IGMN,IBMN)*FAC * B MELVAL=IVAL(2) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) PKK(2,2)=VELCHE(IGMN,IBMN)*FAC * T MELVAL=IVAL(3) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) PKK(3,3)=VELCHE(IGMN,IBMN)*FAC IF(NSTBE.EQ.4) THEN PKK(4,4) = PKK(3,3) ENDIF DO 9280 I=1,NSTB 9280 CONTINUE * ELSE IF(MELE.GE.185.AND.MELE.LE.190) THEN FAC = EREF*EREF IE=0 DO 2185 IPR=1,IDECAP IPR1 = (IPR-1) * NSTBE DO 2185 JPR=1,IDECAP JPR1 = (JPR-1) * NSTBE DO 2186 I=1,NSTBE II = I + IPR1 JJ = I + JPR1 IF(I.NE.4) THEN IE=IE+1 MELVAL=IVAL(IE) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) PKK(II,JJ)=VELCHE(IGMN,IBMN)*FAC ELSE PKK(II,JJ)=PKK(II-1,JJ-1) ENDIF 2186 CONTINUE 2185 CONTINUE DO 2480 IPR=1,IDECAP IPR1 = (IPR-1) * NSTBE DO 2480 JPR=1,IDECAP JPR1 = (JPR-1) * NSTBE DO 2485 I=1,NSTBE II = I + IPR1 JJ = I + JPR1 2485 CONTINUE 2480 CONTINUE ENDIF * * IF(IGAU.EQ.1) THEN * PRINT *, ' MATRICE PKK ' * WRITE(6,77444) ((PKK(I,J),J=1,NSTB),I=1,NSTB) *77444 FORMAT(//6(1X,1PE12.5)) * WRITE(6,48553) (GRAD (I),I=1,NSTB) *48553 FORMAT(2X,'GRAD '/(4(1X,1PE12.5)/)) * ENDIF C C REMPLISSAGE DU SEGMENT CONTENANT LES GRADIENTS C MPTVAL=IVAGRA DO 4180 I=1,NSTB MELVAL=IVAL(I) 4180 CONTINUE * 5080 CONTINUE * IF(ISDJC.NE.0.AND.ISDJC.NE.NBPGAU) I195=IB * 3080 CONTINUE SEGSUP WRK1,WRK2,WRK3,WRK5,WRK6 * IF(I195.NE.0) THEN INTERR(1)=I195 GOTO 9990 ELSE IF(I259.NE.0) THEN INTERR(1)=I259 GOTO 9990 ELSE IF(I367.NE.0) THEN INTERR(1)=I367 GOTO 9990 ENDIF * GOTO 9990 * 99 CONTINUE MOTERR(1:4)=NOMTP(MELE) MOTERR(9:12)='GRAD' C C____________________________________________________________________ C C DESACTIVATION DES SEGMENTS PROPRES A LA ZONE GEOMETRIQUE ISOUS C____________________________________________________________________ C 9990 CONTINUE SEGDES MELEME * * IF(IERR.NE.0)THEN IF (MCHAML.NE.0) SEGSUP MCHAML ELSE SEGDES MCHAML ENDIF * IF(MOMATR.NE.0)THEN NOMID=MOMATR SEGSUP NOMID ENDIF * IF(MOGRAD.NE.0)THEN NOMID=MOGRAD SEGSUP NOMID ENDIF * IF(MODEPL.NE.0)THEN NOMID=MODEPL SEGSUP NOMID ENDIF * SEGDES MINTE C C DANS LE CAS D'ERREUR C IF(IERR.NE.0) GOTO 888 * 500 CONTINUE * Fin normale IRET = 1 * if(n1.ne.isouss) then n1=isouss segadj mchelm endif SEGDES,MCHELM 888 CONTINUE DO ISOUS = 1,NSOUS IMODEL=KMODEL(ISOUS) SEGDES,IMODEL ENDDO SEGDES,MMODEL * RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales