tresk
C TRESK SOURCE OF166741 24/10/07 21:15:51 12016 *____________________________________________________________________ * * Entrees : * --------- * * IPCHE1 Pointeur sur un MCHAML de CONTRAINTES * IPCHE2 Pointeur sur un MCHAML de CARACTERISTIQUES * IMIL Indicateur ou on calcul les CONTRAINTES pour * les COQUES * * Sorties : * --------- * * IPSCAL Pointeur sur un MCHAML SCALAIRE * IRET =1 OU 0 SUIVANT SUCCES OU PAS * * Passage aux nouveaux chamelem par jm CAMPENON le 04/91 * *__________________________________________________________________ * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC CCGEOME -INC SMCHAML -INC SMMODEL -INC SMINTE * SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT * SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT * PARAMETER ( NINF=3 ) INTEGER INFOS(NINF) CHARACTER*(NCONCH) CONM LOGICAL lsupco INTEGER ISUP1,ISUP2 * DIMENSION A(3,3),D(3),S(3,3) DIMENSION SIG(9) ISUP1=0 ISUP2=0 IRET = 0 IPSCAL = 0 * * Verification du lieu support du MCHAML de CONTRAINTES * IF (ISUP1.GT.1) RETURN * * Verification du lieu support du MCHAML de CARACTERISTIQUES * IF (IPCHE2.NE.0) THEN IF (ISUP2.GT.1) RETURN ENDIF * IDIMM=IDIM IDEUX=2 DO I=1,3 D(I)=0.D0 DO J=1,3 A(J,I)=0.D0 S(J,I)=0.D0 ENDDO ENDDO * * Activation du MMODEL * MMODEL=IPMODL SEGACT MMODEL NSOUS=KMODEL(/1) KEL22 = 0 DO ISOUS = 1, NSOUS IMODEL=KMODEL(ISOUS) SEGACT,IMODEL IF (NEFMOD.EQ.22.or.formod.ne.'MECANIQUE') KEL22 = KEL22 + 1 ENDDO * * Creation du MCHELM * N1=NSOUS-KEL22 L1=8 N3=6 SEGINI MCHELM IFOCHE=IFOUR TITCHE='SCALAIRE' * * Debut de la boucle sur les differentes sous zones * ISOUSS=0 DO 200 ISOUS=1,NSOUS * * On recupere l'information generale * IMODEL=KMODEL(ISOUS) MELE=NEFMOD IF (NEFMOD.EQ.22.OR.FORMOD.NE.'MECANIQUE') GOTO 200 * ISOUSS=ISOUSS+1 * IPMAIL=IMAMOD CONM =CONMOD C C COQUE INTEGREE OU PAS ? C NPINT=INFMOD(1) IF (NPINT.NE.0)THEN GOTO 9999 ENDIF C IMACHE(ISOUSS)=IPMAIL CONCHE(ISOUSS)=CONMOD * * Traitement du modele * MELE=NEFMOD * * Information sur l'element fini * * CALL ELQUOI (MELE,0,5,IPINF,IMODEL) * IF (IERR.NE.0) GOTO 9999 * * INFO=IPINF MFR =INFELE(13) NSTRS =INFELE(16) NBPGAU=INFELE( 4) * MINTE =INFELE(11) MINTE=INFMOD(7) IPMINT=MINTE IF (IPMINT.NE.0) SEGACT,MINTE IPPORE=0 * SEGSUP INFO * * Creation du tableau INFOS * IF (IRTD.EQ.0) GOTO 9998 * INFCHE(ISOUSS,1)=0 INFCHE(ISOUSS,2)=0 INFCHE(ISOUSS,3)=NIFOUR INFCHE(ISOUSS,4)=MINTE INFCHE(ISOUSS,5)=0 INFCHE(ISOUSS,6)=5 * * Creation du MCHAML * N2=1 SEGINI MCHAML ICHAML(ISOUSS)=MCHAML NOMCHE(1)='SCAL' TYPCHE(1)='REAL*8' * * Noms de composantes necessaires * 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 * * Verification de leur presence * NCARA=0 NCARF=0 MOCARA=0 IVACAR=0 IVAMIS=0 * NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' SEGSUP NOTYPE IF (IERR.NE.0) GOTO 9990 * & MOSTRS,MELE) * * Recherche de la taille des MELVALs * 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 N1PTEL=NBPGAU ENDIF NBPTEL=N1PTEL NEL =N1EL * * Creation du MELVAL de tresca * N2PTEL=0 N2EL=0 SEGINI MELVAL IELVAL(1)=MELVAL IVAMIS =MELVAL * * Traitement des caracteristiques * NBROBL=0 NBRFAC=0 * * Epaisseur dans le cas des coques et coques avec cisaillement * IF (MFR.EQ.3.OR.MFR.EQ.9) THEN NBROBL=1 SEGINI NOMID MOCARA=NOMID LESOBL(1)='EPAI' ENDIF * NCARA=NBROBL NCARF=NBRFAC NCARR=NCARA+NCARF * IF (MOCARA.NE.0) THEN IF (IPCHE2.NE.0) THEN NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' 1 MOTYPE,1,INFOS,3,IVACAR) SEGSUP NOTYPE IF (IERR.NE.0) GOTO 9990 ELSE MOTERR(1:8)='CARACTER' MOTERR(9:12)=NOMTP(MELE) MOTERR(13:20)='TRESCA' IVACAR=0 NCARA=0 NCARF=0 GOTO 9990 ENDIF IF (ISUP2.EQ.1) THEN ENDIF ENDIF * * Branchement suivant la formulation * * MASSI COQUE COQEP POUT CIST THER TUYA LISP GOTO (30,22,60,22,80,22,22,22,120,22,22,22,22,22,22),MFR * 22 CONTINUE MOTERR(1:8)=NOMFR(MFR/2+1) GOTO 9990 *_______________________________________________________________________ * * FORMULATION MASSIVE *_______________________________________________________________________ * 30 CONTINUE * C On distingue le cas IDIM=1 des autres dimensions IF (IDIM.EQ.1) THEN DO IB=1,NEL DO IGAU=1,NBPTEL MPTVAL=IVASTR MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) D1=VELCHE(IGMN,IBMN) MELVAL=IVAL(2) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) D2=VELCHE(IGMN,IBMN) MELVAL=IVAL(3) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) D3=VELCHE(IGMN,IBMN) W1=MAX(D1,D2,D3) W2=MIN(D1,D2,D3) MELVAL=IVAMIS VELCHE(IGAU,IB)=ABS(W1-W2) ENDDO ENDDO GOTO 150 ENDIF DO IB=1,NEL DO IGAU=1,NBPTEL MPTVAL=IVASTR * MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(1,1)=VELCHE(IGMN,IBMN) * MELVAL=IVAL(2) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(2,2)=VELCHE(IGMN,IBMN) * MELVAL=IVAL(3) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(3,3)=VELCHE(IGMN,IBMN) * MELVAL=IVAL(4) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(1,2)=VELCHE(IGMN,IBMN) * A(2,1)=A(1,2) * IF(IFOUR.LT.1.AND.IFOUR.GE.-3) GO TO 36 * IF(IFOUR.EQ.1) IDIMM=3 MELVAL=IVAL(5) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(3,1)=VELCHE(IGMN,IBMN) * MELVAL=IVAL(6) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(3,2)=VELCHE(IGMN,IBMN) * A(1,3)=A(3,1) A(2,3)=A(3,2) * 36 CONTINUE * W1=MAX(D(3),D(1),D(2)) W2=MIN(D(3),D(1),D(2)) * MELVAL=IVAMIS VELCHE(IGAU,IB)=ABS(W1-W2) ENDDO ENDDO GOTO 150 *_______________________________________________________________________ * * FORMULATION COQUE *_______________________________________________________________________ * 60 CONTINUE * 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 * MPTVAL=IVACAR MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) EPAIST=VELCHE(IGMN,IBMN) * * * Calcul des contraintes * IF(IFOUR.GT.0) THEN A(1,1)=SIG(1)+SIG(4)*IMIL A(2,2)=SIG(2)+SIG(5)*IMIL A(1,2)=SIG(3)+SIG(6)*IMIL A(2,1)=A(1,2) ELSE IF(IFOUR.LE.0) THEN A(1,1)=SIG(1)+SIG(3)*IMIL A(2,2)=SIG(2)+SIG(4)*IMIL ENDIF * W1=MAX(D(3),D(1),D(2)) W2=MIN(D(3),D(1),D(2)) * MELVAL=IVAMIS VELCHE(IGAU,IB)=ABS(W1-W2) ENDDO ENDDO GOTO 150 *_______________________________________________________________________ * * FORMULATION COQUE EPAISSE *_______________________________________________________________________ * 80 CONTINUE * DO IB=1,NEL DO IGAU=1,NBPTEL MPTVAL=IVASTR * MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(1,1)=VELCHE(IGMN,IBMN) * MELVAL=IVAL(2) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(2,2)=VELCHE(IGMN,IBMN) * MELVAL=IVAL(3) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(1,2)=VELCHE(IGMN,IBMN) * MELVAL=IVAL(4) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(1,3)=VELCHE(IGMN,IBMN) * MELVAL=IVAL(5) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) A(2,3)=VELCHE(IGMN,IBMN) * A(2,1)=A(1,2) A(3,1)=A(1,3) A(3,2)=A(2,3) * W1=MAX(D(3),D(1),D(2)) W2=MIN(D(3),D(1),D(2)) * MELVAL=IVAMIS VELCHE(IGAU,IB)=ABS(W1-W2) ENDDO ENDDO GOTO 150 *_______________________________________________________________________ * * FORMULATION COQUE AVEC CISAILLEMENT *_______________________________________________________________________ * 120 CONTINUE * DO IB=1,NEL DO IGAU=1,NBPTEL 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 * MPTVAL=IVACAR MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) EPAIST=VELCHE(IGMN,IBMN) * * * Calcul des contraintes * A(1,1)=SIG(1)+SIG(4)*IMIL A(2,2)=SIG(2)+SIG(5)*IMIL A(1,2)=SIG(3)+SIG(6)*IMIL A(2,1)=A(1,2) A(3,3)=0.D0 A(1,3)=SIG(7) A(2,3)=SIG(8) A(3,1)=A(1,3) A(3,2)=A(2,3) * W1=MAX(D(3),D(1),D(2)) W2=MIN(D(3),D(1),D(2)) * MELVAL=IVAMIS VELCHE(IGAU,IB)=ABS(W1-W2) ENDDO ENDDO GOTO 150 * * Desactivation des segments propres a la geometrie ISOUS * 150 CONTINUE IF (ISUP1.EQ.1) THEN ELSE ENDIF NOMID =MOSTRS if(lsupco)SEGSUP NOMID * IF (ISUP2.EQ.1) THEN ELSE ENDIF * NOMID =MOCARA IF (MOCARA.NE.0) SEGSUP NOMID * 200 CONTINUE IRET = 1 IPSCAL = 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 * MELVAL=IVAMIS IF (IVAMIS.NE.0) SEGSUP MELVAL SEGSUP MCHAML * 9998 CONTINUE 9999 CONTINUE * SEGSUP MCHELM IPSCAL = 0 IRET = 0 888 CONTINUE END
© Cast3M 2003 - Tous droits réservés.
Mentions légales