예제 #1
0
int main(){

    int number_blocks, number_cycles, max_variations, thermalization;
    int dimension, number_particles; 
    double initial_correlation, delta_correlation, lowest_correlation;
    double *cumulative_e, *cumulative_e2;
    dimension = 3;
    /*   Read in data */
    initialise(/*&dimension,*/ &number_blocks, &number_particles, &max_variations, 
	       &number_cycles, &thermalization, &initial_correlation, 
	       &delta_correlation) ;

    cumulative_e = (double *) malloc((max_variations+1)*sizeof(double));
    cumulative_e2 = (double *) malloc((max_variations+1)*sizeof(double));

    /*  Do the mc sampling  */
    mc_sampling(dimension, number_blocks, number_particles, max_variations, 
		thermalization, number_cycles, initial_correlation,
		delta_correlation, &lowest_correlation, cumulative_e, cumulative_e2);


    /* Print out results  */
    output(max_variations, number_cycles, delta_correlation, lowest_correlation,  
	   cumulative_e, cumulative_e2);
    return 0;
}
예제 #2
0
/*******************************************************************
 * 
 * NAME :               difference( double step_length )
 *
 * DESCRIPTION :        Coming
 */
double MC_Brute_Force::difference(double step_length) {
    double tmp1, tmp2;
    double tot_energy, tot_energy_sq;
    int accepted, mc_samples_sl;
    //mc_samples_sl = (int) 1e4;
    mc_samples_sl = (int) 1e4/4;
    tot_energy = tot_energy_sq = 0;
    accepted = 0;
    mc_sampling(mc_samples_sl, step_length, accepted, tmp1, tmp2);
    return (double) accepted / mc_samples_sl - 0.5;
}
예제 #3
0
/*******************************************************************
 * 
 * NAME :               mc_sampling( int cycles, double step_length, 
 *                      int& accepted, double& total_energy, 
 *                      double& total_energy_sq)
 *
 * DESCRIPTION :        Coming
 */
void MC_Brute_Force::solve() {
    double step_length, energy, energy_sq;
    int accepted;
    energy = 0;
    energy_sq = 0;
    step_length = optimal_step_length();
    mc_sampling(mc_cycles, step_length, accepted, energy, energy_sq);

    // Storing results
    this->energy = energy;
    this->energy_sq = energy_sq;
    this->step_length = step_length;
    this->accepted = accepted;
}