Beispiel #1
0
int main(){
	int a = 0;
	
	Energy *energy0 = calloc(sizeof(Energy), 1);
	Energy *energy1 = calloc(sizeof(Energy), 1);
	//Energy *energy2 = calloc(sizeof(Energy), 1);
	
	initEnergy(energy0, 1);
	initEnergy(energy1, 1);
	//initEnergy(energy2, 1);

	setSensor(energy0, "ACa", "A", "", "/dev/ttyACM0");
	setSensor(energy1, "ACb", "B", "", "/dev/ttyACM0");
	//setSensor(energy5, "AC ", "C", "", "/dev/ttyACM0");

	setTimer(energy0, 10);
	setTimer(energy1, 10);
	//setTimer(energy2, 10);


	startEnergy(energy0);
	startEnergy(energy1);
	//startEnergy(energy2);

	while(a < 60){
		//system("clear");
		printEnergy(energy0);
		printEnergy(energy1);
		//printEnergy(energy2);
		a ++;
		sleep(10);
	}
	//system("clear");
	printf("stop \n");
	stopEnergy(energy0);
	stopEnergy(energy1);
	//stopEnergy(energy2);
	sleep(6);
	
    printEnergy(energy0);
	printEnergy(energy1);
	//printEnergy(energy2);
}
Beispiel #2
0
	void EnergyMinimizer::finishIteration()
	{
		// Perform a force field update in regular intervals
		// or if the movement of some atoms during the last step
		// has been too large (to update the pair list)
		float max = 0.f;
		for(Size i = 0; i < direction_.size(); ++i)
		{
			float tmp = direction_[i].getSquareLength();
			if (tmp > max)
			{
				max = tmp;
			}
		}
		max = step_*sqrt(max);
		if (((force_field_->getUpdateFrequency() != 0)
				&& (number_of_iterations_ % force_field_->getUpdateFrequency() == 0))
						|| (max > 8.))
		{
			force_field_->update();
			//initial_grad_.invalidate();
		}
		
		// Take a snapshot of the system every snapshot_frequency_ iterations.
		if ((snapshot_ != 0) && (snapshot_frequency_ != 0) 
				&& (number_of_iterations_ % snapshot_frequency_ == 0))
		{
			takeSnapShot();
		}
		
		// print the energy every energy_output_frequency_ iterations
		if ((energy_output_frequency_ != 0)
				&& (number_of_iterations_ % energy_output_frequency_ == 0))
		{
			printEnergy();
		}
		
		// Check whether there the new energy and the old energy differ
		// significantly
		if (fabs(initial_energy_ - old_energy_) < energy_difference_bound_)
		{
			// count if there is the same energy between last iteration and
			// this iteration
			same_energy_counter_++;
		}
		else
		{
			same_energy_counter_ = 0;
		}
		
		// Increment the iteration counter
		++number_of_iterations_;
	}