#include #include #include #include #include #define min( a, b ) ( ((a) < (b)) ? (a) : (b) ) double AOrB(double qval,const double aorb){return cos(aorb*qval);} void DEntries(gsl_matrix *DMatrix,int pnum){ int i; double Cx,Cy,Sx,Sy; const double sqrt3on2=sqrt(3.0)/2.0,sqrt3=sqrt(3.0); for (i=0;igsl_matrix_get(DMatrix,i,0)){ a=gsl_matrix_get(DMatrix,i+1,0);b=gsl_matrix_get(DMatrix,i+1,1); c=gsl_matrix_get(DMatrix,i+1,2);d=gsl_matrix_get(DMatrix,i+1,3); e=gsl_matrix_get(DMatrix,i+1,4);f=gsl_matrix_get(DMatrix,i+1,5); gsl_matrix_set( DMatrix,i+1,0,gsl_matrix_get(DMatrix,i,0) );gsl_matrix_set(DMatrix,i+1,1,gsl_matrix_get(DMatrix,i,1) ); gsl_matrix_set( DMatrix,i+1,2,gsl_matrix_get(DMatrix,i,2) );gsl_matrix_set(DMatrix,i+1,3,gsl_matrix_get(DMatrix,i,3) ); gsl_matrix_set( DMatrix,i+1,4,gsl_matrix_get(DMatrix,i,4) );gsl_matrix_set(DMatrix,i+1,5,gsl_matrix_get(DMatrix,i,5) ); gsl_matrix_set( DMatrix,i,0, a);gsl_matrix_set( DMatrix,i,1,b ); gsl_matrix_set( DMatrix,i,2, c);gsl_matrix_set( DMatrix,i,3,d ); gsl_matrix_set( DMatrix,i,4, e);gsl_matrix_set( DMatrix,i,5,f ); dummy=1; } } } dummy=1; while(dummy==1){ dummy=0; for(i=0;igsl_matrix_get(DMatrix,i,1) && gsl_matrix_get(DMatrix,i+1,0)==gsl_matrix_get(DMatrix,i,0)){ a=gsl_matrix_get(DMatrix,i+1,0);b=gsl_matrix_get(DMatrix,i+1,1); c=gsl_matrix_get(DMatrix,i+1,2);d=gsl_matrix_get(DMatrix,i+1,3); e=gsl_matrix_get(DMatrix,i+1,4);f=gsl_matrix_get(DMatrix,i+1,5); gsl_matrix_set( DMatrix,i+1,0,gsl_matrix_get(DMatrix,i,0) );gsl_matrix_set(DMatrix,i+1,1,gsl_matrix_get(DMatrix,i,1) ); gsl_matrix_set( DMatrix,i+1,2,gsl_matrix_get(DMatrix,i,2) );gsl_matrix_set(DMatrix,i+1,3,gsl_matrix_get(DMatrix,i,3) ); gsl_matrix_set( DMatrix,i+1,4,gsl_matrix_get(DMatrix,i,4) );gsl_matrix_set(DMatrix,i+1,5,gsl_matrix_get(DMatrix,i,5) ); gsl_matrix_set( DMatrix,i,0, a);gsl_matrix_set( DMatrix,i,1,b ); gsl_matrix_set( DMatrix,i,2, c);gsl_matrix_set( DMatrix,i,3,d ); gsl_matrix_set( DMatrix,i,4, e);gsl_matrix_set( DMatrix,i,5,f ); dummy=1; } } } } void OutputMatrix(gsl_matrix *DMatrix,int pnum,char fname[1024]){ int i; FILE *fp=fopen(fname,"w");fprintf(fp,"#qx(1) qy(2) Dg00(3) Dh00(4) D11(5) D12(6)\n"); for (i=0;i