C SIMPSN SOURCE CHAT 05/01/13 03:18:58 5004 SUBROUTINE SIMPSN(NNAPPE,NBG,IOP,POIGAU) * ************************************************************************ * CALCUL DES POIDS (DES POINTS A TRAVERS L'EPAISSEUR) PAR LA METHODE * * D'INTEGRATION DE SIMPSON * * MULTIPLICATION PAR LES POIDS DES POINTS DANS LE PLAN * ************************************************************************ * * * ENTREE : * * * * NNAPPE = NOMBRE DE NAPPES DANS L'EPAISSEUR * * NBG = NOMBRE DE POINTS DANS LE PLAN * * IOP = 1 CALCULE LES POIDS TOTAUX (W(QSI,ETA,ZETA))A PARTIR DES * * POIDS DE SURFACE(W(QSI,ETA) * * = 2 CALCULE LES POIDS DE SURFACE (W(QSI,ETA)A PARTIR DES * * POIDS TOTAUX(W(QSI,ETA,ZETA)) * * POIGAU = TABLEAU CONTENANT LES POIDS CORRESPONDANT A L'INTEGRATION * * DANS LE PLAN * * SORTIE : * * * * POIGAU = POIDS TENANT COMPTE DE L'INTEGRATION DANS L'EPAISSEUR * * * ************************************************************************ * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) * DIMENSION POIGAU(*),W(100) * * PAS = 2.D0/(3.D0*(DBLE(NNAPPE)-1.D0)) * DO 1 IZ = 1,NNAPPE ITS = MOD(IZ,2) IF (IZ.EQ.1.OR.IZ.EQ.NNAPPE) THEN COEF = 1.D0 ELSE IF (ITS.NE.0.) THEN COEF = 2.D0 ELSE COEF = 4.D0 ENDIF W(IZ) = COEF * PAS 1 CONTINUE * IF(IOP.EQ.1) THEN DO 10 IA=1,NNAPPE NP=(IA-1)*NBG DO 20 IG=1,NBG POIGAU(NP+IG)=POIGAU(NP+IG)*W(IA) 20 CONTINUE 10 CONTINUE ELSE DO 30 IG=1,NBG POIGAU(IG) = POIGAU(IG)/W(1) 30 CONTINUE ENDIF * * WRITE(*,*) ' matrice B elem =',IB * WRITE(*,1191) (POIGAU(IA),IA=1,3) *1191 FORMAT(12(1X,E8.2)) C RETURN END