vmispo
C VMISPO SOURCE OF166741 24/10/07 21:15:52 12016 C_______________________________________________________________________ C C Entrées: C ________ C C IPMODL Pointeur sur un MMODEL C IPCHE1 Pointeur sur un MCHAML de contraintes C IPCHE2 Pointeur sur un MCHAML de caracteristiques C C SORTIES: C ________ C C IPCHE3 Pointeur sur un MCHAML de VONMISES C IRET =1 OU 0 suivant succes ou pas (Message d'erreur C imprimé dans ce cas) C C Passage aux nouveaux CHAMELEMs par I.Monnier le 13.06.90 C *_______________________________________________________________________ IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC CCGEOME C==DEB= FORMULATION HHO == Include specifique ========================== -INC CCHHOPA C==FIN= FORMULATION HHO ================================================ -INC SMCHAML -INC SMMODEL -INC SMCOORD -INC SMINTE * SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT * SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT * CHARACTER*(NCONCH) CONM PARAMETER ( NINF=3 ) DIMENSION SIG(9) INTEGER INFOS(NINF) LOGICAL lsupco INTEGER ISUP1,ISUP2 DATA ALPH1/.4444444444444444D0/ * WRITE(*,*) 'Entrée dans VMISPO.' lsupco=.false. IRET = 0 IPCHE3 = 0 * * Verification du lieu support du MCHAML de CONTRAINTES * ISUP1 = 0 ISUP2=0 IRET1 = 0 * IF (ISUP1.GT.0) RETURN * * Verification du lieu support du MCHAML de CARACTERISTIQUES * IF (IPCHE2.NE.0) THEN ISUP2 = 0 IRET2 = 0 IF (ISUP2.GT.0) RETURN ENDIF *_______________________________________________________________________ * * ACTIVATION DU MODELE *_______________________________________________________________________ * MMODEL=IPMODL SEGACT,MMODEL NSOUS=KMODEL(/1) KEL22 = 0 DO ISOUS = 1, NSOUS IMODEL=KMODEL(ISOUS) SEGACT,IMODEL IF (formod(1).ne.'MECANIQUE'.OR.NEFMOD.EQ.22.or.nefmod.eq.259) > KEL22 = KEL22 + 1 ENDDO * * ACTIVATION DES CONTRAINTES * IRET=1 MCHEL1=IPCHE1 SEGACT MCHEL1 * * INITIALISATION DU MCHELM DE VON MISES * L1=9 N1=NSOUS - KEL22 N3=6 SEGINI MCHELM IFOCHE=IFOUR TITCHE='VON MISES' C un petit segment toujours utile : NBTYPE=1 SEGINI,NOTYPE TYPE(1)='REAL*8' MOTYR8 = NOTYPE *_______________________________________________________________________ * * BOUCLE SUR LES SOUS ZONES *_______________________________________________________________________ * isouss=0 DO 200 ISOUS=1,NSOUS C C QUELQUES INITIALISATIONS C MOSTRS = 0 MOCARA = 0 IVASTR = 0 IVACAR = 0 IVAMIS = 0 C C TRAITEMENT DU MODELE C IMODEL=KMODEL(ISOUS) C* SEGACT IMODEL MELE=NEFMOD IF (NEFMOD.EQ.22.or.nefmod.eq.259) goto 200 IF (formod(1).ne.'MECANIQUE') goto 200 ISOUSS=ISOUSS+1 * IPMAIL=IMAMOD CONM =CONMOD C C CREATION DU TABLEAU INFOS C IF (IRTD.EQ.0) GOTO 9990 C C COQUE INTEGREE OU PAS ? NPINT=INFMOD(1) C_______________________________________________________________________ C C INFORMATIONS SUR L'ELEMENT FINI C_______________________________________________________________________ C * CALL ELQUOI(MELE,0,IRET1,IPINF,IMODEL) * IF (IERR.NE.0) THEN * SEGDES IMODEL,MMODEL * SEGSUP MCHELM * SEGDES MCHEL1 * RETURN * ENDIF * INFO=IPINF MFR =INFELE(13) NSTRS =INFELE(16) NBPGAU=INFELE( 4) * MINTE =INFELE(11) MINTE=INFMOD(iret1+2) IPPORE=0 IPMINT=MINTE SEGACT,MINTE * SEGSUP INFO C C RECOPIE DU MCHELM C ** write(6,*) 'isouss ',isouss ** write(6,*) 'imache ',imache(/1) IMACHE(ISOUSS)=IPMAIL CONCHE(ISOUSS)=CONMOD C INFCHE(ISOUSS,1)=0 INFCHE(ISOUSS,2)=0 INFCHE(ISOUSS,3)=NIFOUR INFCHE(ISOUSS,4)=MINTE INFCHE(ISOUSS,5)=0 INFCHE(ISOUSS,6)=IRET1 C C CREATION DU MCHAML C N2=1 SEGINI MCHAML ICHAML(ISOUSS)=MCHAML NOMCHE(1)='SCAL' TYPCHE(1)='REAL*8' C_______________________________________________________________________ C C NOMS DE COMPOSANTES DE CONTRAINTES NECESSAIRES C_______________________________________________________________________ C if(lnomid(4).ne.0) then nomid=lnomid(4) segact nomid mostrs=nomid nstr=lesobl(/2) nfac=lesfac(/2) lsupco=.false. else lsupco=.true. endif C C VERIFICATION DE LEUR PRESENCE C MOTYPE = MOTYR8 IF (IERR.NE.0) GOTO 9990 * & MOSTRS,MELE) C C RECHERCHE DES TAILLES DE MELVAL C N1EL=0 N1PTEL=0 MPTVAL=IVASTR DO 20 IO=1,NSTRS MELVAL=IVAL(IO) N1PTEL=MAX(N1PTEL,VELCHE(/1)) N1EL =MAX(N1EL ,VELCHE(/2)) 20 CONTINUE IF (N1PTEL.EQ.1.OR.NBPGAU.EQ.1) THEN N1PTEL=1 ELSE *PVPVPV N1PTEL=NBPGAU ENDIF NBPTEL=N1PTEL NEL =N1EL C C CREATION DU MELVAL VMISES C N2PTEL=0 N2EL=0 SEGINI MELVAL IELVAL(1)=MELVAL IVAMIS =MELVAL * * ON TRAITE LES COQUES INTEGREES COMME LES MASSIFS * IF(NPINT.NE.0)THEN MFR1=1 ELSE MFR1=MFR ENDIF C_______________________________________________________________________ C C TRAITEMENT DES CHAMPS DE CARACTERISTIQUES C_______________________________________________________________________ * NBROBL=0 NBRFAC=0 MOCARA=0 IVECT=0 NOTYPE = MOTYR8 * * EPAISSEUR ET ALFA DANS LE CAS DES COQUES * IF (MFR1.EQ.3.OR.MFR1.EQ.5.OR.MFR1.EQ.9) THEN NBROBL=1 NBRFAC=1 SEGINI NOMID MOCARA=NOMID LESOBL(1)='EPAI' LESFAC(1)='CALF' * * CARACTERISTIQUES POUR LES POUTRES * ELSE IF (MFR1.EQ.7 ) THEN IF(IFOUR.EQ.2) THEN NBROBL=4 NBRFAC=3 SEGINI NOMID MOCARA=NOMID LESOBL(1)='TORS' LESOBL(2)='INRY' LESOBL(3)='INRZ' LESOBL(4)='SECT' LESFAC(1)='DX ' LESFAC(2)='DZ ' LESFAC(3)='DY ' ELSE NBROBL=2 NBRFAC=1 SEGINI NOMID MOCARA=NOMID LESOBL(1)='SECT' LESOBL(2)='INRZ' LESFAC(1)='DY ' ENDIF * * CARACTERISTIQUES POUR LES TUYAUX * ELSE IF (MFR1.EQ.13) THEN NBROBL=2 NBRFAC=9 SEGINI NOMID MOCARA=NOMID LESOBL(1)='EPAI' LESOBL(2)='RAYO' LESFAC(1)='RACO' LESFAC(2)='PRES' LESFAC(3)='CISA' LESFAC(4)='CFFX' LESFAC(5)='CFMX' LESFAC(6)='CFMY' LESFAC(7)='CFMZ' LESFAC(8)='CFPR' c LESFAC(9)='VECT' c IVECT=1 c BP, 2016-10-17: pour le calcul de VMISES, on se fiche de l'orientation c du repere local car les composantes sont deja toutes locales ! c Afin d'utiliser tuycar, on met des valeurs de VX VY et VZ bidons * NBTYPE=11 SEGINI NOTYPE TYPE(1)='REAL*8' TYPE(2)='REAL*8' TYPE(3)='REAL*8' TYPE(4)='REAL*8' TYPE(5)='REAL*8' TYPE(6)='REAL*8' TYPE(7)='REAL*8' TYPE(8)='REAL*8' TYPE(9)='REAL*8' TYPE(10)='REAL*8' TYPE(11)='POINTEURPOINT ' ENDIF * NCARA=NBROBL NCARF=NBRFAC NCARR=NCARA+NCARF MOTYPE = NOTYPE IF (MOCARA.NE.0) THEN IF (IPCHE2.NE.0) THEN 1 1,INFOS,3,IVACAR) ELSE MOTERR(1:8)='CARACTER' MOTERR(9:12)=NOMTP(MELE) MOTERR(13:20)='VMIS' ENDIF IF (IERR.NE.0) GOTO 9990 * IF (ISUP2.EQ.1) THEN IF(IERR.NE.0)THEN ISUP2=0 GOTO 9990 ENDIF ENDIF ENDIF IF (MOTYPE.NE.MOTYR8) SEGSUP,NOTYPE * C_______________________________________________________________________ C C BRANCHEMENT SUIVANT LA FORMULATION C_______________________________________________________________________ C C MASSI COQUE COQEP POUT CIST THER TUYA LISP GOTO (30,22,60,22,80,22,100,22,70,22,22,22,120,22,90,22,22, C INCO PORE . 22,22,22,22,22,22,22,22,22,22,22,22,22,30,22,30),MFR1 C == FORMULATION HHO == IDENTIQUE au CAS MASSIF ======================== IF (MFR1.EQ.HHO_MFR_ELEMENT) GOTO 30 c cas XFEM : identique au cas massif IF (MFR1.EQ.63) goto 30 C 22 CONTINUE MOTERR(1:8)=NOMFR(MFR1/2+1) if (isouc.eq.1) then call SOUCIS(193) else endif GOTO 150 GOTO 9990 C_______________________________________________________________________ C C FORMULATION MASSIVE C_______________________________________________________________________ C 30 CONTINUE do IB=1,NEL do IGAU=1,NBPTEL MPTVAL=IVASTR DO ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) SIG(ICOMP)=VELCHE(IGMN,IBMN) ENDDO + -SIG(1)*SIG(3)-SIG(2)*SIG(3) C IF (IDIM.NE.1) THEN DO IE=4,NSTRS ENDDO ENDIF C MELVAL=IVAMIS VELCHE(IGAU,IB)=XXXX enddo enddo GOTO 150 C_______________________________________________________________________ C C FORMULATION COQUE MINCE C_______________________________________________________________________ C 60 CONTINUE C DO IB=1,NEL DO IGAU=1,NBPTEL MPTVAL=IVASTR DO 62 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) SIG(ICOMP)=VELCHE(IGMN,IBMN) 62 CONTINUE C MPTVAL=IVACAR MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) EPAIST=VELCHE(IGMN,IBMN) * MPTVAL=IVACAR MELVAL=IVAL(2) IF (MELVAL.NE.0) THEN IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) ELSE ENDIF C IF(IFOUR.GT.0) THEN + SIG(4)*SIG(5)+3.D0*SIG(6)*SIG(6)))) ELSE IF(IFOUR.LE.0) THEN ENDIF C MELVAL=IVAMIS enddo enddo GOTO 150 C_______________________________________________________________________ C C FORMULATION COQUE AVEC CISAILLEMENT TRANSVERSE (COQ4) C_______________________________________________________________________ C 70 CONTINUE C DO IB=1,NEL DO IGAU=1,NBPTEL MPTVAL=IVASTR DO 72 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) SIG(ICOMP)=VELCHE(IGMN,IBMN) 72 CONTINUE C MPTVAL=IVACAR MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) EPAIST=VELCHE(IGMN,IBMN) * MPTVAL=IVACAR MELVAL=IVAL(2) IF (MELVAL.NE.0) THEN IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) ELSE ALPHA=0.666666666666666666D0 ENDIF C + 3.D0*SIG(7)*SIG(7)+3.D0*SIG(8)*SIG(8)+ + SIG(4)*SIG(5)+3.D0*SIG(6)*SIG(6)))) C MELVAL=IVAMIS enddo enddo GOTO 150 C_______________________________________________________________________ C C FORMULATION COQUE EPAISSE C_______________________________________________________________________ C 80 CONTINUE DO IB=1,NEL DO IGAU=1,NBPTEL MPTVAL=IVASTR DO 85 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) SIG(ICOMP)=VELCHE(IGMN,IBMN) 85 CONTINUE 1 + 3.D0*(SIG(3)*SIG(3)+SIG(4)*SIG(4)+SIG(5)*SIG(5)) C MELVAL=IVAMIS VELCHE(IGAU,IB)=XXXX enddo enddo GOTO 150 C_______________________________________________________________________ C C FORMULATION LINESPRING C_______________________________________________________________________ C 90 CONTINUE DO IB=1,NEL DO IGAU=1,NBPTEL MPTVAL=IVASTR DO 95 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) SIG(ICOMP)=VELCHE(IGMN,IBMN) 95 CONTINUE C MELVAL=IVAMIS enddo enddo GOTO 150 C_______________________________________________________________________ C C FORMULATION POUTRE 2D ET 3D C_______________________________________________________________________ C 100 CONTINUE C____ FORMULATION POUTRE 3D = idem TUYAU 3D --> GOTO 120 _______________ IF (IFOUR.EQ.2) GOTO 120 C C____ FORMULATION POUTRE 2D ____________________________________________ C c -- boucle sur les pt de Gauss -- DO IB=1,NEL DO IGAU=1,NBPTEL c CONTRAINTES --> SIG() : EFFX,EFFY,MOMZ MPTVAL=IVASTR DO 102 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) SIG(ICOMP)=VELCHE(IGMN,IBMN) 102 CONTINUE C c CARACTERISTIQUES --> CARAC() : SECT, INRZ, (DZ) MPTVAL=IVACAR DO 103 ICOMP=1,NCARR MELVAL=IVAL(ICOMP) IF (MELVAL.NE.0) THEN IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) ELSE ENDIF 103 CONTINUE C C C MELVAL=IVAMIS C enddo enddo GOTO 150 C_______________________________________________________________________ C C FORMULATION POUTRE 3D et TUYAU 3D C_______________________________________________________________________ C 120 CONTINUE c initialisations bidons DIV(1)=0.D0 DIV(2)=0.D0 DIV(3)=0.D0 c vecteur bidon VX = 1.D0 VY = 1.D0 VZ = 1.D0 c -- boucle sur les pt de Gauss -- DO IB=1,NEL DO IGAU=1,NBPTEL c CONTRAINTES --> SIG() MPTVAL=IVASTR DO 122 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) SIG(ICOMP)=VELCHE(IGMN,IBMN) 122 CONTINUE c CARACTERISTIQUES --> CARAC() MPTVAL=IVACAR c NCARR1=NCARR c IF(IVECT.EQ.1) NCARR1=NCARR-1 c DO 123 ICOMP=1,NCARR1 DO 123 ICOMP=1,NCARR MELVAL=IVAL(ICOMP) IF (MELVAL.NE.0) THEN IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) ELSE ENDIF 123 CONTINUE C c C CAS OU ON A LU LE MOT VECTEUR c C c IF (IVECT.EQ.1) THEN c IF (IVAL(NCARR).NE.0) THEN c MELVAL=IVAL(NCARR) c IBMN=MIN(IB,IELCHE(/2)) c IP=IELCHE(1,IBMN) c IREF=(IP-1)*(IDIM+1) c DO 124 IC=1,IDIM c CARAC(NCARR+IC-1)=XCOOR(IREF+IC) c 124 CONTINUE c ELSE c DO 125 IC=1,IDIM c CARAC(NCARR+IC-1)=0.D0 c 125 CONTINUE c ENDIF c ENDIF C SIGPRE=0.D0 IF(MFR1.EQ.7) THEN c DIV(2)=1.D0 c DIV(3)=1.D0 ELSE IF(MFR1.EQ.13) THEN RMOY =REXT-EPAIS*0.5D0 C GAM=1.D0 IF(RACO.EQ.0.D0) GO TO 126 XLAM=RMOY*RMOY/EPAIS/RACO GAM=0.8888888888888889D0*(XLAM)**0.6666666666666667D0 IF(GAM.LT.1.D0) GAM=1.D0 126 CONTINUE C C NB 23/09/98 C VALEURS PAR DEFAUT POUR LES CFFX CFMX CFMY C CFMZ CFPR ( COEFFICIENTS POUR CALCULER LES C CONTRAINTES DE MEMBRANE, TORSION, FLEXIONS C DANS LE PLAN, HORS PLAN ET CIRCONFERENTIELLE C DUE A LA PRESSION ) C c DIV(1)=1.D0 c DIV(2)=1.D0 DIV(3)=1.D0 DIV(5)=PI4*GAM DIV(6)=DIV(5) DIV(7)=0.D0 C DO 127 ICOMP=6,10 MELVAL=IVAL(ICOMP) 127 CONTINUE C C NB 23/09/98 C TRANSFERT DE CFFX DANS DIV(1) ET REMISE A C 1.D0 DE DIV(3) DIV(1)=DIV(3) c DIV(3)=1.D0 C C RE-ARRANGEMENT DE CARAC POUR TUYCAR C c CARAC(4)=CARAC(11) c CARAC(5)=CARAC(12) c CARAC(6)=CARAC(13) c VX=CARAC(4) c VY=CARAC(5) c VZ=CARAC(6) SIGPRE=DIV(7)*RMOY*PRES/EPAIS ENDIF C . (SIG(5)*DIV(5))**2+(SIG(6)*DIV(6))**2+ . SIGPRE**2 )) C MELVAL=IVAMIS C enddo enddo GOTO 150 C C_______________________________________________________________________ C C AUTRE FORMULATION C_______________________________________________________________________ C 150 CONTINUE C C DESACTIVATION DES SEGMENTS PROPRES A LA ZONE GEOMETRIQUE ISOUS C IF(ISUP1.EQ.1)THEN ELSE ENDIF * MELVAL=IVAMIS * IF(ISUP2.EQ.1)THEN ELSE ENDIF * NOMID =MOSTRS if(lsupco)SEGSUP NOMID NOMID =MOCARA IF (MOCARA.NE.0) SEGSUP NOMID * 201 CONTINUE C 200 CONTINUE IRET = 1 IPCHE3 = MCHELM GOTO 888 * * ERREUR DANS UNE SOUS ZONE, DESACTIVATION ET RETOUR * 9990 CONTINUE * IF(ISUP1.EQ.1)THEN ELSE ENDIF * IF(ISUP2.EQ.1)THEN ELSE ENDIF * NOMID =MOSTRS if(lsupco)SEGSUP NOMID NOMID =MOCARA IF (MOCARA.NE.0) SEGSUP NOMID * IF (IVAMIS.NE.0) THEN MELVAL=IVAMIS SEGSUP MELVAL ENDIF * SEGSUP MCHAML SEGSUP MCHELM IRET = 0 IPCHE3 = 0 * 888 CONTINUE NOTYPE = MOTYR8 SEGSUP,NOTYPE END
© Cast3M 2003 - Tous droits réservés.
Mentions légales