kalpr2
C KALPR2 SOURCE OF166741 24/10/03 21:15:22 12022 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C---------------------------------------------------------------------- * Facteurs de forme en 2D-PLAN. Cas general * Calcul du decoupage des faces et initialisations * SP APPELE PAR facge2 * entrée * MYMOD : pointeur de l'objet modèle * INFOEL : informations concernant le type des éléments des maillages * XDEC : parametre pour le decoupage des faces * NELD : nombre total d'elements * sortie * SKRESO : pointeur infos. globales * SKFAC2 : pointeur sur l objet 'faces' pour le calcul des FF * SHC2D : pointeur sur la surface de projection C---------------------------------------------------------------------- C traitement des coques par dedoublement des elements C traitement des quadratiques en se ramenant a des elements C lineaires C---------------------------------------------------------------------- LOGICAL ICOQ -INC PPARAM -INC CCOPTIO -INC SMCOORD -INC SMMODEL POINTEUR MYMOD.MMODEL -INC SMELEME C --------------------------------------------------------------- C Stockage d'informations concernant le type des éléments des maillages SEGMENT ,INFOEL LOGICAL KCOQ(N1),KQUAD(N1) ENDSEGMENT C --------------------------------------------------------------- SEGMENT SKRESO INTEGER KFC,NRES,KES,KIMP ENDSEGMENT C KFC : NOMBRE DE FACES H.C C NRES: RESOLUTION C KES : DIM ESPACE C KIMP: IMPRESSION C----------------------------------------------------------------------- SEGMENT SKFAC2 INTEGER NUK(MS,MFACE),KPATCH(MFACE) INTEGER NCELL(MFACE) REAL*8 U(3,MFACE),S(MFACE) REAL*8 FF1(MFACE) ENDSEGMENT SEGMENT IPATCH REAL*8 GP(MSP,NPATCH),SP(NPATCH) ENDSEGMENT C C DESCRIPTION DES ELEMENTS C ------------------------ C MFACE : NOMBRE DE FACES C NUK : CONNECTIVITES C U : NORMALE UNITAIRE ET EQUATION DU PLAN DE L'ELEMENT C S : SURFACE C KVU : VISIBILITE A PRIORI C FF : FACTEURS DE FORME C FF1 : TRAVAIL C NCELL : NOMBRE TOTAL DE CELLULES VUES PAR UN POINT C KPATCH: POINTEUR SUR IPATCH C NPATCH: NOMBRE DE POINTS SUR L'ELEMENT (REDECOUPAGE) C GP : COORDONNEES DES POINTS C SP : ET SURFACES C----------------------------------------------------------------------- SEGMENT SHC2D INTEGER IR(NR),KA(NFC),IM(NFC,NFC) INTEGER KRO(NFC,NES),KSI(NFC,NES) REAL*8 V(NES,NR),G(NR) ENDSEGMENT C DESCRIPTION DU H.C DE PROJECTION C -------------------------------- C V : DIRECTION UNITAIRE DES CELLULES C G : FACTEUR DE FORME ASSOCIE C IR: CORRESPONDANCE C KRO , KSI : POUR LE CHANGEMENT DE REPERE C IM : REFERENCE C NR : RESOLUTION C NFC : NOMBRE DE FACES C----------------------------------------------------------------------- SEGMENT SDECOU INTEGER KDECOU(MFACE) ENDSEGMENT C-------------------------------------------------------------------- C SEGMENT STRAV REAL*8 A1(2,2),A2(2,2),U1(3),U2(3) ENDSEGMENT C-------------------------------------------------------------------- C DMIN=1.E-5 DMAX=1./DMIN NPM=20 C pour les elements lineaires (sinon pas=2) NSPA=1 C on se ramene toujours a des SEG2 NS=2 SEGINI STRAV C C>>> CREATION DE L'OBJET FACE C IF (INFOEL.EQ.0) THEN ICOQ = .FALSE. ELSE ICOQ = .TRUE. SEGACT INFOEL ENDIF NTYP = MYMOD.KMODEL(/1) NFACE = 0 NELD = 0 DO 10 ITYP=1,NTYP IMODE1 = MYMOD.KMODEL(ITYP) IPT1 = IMODE1.IMAMOD NEL = IPT1.NUM(/2) NSGEO = IPT1.NUM(/1) C C un élément COQ -> 2 facteurs de formes IF (ICOQ.AND.KCOQ(ITYP)) NEL=2*NEL C NELD = NELD + NEL IF (NS.NE.2) WRITE(6,*) ' ON ATTEND DES SEG2 ' NFACE = NFACE + NEL 10 CONTINUE IF (IIMPI.GE.1) THEN */////// WRITE( 6,*) ' NOMBRE TOTAL D ELEMENTS',NELD,', DE FACES ',NFACE C NBSEG = 1+3*NTYP+(1+2*NTYP)*NELD C WRITE (6,*) 'Le CHAMELEM facteur de forme tient sur', C # NBSEG,' segments .' */////// ENDIF C MFACE = NFACE MS = NS SEGINI SKFAC2 SEGINI SDECOU C C UN SEUL TYPE D'ELEMENTS : SEG2 C C Remplissage de NUK(*,*) et de U(*,4) NELT= 0 DO 100 ITYP = 1,NTYP IMODE1 = MYMOD.KMODEL(ITYP) IPT1 = IMODE1.IMAMOD NSGEO = IPT1.NUM(/1) NSPA=1 IF (ICOQ.AND.KQUAD(ITYP)) NSPA = 2 NEL = IPT1.NUM(/2) DO 110 I = 1,NEL IF (ICOQ.AND.KCOQ(ITYP)) THEN WRITE (6,*) 'IL y a des COQ2' KEL = (2*I-1) + NELT ELSE KEL = I + NELT ENDIF DO 111 IS = 1, NSGEO, NSPA LS=IS IF (ICOQ.AND.KQUAD(ITYP)) LS=(IS+1)/2 C** NUK(IS,KEL) = IPT1.NUM(IS,I) NUK(LS,KEL) = IPT1.NUM(IS,I) IF (IIMPI.GE.4) WRITE(6,*) # 'NUK(',LS,',',KEL,')=',NUK(LS,KEL) IREF = (IDIM+1)*(NUK(LS,KEL)-1) DO 112 K = 1,IDIM C** A1(K,IS) = XCOOR(IREF+K) A1(K,LS) = XCOOR(IREF+K) 112 CONTINUE 111 CONTINUE *//////////// * WRITE (6,*) 'Normale :',(U1(K),K=1,IDIM) *//////////// DO 113 L = 1,IDIM+1 U(L,KEL) = U1(L) 113 CONTINUE C IF (ICOQ.AND.KCOQ(ITYP)) THEN C On remplit NUK , U et S pour l'élément inverse NUK(1,KEL+1) = NUK(2,KEL) NUK(2,KEL+1) = NUK(1,KEL) S(KEL+1) = S(KEL) DO 114 L = 1,IDIM+1 U(L,KEL+1) = -U(L,KEL) 114 CONTINUE ENDIF 110 CONTINUE IF (ICOQ.AND.KCOQ(ITYP)) THEN NELT=NELT+NEL*2 ELSE NELT=NELT+NEL ENDIF C 100 CONTINUE C IF (ICOQ) SEGDES INFOEL C SEGACT SDECOU*MOD DO 200 K1= 1,NFACE DO 213 LS= 1, NS IREF = (IDIM+1)*(NUK(LS,K1)-1) DO 212 K = 1,IDIM C** A1(K,IS) = XCOOR(IREF+K) A1(K,LS) = XCOOR(IREF+K) 212 CONTINUE 213 CONTINUE DO 214 K=1,IDIM+1 U1(K) = U(K,K1) 214 CONTINUE IF (XDEC.GE.0.01) THEN DK1 = DMAX DO 400 K2 = 1,MFACE C WRITE(6,*) ' K2 ',K2 C DO 413 LS= 1, NS IREF = (IDIM+1)*(NUK(LS,K2)-1) DO 412 K = 1,IDIM C** A2(K,IS) = XCOOR(IREF+K) A2(K,LS) = XCOOR(IREF+K) 412 CONTINUE 413 CONTINUE DO 414 K=1,IDIM+1 U2(K) = U(K,K2) 414 CONTINUE C IF (KVU.NE.0) THEN C WRITE(6,*) ' KVU',KVU D1 = (A1(1,1)+A1(1,2)-A2(1,1)-A2(1,2))/2. D2 = (A1(2,2)+A1(2,2)-A2(2,1)-A2(2,2))/2. DKK1 = SQRT(D1*D1+D2*D2) IF ((DKK1/S(K1)).GT.DMIN) THEN C tri angulaire CK1 = ABS(U1(1)*D1+U1(2)*D2)/DKK1 C WRITE(6,*) ' K2 KVU DKK1 CK1 ',K1,KVU,DKK1,CK1 IF(CK1.GE.0.01) THEN DK1=MIN(DKK1,DK1) ENDIF ENDIF ENDIF 400 CONTINUE DR=DK1/XDEC C WRITE(6,*) ' DR ',DR ELSE DR = DMAX ENDIF NPAT=INT(S(K1)/DR)+1 NPAT=MIN0(NPAT,NPM) NPATCH = NPAT MSP = MS SEGINI IPATCH KDECOU(K1)= NPAT KPATCH(K1) = IPATCH SEGDES IPATCH 200 CONTINUE C IF(IIMPI.GE.2) THEN WRITE(6,*) WRITE(6,*) 'NOMBRE DE SUBDIVISIONS PAR FACE' WRITE(6,1000) (KDECOU(I),I=1,MFACE) 1000 FORMAT(1X,10(I4)) ENDIF C C>>> CARACTERISTIQUES GLOBALES C NFC = 4 NR = NRES NES = IDIM SEGINI SHC2D C C** KFC = NFC SEGDES SKFAC2,SHC2D SEGSUP SDECOU SEGSUP STRAV C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales