C BFILCI    SOURCE    CB215821  25/03/25    21:15:02     12217          
      SUBROUTINE BFILCI(SANGLE,COUR,R,TMIN,TMAX,X,Z,BX,BY,BZ)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
C
-INC CCREEL
C
C*******************************************************************
C  Calcul du champ induit par un arc de cercle de courant COUR,
C  d'axe Oz, de section filaire :
C     - rayon R
C     - extension angulaire TMIN a TMAX par rapport au plan meridien
C       xOz contenant le point de coordonnees (X,0,Z)
C       ou on calcule le champ (BX,BY,BZ)
C*******************************************************************
C
      SEGMENT SANGLE
         REAL*8 TETM(NT4)
         REAL*8 TETI(NT4)
         REAL*8 DTE(NT4)
      ENDSEGMENT
      
      XMUN  =-1.D0
      XUN   = 1.D0
      XDEUX = 2.D0
      XQUAT = 4.D0
      
      XDEMI = 0.5D0
      XVAL1 = 4.D-7
C
C  champ magnetique selon Ox, Oy, Or et Oz cree par l'element d'arc de
C  longueur DTE situe en TETA, et grandeurs dependant de TETA pour
C  l'integration
C
      NT4=TETM(/1)
C
C
C  calcul des grandeurs geometriques independantes de TETA
C
      AMU=XVAL1*XPI
      COEF=COUR*AMU*R/(XQUAT*XPI)
C
      BX=XZERO
      BY=XZERO
      BZ=XZERO
C
C  cas de l'axe
C
      IF(A_EGALE_B(X,XZERO)) THEN
        DIST = SQRT(R**2+Z**2)
        DIST3= DIST**3
        BX   = COEF*Z/DIST3*(SIN(TMAX)-SIN(TMIN))
        BY   =-COEF*Z/DIST3*(COS(TMAX)-COS(TMIN))
        BZ   = COEF*R/DIST3*(TMAX-TMIN)
        RETURN
      ENDIF
C
C  recherche des bornes d'integration
C
      IDEB=0
      IFIN=0
      
      TTAI=XMUN
      TTAF=XMUN
C
      DO 1 I=1,NT4
         DMIN=TMIN-TETI(I)
         DMAX=TMAX-TETI(I)
         TTBI=SIGN(XUN,DMIN)
         TTBF=SIGN(XUN,DMAX)
         TESTI=XDEMI*(XUN-TTAI*TTBI)
         TESTF=XDEMI*(XUN-TTAF*TTBF)
         IDEB=IDEB+I*INT(TESTI)
         IFIN=IFIN+I*INT(TESTF)
         TTAI=TTBI
         TTAF=TTBF
 1    CONTINUE
C
      DTINI=DTE(IDEB)
      DTFIN=DTE(IFIN)
      TETINI=TETM(IDEB)
      TETFIN=TETM(IFIN)
      DTE(IDEB)=TETI(IDEB+1)-TMIN
      DTE(IFIN)=TMAX-TETI(IFIN)
      TETM(IDEB)=XDEMI*(TETI(IDEB+1)+TMIN)
      TETM(IFIN)=XDEMI*(TETI(IFIN  )+TMAX)
C
      DO 21 I=IDEB,IFIN
         COST=COS(TETM(I))
C        SINT=SIN(TETM(I))
         DIST=SQRT(R**2+X**2+Z**2-2.*X*R*COST)
         DIST3=DIST**3
         HX=Z*COST/DIST3
         HZ=(R-X*COST)/DIST**3
         BX=BX+HX*DTE(I)
         BZ=BZ+HZ*DTE(I)
 21   CONTINUE
C     CALCUL ANALYTIQUE DE BY
      DIST1=SQRT(R**2+X**2+Z**2-XDEUX*X*R*COS(TMIN))
      DIST2=SQRT(R**2+X**2+Z**2-XDEUX*X*R*COS(TMAX))
      BY=Z/(X*R)*(XUN/DIST2-XUN/DIST1)
      BX=BX*COEF
      BY=BY*COEF
      BZ=BZ*COEF
C
      DTE(IDEB)=DTINI
      DTE(IFIN)=DTFIN
      TETM(IDEB)=TETINI
      TETM(IFIN)=TETFIN
C
      RETURN
      END
 
