kaxk
C KAXK SOURCE CHAT 05/01/13 00:51:57 5004 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C********************************************************************* C CALCUL DE S1.F12 EN TENANT COMPTE DES OBSTRUCTEURS C entree C A1 : COORDONNEES FACE 1 C A2 : COORDONNEES FACE 2 C OBS : COORDONNES DES OBSTRUCTEURS POTENTIELS C NOBS : NOMBRE D'OBSTRUCTEURS POTENTIELS C NG0 : NOMBRE DE POINTS DE GAUSS (cas standard) C NP0 : NOMBRE DE POINTS D'INTEGRATION (elements proches) C KIMP : parametre d'impression C EXTINC: coefficient d'extinction de la cavite si absorbante C RAD : dimension du pb (le calcul est fait en coor. reduites) C resultat C FF : S1.F12 C********************************************************************* DIMENSION A1(2,2),A2(2,2),OBS(2,NT) DIMENSION AL(2,20),BL(2,20) DIMENSION AG(11,10),YA(10),HA(10),YB(10),HB(10) C LES INTERVALLES D INTEGRATION SONT AL(I,I+1),I=1,NAL C NM=20 C estimation du mode d'integration NS=2 IF(KIMP.GE.3) write(6,*) ' kaxk NG NP ',NG,NP RI1=A1(1,1) ZI1=A1(2,1) RI2=A1(1,2) ZI2=A1(2,2) RJ1=A2(1,1) ZJ1=A2(2,1) RJ2=A2(1,2) ZJ2=A2(2,2) DRI=RI2-RI1 DRJ=RJ2-RJ1 DZI=ZI2-ZI1 DZJ=ZJ2-ZJ1 C>> MODE D INTEGRATION IF(NG.EQ.0) THEN NA = NP NB = NP C>> INTEGRATION SUR I : A FF=0.D0 DA=1./NA DO 3 IA=1,NA A = DA/2. + DA*(IA-1) RI=(1.-A)*RI1+A*RI2 ZI=(1.-A)*ZI1+A*ZI2 DA=1./NA C>> INTEGRATION SUR J : B F=0.D0 DB=1./NB DO 30 IB=1,NB G=0.D0 B = DB/2. + DB*(IB-1) RJ=(1.-B)*RJ1+B*RJ2 ZJ=(1.-B)*ZJ1+B*ZJ2 IF(KIMP.GE.4)WRITE(6,*) ' INTEGRATION IA IB ',IA,IB C>> LIMITES DE VISIBILITE PROPRE AUX POINTS I ET J C ---------------------------------------------- IF(KIMP.GE.4) THEN WRITE(6,*) ' VISIBILITE PROPRE ',KVU ENDIF C C>> TRAITEMENT DES OBSTRUCTEURS C ---------------------------- IF(KVU.NE.0.AND.NOBS.NE.0) THEN IF(KIMP.GE.4) THEN WRITE(6,*) ' OBSTRUCTEURS ',KVU ENDIF ENDIF C C>> CALCUL C ------- IF(KVU.NE.0) THEN & ,EXTINC,RAD) ENDIF F= F + 4.*G*DB IF(KIMP.GE.4)WRITE(6,*) ' IA IB G F ',IA,IB,G,F 30 CONTINUE FF = FF + F*DA IF(KIMP.GE.4) WRITE(6,*) ' IA FF ',IA,FF 3 CONTINUE IF(KIMP.GE.4) WRITE(6,*) ' TOTAL FF ',FF ELSE C>> POINTS DE GAUSS NA = 1 NB = 1 NGA= NG NGA2=(NGA+1)/2 NGB= NG NGB2=(NGB+1)/2 IF (AG(1,NGA).LT.1.E-5) THEN YA(1)=AG(1,NGA) HA(1)=AG(2,NGA) IF(NGA2.GE.2) THEN DO 100 I=1,NGA2-1 YA(I+1)=AG(2*I+1,NGA) YA(NGA2+I)=-YA(I+1) HA(I+1)=AG(2*I+2,NGA) HA(NGA2+I)=HA(I+1) 100 CONTINUE ENDIF ELSE DO 101 I=1,NGA2 YA(I)=AG(2*I-1,NGA) YA(NGA2+I)=-YA(I) HA(I)=AG(2*I,NGA) HA(NGA2+I)=HA(I) 101 CONTINUE ENDIF IF (AG(1,NGB).LT.1.E-5) THEN YB(1)=AG(1,NGB) HB(1)=AG(2,NGB) IF(NGB2.GE.2) THEN DO 200 I=1,NGB2-1 YB(I+1)=AG(2*I+1,NGB) YB(NGB2+I)=-YA(I+1) HB(I+1)=AG(2*I+2,NGB) HB(NGB2+I)=HA(I+1) 200 CONTINUE ENDIF ELSE DO 201 I=1,NGB2 YB(I)=AG(2*I-1,NGB) YB(NGA2+I)=-YB(I) HB(I)=AG(2*I,NGB) HB(NGA2+I)=HB(I) 201 CONTINUE ENDIF C>> INTEGRATION SUR I : A FF=0.D0 DA=1./NA DO 1 IA=1,NA A = DA/2. + DA*(IA-1) DA=1./NA C bornes AL1=A-DA/2. AL2=A+DA/2. C>> GAUSS SUR I : A FA=0.D0 DO 11 IGA=1,NGA C YA varie entre -1 et 1. ALL= (YA(IGA)+1.)*(AL2-AL1)/2. + AL1 RI=(1.-ALL)*RI1+ALL*RI2 ZI=(1.-ALL)*ZI1+ALL*ZI2 C>> INTEGRATION SUR J : B F=0.D0 DB=1./NB DO 2 IB=1,NB B = DB/2. + DB*(IB-1) C bornes BL1=B-DB/2. BL2=B+DB/2. C>> GAUSS SUR J : B FB=0.D0 DO 21 IGB=1,NGB C YB varie entre -1 et 1. BLL=(YB(IGB)+1.)*(BL2-BL1)/2. + BL1 RJ=(1.-BLL)*RJ1+BLL*RJ2 ZJ=(1.-BLL)*ZJ1+BLL*ZJ2 G=0.D0 IF(KIMP.GE.4)WRITE(6,*) ' INTEGRATION IGA IGB ',IGA,IGB C>> LIMITES DE VISIBILITE PROPRE AUX POINTS I ET J C ---------------------------------------------- IF(KIMP.GE.4) THEN WRITE(6,*) ' VISIBILITE PROPRE ',KVU ENDIF C C>> TRAITEMENT DES OBSTRUCTEURS C ---------------------------- IF(KVU.NE.0.AND.NOBS.NE.0) THEN IF(KIMP.GE.4) THEN WRITE(6,*) ' OBSTRUCTEURS ',KVU ENDIF ENDIF C C>> CALCUL C ------- IF(KVU.NE.0) THEN & ,EXTINC,RAD) ENDIF FB = FB + 4.*G*HB(IGB)*(BL2-BL1)/2. 21 CONTINUE F= F + FB*DB 2 CONTINUE FA = FA + F*HA(IGA)*(AL2-AL1)/2. 11 CONTINUE FF = FF + FA*DA 1 CONTINUE ENDIF RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales