* * $Id: vviset.F,v 1.1.1.1 1996/04/01 15:02:48 mclareni Exp $ * * $Log: vviset.F,v $ * Revision 1.1.1.1 1996/04/01 15:02:48 mclareni * Mathlib gen * * #include "gen/pilot.h" SUBROUTINE VVISET(RKA,BE2,MODE,XL,XU) COMMON /G116C1/ H(7),T0,T1,T,OMEGA,A(155),B(155),X0 EXTERNAL G116F1,G116F2 CHARACTER NAME*(*) CHARACTER*80 ERRTXT PARAMETER (NAME = 'VVISET') DIMENSION XP(8),XQ(6) C H1 = 5 ln 10 - ln(2/PI**2), h2 = 3 ln 10, h0 = Ln 0.0005... PARAMETER (PI = 3.14159 265, EU = 0.57721 566) PARAMETER (PI2 = 2*PI, RPI = 1/PI) PARAMETER (H1 = 5*2.30258 509-1.59631 259, H2 = 3*2.30258 509) PARAMETER (H0 =-7.6, PIH = PI/2, EPS = 1E-5) DATA XP /9.29, 2.47, 0.89, 0.36, 0.15, 0.07, 0.03, 0.02/ DATA XQ /0.012, 0.03, 0.08, 0.26, 0.87, 3.83/ IF(RKA .LT. 0.01 .OR. RKA .GT. 10) THEN WRITE(ERRTXT,101) RKA CALL MTLPRT(NAME,'G116.1',ERRTXT) ELSEIF(BE2 .LT. 0 .OR. BE2 .GT. 1) THEN WRITE(ERRTXT,102) BE2 CALL MTLPRT(NAME,'G116.2',ERRTXT) ELSE H(5)=1-BE2*(1-EU)-H0/RKA H(6)=BE2 H(7)=1-BE2 H4=H0/RKA-(1+BE2*EU) H5=LOG(RKA) H6=1/RKA T0=(H4-H(5)*H5-(H(5)+BE2)*(LOG(H(5))+REXPIN(H(5)))+EXP(-H(5)))/ 1 H(5) DO 1 LP = 1,8 IF(RKA .GE. XP(LP)) GO TO 11 1 CONTINUE LP=9 11 DO 2 LQ = 1,6 IF(RKA .LE. XQ(LQ)) GO TO 22 2 CONTINUE LQ=7 22 CALL RZERO(-LP-0.5,LQ-7.5,U,XX,EPS,1000,G116F2) Q=1/U T1=H4*Q-H5-(1+BE2*Q)*(LOG(ABS(U))+REXPIN(U))+EXP(-U)*Q T=T1-T0 OMEGA=PI2/T H(1)=RKA*(2+BE2*EU)+H1 IF(RKA .GE. 0.07) H(1)=H(1)+H2 H(2)=BE2*RKA H(3)=H6*OMEGA H(4)=PIH*OMEGA CALL RZERO(5.,155.,X0,XX,EPS,1000,G116F1) N=X0+1 D=RPI*EXP(RKA*(1+BE2*(EU-H5))) A(N)=0 IF(MODE .EQ. 0) A(N)=RPI*OMEGA Q=-1 Q2=2 DO 3 K = 1,N-1 L=N-K X=OMEGA*K X1=H6*X C1=LOG(X)-COSINT(X1) C2=SININT(X1) C3=SIN(X1) C4=COS(X1) XF1=RKA*(BE2*C1-C4)-X*C2 XF2=X*C1+RKA*(C3+BE2*C2)+T0*X IF(MODE .EQ. 0) THEN D1=Q*D*OMEGA*EXP(XF1) A(L)=D1*COS(XF2) B(L)=-D1*SIN(XF2) ELSE D1=Q*D*EXP(XF1)/K A(L)=D1*SIN(XF2) B(L)=D1*COS(XF2) A(N)=A(N)+Q2*A(L) ENDIF Q=-Q 3 Q2=-Q2 ENDIF XL=T0 XU=T1 RETURN 101 FORMAT('KAPPA = ',E10.3,' - OUT OF RANGE') 102 FORMAT('BETA**2 = ',E10.3,' - OUT OF RANGE') END