facge2
C FACGE2 SOURCE OF166741 24/10/03 21:15:12 12022 & ,EXTINC) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) *---------------------------------------------------------------------- * Calcul des facteurs de forme OPTION CACHE 2D-plan * SP APPELE PAR FFORME * entrée * MYMOD : objet modèle * INFOEL : segment décrivant la nature des éléments des maillages * LRES : parametre de resolution * XDEC : parametre de decoupage * IAXE : pointeur sur le chamtrio decrivant le plan de symetrie * INOR : parametre de normalisation et impression * EXTINC : coefficient d'extinction si cavite absorbante * sortie * ICHFAC : chamelem facteur de forme *---------------------------------------------------------------------- -INC PPARAM -INC CCOPTIO -INC SMCOORD -INC SMELEME C---------------------------------------------------------------------- C segment qui va contenir les coordonnées du plan de symétrie SEGMENT,LISTEN INTEGER LECT(NBE) ENDSEGMENT POINTEUR IAXE.LISTEN 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 SKBUF2 INTEGER NUMF(NFC,NOC,NR),NTYP(NFC,NR) REAL*8 ZB(NFC,NR),PSC(NFC,NR) ENDSEGMENT C C BUFFER ASSOCIE AU H.C C --------------------- C NUMF : INDICE DE LE DERNIERE FACE RENCONTREE C NTYP : TYPES ASSOCIES C ZB : PROFONDEUR C PSC : PRODUIT SCALAIRE (NORMALE.DIRECTION CELLULE) C----------------------------------------------------------------------- C FACTEURS DE FORME C NNBEL1 = NOMBRE DE LIGNES + 1 C NBEL2 = NOMBRE DE COLONNES C LFACT(NNBEL1) POINTE SUR LE TABLEAU DES SURFACES C SEGMENT IFACFO INTEGER LFACT(NNBEL1) ENDSEGMENT SEGMENT LFAC REAL*8 FACT(NBEL2) ENDSEGMENT POINTEUR PSUR.LFAC, PLIG.LFAC POINTEUR PCOL.LFAC C---------------------------------------------------------------------- SEGMENT STRAV REAL*8 U1(3),U2(3),O1(2) REAL*8 A1(2,2),A2(2,2) REAL*8 AA2(2,2),UU2(3),UA(2),UN(2) ENDSEGMENT C---------------------------------------------------------------------- *////// * Mise à jour de variables SKRESO SEGINI SKRESO KES = IDIM KIMP = IIMPI NRES = LRES KFC=4 *////// SEGINI STRAV C C CNN-----AXE DE SYMETRIE-------------------------------------------------- IF (IAXE.NE.0) THEN IF(IIMPI.GE.1) THEN WRITE(6,*) ' CALCUL AVEC AXE DE SYMETRIE ' ENDIF C Numéro des 2 points définissant l'axe IREF1 = (IDIM+1)*(IAXE.LECT(1)-1) IREF2 = (IDIM+1)*(IAXE.LECT(2)-1) C On garde un point ( UA ) et la normale ( UN ) UA(1) = XCOOR(IREF1+1) UA(2) = XCOOR(IREF1+2) UN(1) = UA(2) - XCOOR(IREF2+2) UN(2) = XCOOR(IREF2+1) - UA(1) DUN=SQRT(UN(1)*UN(1)+UN(2)*UN(2)) IF (DUN.LT.1.E-5) THEN WRITE(6,*) ' LES POINTS DE L AXE SONT CONFONDUS ' RETURN ENDIF UN(1) = UN(1)/DUN UN(2) = UN(2)/DUN ENDIF CNN------------------------------------------------------------------ NSOM = 2 EPS = 1E-5 C C>>> PREPARATION C C C>>> INITIALISATION OBJET FACFOR C NBEL1 = NELD NNBEL1 = NELD+1 NBEL2 = NELD SEGINI IFACFO DO 900 LS=1,NNBEL1 SEGINI PLIG LFACT(LS) = PLIG SEGDES PLIG 900 CONTINUE PSUR = LFACT(NNBEL1) SEGACT PSUR*MOD SEGACT SKFAC2 MFACE = NUK(/2) DO 910 K1 = 1,MFACE PSUR.FACT(K1) = PSUR.FACT(K1) + S(K1) 910 CONTINUE C ------------------------------------------------------------- C>>> CALCUL C SEGACT SHC2D,SKFAC2*MOD MFACE = NUK(/2) NR = IR(/1) NFC = KRO(/1) NOC = 4 SEGINI SKBUF2 DO 300 K1 = K1D,K1F PLIG = LFACT(K1) SEGACT PLIG*MOD DO 312 K=1,IDIM+1 U1(K) = U(K,K1) 312 CONTINUE DO 201 ISS = 1,NSOM IREF = (IDIM+1)*(NUK(ISS,K1)-1) DO 202 K = 1,IDIM A1(K,ISS) = XCOOR(IREF+K) 202 CONTINUE 201 CONTINUE IPATCH = KPATCH(K1) SEGACT IPATCH NPATCH = GP(/2) DO 310 KS1 = KS1D,KS1F DO 311 K=1,IDIM O1(K) = GP(K,KS1) 311 CONTINUE IF (IIMPI.GE.4) THEN WRITE(6,*) K1,KS1,' O1 ',(O1(I1),I1=1,IDIM) ENDIF C C FACES C ----- DO 400 K2 = 1,MFACE DO 412 K=1,IDIM+1 U2(K) = U(K,K2) 412 CONTINUE DO 211 ISS = 1,NSOM IREF = (IDIM+1)*(NUK(ISS,K2)-1) DO 212 K = 1,IDIM A2(K,ISS) = XCOOR(IREF+K) 212 CONTINUE 211 CONTINUE CNNN-------SEQUENCE POUR LA FACE K2 DU MAILLAGE-------------- IF (KVU.NE.0) THEN C = U2(IDIM+1) DO 401 IES = 1,IDIM C = C + U2(IES)*O1(IES) 401 CONTINUE IF (IIMPI.GE.4) WRITE(6,*) 'FACES ',K1,' ',K2,' KVU ',KVU ENDIF ENDIF CNNN------------------------------------------------------------- IF(IAXE.NE.0) THEN CNNN-------SEQUENCE POUR LA FACE SYMETRIQUE DE K2-------------------- C L'AXE DE SYMETRIE EST DEFINI PAR UN POINT UA C UNE NORMALE UNITAIRE C CALCUL DES SYMETRIQUES DE U2(NORMALE) ET A2(SOMMETS) C KES1 = IDIM + 1 IF (KVU.NE.0) THEN C = UU2(IDIM+1) DO 403 IES = 1,IDIM C = C + UU2(IES)*O1(IES) 403 CONTINUE IF (IIMPI.GE.4) WRITE(6,*) 'FACES ',K1,' ',K2,' KVU ',KVU ENDIF ENDIF CNNN------------------------------------------------------------- ENDIF 400 CONTINUE C C>>> RECOMBINAISON C SSP1 = SP(KS1) C<< IF(EXTINC.LE.1D-3) THEN ELSE ENDIF C<< DO 920 K2 = 1,MFACE PLIG.FACT(K2) = PLIG.FACT(K2) + FF1(K2) 920 CONTINUE 310 CONTINUE SEGDES IPATCH SEGDES PLIG 300 CONTINUE C ------------------------------------------------------------- DO 500 K2=1,MFACE IPATCH=KPATCH(K2) SEGSUP IPATCH 500 CONTINUE SEGSUP SKFAC2 SEGSUP SHC2D,SKBUF2 C C>>> CALCUL DES BILANS, IMPRESSION, NORMALISATION C -------------------------------------------- LIMP=KIMP C<< IF(EXTINC.GT.1D-3) THEN INOR = 0 ENDIF C<< C *////// IF(KIMP.GE.3) THEN ENDIF *////// LTITR=1 C Destruction de IFACFO après traduction SEGACT IFACFO NNBEL1 = LFACT(/1) DO 950 NN = 1,NNBEL1 PLIG = LFACT(NN) SEGSUP PLIG 950 CONTINUE SEGSUP IFACFO SEGSUP STRAV, SKRESO RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales