4 & (fa, pchame, kpuiss, kdimnc, klcham, pmin, &
5 & pmax, knbits, ldarpe, pecart, ldmlam, &
6 & knozpa, kstrof, ktronc, kxlopa )
59 INTEGER (KIND=JPLIKB) KPUISS, KDIMNC, KLCHAM, KNBITS, KSTROF
60 INTEGER (KIND=JPLIKB) KTRONC, KXLOPA
62 INTEGER (KIND=JPLIKB) KNOZPA (fa%jpxind)
64 REAL (KIND=JPDBLR) PMIN, PMAX, PECART
65 REAL (KIND=JPDBLR) PCHAME(klcham)
66 REAL (KIND=JPDBLR) ZERR (klcham)
67 REAL (KIND=JPDBLR) ZECART_LOC
69 LOGICAL LDARPE, LDMLAM
71 INTEGER (KIND=JPLIKB) JN, JIND, ISCALE, J
72 INTEGER (KIND=JPLIKB) INDICE, IPUISX, IOFF, IM
73 INTEGER (KIND=JPLIKB) INDLAP, IRAPOR, IPUISR
74 INTEGER (KIND=JPLIKB) IMLIM, IEXP, IMANT, IPUIS2
75 INTEGER (KIND=JPLIKB) IDEB, IFIN, ITRDOL, ILCHADO
76 INTEGER (KIND=JPLIKB) IEXP32, IMANT32
78 REAL (KIND=JPDBLR) ZREFER, ZDIFFR, ZCOMPA, ZAUXI1, ZAUXI2, ZS
80 REAL(KIND=JPRB) :: ZHOOK_HANDLE
87 IF (fa%FAXION_LLPREA)
THEN 88 fa%FAXION_ZEPSIL=tiny(fa%FAXION_ZEPSIL)
90 fa%FAXION_LLPREA=.false.
101 IF ( zdiffr .LE. fa%FAXION_ZEPSIL )
THEN 102 zauxi1=min( abs(pmin), abs(pmax) )
103 IF ( zauxi1 .LE. fa%FAXION_ZEPSIL ) zauxi1=0._jpdblr
104 pmax=sign(zauxi1,pmax)
118 CALL confi (pmin,iexp32,imant32,zrefer)
122 zs = (pmax-zrefer)/(2**(knbits+1)-1)
125 IF (zs.NE.0._jpdblr) zs = log(zs)/log(zauxi2) + zauxi2
126 iscale = min(int(zs,
jplikb), &
127 & int(zs+sign(zauxi1,zs),
jplikb))
128 iscale = max(-fa%FAXION_ISCALX,min(fa%FAXION_ISCALX,iscale))
129 zauxi1 = zauxi2**(-iscale)
130 zauxi2 = zauxi2**iscale
140 IF (ldarpe.AND..NOT.ldmlam)
THEN 141 itrdol = min( ktronc , (kxlopa-1)/3 )
142 ilchado = (itrdol+1)**2
145 IF (kpuiss.EQ.0)
THEN 150 DO jind=knozpa(2*jn+3),knozpa(2*jn+4)
156 DO j=kdimnc+1,ilchado
164 IF (kpuiss.GT.0)
THEN 170 IF (ipuisx.LE.fa%JPUILA)
THEN 182 DO jind=knozpa(2*jn+3)+4,knozpa(2*jn+4)
183 ioff=jind-knozpa(2*jn+3)
185 indlap=((jn-1)*fa%JPXTRO)+im
186 zerr(jind)=
zcritr(jind,fa%XLAP2DA(indlap,ipuisx,indice))
193 DO j=kdimnc+1,ilchado
194 zerr(j)=
zcritr(j,fa%XLAP2D(j,ipuisx,indice))
198 ELSEIF (ipuisx.LE.2*fa%JPUILA)
THEN 201 IF (ipuisx.EQ.2*ipuis2)
THEN 209 DO jind=knozpa(2*jn+3)+4,knozpa(2*jn+4)
210 ioff=jind-knozpa(2*jn+3)
212 indlap=((jn-1)*fa%JPXTRO)+im
214 & fa%XLAP2DA(indlap,ipuis2,indice)**2)
221 DO j=kdimnc+1,ilchado
222 zerr(j)=
zcritr(j,fa%XLAP2D(j,ipuis2,indice)**2)
234 DO jind=knozpa(2*jn+3)+4,knozpa(2*jn+4)
235 ioff=jind-knozpa(2*jn+3)
237 indlap=((jn-1)*fa%JPXTRO)+im
238 zerr(jind)=
zcritr(jind,fa%XLAP2DA(indlap,fa%JPUILA,indice) &
239 & *fa%XLAP2DA(indlap,ipuisx-fa%JPUILA,indice))
246 DO j=kdimnc+1,ilchado
247 zerr(j)=
zcritr(j,fa%XLAP2D(j,fa%JPUILA,indice) &
248 & *fa%XLAP2D(j,ipuisx-fa%JPUILA,indice))
255 irapor=1+(ipuisx-1)/fa%JPUILA
258 IF (ipuisx.EQ.irapor*ipuisr)
THEN 266 DO jind=knozpa(2*jn+3)+4,knozpa(2*jn+4)
267 ioff=jind-knozpa(2*jn+3)
269 indlap=((jn-1)*fa%JPXTRO)+im
271 & fa%XLAP2DA(indlap,ipuisr,indice)**irapor)
278 DO j=kdimnc+1,ilchado
279 zerr(j)=
zcritr(j,fa%XLAP2D(j,ipuisr,indice)**irapor)
291 DO jind=knozpa(2*jn+3)+4,knozpa(2*jn+4)
292 ioff=jind-knozpa(2*jn+3)
294 indlap=((jn-1)*fa%JPXTRO)+im
296 & fa%XLAP2DA(indlap,fa%JPUILA,indice)**(irapor-1) &
297 & *fa%XLAP2DA(indlap,ipuisx-fa%JPUILA*(irapor-1),indice))
304 DO j=kdimnc+1,ilchado
306 & fa%XLAP2D(j,fa%JPUILA,indice)**(irapor-1) &
307 & *fa%XLAP2D(j,ipuisx-fa%JPUILA*(irapor-1),indice))
325 ideb=max(knozpa(2*jn+3)+4,knozpa(2*jn+3)+4*(1+imlim))
329 zecart_loc=zecart_loc+zerr(jind)
331 pecart=pecart+zecart_loc
337 DO j=kdimnc+1,ilchado
338 pecart=pecart+zerr(j)
343 IF (ldarpe.AND..NOT.ldmlam)
THEN 344 WRITE (unit=fa%NULOUT,fmt=*) &
345 &
'FAXION: KPUISS=', kpuiss,
', KDIMNC=',kdimnc, &
346 &
', KLCHAM=', klcham,
', ITRDOL=', itrdol,
', ILCHADO=', &
347 & ilchado,
', PMIN=', pmin,
', PMAX=', pmax
349 WRITE (unit=fa%NULOUT,fmt=*) &
350 &
'FAXION: KPUISS=', kpuiss,
', KDIMNC=',kdimnc, &
351 &
', KLCHAM=', klcham, &
352 &
', PMIN=', pmin,
', PMAX=', pmax
354 WRITE (unit=fa%NULOUT,fmt=*)
'FAXION: PECART=', pecart
361 REAL (KIND=JPDBLR) FUNCTION zypr (IZZZZZ, ZCOEFF)
362 INTEGER (KIND=JPLIKB) :: IZZZZZ
363 REAL (KIND=JPDBLR) :: ZCOEFF
364 zypr = zrefer + zauxi2 * anint(zauxi1 * (pchame(izzzzz)/zcoeff - zrefer))
367 REAL (KIND=JPDBLR) FUNCTION zyp0 (IZZZZZ)
368 INTEGER (KIND=JPLIKB) :: IZZZZZ
369 zyp0 = zrefer + zauxi2 * anint(zauxi1 * (pchame(izzzzz) - zrefer))
376 REAL (KIND=JPDBLR) FUNCTION zcritr (IZZZZZ, ZCOEFF)
377 INTEGER (KIND=JPLIKB) :: IZZZZZ
378 REAL (KIND=JPDBLR) :: ZCOEFF
379 zcritr = (
zypr(izzzzz,zcoeff)*zcoeff - pchame(izzzzz))**2
385 REAL (KIND=JPDBLR) FUNCTION zcrit0 (IZZZZZ)
386 INTEGER (KIND=JPLIKB) :: IZZZZZ
integer, parameter jplikb
real(kind=jpdblr) function zcritr(IZZZZZ, ZCOEFF)
subroutine confi(PFVAL, KEXP, KMANT, PNFVAL)
real(kind=jpdblr) function zypr(IZZZZZ, ZCOEFF)
integer, parameter jpdblr
subroutine faxion_fort(FA, PCHAME, KPUISS, KDIMNC, KLCHAM, PMIN, PMAX, KNBITS, LDARPE, PECART, LDMLAM, KNOZPA, KSTROF, KTRONC, KXLOPA)
real(kind=jpdblr) function zcrit0(IZZZZZ)
real(kind=jpdblr) function zyp0(IZZZZZ)