#include
#include
#define NN 1025
#define MM 10
void main()
{
double taa,coa2,cta,tafa2,cofa2,cofa,cof,cof2;
double taf2,f0,coka,startkai,endkai,sta,cta90,startr;
int a,b;
int m,n;
double xs,xe,h,r;
double x[NN],y[NN][MM];
double c,d,tmax,flux,fobs,robs,sia,z;
double t,tobs;
FILE *fopen(),*fp1,*fp2,*fp3,*fp4;
scanf("%le%le",&cta90,&tmax);
cta=3.141592654*cta90/180;
f0=1.570796327-cta;
m=2;
n=200;
c=5.6705e-08;
d=c*pow(tmax,4.0)/0.000917;
fp1=fopen("fobs","w");
fp2=fopen("tobs","w");
fp3=fopen("treal","w");
fp4=fopen("radii","w");
for(b=-100;b<=100;b=b++){
for(a=-100;a<=100;a=a++){
startkai=atan(pow((pow((30.0/201.0*(double)a),2.0)+pow((30.0/201.0*(double)b),2.0)),0.5)/10000.0);
startr=pow((pow((30.0/201.0*(double)a),2.0)+pow((30.0/201.0*(double)b),2.0)+100000000.0),0.5);
if((a==0) && (b==0))
sta=1.0/(30.0/201.0);
else
sta=10000.0/startr/pow((pow((30.0/201.0*(double)a),2.0)+pow((30.0/201.0*(double)b),2.0)),0.5);
if(b==0){
endkai=1.570796327;
}
else{
taa=(double)a/(double)b;
coa2=1.0/(1.0+pow(taa,2.0));
cofa2=coa2/(coa2*pow((sin(cta)),2.0)+pow((cos(cta)),2.0));
tafa2=1.0/cofa2-1.0;
cofa=pow(cofa2,0.5);
cof2=pow(cos(f0),2.0);
taf2=pow(tan(f0),2.0);
cof=cos(f0);
if(b>0)
cofa=-cofa;
coka=(cof2+cofa2-cofa2*cof2*(tafa2+taf2))/(2*cofa*cof);
endkai=acos(coka);
}
xs=startkai;
xe=endkai;
h=(xe-xs)/(double)n;
x[0]=xs;
y[0][0]=1.0/startr;
y[0][1]=sta;
rk4(x,y,h,n,m);
r=1.0/y[n][0];
if(r<3.0)
flux=0;
else
flux=d/(r-3.0/2.0)/pow(r,2.5)*(pow(r,0.5)-pow(3.0,0.5)+pow(1.5,0.5)/2.0*log((pow(r,0.5)+pow(1.5,0.5))/(pow(r,0.5)-pow(1.5,0.5))*(pow(3.0,0.5)-pow(1.5,0.5))/(pow(3.0,0.5)+pow(1.5,0.5))));
robs=pow((pow((30.0/201.0*(double)a),2.0)+pow((30.0/201.0*(double)b),2.0)),0.5);
if(b==0){
if(a>=0)
sia=-1.0;
else
sia=1.0;
}
else{
if(a>=0)
sia=-pow((1.0-1.0/(1.0+pow(((double)a/(double)b),2.0))),0.5);
else
sia=pow((1.0-1.0/(1.0+pow(((double)a/(double)b),2.0))),0.5);
}
if(r<=1.5)
z=1.0;
else
z=pow((1.0-3.0/2.0/r),-0.5)*(1.0-pow((pow(robs,2.0)/2.0/pow(r,3.0)),0.5)*sin(cta)*sia);
fobs=flux/pow(z,4.0);
t=pow((flux/c),0.25);
tobs=t/z;
fprintf(fp1,"%6.1f %6.1f %10.6e \n",(double)a,(double)b,fobs);
fprintf(fp2,"%6.1f %6.1f %10.6e \n",(double)a,(double)b,tobs);
fprintf(fp4,"%6.1f %6.1f %10.6e \n",(double)a,(double)b,r);
fprintf(fp3,"%6.1f %6.1f %10.6e \n",(double)a,(double)b,t);
}
}
}
rk4(x,y,h,n,m)
int n;
int m;
double h;
double x[NN];
double y[NN][MM];
{
int i,k;
double d1[MM],d2[MM],d3[MM];
double ya[MM],y0[MM],f[MM],xa;
for ( i=0 ; i
{
y0[i]=y[0][i];
}
for ( k=0 ; k<=n ; ++k )
{
x[k]=x[0]+k*h;
aux(x[k],y[k],f);
for ( i=0 ; i
{
ya[i]=y0[i]+0.5*(d1[i]=h*f[i]);
}
xa=x[k]+0.5*h;
aux(xa,ya,f);
for ( i=0 ; i
{
ya[i]=y0[i]+0.5*(d2[i]=h*f[i]);
}
aux(xa,ya,f);
for ( i=0 ; i
{
ya[i]=y0[i]+(d3[i]=h*f[i]);
}
xa=x[k]+h;
aux(xa,ya,f);
for ( i=0 ; i
{
y[k+1][i]=y0[i]+=
(d1[i]+(d2[i]+d3[i])*2.0+h*f[i])/6.0;
if(y[k+1][0]>10){
y[k+1][0]=10;
y0[0]=10;
}
}
}
}
aux(x,y,f)
double x,y[],f[];
{
f[0]=y[1];
f[1]=(-y[0]+3/2*y[0]*y[0]);
}