コード例 #1
0
ファイル: data.c プロジェクト: amumu/nokuno
void
dump_data(data_t m[], vector_t x[], vector_t v[], int step)
{
    FILE *fp;
    char fname[256];
    int i;

    sprintf(fname, "step%d.dat", step);
    if ((fp = fopen(fname, "w")) == NULL)  return;

    for (i = 0; i < N; i++) {
        fprintf(fp, "%.20g ", m[i]);
        print_coordinate(fp, x[i]);
        putc(' ', fp);
        print_coordinate(fp, v[i]);
        putc('\n', fp);
    }
    fclose(fp);
}
コード例 #2
0
ファイル: gtpcommands.cpp プロジェクト: guochengc422/Go-AI
void GTP::genmove()
{
  if(cmd_args.size() > 0){
    bool color = char_to_color(cmd_args[0]);
    if(color != main_goban.get_side()){
      main_goban.play_move(0, !color);
      go_engine.report_move(0);
    }
    int move = go_engine.generate_move(early_pass);
    main_goban.play_move(move, color);
    go_engine.report_move(move);
    print_coordinate(move);
  } else {
    response[0] = '?';
    response.append("syntax error");
  }
    
}
コード例 #3
0
ファイル: main.c プロジェクト: entangled90/computazionale_m
void reticolo () { 
	double passo = 0.0;//passo del reticolo 
	//contatori 
	double rx = 0.0;
	double ry = 0.0; 
	int q=0;
    int m=0;
    int i,j;
    double speed_cm[2]={0.0,0.0};
     //Definisco il passo del reticolo cercando il minimo doppio di un quadrato: m >= n.
      //Questa procedur  	a permette di sfruttare l'intero spazio a disposizione per la creazione del reticolo.
     for (q = 0; m < number_of_particles; q++){
    	m = 2*q*q;
    }
    passo = sqrt(2/(double)m);
	printf("passo %lf\n", passo);
      	  //creazione reticolo
	rx=0;
	ry=0;
    genera_sottoreticolo(rx,ry,q,0,passo);
	rx = passo/2.0;
	ry = passo/2.0;
    genera_sottoreticolo(rx,ry,q,number_of_particles/2, passo);
	for (i =0 ; i< number_of_particles; i++){
		for ( j = 0; j<N;j++){	
				speed_cm[j] += particleList[i].speed[j];
		}
	}

	for ( i= 0; i<number_of_particles;i++){
		for(j=0;j<N;j++){
			particleList[i].speed[j] -= speed_cm[j]/((double) number_of_particles);
		}
	}
	print_coordinate();
	print_speed();

}
コード例 #4
0
ファイル: main.c プロジェクト: entangled90/computazionale_m
int main (int argc, char *argv[]) {
/*******************
** INIT VARI
*******************/
/*Calcola il numero di istanti temporali che verranno salvati*/
NUM_TEMPI_SALVATI = (int) (floor( (double) TIME_MAX / DeltaT)+1);
unsigned int i ;
srand(time(NULL));
double dist_tot=0;
double fraz_imp=0.1;
//double pression_bin[N_BIN_PRESS];
if (argc > 1){
	fraz_imp = atof(argv[1]);
}
SIGMA = sqrt(4*fraz_imp/ number_of_particles / M_PI);
/* DA dove salta fuori?*/
DIST_RET = sqrt(4*0.74/ number_of_particles / M_PI);
printf("\n\n*****************************************************\n");
printf("Starting simulation with:\n");
printf("SIGMA = %e\t",SIGMA);
printf("Frazione di impacchettamento: %e\n", fraz_imp);
collTable = malloc (number_of_particles*number_of_particles*sizeof(double));
particleList = malloc ( number_of_particles * sizeof(particle_s));
time_list = malloc (NUM_TEMPI_SALVATI*number_of_particles * sizeof(particle_s));
reticolo ();
fix_boundaries();

if ( check_distance() != 0){
	printf("Sfere troppo vicine tra loro. Avvio annullato\n");
	exit(EXIT_FAILURE);
}

temperature = 2*kin_en()/((double) N)/(double) number_of_particles/K_BOLTZ;
printf(" K = %e \t P= %e \t", kin_en(), total_momentum());
printf("Temperature is: %f \n",temperature );
riscala_vel_temp();
temperature = 2*kin_en()/((double) N)/(double) number_of_particles/K_BOLTZ;
printf(" K = %e \t P= %e \t", kin_en(), total_momentum());
printf("Temperature is: %f \n",temperature );

/****** GESTIONE FILE  ******/
char r2_file[64] = "";
snprintf(r2_file,64,"data/dr2/dr2_%d_%.6lf.dat",(int)time(NULL),fraz_imp); 
//char * press_file = "data/press.dat";
char  tc_filename[64] = "";
snprintf(tc_filename, 64, "data/tc/%d/tc%6f.dat",number_of_particles, fraz_imp);

char tcpdf_filename[64] = "";
snprintf(tcpdf_filename, 64, "data/pdf_tc/%d/%6f.dat",number_of_particles, fraz_imp);
char  mfp_filename[64] = "";
snprintf(mfp_filename,64,"data/mfp/%d/mfp%.6lf.dat",number_of_particles,fraz_imp);
/****FINE GESTIONE FILE***/
char  pression_filename[128] = "";
snprintf(pression_filename,128,"data/pression/%d/pression%.6lf.dat",number_of_particles,fraz_imp);


print_coordinate();
printf("#Collisions: %d \n", numOfCollisions);

FILE *pdf_tc_file = fopen(tcpdf_filename,"w");
/*****************
EVOLUZIONE
*****************/
collision_table();
while ( numOfCollisions < TERM_TIME){
	evolve_therm();
}
numOfCollisions=0;
reset_mfp_variables();
boltzmann_file_save();
total_time = 0;
pression=0;
printf("Termalizzato: %d urti ---- kin_en = %lf\n",numOfCollisions,kin_en());
while (total_time < TIME_MAX){
	evolve();
	fprintf(pdf_tc_file,"%lf\n",time_collision*number_of_particles/2.0);
}
printf("Num collisioni: %d\n",numOfCollisions);
fclose(pdf_tc_file);
if (time_counted > NUM_TEMPI_SALVATI){
	printf("ERROR \n");
}
r_squared_save(r2_file);
/****** CALCOLO PV/NKT = 1 + 1/(3*number_of_particles*k_boltz*temp)*massa*diametro*Somma collisioni******/
pression /= (double) (3*(total_time)*kin_en());
pression *= SIGMA;
pression +=1.0;
pression *= (fraz_imp/0.9069); //dovuto a PV_0/NKT
FILE *f_collision=fopen(tc_filename,"a");
fprintf(f_collision,"%e\t%e\n",fraz_imp,total_time/(2*numOfCollisions)*(number_of_particles));

FILE * file_pression = fopen(pression_filename,"a");
fprintf(file_pression,"%e\n",pression);
fclose(file_pression);

FILE *f_mean_mfp = fopen( mfp_filename,"a");
for ( i = 0; i<number_of_particles;i++){
	dist_tot += particleList[i].distance/(double)(particleList[i].n_collision); 
}
dist_tot /= (double) (number_of_particles);
fprintf(f_mean_mfp,"%.14e\t%.14e\t\n",fraz_imp, dist_tot);
fclose(f_mean_mfp);
fclose(f_collision);
//fclose(f_pression);
free(particleList);
free(collTable);
free(time_list);
exit(EXIT_SUCCESS);
}