C ZWGJD SOURCE CHAT 05/01/13 04:25:27 5004 SUBROUTINE ZWGJD (Z,W,NP,ALPHA,BETA) C-------------------------------------------------------------------- C C Generate NP GAUSS JACOBI points (Z) and weights (W) C associated with Jacobi polynomial P(N)(alpha>-1,beta>-1). C The polynomial degree N=NP-1. C Double precision version. C C-------------------------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) REAL*8 Z(1),W(1),ALPHA,BETA C N = NP-1 DN = DBLE(N) ONE = 1.D0 TWO = 2.D0 APB = ALPHA+BETA C IF (NP.LE.0) THEN WRITE (6,*) 'Minimum number of Gauss points is 1' STOP ENDIF IF ((ALPHA.LE.-ONE).OR.(BETA.LE.-ONE)) THEN WRITE (6,*) 'Alpha and Beta must be greater than -1' STOP ENDIF C IF (NP.EQ.1) THEN Z(1) = (BETA-ALPHA)/(APB+TWO) W(1) = GAMMAF(ALPHA+ONE)*GAMMAF(BETA+ONE)/GAMMAF(APB+TWO) $ * TWO**(APB+ONE) RETURN ENDIF C CALL JACG (Z,NP,ALPHA,BETA) C NP1 = N+1 NP2 = N+2 DNP1 = DBLE(NP1) DNP2 = DBLE(NP2) FAC1 = DNP1+ALPHA+BETA+ONE FAC2 = FAC1+DNP1 FAC3 = FAC2+ONE FNORM = PNORMJ(NP1,ALPHA,BETA) RCOEF = (FNORM*FAC2*FAC3)/(TWO*FAC1*DNP2) DO 100 I=1,NP CALL JACOBF (P,PD,PM1,PDM1,PM2,PDM2,NP2,ALPHA,BETA,Z(I)) W(I) = -RCOEF/(P*PDM1) 100 CONTINUE RETURN END