C BCYLCI SOURCE CB215821 17/11/30 21:15:13 9639 SUBROUTINE BCYLCI(SANGLE,COUR,R,H,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 cylindre circulaire C de courant COUR,d'axe Oz : C - rayon R C - hauteur H 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 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 C C C calcul des grandeurs geometriques independantes de TETA C AMU=4.E-7*XPI B=H/2. COEF=COUR*AMU*R/(8.*XPI*B) ZH=B-Z ZB=-B-Z C C C recherche des bornes d'integration C IDEB=0 IFIN=0 TTAI=-1. TTAF=-1. NT4=TETM(/1) C DO 1 I=1,NT4 DMIN=TMIN-TETI(I) DMAX=TMAX-TETI(I) TTBI=SIGN(1.D0,DMIN) TTBF=SIGN(1.D0,DMAX) TESTI=0.5*(1.-TTAI*TTBI) TESTF=0.5*(1.-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)=0.5*(TETI(IDEB+1)+TMIN) TETM(IFIN)=0.5*(TETI(IFIN)+TMAX) C BX=0. BY=0. BZ=0. DO 21 I=IDEB,IFIN COST=COS(TETM(I)) SINT=SIN(TETM(I)) DR2=R**2+X**2-2.*X*R*COST DMAX=SQRT(DR2+ZH**2) DMIN=SQRT(DR2+ZB**2) HX=COST*(1./DMAX-1./DMIN) HZ=(R-X*COST)/DR2*(ZH/DMAX-ZB/DMIN) BX=BX+HX*DTE(I) BZ=BZ+HZ*DTE(I) 21 CONTINUE C CALCUL ANALYTIQUE DE BY DHTET1=SQRT(R**2+X**2+ZH**2-2.*X*R*COS(TMIN)) DHTET2=SQRT(R**2+X**2+ZH**2-2.*X*R*COS(TMAX)) DBTET1=SQRT(R**2+X**2+ZB**2-2.*X*R*COS(TMIN)) DBTET2=SQRT(R**2+X**2+ZB**2-2.*X*R*COS(TMAX)) BY=(DHTET2-DHTET1-DBTET2+DBTET1)/(X*R) 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