70 integer,
PARAMETER :: nmax = 84
86 integer,
intent(in) :: NP
87 REAL(DP),
intent(out) :: Z(np), W(np)
88 real(DP) :: alpha, beta
91 CALL
zwgj(z,w,np,alpha,beta)
104 integer,
intent(in) :: NP
105 REAL(DP),
intent(out) :: Z(np),W(np)
106 real(DP) :: alpha, beta
109 CALL
zwglj(z,w,np,alpha,beta)
113 SUBROUTINE zwgj (Z,W,NP,ALPHA,BETA)
123 integer,
parameter :: NZD = NMAX
125 integer,
intent(in) :: NP
126 REAL(DP),
intent(out) :: Z(np), W(np)
127 real(DP),
intent(in) :: ALPHA, BETA
128 REAL(DP) :: ZD(nzd),WD(nzd),ALPHAD,BETAD
133 WRITE (6,*)
'Too large polynomial degree in ZWGJ'
134 WRITE (6,*)
'Maximum polynomial degree is',nmax
135 WRITE (6,*)
'Here NP=',np
140 CALL
zwgjd(zd,wd,np,alphad,betad)
148 SUBROUTINE zwgjd (Z,W,NP,ALPHA,BETA)
156 integer,
intent(in) :: NP
157 REAL(DP),
intent(out) :: Z(np),W(np)
158 real(DP),
intent(in) :: ALPHA,BETA
160 integer :: n, np1, np2, i
161 real(DP) :: dn, one, two, apb, dnp1, dnp2, fac1, fac2, fac3, fnorm
162 real(DP) :: rcoef, P, PD, PM1, PDM1, PM2, PDM2
171 WRITE (6,*)
'ZWGJD: Minimum number of Gauss points is 1',np
174 IF ((alpha <= -one) .OR. (beta <= -one))
THEN
175 WRITE (6,*)
'ZWGJD: Alpha and Beta must be greater than -1'
180 z(1) = (beta-alpha)/(apb+two)
186 CALL
jacg(z,np,alpha,beta)
192 fac1 = dnp1+alpha+beta+one
195 fnorm =
pnormj(np1,alpha,beta)
196 rcoef = (fnorm*fac2*fac3)/(two*fac1*dnp2)
198 CALL
jacobf(p,pd,pm1,pdm1,pm2,pdm2,np2,alpha,beta,z(i))
199 w(i) = -rcoef/(p*pdm1)
204 SUBROUTINE zwglj (Z,W,NP,ALPHA,BETA)
214 integer,
PARAMETER :: NZD = NMAX
215 integer,
intent(in) :: NP
216 REAL(DP),
intent(out) :: Z(np),W(np)
217 real(DP),
intent(in) :: ALPHA,BETA
218 REAL(DP) :: ZD(nzd),WD(nzd),ALPHAD,BETAD
224 WRITE (6,*)
'Too large polynomial degree in ZWGLJ'
225 WRITE (6,*)
'Maximum polynomial degree is',nmax
226 WRITE (6,*)
'Here NP=',np
231 CALL
zwgljd(zd,wd,np,alphad,betad)
247 integer,
intent(in) :: np
248 REAL(DP),
intent(out) :: Z(np),W(np)
249 REAL(DP),
intent(in) :: ALPHA,BETA
252 real(DP) :: one, two, alpg, betg, p, pd, pm1, pdm1, pm2, pdm2
259 WRITE (6,*)
'ZWGLJD: Minimum number of Gauss-Lobatto points is 2'
260 WRITE (6,*)
'ZWGLJD: alpha,beta:',alpha,beta,np
263 IF ((alpha <= -one) .OR. (beta <= -one))
THEN
264 WRITE (6,*)
'ZWGLJD: Alpha and Beta must be greater than -1'
271 CALL
zwgjd(z(2),w(2),nm1,alpg,betg)
276 w(i) = w(i)/(one-z(i)**2)
278 CALL
jacobf(p,pd,pm1,pdm1,pm2,pdm2,n,alpha,beta,z(1))
279 w(1) =
endw1(n,alpha,beta)/(two*pd)
280 CALL
jacobf(p,pd,pm1,pdm1,pm2,pdm2,n,alpha,beta,z(np))
281 w(np) =
endw2(n,alpha,beta)/(two*pd)
286 REAL(DP) FUNCTION endw1 (N,ALPHA,BETA)
288 integer,
intent(in) :: n
289 real(DP),
intent(in) :: alpha, beta
292 real(DP) :: zero, one, two, three, four, apb
293 real(DP) :: f1, f2, fint1, fint2, f3, a1, a2, a3, abn, abnn, di
306 f1 = f1*(apb+two)*two**(apb+two)/two
312 fint1 = fint1*two**(apb+two)
314 fint2 = fint2*two**(apb+three)
315 f2 = (-two*(beta+two)*fint1 + (apb+four)*fint2) &
325 a1 = -(two*(di+alpha)*(di+beta))/(abn*abnn*(abnn+one))
326 a2 = (two*(alpha-beta))/(abnn*(abnn+two))
327 a3 = (two*(abn+one))/((abnn+two)*(abnn+one))
328 f3 = -(a2*f2+a1*f1)/a3
336 REAL(DP) FUNCTION endw2 (N,ALPHA,BETA)
338 integer,
intent(in) :: n
339 real(DP),
intent(in) :: alpha, beta
342 real(DP) :: zero, one, two, three, four, apb
343 real(DP) :: f1, f2, fint1, fint2, f3, a1, a2, a3, abn, abnn, di
357 f1 = f1*(apb+two)*two**(apb+two)/two
363 fint1 = fint1*two**(apb+two)
365 fint2 = fint2*two**(apb+three)
366 f2 = (two*(alpha+two)*fint1 - (apb+four)*fint2) &
376 a1 = -(two*(di+alpha)*(di+beta))/(abn*abnn*(abnn+one))
377 a2 = (two*(alpha-beta))/(abnn*(abnn+two))
378 a3 = (two*(abn+one))/((abnn+two)*(abnn+one))
379 f3 = -(a2*f2+a1*f1)/a3
389 REAL(DP),
intent(in) :: X
391 real(DP) :: zero, half, one, two, four, pi
399 IF (x == -half)
gammaf = -two*sqrt(pi)
400 IF (x == half)
gammaf = sqrt(pi)
401 IF (x == one )
gammaf = one
402 IF (x == two )
gammaf = one
403 IF (x == 1.5_dp )
gammaf = sqrt(pi)/2._dp
404 IF (x == 2.5_dp)
gammaf = 1.5_dp*sqrt(pi)/2._dp
405 IF (x == 3.5_dp)
gammaf = 0.5_dp*(2.5_dp*(1.5_dp*sqrt(pi)))
406 IF (x == 3._dp )
gammaf = 2._dp
407 IF (x == 4._dp )
gammaf = 6._dp
408 IF (x == 5._dp )
gammaf = 24._dp
409 IF (x == 6._dp )
gammaf = 120._dp
415 integer,
intent(in) :: n
416 REAL(DP),
intent(in) :: ALPHA,BETA
418 real(DP) :: one, two, dn, const, prod, dindx, frac
424 const = alpha+beta+one
428 pnormj = prod * two**const/(two*dn+const)
432 prod = prod/(two*(one+const)*
gammaf(const+one))
433 prod = prod*(one+alpha)*(two+alpha)
434 prod = prod*(one+beta)*(two+beta)
437 frac = (dindx+alpha)*(dindx+beta)/(dindx*(dindx+alpha+beta))
440 pnormj = prod * two**const/(two*dn+const)
445 SUBROUTINE jacg (XJAC,NP,ALPHA,BETA)
455 integer,
intent(in) :: np
456 REAL(DP),
intent(out) :: XJAC(np)
457 real(DP),
intent(in) :: alpha, beta
459 real(DP) :: eps, one, dth, x, xlast, x1, x2, swap, xmin, delx
460 real(DP) :: p, pd, pm1, pdm1, pm2, pdm2, recsum
461 integer :: n, kstop, j, k, i, jmin, jm
469 dth = 4._dp*atan(one)/(2._dp*((n))+2._dp)
473 x = cos((2._dp*(((j))-1._dp)+1._dp)*dth)
475 x1 = cos((2._dp*(((j))-1._dp)+1._dp)*dth)
480 CALL
jacobf(p,pd,pm1,pdm1,pm2,pdm2,np,alpha,beta,x)
484 recsum = recsum+1./(x-xjac(np-i+1))
486 delx = -p/(pd-recsum*p)
488 IF (abs(delx) < eps) goto 31
497 IF (xjac(j) < xmin)
THEN
511 SUBROUTINE jacobf (POLY,PDER,POLYM1,PDERM1,POLYM2,PDERM2, &
520 real(DP),
intent(out) :: poly, pder, polym1, pderm1, polym2, pderm2
521 real(DP),
intent(in) :: alp, bet, x
522 integer,
intent(in) :: n
524 real(DP) :: apb, polyl, pderl, dk, a1, a2, a3, b3, a4, polyn, pdern
525 real(DP) :: psave, pdsave
534 poly = (alp-bet+(apb+2._dp)*x)/2._dp
535 pder = (apb+2._dp)/2._dp
541 a1 = 2._dp*dk*(dk+apb)*(2._dp*dk+apb-2._dp)
542 a2 = (2._dp*dk+apb-1._dp)*(alp**2-bet**2)
543 b3 = (2._dp*dk+apb-2._dp)
544 a3 = b3*(b3+1._dp)*(b3+2._dp)
545 a4 = 2._dp*(dk+alp-1._dp)*(dk+bet-1._dp)*(2._dp*dk+apb)
546 polyn = ((a2+a3*x)*poly-a4*polyl)/a1
547 pdern = ((a2+a3*x)*pder-a4*pderl+a3*poly)/a1
562 REAL(DP) FUNCTION hgj (II,Z,ZGJ,NP,ALPHA,BETA)
569 integer,
PARAMETER :: NZD = NMAX
570 integer,
intent(in) :: np, ii
571 REAL(DP),
intent(in) :: Z,ZGJ(np),ALPHA,BETA
573 REAL(DP) :: ZD,ZGJD(nzd),ALPHAD,BETAD
578 WRITE (6,*)
'Too large polynomial degree in HGJ'
579 WRITE (6,*)
'Maximum polynomial degree is',nmax
580 WRITE (6,*)
'Here NP=',np
589 hgj =
hgjd(ii,zd,zgjd,np,alphad,betad)
593 REAL(DP) FUNCTION hgjd (II,Z,ZGJ,NP,ALPHA,BETA)
600 integer,
intent(in) :: ii, np
601 REAL(DP),
intent(in) :: Z,ZGJ(np),ALPHA,BETA
603 real(DP) :: eps, one, zi, dz
604 real(DP) :: pzi, pdzi, pm1, pdm1, pm2, pdm2, pz, pdz
610 IF (abs(dz) < eps)
THEN
614 CALL
jacobf(pzi,pdzi,pm1,pdm1,pm2,pdm2,np,alpha,beta,zi)
615 CALL
jacobf(pz,pdz,pm1,pdm1,pm2,pdm2,np,alpha,beta,z)
616 hgjd = pz/(pdzi*(z-zi))
620 REAL(DP) FUNCTION hglj (II,Z,ZGLJ,NP,ALPHA,BETA)
627 integer,
PARAMETER :: NZD = NMAX
628 integer,
intent(in) :: ii, NP
629 REAL(DP),
intent(in) :: Z,ZGLJ(np)
630 REAL(DP),
intent(in) :: ALPHA,BETA
632 REAL(DP) :: ZD,ZGLJD(nzd),ALPHAD,BETAD
637 WRITE (6,*)
'Too large polynomial degree in HGLJ'
638 WRITE (6,*)
'Maximum polynomial degree is',nmax
639 WRITE (6,*)
'Here NP=',np
648 hglj =
hgljd(ii,zd,zgljd,np,alphad,betad)
652 REAL(DP) FUNCTION hgljd (I,Z,ZGLJ,NP,ALPHA,BETA)
659 integer,
intent(in) :: i, np
660 REAL(DP),
intent(in) :: Z,ZGLJ(np),ALPHA,BETA
662 real(DP) :: eps, one, dz, zi, dn, eigval, const
663 real(DP) :: p, pd, pi, pdi, pm1, pdm1, pm2, pdm2
670 IF (abs(dz) < eps)
THEN
676 eigval = -dn*(dn+alpha+beta+one)
677 CALL
jacobf(pi,pdi,pm1,pdm1,pm2,pdm2,n,alpha,beta,zi)
678 const = eigval*pi+alpha*(one+zi)*pdi-beta*(one-zi)*pdi
679 CALL
jacobf(p,pd,pm1,pdm1,pm2,pdm2,n,alpha,beta,z)
680 hgljd = (one-z**2)*pd/(const*(z-zi))
684 SUBROUTINE dgj (D,DT,Z,NZ,NZD,ALPHA,BETA)
693 integer,
PARAMETER :: NZDD = NMAX
695 REAL(DP),
intent(out) :: D(nzd,nzd),DT(nzd,nzd)
696 real(DP),
intent(in) :: Z(nz),ALPHA,BETA
698 REAL(DP) :: DD(nzdd,nzdd),DTD(nzdd,nzdd),ZD(nzdd),ALPHAD,BETAD
702 WRITE (6,*)
'DGJ: Minimum number of Gauss points is 1'
706 WRITE (6,*)
'Too large polynomial degree in DGJ'
707 WRITE (6,*)
'Maximum polynomial degree is',nmax
708 WRITE (6,*)
'Here Nz=',nz
711 IF ((alpha <= -1.) .OR. (beta <= -1.))
THEN
712 WRITE (6,*)
'DGJ: Alpha and Beta must be greater than -1'
720 CALL
dgjd(dd,dtd,zd,nz,nzdd,alphad,betad)
729 SUBROUTINE dgjd (D,DT,Z,NZ,NZD,ALPHA,BETA)
738 integer,
intent(in) :: nz, nzd
739 REAL(DP),
intent(out) :: D(nzd,nzd),DT(nzd,nzd)
740 real(DP),
intent(in) :: Z(nz),ALPHA,BETA
743 real(DP) :: dn, one, two
744 real(DP) :: pi, pdi, pm1, pdm1, pm2, pdm2, pj, pdj
752 WRITE (6,*)
'DGJD: Minimum number of Gauss-Lobatto points is 2'
755 IF ((alpha <= -one) .OR. (beta <= -one))
THEN
756 WRITE (6,*)
'DGJD: Alpha and Beta must be greater than -1'
762 CALL
jacobf(pi,pdi,pm1,pdm1,pm2,pdm2,nz,alpha,beta,z(i))
763 CALL
jacobf(pj,pdj,pm1,pdm1,pm2,pdm2,nz,alpha,beta,z(j))
764 IF (i /= j) d(i,j) = pdi/(pdj*(z(i)-z(j)))
765 IF (i == j) d(i,j) = ((alpha+beta+two)*z(i)+alpha-beta)/ &
772 SUBROUTINE dglj (D,DT,Z,NZ,NZD,ALPHA,BETA)
781 integer,
PARAMETER :: NZDD = NMAX
782 integer,
intent(in) :: nz, nzd
783 REAL(DP),
intent(out) :: D(nzd,nzd),DT(nzd,nzd)
784 REAL(DP),
intent(in) :: Z(nz),ALPHA,BETA
786 REAL(DP) :: DD(nzdd,nzdd),DTD(nzdd,nzdd),ZD(nzdd),ALPHAD,BETAD
790 WRITE (6,*)
'DGLJ: Minimum number of Gauss-Lobatto points is 2'
794 WRITE (6,*)
'Too large polynomial degree in DGLJ'
795 WRITE (6,*)
'Maximum polynomial degree is',nmax
796 WRITE (6,*)
'Here NZ=',nz
799 IF ((alpha <= -1.) .OR. (beta <= -1.))
THEN
800 WRITE (6,*)
'DGLJ: Alpha and Beta must be greater than -1'
808 CALL
dgljd(dd,dtd,zd,nz,nzdd,alphad,betad)
817 SUBROUTINE dgljd (D,DT,Z,NZ,NZD,ALPHA,BETA)
826 integer,
intent(in) :: nz, nzd
827 REAL(DP),
intent(out) :: D(nzd,nzd),DT(nzd,nzd)
828 REAL(DP),
intent(in) :: Z(nz),ALPHA,BETA
831 real(DP) :: dn, one, two, eigval
832 real(DP) :: pi, pdi, pm1, pdm1, pm2, pdm2, pj, pdj, ci, cj
837 eigval = -dn*(dn+alpha+beta+one)
840 WRITE (6,*)
'DGLJD: Minimum number of Gauss-Lobatto points is 2'
843 IF ((alpha <= -one) .OR. (beta <= -one))
THEN
844 WRITE (6,*)
'DGLJD: Alpha and Beta must be greater than -1'
850 CALL
jacobf(pi,pdi,pm1,pdm1,pm2,pdm2,n,alpha,beta,z(i))
851 CALL
jacobf(pj,pdj,pm1,pdm1,pm2,pdm2,n,alpha,beta,z(j))
852 ci = eigval*pi-(beta*(one-z(i))-alpha*(one+z(i)))*pdi
853 cj = eigval*pj-(beta*(one-z(j))-alpha*(one+z(j)))*pdj
854 IF (i /= j) d(i,j) = ci/(cj*(z(i)-z(j)))
855 IF ((i == j) .AND. (i /= 1) .AND. (i /= nz)) &
856 d(i,j) = (alpha*(one+z(i))-beta*(one-z(i)))/ &
858 IF ((i == j) .AND. (i == 1)) &
859 d(i,j) = (eigval+alpha)/(two*(beta+two))
860 IF ((i == j) .AND. (i == nz)) &
861 d(i,j) = -(eigval+beta)/(two*(alpha+two))
867 SUBROUTINE dgll (D,DT,Z,NZ,NZD)
875 integer,
intent(in) :: nz, nzd
876 REAL(DP),
intent(out) :: D(nzd,nzd),DT(nzd,nzd)
877 REAL(DP),
intent(in) :: Z(nz)
883 WRITE (6,*)
'Subroutine DGLL'
884 WRITE (6,*)
'Maximum polynomial degree =',nmax
885 WRITE (6,*)
'Polynomial degree =',nz
892 d0 = fn*(fn+1._dp)/4._dp
896 IF (i /= j) d(i,j) =
pnleg(z(i),n)/ &
897 (
pnleg(z(j),n)*(z(i)-z(j)))
898 IF ((i == j) .AND. (i == 1)) d(i,j) = -d0
899 IF ((i == j) .AND. (i == nz)) d(i,j) = d0
905 REAL(DP) FUNCTION hgll (I,Z,ZGLL,NZ)
911 integer,
intent(in) :: i, nz
912 REAL(DP),
intent(in) :: z, ZGLL(nz)
915 real(DP) :: eps, dz, alfan
919 IF (abs(dz) < eps)
THEN
924 alfan = (n)*((n)+1._dp)
926 (alfan*
pnleg(zgll(i),n)*(z-zgll(i)))
930 REAL(DP) FUNCTION hgl (I,Z,ZGL,NZ)
936 integer,
intent(in) :: i, nz
937 REAL(DP),
intent(in) :: z, ZGL(nz)
944 IF (abs(dz) < eps)
THEN
960 real(DP),
intent(in) :: z
961 integer,
intent(in) :: n
963 real(DP) :: p1, p2, p3, fk
975 p3 = ((2._dp*fk+1._dp)*z*p2 - fk*p1)/(fk+1._dp)
980 if (n == 0)
pnleg = 1._dp
991 real(DP),
intent(in) :: z
992 integer,
intent(in) :: n
994 real(DP) :: p1, p2, p3, p1d, p2d, p3d
1003 p3 = ((2._dp*fk+1._dp)*z*p2 - fk*p1)/(fk+1._dp)
1004 p3d = ((2._dp*fk+1._dp)*p2 + (2._dp*fk+1._dp)*z*p2d - fk*p1d)/(fk+1._dp)
1011 IF (n == 0)
pndleg = 0._dp
1015 SUBROUTINE dgllgl (D,DT,ZM1,ZM2,IM12,NZM1,NZM2,ND1,ND2)
1026 integer,
intent(in) :: nd1, nd2, nzm1, nzm2
1027 REAL(DP),
intent(out) :: D(nd2,nd1), DT(nd1,nd2)
1028 REAL(DP),
intent(in) :: ZM1(nd1), ZM2(nd2), IM12(nd2,nd1)
1030 integer :: ip, jq, nm1
1031 real(DP) :: zp, zq, eps
1044 IF ((abs(zp) < eps) .AND. (abs(zq) < eps))
THEN
1048 -im12(ip,jq))/(zp-zq)
1050 dt(jq,ip) = d(ip,jq)
1055 SUBROUTINE dgljgj (D,DT,ZGL,ZG,IGLG,NPGL,NPG,ND1,ND2,ALPHA,BETA)
1067 integer,
intent(in) :: nd1, nd2, npgl, npg
1068 REAL(DP),
intent(out) :: D(nd2,nd1), DT(nd1,nd2)
1069 REAL(DP),
intent(in) :: ZGL(nd1), ZG(nd2), IGLG(nd2,nd1)
1070 real(DP),
intent(in) :: alpha, beta
1072 integer,
PARAMETER :: NDD = NMAX
1073 REAL(DP) :: DD(ndd,ndd), DTD(ndd,ndd)
1074 REAL(DP) :: ZGD(ndd), ZGLD(ndd), IGLGD(ndd,ndd)
1075 REAL(DP) :: ALPHAD, BETAD
1079 WRITE(6,*)
'DGLJGJ: Minimum number of Gauss-Lobatto points is 2'
1082 IF (npgl > nmax)
THEN
1083 WRITE(6,*)
'Polynomial degree too high in DGLJGJ'
1084 WRITE(6,*)
'Maximum polynomial degree is',nmax
1085 WRITE(6,*)
'Here NPGL=',npgl
1088 IF ((alpha <= -1._dp) .OR. (beta <= -1._dp))
THEN
1089 WRITE(6,*)
'DGLJGJ: Alpha and Beta must be greater than -1'
1098 iglgd(i,j) = iglg(i,j)
1103 CALL
dgljgjd(dd,dtd,zgld,zgd,iglgd,npgl,npg,ndd,ndd,alphad,betad)
1112 SUBROUTINE dgljgjd (D,DT,ZGL,ZG,IGLG,NPGL,NPG,ND1,ND2,ALPHA,BETA)
1124 integer,
intent(in) :: nd1, nd2, npgl, npg
1125 REAL(DP),
intent(out) :: D(nd2,nd1), DT(nd1,nd2)
1126 REAL(DP),
intent(in) :: ZGL(nd1), ZG(nd2), IGLG(nd2,nd1), ALPHA, BETA
1128 real(DP) :: eps, one, two, faci, facj, const, dz, dn, eigval
1129 real(DP) :: pj, pdj, pm1, pdm1, pm2, pdm2, pi, pdi
1130 integer :: i, j, ngl
1132 WRITE(6,*)
'DGLJGJD: Minimum number of Gauss-Lobatto points is 2'
1135 IF ((alpha <= -1.) .OR. (beta <= -1.))
THEN
1136 WRITE(6,*)
'DGLJGJD: Alpha and Beta must be greater than -1'
1145 eigval = -dn*(dn+alpha+beta+one)
1149 dz = abs(zg(i)-zgl(j))
1151 d(i,j) = (alpha*(one+zg(i))-beta*(one-zg(i)))/ &
1152 (two*(one-zg(i)**2))
1154 CALL
jacobf(pi,pdi,pm1,pdm1,pm2,pdm2,ngl,alpha,beta,zg(i))
1155 CALL
jacobf(pj,pdj,pm1,pdm1,pm2,pdm2,ngl,alpha,beta,zgl(j))
1156 faci = alpha*(one+zg(i))-beta*(one-zg(i))
1157 facj = alpha*(one+zgl(j))-beta*(one-zgl(j))
1158 const = eigval*pj+facj*pdj
1159 d(i,j) = ((eigval*pi+faci*pdi)*(zg(i)-zgl(j)) &
1160 -(one-zg(i)**2)*pdi)/(const*(zg(i)-zgl(j))**2)
1167 SUBROUTINE iglm (I12,IT12,Z1,Z2,NZ1,NZ2,ND1,ND2)
1176 integer,
intent(in) :: nz1, nz2, nd1, nd2
1177 REAL(DP),
intent(out) :: I12(nd2,nd1),IT12(nd1,nd2)
1178 REAL(DP),
intent(in) :: Z1(nd1),Z2(nd2)
1191 i12(i,j) =
hgl(j,zi,z1,nz1)
1192 it12(j,i) = i12(i,j)
1197 SUBROUTINE igllm (I12,IT12,Z1,Z2,NZ1,NZ2,ND1,ND2)
1206 integer,
intent(in) :: nz1, nz2, nd1, nd2
1207 REAL(DP),
intent(out) :: I12(nd2,nd1),IT12(nd1,nd2)
1208 REAL(DP),
intent(in) :: Z1(nd1),Z2(nd2)
1221 i12(i,j) =
hgll(j,zi,z1,nz1)
1222 it12(j,i) = i12(i,j)
1225 END SUBROUTINE igllm
1227 SUBROUTINE igjm (I12,IT12,Z1,Z2,NZ1,NZ2,ND1,ND2,ALPHA,BETA)
1237 integer,
intent(in) :: nz1, nz2, nd1, nd2
1238 REAL(DP),
intent(out) :: I12(nd2,nd1),IT12(nd1,nd2)
1239 REAL(DP),
intent(in) :: Z1(nd1),Z2(nd2), ALPHA, BETA
1251 i12(i,j) =
hgj(j,zi,z1,nz1,alpha,beta)
1252 it12(j,i) = i12(i,j)
1257 SUBROUTINE igljm (I12,IT12,Z1,Z2,NZ1,NZ2,ND1,ND2,ALPHA,BETA)
1267 integer,
intent(in) :: nz1, nz2, nd1, nd2
1268 REAL(DP),
intent(out) :: I12(nd2,nd1),IT12(nd1,nd2)
1269 REAL(DP),
intent(in) :: Z1(nd1),Z2(nd2), alpha, beta
1281 i12(i,j) =
hglj(j,zi,z1,nz1,alpha,beta)
1282 it12(j,i) = i12(i,j)
1285 END SUBROUTINE igljm
real(dp) function hgjd(II, Z, ZGJ, NP, ALPHA, BETA)
real(dp) function endw1(N, ALPHA, BETA)
subroutine igjm(I12, IT12, Z1, Z2, NZ1, NZ2, ND1, ND2, ALPHA, BETA)
real(dp) function hgl(I, Z, ZGL, NZ)
subroutine, public dgllgl(D, DT, ZM1, ZM2, IM12, NZM1, NZM2, ND1, ND2)
real(dp) function hgj(II, Z, ZGJ, NP, ALPHA, BETA)
real(dp) function endw2(N, ALPHA, BETA)
real(dp) function hgljd(I, Z, ZGLJ, NP, ALPHA, BETA)
subroutine jacobf(POLY, PDER, POLYM1, PDERM1, POLYM2, PDERM2, N, ALP, BET, X)
subroutine igljm(I12, IT12, Z1, Z2, NZ1, NZ2, ND1, ND2, ALPHA, BETA)
subroutine dgljgj(D, DT, ZGL, ZG, IGLG, NPGL, NPG, ND1, ND2, ALPHA, BETA)
real(dp) function hglj(II, Z, ZGLJ, NP, ALPHA, BETA)
real(dp) function pnormj(N, ALPHA, BETA)
subroutine iglm(I12, IT12, Z1, Z2, NZ1, NZ2, ND1, ND2)
real(dp) function pnleg(Z, N)
subroutine zwgjd(Z, W, NP, ALPHA, BETA)
real(dp) function pndleg(Z, N)
subroutine dgljd(D, DT, Z, NZ, NZD, ALPHA, BETA)
real(dp) function hgll(I, Z, ZGLL, NZ)
subroutine zwgj(Z, W, NP, ALPHA, BETA)
real(dp) function gammaf(X)
subroutine, public dgll(D, DT, Z, NZ, NZD)
subroutine dgljgjd(D, DT, ZGL, ZG, IGLG, NPGL, NPG, ND1, ND2, ALPHA, BETA)
subroutine, public zwgll(Z, W, NP)
subroutine zwgljd(Z, W, NP, ALPHA, BETA)
subroutine, public zwglj(Z, W, NP, ALPHA, BETA)
subroutine dgj(D, DT, Z, NZ, NZD, ALPHA, BETA)
subroutine dgjd(D, DT, Z, NZ, NZD, ALPHA, BETA)
subroutine jacg(XJAC, NP, ALPHA, BETA)
subroutine, public zwgl(Z, W, NP)
Generate NP Gauss Legendre points (Z) and weights (W) associated with Jacobi polynomial P(N)(alpha=0...
subroutine, public igllm(I12, IT12, Z1, Z2, NZ1, NZ2, ND1, ND2)
subroutine dglj(D, DT, Z, NZ, NZD, ALPHA, BETA)