#include <stdio.h>
/* This programme calculates the action density profile of the SU(2) caloron
   at omega=w, rho=p as a function of t and z. Constituents are placed at 
   x=y=0, z=(1-2*w)*p*p*Pi and -2*w*p*p*Pi. */

main(argc,argv)
int argc;
char **argv;
{
        double dAdAlnpsi();
        double w,p,x,y,z,t,s,st,nu1,z1,z2;
        double Pi=3.14159265358979324;
        int mt,mz,nt,nz,nn=1;
        void message();

        if(argc != 10)message();
        if(sscanf(argv[1],"%le",&w)!= 1)message();
        if(sscanf(argv[2],"%le",&p)!= 1)message();
        if(sscanf(argv[3],"%le",&x)!= 1)message();
        if(sscanf(argv[4],"%le",&y)!= 1)message();
        if(sscanf(argv[5],"%le",&z)!= 1)message();
        if(sscanf(argv[6],"%le",&s)!= 1)message();
        if(sscanf(argv[7],"%d",&nz)!= 1)message();
        if(sscanf(argv[8],"%d",&nt)!= 1)message();
        if(sscanf(argv[9],"%d",&nn)!= 1)message(); 
        t=-0.5;
        st=nn*1.0/nt;
        nu1=2*w;
        z2=-nu1*p*p*Pi;
        z1=(1-nu1)*p*p*Pi;

     	printf("(* t-z profile for: omega,rho,x,y= %lg, %lg, %lg, %lg\n",
                w,p,x,y); /* nn is the number of time periods */
     	printf("   z[1],step,nz,nt,nn= %lg, %lg, %d, %d, %d *)\n",z,s,nz,nt,nn);
     	printf("Profile[0]={\n"); 
     	for(mt=0;mt<nt;mt++){
     	   printf("{\n"); 
     	   for(mz=0;mz<nz;mz++)
     	      printf("%16.10E,\n",
                     -dAdAlnpsi(nu1,0.,0.,0.,0.,z1,z2,x,y,z+s*mz,t+mt*st)/2); 
     	   printf("%16.10E},\n",
                  -dAdAlnpsi(nu1,0.,0.,0.,0.,z1,z2,x,y,z+s*nz,t+st*mt)/2); 
           }
     	   printf("{\n"); 
     	   for(mz=0;mz<nz;mz++)
     	      printf("%16.10E,\n",
                     -dAdAlnpsi(nu1,0.,0.,0.,0.,z1,z2,x,y,z+s*mz,t+st*nt)/2); 
     	   printf("%16.10E}\n",
                  -dAdAlnpsi(nu1,0.,0.,0.,0.,z1,z2,x,y,z+s*nz,t+st*nt)/2); 
     	printf("};\n"); 
        return(0);
}
     
void message(){
        fprintf(stderr,"usage: su2-t-z omega rho x y z s nz nt nn\n");
        exit();
}

