96 REAL(KIND=JPRB),
ALLOCATABLE :: ZPNMG(:,:)
98 REAL(KIND=JPRH) :: DLRMU(
r%ndgl)
99 REAL(KIND=JPRH) :: DLC(0:
r%ntmax+1,0:
r%ntmax+1)
100 REAL(KIND=JPRH) :: DLD(0:
r%ntmax+1,0:
r%ntmax+1)
101 REAL(KIND=JPRH) :: DLE(0:
r%ntmax+1,0:
r%ntmax+1)
102 REAL(KIND=JPRH) :: DLA(0:
r%ntmax+1),DLB(0:
r%ntmax+1),DLF(0:
r%ntmax+1)
103 REAL(KIND=JPRH) :: DLG(0:
r%ntmax+1),DLH(0:
r%ntmax+1),DLI(0:
r%ntmax+1)
104 REAL(KIND=JPRH) :: DLPOL(0:
r%ntmax+1,0:
r%ntmax+1)
107 INTEGER(KIND=JPIM),
PARAMETER :: JPKS=kind(zpnmg)
108 INTEGER(KIND=JPIM),
PARAMETER :: JPKD=kind(dlg)
111 REAL(KIND=JPRH) :: DA,DC,DD,DE
112 INTEGER(KIND=JPIM) :: KKN, KKM
115 INTEGER(KIND=JPIM) :: IGLLOC, INM, IM , ICOUNT,&
116 &JGL, JM, JMLOC, JN, JNM
122 dc(kkn,kkm)=sqrt( (
REAL(2*kkn+1,jpkd)*
REAL(kkn+kkm-1,jpkd)&
123 &*REAL(KKN+KKM-3,JPKD))&
124 &/ (REAL(2*KKN-3,JPKD)*REAL(KKN+KKM,JPKD)&
125 &*REAL(KKN+KKM-2,JPKD)) )
126 DD(kkn,kkm)=sqrt( (
REAL(2*kkn+1,jpkd)*
REAL(kkn+kkm-1,jpkd)&
127 &*REAL(KKN-KKM+1,JPKD))&
128 &/ (REAL(2*KKN-1,JPKD)*REAL(KKN+KKM,JPKD)&
129 &*REAL(KKN+KKM-2,JPKD)) )
130 DE(kkn,kkm)=sqrt( (
REAL(2*kkn+1,jpkd)*
REAL(kkn-kkm,jpkd))&
131 &/ (REAL(2*KKN-1,JPKD)*REAL(KKN+KKM,JPKD)) )
132 DA(kkn,kkm)=sqrt( (
REAL(2*kkn+1,jpkd)*
REAL(kkn-kkm,jpkd)&
133 &*REAL(KKN+KKM,JPKD))&
134 &/ REAL(2*KKN-1,JPKD) )
137 ALLOCATE(zpnmg(
r%NSPOLEG,
d%NLEI3D))
144 IF(llp1)
WRITE(
nout,*)
'=== ENTER ROUTINE SULEG ==='
147 ALLOCATE(
f%RPNM(
r%NLEI3,
d%NSPOLEGL))
148 IF (llp2)
WRITE(
nout,9)
'F%RPNM ',
SIZE(
f%RPNM),shape(
f%RPNM)
149 ALLOCATE(
f%RMU(
r%NDGL))
150 IF (llp2)
WRITE(
nout,9)
'F%RMU ',
SIZE(
f%RMU ),shape(
f%RMU )
151 ALLOCATE(
f%RW(
r%NDGL))
152 IF (llp2)
WRITE(
nout,9)
'F%RW ',
SIZE(
f%RW ),shape(
f%RW )
153 ALLOCATE(
f%R1MU2(
r%NDGL))
154 IF (llp2)
WRITE(
nout,9)
'F%R1MU2 ',
SIZE(
f%R1MU2),shape(
f%R1MU2 )
155 ALLOCATE(
f%RACTHE(
r%NDGL))
156 IF (llp2)
WRITE(
nout,9)
'F%RACTHE ',
SIZE(
f%RACTHE),shape(
f%RACTHE )
160 f%RPNM(
r%NLEI3,jnm) = 0.0_jprb
172 f%R1MU2(jgl) =
REAL(1.0_JPRB-DLRMU(JGL)*DLRMU(JGL),JPKS)
173 f%RACTHE(jgl) =
REAL(1.0_jprb/sqrt(1.0_jprb-dlrmu(jgl)*dlrmu(jgl))/&
180 dlc(
jm,jn) = dc(jn,
jm)
181 dld(
jm,jn) = dd(jn,
jm)
182 dle(
jm,jn) = de(jn,
jm)
187 dla(jn) = sqrt(
REAL(2*jn+1,jpkd))
188 dlb(jn) = sqrt(
REAL(2*jn+1,jpkd)/
REAL(JN*(JN+1),JPKD))
189 dlf(jn) =
REAL(2*jn-1,jpkd)/
REAL(jn,jpkd)
190 dlg(jn) =
REAL(jn-1,jpkd)/
REAL(jn,jpkd)
191 dlh(jn) = sqrt(
REAL(2*jn+1,jpkd)/
REAL(2*jn,jpkd))
192 dli(jn) =
REAL(jn,jpkd)
197 dlpol(:,:) = 0.0_jprb
198 CALL supol(
r%NTMAX+1,dlrmu(jgl),dlpol,dla,dlb,dlc,dld,dle,dlf,dlg,dlh,dli)
200 iglloc = jgl -
d%NLATLS(
mysetw) + 1
202 DO jn=
r%NTMAX+1,
jm,-1
204 zpnmg(inm,iglloc) =
REAL(DLPOL(JM,JN),JPKS)
223 ALLOCATE(
f%REPSNM(icount))
224 IF (llp2)
WRITE(
nout,9)
'F%REPSNM ',
SIZE(
f%REPSNM ),shape(
f%REPSNM )
231 f%REPSNM(icount) =
REAL(SQRT(REAL(JN*JN-IM*IM,JPKD)/&
&REAL(4*JN*JN-1,JPKD)),JPKS)
235 ALLOCATE(
f%RN(-1:
r%NTMAX+3))
236 IF (llp2)
WRITE(
nout,9)
'F%RN ',
SIZE(
f%RN ),shape(
f%RN )
237 ALLOCATE(
f%RLAPIN(-1:
r%NSMAX+2))
238 IF (llp2)
WRITE(
nout,9)
'F%RLAPIN ',
SIZE(
f%RLAPIN ),shape(
f%RLAPIN )
239 ALLOCATE(
f%NLTN(-1:
r%NTMAX+3))
240 IF (llp2)
WRITE(
nout,9)
'F%NLTN ',
SIZE(
f%NLTN ),shape(
f%NLTN )
243 f%RN(jn) =
REAL(jn,
jprb)
244 f%NLTN(jn) =
r%NTMAX+2-jn
246 f%RLAPIN(:) = 0.0_jprb
247 f%RLAPIN(0) = 0._jprb
248 f%RLAPIN(-1) = 0.0_jprb
250 f%RLAPIN(jn)=
REAL(-(REAL(RA,JPKD)*REAL(RA,JPKD))/REAL(JN*(JN+1),JPKD),JPKS)
256 9
FORMAT(1
x,
'ARRAY ',a10,
' ALLOCATED ',8i8)
260 !$Id mode_top_bound COMMON comconstr r
type(fields_type), pointer f
type(distr_type), pointer d
subroutine supol(KNSMAX, DDMU, DDPOL, DDA, DDB, DDC, DDD, DDE, DDF, DDG, DDH, DDI)
!$Header!c c INCLUDE fxyprim h c c c Fonctions in line c c REAL fyprim REAL rj c c il faut la calculer avant d appeler ces fonctions c c c Fonctions a changer selon x(x) et y(y) choisis.c-----------------------------------------------------------------c c.....ici
integer(kind=jpim) mysetw
integer(kind=jpim) nprintlev