menvlp
C MENVLP SOURCE FANDEUR 22/01/03 21:15:31 11136 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMLENTI -INC CCGEOME -INC SIZFFB POINTEUR IZF1.IZFFM,IZH2.IZHR -INC SMCOORD -INC SMCHPOI -INC SMELEME POINTEUR MENVEL.MELEME,MELEMP.MELEME,MELEM1.MELEME POINTEUR MELEMQ.MELEME POINTEUR IPT0.MELEME,IGEOM.MELEME CHARACTER*8 NOM0,TYPE DIMENSION JNF(6,7),KTA(7,3),ITAB(4) DIMENSION KNPF(6,7),KNF(9) DATA KTA/ C nb de faces par type d'élément & 2, 3, 4, 6, 5, 4, 5, C numero type elt pour conectivités & 3, 7,11,33,34,35,36, C Idc3 & 0, 2,5 ,9 ,15 ,20,24/ C Numero des pts faces SEG3 TRI7 QUA9 CU27 PR21 TE15 PY19 DATA JNF/1,3,0,0,0,0, & 2,4,6,0,0,0, 2,4,6,8,0,0, & 25,26,21,22,23,24, 19,20,16,17,18,0, & 12,11,13,14,0,0, 14,15,16,17,18,0/ C Nombre de points par face SEG3 TRI7 QUA9 CU27 PR21 TE15 PY19 DATA KNPF/1,1,0,0,0,0, & 3,3,3,0,0,0, 3,3,3,3,0,0, & 9,9,9,9,9,9, 7,7,9,9,9,0, & 7,7,7,7,0,0, 9,7,7,7,7,0/ DATA KNF/1,0,2,0,0,0,3,0,4/ DIMENSION INF(9,29) C SEG3 DATA INF/ & 1,0,0,0,0,0,0,0,0, 3,0,0,0,0,0,0,0,0, C TRI7 & 3,2,1,0,0,0,0,0,0, 5,4,3,0,0,0,0,0,0, 1,6,5,0,0,0,0,0,0, C QUA9 & 3,2,1,0,0,0,0,0,0, 5,4,3,0,0,0,0,0,0, 7,6,5,0,0,0,0,0,0, & 1,8,7,0,0,0,0,0,0, C CU27 & 1,8,7,6,5,4,3,2,25, 13,14,15,16,17,18,19,20,26, & 1,2,3,10,15,14,13,9,21, 3,4,5,11,17,16,15,10,22, & 5,6,7,12,19,18,17,11,23, 7,8,1,9,13,20,19,12,24, C PR21 & 1,6,5,4,3,2,19,0,0, 10,11,12,13,14,15,20,0,0, & 1,2,3,8 ,12,11,10,7,16, 3,4,5,9 ,14,13,12,8 ,17, & 5,6,1,7,10,15,14,9 ,18, C TE15 & 1,2,3,8,10,7,12,0,0, 1,6,5,4,3,2,11,0,0, 3,4,5,9,10,8,13,0,0, & 1,7,10,9,5,6,14,0,0, C PY19 & 1,8,7,6,5,4,3,2,14, 1,2,3,10,13,9,15,0,0, 3,4,5,11,13,10,16,0,0, & 5,6,7,12,13,11,17,0,0, 7,8,1,9,13,12,18,0,0/ C write(6,*)'DEBUT MENVLP' IRET=1 IAXI=0 IF(IFOMOD.EQ.0)IAXI=2 JG=nbpts SEGINI MLENTI NBFCE=0 SEGACT MELEMQ DO 10 L=1,MAX(1,MELEMQ.LISOUS(/1)) IPT1=MELEMQ IF(MELEMQ.LISOUS(/1).NE.0)IPT1=MELEMQ.LISOUS(L) SEGACT IPT1 NP=IPT1.NUM(/1) NPFA=0 IF(NP.EQ.3)NPFA=1 IF(NP.EQ.7)NPFA=2 IF(NP.EQ.9)NPFA=3 IF(NP.EQ.27)NPFA=4 IF(NP.EQ.21)NPFA=5 IF(NP.EQ.15)NPFA=6 IF(NP.EQ.19)NPFA=7 C NBPFA nb de pts face dans un element diff nb de points par face NBPFA=KTA(NPFA,1) DO 1 I=1,NBPFA J=JNF(I,NPFA) IFA=IPT1.NUM(J,K) NBFCE=NBFCE+1 LECT(IFA)=LECT(IFA)+1 1 CONTINUE 10 CONTINUE NBFACE =0 DO 2 K=1,LECT(/1) IF(LECT(K).NE.1)GO TO 2 NBFACE=NBFACE+1 2 CONTINUE C Tracage orientation des faces NBSOUS=0 NBREF=0 NBNN=1 NBELEM=NBFACE SEGINI IGEOM NSOUPO=1 NAT=1 NC=IDIM N=NBFACE SEGINI MCHPOI,MSOUPO,MPOVAL JATTRI(1)=2 IFOPOI=IFOUR MTYPOI=' ' MOCHDE=' ' IPCHP(1)=MSOUPO IGEOC=IGEOM IPOVAL=MPOVAL NOCOMP(1)='UX' NOCOMP(2)='UY' IF(IDIM.EQ.3)NOCOMP(3)='UZ' C write(6,*)'NBFACE=',NBFACE,' NBFCE=',NBFCE NBSOUS=0 NBREF=0 NBNN=1 NBELEM=NBFACE SEGINI MELEM1 MELEM1.ITYPEL=1 I1=0 DO 3 K=1,LECT(/1) IF(LECT(K).NE.1)GO TO 3 I1=I1+1 MELEM1.NUM(1,I1)=K 3 CONTINUE SEGSUP MLENTI NBSOUS=0 NBREF=0 NBNN=1 NBN1=0 NBELEM=NBFACE SEGINI IPT0 IPT0.ITYPEL=1 NBNN=3 NBN3=0 NBELEM=NBFACE SEGINI IPT3 IPT3.ITYPEL=3 NBNN=7 NBN7=0 NBELEM=NBFACE SEGINI IPT7 IPT7.ITYPEL=7 NBNN=9 NBN9=0 NBELEM=NBFACE SEGINI IPT9 IPT9.ITYPEL=11 NBN0=0 SEGACT MELEMQ DO 51 L=1,MAX(1,MELEMQ.LISOUS(/1)) IPT1=MELEMQ IF(MELEMQ.LISOUS(/1).NE.0)IPT1=MELEMQ.LISOUS(L) SEGACT IPT1 NP=IPT1.NUM(/1) NOM0=NOMS(IPT1.ITYPEL)//' ' SEGACT IZFFM*MOD IZHR=KZHR(1) IZH2=KZHR(2) IZF1=KTP(1) SEGACT IZHR*MOD NES=GR(/1) NPG=GR(/3) C write(6,*)' NP,NBEL=',NP,NBEL NPFA=0 IF(NP.EQ.3)NPFA=1 IF(NP.EQ.7)NPFA=2 IF(NP.EQ.9)NPFA=3 IF(NP.EQ.27)NPFA=4 IF(NP.EQ.21)NPFA=5 IF(NP.EQ.15)NPFA=6 IF(NP.EQ.19)NPFA=7 C NBPFA nb de pts face dans un element diff nb de points par face NBPFA=KTA(NPFA,1) DO 53 I=1,NBPFA IFA=IPT1.NUM(JNF(I,NPFA),K) IF(LECT(IFA).EQ.0)GO TO 53 NBPPFA=KNPF(I,NPFA) IP=KNF(NBPPFA) C write(6,*)'IPT1=',IPT1,(IPT1.NUM(ii,K),ii=1,np),' IFA=',ifa NBN0=NBN0+1 IGEOM.NUM(1,NBN0)=IFA GO TO(501,503,507,509),IP C POI1 501 CONTINUE NBN1=NBN1+1 IDC3=KTA(NPFA,3) DO 511 J=1,NBPPFA J1=INF(J,I+IDC3) IPT0.NUM(J,NBN1)=IPT1.NUM(J1,K) 511 CONTINUE GO TO 53 C SEG3 503 CONTINUE NBN3=NBN3+1 IDC3=KTA(NPFA,3) DO 543 II=1,NP J1 = IPT1.NUM(II,K) DO 553 N=1,IDIM XYZ(N,II) = XCOOR((J1-1)*(IDIM+1)+N) 553 CONTINUE 543 CONTINUE & NES,IDIM,NP,NPG,IAXI,AIRE,AJ,SGN) VPOCHA(NBN0,1)=SGN IF(SGN.EQ.1.D0)THEN JDEB=1 JFIN=NBPPFA IPAS=1 ELSE JDEB=NBPPFA JFIN=1 IPAS=-1 ENDIF J0=0 DO 513 J=JDEB,JFIN,IPAS J0=J0+1 J1=INF(J,I+IDC3) IPT3.NUM(J0,NBN3)=IPT1.NUM(J1,K) 513 CONTINUE GO TO 53 C TRI7 507 CONTINUE NBN7=NBN7+1 IDC3=KTA(NPFA,3) DO 547 II=1,NP J1 = IPT1.NUM(II,K) DO 557 N=1,IDIM XYZ(N,II) = XCOOR((J1-1)*(IDIM+1)+N) 557 CONTINUE 547 CONTINUE & NES,IDIM,NP,NPG,IAXI,AIRE,AJ,SGN) VPOCHA(NBN0,1)=SGN IF(SGN.EQ.1.D0)THEN JDEB=2 JFIN=NBPPFA-1 IPAS=1 ELSE JDEB=NBPPFA-1 JFIN=2 IPAS=-1 ENDIF J0=1 DO 517 J=JDEB,JFIN,IPAS J0=J0+1 J1=INF(J,I+IDC3) IPT7.NUM(J0,NBN7)=IPT1.NUM(J1,K) 517 CONTINUE J1=INF(1,I+IDC3) IPT7.NUM(1,NBN7)=IPT1.NUM(J1,K) J1=INF(7,I+IDC3) IPT7.NUM(7,NBN7)=IPT1.NUM(J1,K) C write(6,*)(IPT7.NUM(J,NBN7),j=1,NBPPFA) GO TO 53 C QUA9 509 CONTINUE NBN9=NBN9+1 IDC3=KTA(NPFA,3) DO 549 II=1,NP J1 = IPT1.NUM(II,K) DO 559 N=1,IDIM XYZ(N,II) = XCOOR((J1-1)*(IDIM+1)+N) 559 CONTINUE 549 CONTINUE & NES,IDIM,NP,NPG,IAXI,AIRE,AJ,SGN) VPOCHA(NBN0,1)=SGN IF(SGN.EQ.1.D0)THEN JDEB=2 JFIN=NBPPFA-1 IPAS=1 ELSE JDEB=NBPPFA-1 JFIN=2 IPAS=-1 ENDIF J0=1 DO 519 J=JDEB,JFIN,IPAS J0=J0+1 J1=INF(J,I+IDC3) IPT9.NUM(J0,NBN9)=IPT1.NUM(J1,K) 519 CONTINUE J1=INF(1,I+IDC3) IPT9.NUM(1,NBN9)=IPT1.NUM(J1,K) J1=INF(9,I+IDC3) IPT9.NUM(9,NBN9)=IPT1.NUM(J1,K) GO TO 53 53 CONTINUE 52 CONTINUE SEGSUP IZFFM,IZHR,IZH2,IZF1 51 CONTINUE NBS=0 IF(NBN1.NE.0)THEN NBS=NBS+1 NBNN=1 NBELEM=NBN1 SEGADJ IPT0 ITAB(NBS)=IPT0 MENVEL=IPT0 ENDIF IF(NBN3.NE.0)THEN NBS=NBS+1 NBNN=3 NBELEM=NBN3 SEGADJ IPT3 ITAB(NBS)=IPT3 MENVEL=IPT3 ENDIF IF(NBN7.NE.0)THEN NBS=NBS+1 NBNN=7 NBELEM=NBN7 SEGADJ IPT7 ITAB(NBS)=IPT7 MENVEL=IPT7 ENDIF IF(NBN9.NE.0)THEN NBS=NBS+1 NBNN=9 NBELEM=NBN9 SEGADJ IPT9 ITAB(NBS)=IPT9 MENVEL=IPT9 ENDIF IF(NBS.NE.1)THEN NBSOUS=NBS NBREF=0 NBNN=0 NBELEM=0 SEGINI MENVEL DO 60 L=1,NBS MENVEL.LISOUS(L)=ITAB(L) 60 CONTINUE ENDIF SEGSUP MLENTI,MELEM1 C Creation du Chamelem d'orientation SEGACT MENVEL DO 11 L=1,MAX(1,MENVEL.LISOUS(/1)) IPT1=MENVEL IF(MENVEL.LISOUS(/1).NE.0)IPT1=MENVEL.LISOUS(L) SEGACT IPT1 NP=IPT1.NUM(/1) NOM0=NOMS(IPT1.ITYPEL)//' ' SEGACT IZFFM*MOD IZHR=KZHR(1) IZH2=KZHR(2) IZF1=KTP(1) SEGACT IZHR*MOD,IZF1*MOD NES=GR(/1) NPG=GR(/3) IFA=NP IF(NP.EQ.3)IFA=2 I1=LECT(IPT1.NUM(IFA,K)) IF(I1.EQ.0)GO TO 23 SJ=VPOCHA(I1,1) DO 30 I=1,NP J1 = IPT1.NUM(I,K) DO 31 N=1,IDIM XYZ(N,I) = XCOOR((J1-1)*(IDIM+1)+N) 31 CONTINUE 30 CONTINUE & NES,IDIM,NP,NPG,IAXI,AIRE,AJ,ASGN) DO 33 N=1,IDIM C VPOCHA(I1,N)=AJ(N,IDIM,1)*SJ VPOCHA(I1,N)=AJ(N,IDIM,1) 33 CONTINUE 23 CONTINUE 21 CONTINUE SEGSUP IZFFM,IZHR,IZH2,IZF1 11 CONTINUE SEGSUP MLENTI C write(6,*)'FIN MENVLP' RETURN 1001 FORMAT(20(1X,I5)) 1002 FORMAT(10(1X,1PE11.4)) END
© Cast3M 2003 - Tous droits réservés.
Mentions légales