5 & (fa, krep, krang, cdnoma, pchamp, ldcosp, &
6 & pvalco, klongd, kb1par, ldundf, pundf)
50 INTEGER (KIND=JPLIKB) KREP, KRANG, KLONGD
52 REAL (KIND=JPDBLR) PCHAMP (*)
53 REAL (KIND=JPDBLD) PVALCO (*)
54 INTEGER (KIND=JPLIKB) KB1PAR (fa%jplb1p)
55 REAL (KIND=JPDBLR) PUNDF
57 LOGICAL LDCOSP, LDUNDF
61 INTEGER (KIND=JPLIKB) ILCHAM, ISTRIA, IVALC1, IVALC2
62 INTEGER (KIND=JPLIKB) J, IDECAL, ICPACK, IPUILA
63 INTEGER (KIND=JPLIKB) ITRONC, IIND, ILOW, IHIGH, JTRON
64 INTEGER (KIND=JPLIKB) IDIMNC, ILDISP, INBITS, INBITSMAX
65 INTEGER (KIND=JPLIKB) IL, IADD, IRANGC, IARR, IILCHAM
66 INTEGER (KIND=JPLIKB) INMOCC, IERR, INIMES
67 INTEGER (KIND=JPLIKB) INUMER, ITRONC2, ILONGFA
68 INTEGER (KIND=JPLIKB) ILONGSEC, ILONGDATA
69 INTEGER (KIND=JPLIKB) ILONGD
71 INTEGER (KIND=JPLIKB) IB2PAR (fa%jplb2p)
73 LOGICAL LLARPE, LLMLAM
75 CHARACTER(LEN=FA%JPLMES) CLMESS
76 CHARACTER(LEN=FA%JPLSPX) CLNSPR
78 REAL (KIND=JPDBLR) :: ZTEMP (2)
80 REAL (KIND=JPDBLR),
ALLOCATABLE :: ZCHAMP (:), ZCHAUX (:)
81 REAL (KIND=JPDBLR) ZAVG
82 INTEGER (KIND=JPLIKB) IAVG
88 REAL(KIND=JPRB) :: ZHOOK_HANDLE
91 IF (krang.LE.0.OR.krang.GT.fa%JPNXFA)
THEN 99 ivalc1=fa%FICHIER(krang)%NFGRIB
101 irangc=fa%FICHIER(krang)%NUCADR
102 llmlam=fa%CADRE(irangc)%LIMLAM
127 inbits=min(fa%FICHIER(krang)%NBFCSP, inbitsmax)
131 ilcham=fa%CADRE(irangc)%NSFLAM
132 IF (ivalc1.GT.0)
THEN 134 icpack=fa%FICHIER(krang)%NSTROF
135 itronc=fa%CADRE(irangc)%MTRONC
136 itronc2=-fa%CADRE(irangc)%NTYPTR
137 istria=4*(1+itronc+itronc2+(icpack*(icpack-1)/2))
139 ilongfa=3+2*ivalc1+istria
141 ilongdata=(ilcham-istria)*inbits + 88
144 IF (ivalc1.EQ.-1)
THEN 145 ilcham=(1+fa%CADRE(irangc)%MTRONC)*(2+fa%CADRE(irangc)%MTRONC)
147 ilcham=(1+fa%CADRE(irangc)%MTRONC)**2
150 IF (ivalc1.GT.0)
THEN 151 icpack=fa%FICHIER(krang)%NSTROF
154 ilongfa=3+2*ivalc1+idimnc
156 ilongdata=ilcham*inbits + idimnc*(32-inbits) + 144
162 ilcham=fa%CADRE(irangc)%NVAPDG
165 inbits=min(fa%FICHIER(krang)%NBFPDG, inbitsmax)
166 IF (ivalc1.GT.0)
THEN 169 ilongdata=ilcham*inbits + 88
177 IF (ivalc1.GT.0)
THEN 179 ilongdata=16*(1+(ilongdata-1)/16)
181 ilongd=1+(ilongdata+8*ilongsec-1)/64
183 ilongd=ilongd+ilongfa
196 IF (inbits == inbitsmax)
THEN 202 IF (ivalc1.EQ.-1.OR.ivalc1.EQ.0)
THEN 210 pvalco(2+j) =
REAL (PCHAMP (J), JPDBLD)
215 ztemp(1) = pchamp(j+0)
216 IF (j+1 <= ilcham)
THEN 217 ztemp(2) = pchamp(j+1)
221 pvalco(2+1+(j-1)/2) = transfer(ztemp(1:2), pvalco(2+1+(j-1)/2))
223 klongd=2+(ilcham+1)/2
230 ALLOCATE (zchamp(ilcham))
238 kb1par(9)=mod(fa%FICHIER(krang)%MADATE(1),100_jplikb )
241 kb1par(8+j)=fa%FICHIER(krang)%MADATE(j)
245 ipuila=fa%FICHIER(krang)%NPUFLA
246 itronc=fa%CADRE(irangc)%MTRONC
255 CALL facsim_fort (fa, krep,krang,pchamp,zchamp,ipuila,icpack)
257 print *,
'FACINE: puissance Dolby selectionnee ',ipuila
259 IF (krep.NE.0)
GOTO 1001
264 ALLOCATE (zchaux(ilcham))
269 iadd=4* max(icpack+1-jtron,1_jplikb )
271 DO j=fa%CADRE(irangc)%NOZPAR(ilow)+iadd, &
272 & fa%CADRE(irangc)%NOZPAR(ilow+1)
274 zchaux(iind)=zchamp(j)
285 ildisp=ilcham+2-idecal-(ivalc1-1)*istria
287 IF (.NOT.llarpe)
THEN 314 IF (pchamp(j) /= pundf)
THEN 315 zavg = zavg + pchamp(j)
325 IF (pchamp(j) == pundf)
THEN 333 ildisp=ilcham+2-idecal
341 IF (ldcosp.AND.llmlam)
THEN 342 iilcham=ilcham-istria
343 CALL facodega(zchaux,iilcham,inbits,fa%NBIMAC,kb1par, &
344 & ib2par,fa%CADRE(irangc)%SFOHYB(1,0),2_jplikb , &
345 & pvalco(idecal+1),ildisp,inmocc,iarr, &
346 & 0_jplikb ,ipuila,ierr,pvalco(idecal-1), &
347 & pvalco(idecal),llarpe)
349 CALL facodega(zchamp,ilcham,inbits,fa%NBIMAC,kb1par,ib2par, &
350 & fa%CADRE(irangc)%SFOHYB(1,0),2_jplikb , &
351 & pvalco(idecal+1),ildisp,inmocc,iarr,icpack, &
352 & ipuila,ierr,pvalco(idecal-1),pvalco(idecal), &
360 pvalco(4)=transfer(icpack, pvalco(4))
361 pvalco(5)=transfer(ipuila, pvalco(5))
375 ilow=fa%CADRE(irangc)%NOZPAR(il)
378 ihigh=fa%CADRE(irangc)%NOZPAR(il+1)
380 ihigh=ilow+4*(icpack+1-jtron)-1
381 IF (ihigh.LE.ilow) ihigh=ilow+3
386 zchaux(iind)=pchamp(j)
391 pvalco(idecal+inmocc+j)=zchaux(j)
397 pvalco(idecal+inmocc+j)=
REAL (PCHAMP(J), JPDBLD)
406 pvalco(3)=transfer(inbits, pvalco(3))
409 klongd=idecal+inmocc+istria
411 klongd=idecal+inmocc+idimnc
416 IF (ivalc1 == 0 .AND. (
jpdblr /= jpdbld)) ivalc1 = -2
417 pvalco(1)=transfer(ivalc1, pvalco(1))
418 pvalco(2)=transfer(ivalc2, pvalco(2))
425 llfata=llmoer(krep,krang)
427 IF (fa%LFAMOP.OR.llfata)
THEN 432 WRITE (unit=clmess,fmt=
'(''KREP='',I4,'', KRANG='',I4, & 433 & '', CDNOMA='''''',A,'''''', LDCOSP= '',L1, & 434 & '', KLONGD='',I8)') &
435 & krep, krang, cdnoma, ldcosp, klongd
437 & (fa, inumer,inimes,krep,.false.,clmess, &
438 & clnspr, cdnoma,.false.)
445 #include "facom2.llmoer.h" subroutine facsim_fort(FA, KREP, KRANG, PCHAME, PCHAMS, KPULAS, KSTRON)
subroutine facodega(PFDATA, KLENF, KBITS, KNBIT, KB1PAR, KB2PAR, PVERT, KLENV, KGRIB, KLENG, KWORD, KROUND, KCPACK, KSCALP, KERR, PMIN, PMAX, LDARPE)
integer, parameter jpdbld
integer(kind=jplikb), parameter jpprcm
integer, parameter jpdblr
subroutine facine_fort(FA, KREP, KRANG, CDNOMA, PCHAMP, LDCOSP, PVALCO, KLONGD, KB1PAR, LDUNDF, PUNDF)
subroutine faipar_fort(FA, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI, LDRLFI)
integer(kind=jplikb), parameter jpniil