idmat2
C IDMAT2 SOURCE OF166741 24/10/07 21:15:26 12016 1 NUDIR2,NUMP3,ANG,ANG2,IPCARA,RFLAG) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) *--------------------------------------------------------------------* * CREATION DU MCHAML CORRESPONDANT A UN MATERIAU ORTHOTROPE * * APPELE PAR MATCAR * *--------------------------------------------------------------------* * * * ENTREES: * * -------- * * * * IPMODE POINTEUR SUR UN MMODEL * * ICARA POINTEUR SUR UN MCHELM DE CARACTERISTIQUE (INCOMPLET) * * NUDIR1 NUMERO DE LA DIRECTIVE UTILISE:"DIRECTION"OU RADIAL" * * NUMP1 NUMERO DU POINT P1 ASSOCIE A LA DIRECTIVE NIDIR1 * * NUMP2 NUMERO DU POINT P2 ASSOCIE A LA DIRECTIVE NIDIR1 * * NUDIR2 NUMERO DE LA DIRECTIVE UTILISE "PARALLELE" "PERPENDIC"* * "INCLINE" * * NUMP3 NUMERO DU POINT P ASSOCIE A LA DIRECTIVE INCLINE * * ANG ANGLE UTILISE DANS LES DIRECTIONS D ORTHOTROPIE * * (EN RADIAN) * * ANG2 idem ANG mais pour rotation hors plan en 2D fourier * * * * SORTIES: * * -------- * * * * IPCARA POINTEUR SUR UN MCHELM MATERIAU * * * * * * AUTEUR JM CAMPENON LE 29 08 90 * * * * ANISOTROPIE DANS LES ELEMENTS MASSIFS, P. DOWLATYARI OCT. 90 * * * *--------------------------------------------------------------------* * -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC SMCHAML -INC SMINTE -INC SMELEME -INC SMMODEL C SEGMENT INFO INTEGER INFELL(JG) ENDSEGMENT C SEGMENT XVAL REAL*8 CVAL(NPG2,NEL2),SVAL(NPG2,NEL2) ENDSEGMENT C SEGMENT YVAL ENDSEGMENT C INTEGER NUDIR1,NUMP1,NUMP2,NUDIR2,NUMP3 LOGICAL RFLAG REAL*8 ANG INTEGER NPG2,IPVAL PARAMETER ( NINF=3 ) INTEGER INFOS(NINF) CHARACTER*8 CMATE,CHARIN CHARACTER*(NCONCH) CONM C IPINF=0 IPINF2=0 C C ACTIVATION DU MCHELM C MCHEL2=ICARA SEGACT MCHEL2 C C CREATION DU MCHELM C N1=MCHEL2.ICHAML(/1) L1=16 N3=6 SEGINI MCHEL1 IPCARA=MCHEL1 MCHEL1.TITCHE=MCHEL2.TITCHE MCHEL1.IFOCHE=MCHEL2.IFOCHE C C BOUCLE SUR LES <> SOUS ZONES C MMODEL=IPMODE NSOUS=KMODEL(/1) C C DEBUT DE LA BOUCLE SUR LES DIFFERENTES SOUS ZONES C isous=0 DO 10 kSOUS=1,NSOUS IMODEL=KMODEL(kSOUS) if (NEFMOD.EQ.259) go to 10 isous=isous+1 c AM 4/5/93 MINTE=0 C MCHEL1.IMACHE(ISOUS)=MCHEL2.IMACHE(ISOUS) MCHEL1.CONCHE(ISOUS)=MCHEL2.CONCHE(ISOUS) DO 1 I=1,N3 MCHEL1.INFCHE(ISOUS,I)=MCHEL2.INFCHE(ISOUS,I) 1 CONTINUE C IPMAIL=IMAMOD CONM =CONMOD NFOR=FORMOD(/2) NMAT=MATMOD(/2) C C DANS LE CAS DE CONVECTION ON NE REMPLIT PAS MATMOD, C ON SAUTE DONC CE CAS LA C ITHER=0 iplc=0 iplr=0 ipls=0 IF(formod(1).eq.'THERMIQUE') then ITHER=1 endif MATE=1 IF (iplr+iplc+ipls.eq.0) THEN * CALL NOMATE(FORMOD,NFOR,MATMOD,NMAT,CMATE,MATE,INAT) MATE = IMATEE INAT = INATUU CMATE = CMATEE IF (CMATE.EQ.' ') THEN RETURN ENDIF ENDIF C C COQUE INTEGREE OU PAS ? C NPINT=INFMOD(1) C_______________________________________________________________________ C C TRAITEMENT PARTICULIER POUR LES MATERIAU ORTHOTROPE OU ANISOT. C_______________________________________________________________________ C IF (MATE.EQ.2.OR.MATE.EQ.3.OR.MATE.EQ.4.OR.RFLAG)THEN MELE=NEFMOD MELEME=IPMAIL SEGACT MELEME NBELEM=NUM(/2) NBNN=NUM(/1) IF (IRTD.EQ.0) THEN SEGSUP,MCHEL1 RETURN ENDIF C C INFORMATION SUR L ELEMENT FINI C C IF (MFR.EQ.75) THEN IF (IERR.NE.0) THEN SEGSUP,MCHEL1 RETURN ENDIF INFO=IPINF NBPGAU = INFELL(6) segsup info ELSEIF (MFR.EQ.1.OR.MFR.EQ.31) THEN NBPGAU=1 MINTE=IPT1 ELSEIF(MFR.EQ.45)THEN NBPGAU=1 C on va récuperer le maillage des sommet pour le calcul C des fonctions de formes dans le cas DARCY CHARIN = 'MAILLAGE' IF (IERR.NE.0) RETURN IPT2 = IOBRE SEGACT IPT2 MELEME=IPT2 IF(IPT2.LISOUS(/1).NE.0)THEN MELEME= IPT2.LISOUS(ISOUS) SEGACT MELEME ENDIF NBNN=NUM(/1) MINTE=IPT1 ELSEIF(MFR.EQ.33)THEN * CALL ELQUOI(MELE,0,2,IPINF,IMODEL) IF (IERR.NE.0) THEN SEGSUP,MCHEL1 RETURN ENDIF NBPGAU=1 MINTE=INFMOD(4) ELSEIF(MFR.EQ.3.OR.MFR.EQ.9.OR.MFR.EQ.5.OR.MFR.EQ.35) THEN IF(ITHER.EQ.0)THEN if(infmod(/1).lt.5)then IF (IERR.NE.0) THEN SEGSUP,MCHEL1 RETURN ENDIF INFO=IPINF NBPGAU=INFELL(6) MINTE=INFELL(11) MINTE1=INFELL(12) segsup info else NBPGAU=INFELE(6) MINTE=INFMOD(5) MINTE1=INFMOD(8) endif ELSE MINTE=IPT1 SEGACT,MINTE NBPGAU=POIGAU(/1) IF(MFR.EQ.5)THEN MINTE1=IPT2 ELSE MINTE1=0 ENDIF ENDIF ENDIF * * CAS 'RADIAL' EN MASSIF * ON CHERCHE LES POINTS DE GAUSS * MINTE2=0 IF(NUDIR1.EQ.2.AND. . (MFR.EQ.1.OR.MFR.EQ.31.OR.MFR.EQ.33.OR.MFR.EQ.45)) THEN melele=mele IF (MFR.EQ.45)melele=nlg if(infmod(/1).lt.5) then IF (IERR.NE.0) THEN SEGSUP,MCHEL1 RETURN ENDIF INFO=IPINF2 MINTE2=INFELL(11) segsup info else minte2=infmod(5) endif SEGACT MINTE2 NBPGA2=MINTE2.POIGAU(/1) ENDIF C C VERIFICATION DE LA COHERENCE DES INFORMATIONS C IF (MFR.EQ.3.AND.IDIM.NE.3) THEN c coque mince 2D: pas de mot-cle ou DIRE accepte : RADI refuse IF (NUDIR1.NE.0.AND.NUDIR1.NE.1) THEN GOTO 9990 ENDIF NUDIR1=1 c coque mince 2D: INCLINE refuse c IF (NUDIR2.EQ.3) THEN c CALL ERREUR(21) c GOTO 9990 c ENDIF ELSE * IF (NUDIR1.EQ.0) THEN C DIRECTIONS D ORTHOTROPIE NON FOURNIES GOTO 9990 ENDIF ENDIF IF (NUDIR2.EQ.0) THEN C OPTION PARALLELE PAR DEFAUT NUDIR2=1 ENDIF IF(MFR.EQ.35)THEN IF(NUDIR1.EQ.2)THEN * CETTE DEFINITION DU REPERE D'ORTH. N'EST PAS VALABLE POUR * LES ELEMENTS JOINTS (CAR ILS SONT PLANS) GO TO 9990 ENDIF ENDIF C_______________________________________________________________________ C C_______________________________________________________________________ C MCHAM2=MCHEL2.ICHAML(ISOUS) SEGACT MCHAM2 NCOMP=MCHAM2.NOMCHE(/2) N2=NCOMP C C CREATION DU MCHAML : ON PREVOIT ICI QUE L'ON DOIT CREER 2 OU 6 C COMPOSANTES SUPPLEMENTAIRES C IF (MFR.EQ.3.OR.MFR.EQ.5.OR.MFR.EQ.9.OR.MFR.EQ.35) THEN N2=NCOMP+2 ELSEIF (MFR.EQ.1.OR.MFR.EQ.31.OR.MFR.EQ.33 & .OR.MFR.EQ.45.OR.MFR.EQ.75) THEN IF (IDIM.EQ.2) THEN IF(IFOUR.EQ.1) THEN IDIM2=3 N2=NCOMP+6 ELSE IDIM2=2 N2=NCOMP+2 ENDIF ELSE IDIM2=3 N2=NCOMP+6 ENDIF ENDIF SEGINI MCHAM1 MCHEL1.ICHAML(ISOUS)=MCHAM1 C C ON RECOPIE TOUS LES NOMS DE COMPOSANTE DE 1 A NCOMP C IPEPAI=0 IPEXCE=0 DO 100 ICOMP=1,NCOMP MCHAM1.NOMCHE(ICOMP)=MCHAM2.NOMCHE(ICOMP) MCHAM1.TYPCHE(ICOMP)=MCHAM2.TYPCHE(ICOMP) MELVA2=MCHAM2.IELVAL(ICOMP) IF(MFR.EQ.5)THEN IF(MCHAM2.NOMCHE(ICOMP).EQ.'EPAI')THEN IPEPAI=MELVA2 ELSEIF(MCHAM2.NOMCHE(ICOMP).EQ.'EXCE')THEN IPEXCE=MELVA2 ENDIF ENDIF SEGACT MELVA2 IF (MCHAM2.TYPCHE(ICOMP).EQ.'REAL*8') THEN N1PTEL=MELVA2.VELCHE(/1) N1EL =MELVA2.VELCHE(/2) N2PTEL=0 N2EL =0 C SEGINI MELVA1 MCHAM1.IELVAL(ICOMP)=MELVA1 DO 13 J=1,N1PTEL DO 131 K=1,N1EL MELVA1.VELCHE(J,K)=MELVA2.VELCHE(J,K) 131 CONTINUE 13 CONTINUE ELSE N2PTEL=MELVA2.IELCHE(/1) N2EL =MELVA2.IELCHE(/2) N1PTEL=0 N1EL =0 SEGINI MELVA1 C MCHAM1.IELVAL(ICOMP)=MELVA1 DO 14 J=1,N2PTEL DO 141 K=1,N2EL MELVA1.IELCHE(J,K)=MELVA2.IELCHE(J,K) 141 CONTINUE 14 CONTINUE ENDIF 100 CONTINUE IF(MFR.EQ.5.AND.IPEPAI.EQ.0)THEN *DANS LE CAS DES ELEMENTS COQUES EPAISSES ORTHOTROPES IL FAUT DONNER *L'EPAISSEUR EN MEME TEMPS QUE LES PROPRIETES MATERIELLES DO 311 ICOMP=1,NCOMP MELVA2=MCHAM2.IELVAL(ICOMP) MELVA1=MCHAM1.IELVAL(ICOMP) SEGSUP,MELVA1 311 CONTINUE SEGSUP MCHAM1 GOTO 9990 ENDIF C_______________________________________________________________________ C C ON TRAITE ICI LES COMPOSANTES 'V1X' ET 'V1Y'POUR LES ELEMENTS C COQUES ET 'V1X','V1Y','V1Z','V2X','V2Y','V2Z' POUR LES MASSIF C_______________________________________________________________________ C C_______________________________________________________________________ C C -- TRAITEMENT PARTICULIER SELON LE TYPE DES ELEMENTS -- C_______________________________________________________________________ C C IF(MFR.EQ.3.OR.MFR.EQ.9.OR.MFR.EQ.35)THEN IF (NUDIR1.EQ.1) THEN NPG2=1 ENDIF IF (NUDIR1.EQ.2) THEN NPG2=NBPGAU ENDIF C IF (MELE.EQ.27.OR.MELE.EQ.28.OR.MELE.EQ.49.OR.MELE.EQ.93 . .OR.MELE.EQ.87.OR.MELE.EQ.88.OR.MELE.EQ.128) THEN ICALC=0 ELSEIF (MELE.EQ.44) THEN ICALC=1 ENDIF C_______________________________________________________________________ C C LE FLAG ICALC SERT A INDIQUER L OPTION DE CALCUL A CHOISIR C DANS LA ROUTINE IDMAT3 (IDEM MATEO2 ET COBIOR POUR MATE) C_______________________________________________________________________ C IPVAL=0 1 MELEME,MINTE,NPG2,ICALC,MFR,IPVAL) IF (IERR.NE.0) THEN DO 300 ICOMP=1,NCOMP MELVA2=MCHAM2.IELVAL(ICOMP) MELVA1=MCHAM1.IELVAL(ICOMP) SEGSUP,MELVA1 300 CONTINUE SEGSUP MCHAM1 GOTO 9990 ENDIF ELSEIF(MFR.EQ.5)THEN NPG2=NBPGAU IPVAL=0 1 MELEME,MINTE,MINTE1,IPEPAI,IPEXCE,NPG2,ITHER,IPVAL) IF (IERR.NE.0) THEN DO 312 ICOMP=1,NCOMP MELVA2=MCHAM2.IELVAL(ICOMP) MELVA1=MCHAM1.IELVAL(ICOMP) SEGSUP,MELVA1 312 CONTINUE SEGSUP MCHAM1 GOTO 9990 ENDIF ELSEIF (MFR.EQ.1.OR.MFR.EQ.31.OR.MFR.EQ.33.OR.MFR.EQ.45)THEN IPVAL=0 NPG2=1 cbp : afin d'interdire une description "3D" du repere local en 2D c Fourier pour DARCY, on truande un peu via IFOUR qu'on met a 0 (=axi) IFOUR1=IFOUR if(MFR.EQ.45.and.IFOUR.eq.1) IFOUR=0 IF(NUDIR1.EQ.2) NPG2=NBPGA2 . MELEME,MINTE,IPVAL,NPG2,MINTE2) IFOUR=IFOUR1 IF (IERR.NE.0) THEN DO 310 ICOMP=1,NCOMP MELVA2=MCHAM2.IELVAL(ICOMP) MELVA1=MCHAM1.IELVAL(ICOMP) SEGSUP,MELVA1 310 CONTINUE SEGSUP MCHAM1 GOTO 9990 ENDIF ELSEIF (MFR.EQ.75)THEN IPVAL=0 NPG2=NBPGAU . IPVAL,NPG2) IF (IERR.NE.0) THEN DO 375 ICOMP=1,NCOMP MELVA2=MCHAM2.IELVAL(ICOMP) MELVA1=MCHAM1.IELVAL(ICOMP) SEGSUP,MELVA1 375 CONTINUE SEGSUP MCHAM1 GOTO 9990 ENDIF ELSE MOTERR(5:8) = NOMTP(MELE) MOTERR(1:4) = 'ORTH' DO 320 ICOMP=1,NCOMP MELVA2=MCHAM2.IELVAL(ICOMP) MELVA1=MCHAM1.IELVAL(ICOMP) SEGSUP,MELVA1 320 CONTINUE SEGSUP MCHAM1 GOTO 9990 ENDIF C IF (MFR.EQ.3 .OR.MFR.EQ.9.OR.MFR.EQ.5.OR.MFR.EQ.35 )THEN C C ON CREE LES COMPOSANTES V1X ET V1Y C IF (RFLAG) THEN MCHAM1.NOMCHE(N2-1 )='W1X ' MCHAM1.NOMCHE(N2 )='W1Y ' ELSE MCHAM1.NOMCHE(N2-1 )='V1X ' MCHAM1.NOMCHE(N2 )='V1Y ' ENDIF MCHAM1.TYPCHE(N2-1 )='REAL*8' MCHAM1.TYPCHE(N2 )='REAL*8' C C REMPLISSAGE DU SEGMENT MELVA1 CONTENANT LES COMPOSANTES C N1PTEL=NPG2 N1EL = NBELEM N2PTEL=0 N2EL =0 C XVAL=IPVAL SEGACT XVAL C SEGINI MELVA1 MCHAM1.IELVAL(N2-1)=MELVA1 DO 1110 IB=1,NBELEM DO 1111 IGAU=1,NPG2 IGMN=MIN(IGAU,MELVA1.VELCHE(/1)) IBMN=MIN(IB ,MELVA1.VELCHE(/2)) MELVA1.VELCHE(IGMN,IBMN)=CVAL(IGAU,IB) 1111 CONTINUE 1110 CONTINUE C SEGINI MELVA1 MCHAM1.IELVAL(N2)=MELVA1 DO 2110 IB=1,NBELEM DO 2111 IGAU=1,NPG2 IGMN=MIN(IGAU,MELVA1.VELCHE(/1)) IBMN=MIN(IB ,MELVA1.VELCHE(/2)) MELVA1.VELCHE(IGMN,IBMN)=SVAL(IGAU,IB) 2111 CONTINUE 2110 CONTINUE C SEGSUP XVAL ELSEIF(MFR.EQ.1.OR.MFR.EQ.31.OR.MFR.EQ.33 & .OR.MFR.EQ.45.OR.MFR.EQ.75)THEN C C ON CREE LES COMPOSANTES V1X,V1Y,V1Z, . . . C cbp IF(IDIM.EQ.2)THEN c IF(IDIM.EQ.2.AND.((MFR.NE.1.AND.MFR.NE.31).OR.IFOUR.NE.1))THEN IF(IDIM2.EQ.2)THEN NCOMPV=2 IF (RFLAG) THEN MCHAM1.NOMCHE(N2-1 )='W1X ' MCHAM1.NOMCHE(N2 )='W1Y ' ELSE MCHAM1.NOMCHE(N2-1 )='V1X ' MCHAM1.NOMCHE(N2 )='V1Y ' ENDIF C cbp ELSEIF(IDIM.EQ.3)THEN ELSE NCOMPV=6 C IF (RFLAG) THEN MCHAM1.NOMCHE(N2-5 )='W1X ' MCHAM1.NOMCHE(N2-4 )='W1Y ' MCHAM1.NOMCHE(N2-3 )='W1Z ' MCHAM1.NOMCHE(N2-2 )='W2X ' MCHAM1.NOMCHE(N2-1 )='W2Y ' MCHAM1.NOMCHE(N2 )='W2Z ' ELSE MCHAM1.NOMCHE(N2-5 )='V1X ' MCHAM1.NOMCHE(N2-4 )='V1Y ' MCHAM1.NOMCHE(N2-3 )='V1Z ' MCHAM1.NOMCHE(N2-2 )='V2X ' MCHAM1.NOMCHE(N2-1 )='V2Y ' MCHAM1.NOMCHE(N2 )='V2Z ' ENDIF C ENDIF DO 200 ICOMP =1,NCOMPV MCHAM1.TYPCHE(N2-(NCOMPV-ICOMP))='REAL*8' 200 CONTINUE C C REMPLISSAGE DU SEGMENT MELVA1 CONTENANT LES COMPOSANTES C N1PTEL=NPG2 N1EL =NBELEM N2PTEL=0 N2EL =0 YVAL=IPVAL SEGACT YVAL C DO 210 ICOMP=1,NCOMPV SEGINI MELVA1 MCHAM1.IELVAL(N2-(NCOMPV-ICOMP))=MELVA1 DO 220 IB=1,NBELEM DO 230 IG=1,NPG2 IF(ICOMP.LE.3)THEN MELVA1.VELCHE(IG,IB)=VLOC1(ICOMP,IG,IB) ELSE ENDIF 230 CONTINUE 220 CONTINUE 210 CONTINUE SEGSUP YVAL * ENDIF C C_______________________________________________________________________ C_______________________________________________________________________ C ELSE C C ON RECOPIE LE CHAMELEM ICARA DANS LE CHAMELEM IPCARA C DO 17 I=1,N3 MCHEL1.INFCHE(ISOUS,I)=MCHEL2.INFCHE(ISOUS,I) 17 CONTINUE C C ACTIVATION DU MCHAML C MCHAM2=MCHEL2.ICHAML(ISOUS) SEGACT MCHAM2 N2=MCHAM2.NOMCHE(/2) C SEGINI MCHAM1 MCHEL1.ICHAML(ISOUS)=MCHAM1 DO 2 ICOMP=1,N2 MCHAM1.NOMCHE(ICOMP)=MCHAM2.NOMCHE(ICOMP) MCHAM1.TYPCHE(ICOMP)=MCHAM2.TYPCHE(ICOMP) C C ACTIVATION DU MELVAL C MELVA2=MCHAM2.IELVAL(ICOMP) SEGACT MELVA2 IF (MCHAM2.TYPCHE(ICOMP).EQ.'REAL*8') THEN N1PTEL=MELVA2.VELCHE(/1) N1EL =MELVA2.VELCHE(/2) N2PTEL=0 N2EL =0 C SEGINI MELVA1 MCHAM1.IELVAL(ICOMP)=MELVA1 DO 5 J=1,N1PTEL DO 51 K=1,N1EL MELVA1.VELCHE(J,K)=MELVA2.VELCHE(J,K) 51 CONTINUE 5 CONTINUE ELSE N2PTEL=MELVA2.IELCHE(/1) N2EL =MELVA2.IELCHE(/2) N1PTEL=0 N1EL =0 SEGINI MELVA1 C MCHAM1.IELVAL(ICOMP)=MELVA1 DO 4 J=1,N2PTEL DO 42 K=1,N2EL MELVA1.IELCHE(J,K)=MELVA2.IELCHE(J,K) 42 CONTINUE 4 CONTINUE ENDIF 2 CONTINUE ENDIF C C DESACTIVATION DES SEGMENTS C 10 CONTINUE RETURN C C ERREUR DANS UNE SOUS ZONE DESACTIVATION ET RETOUR C 9990 CONTINUE SEGSUP MCHEL1 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales