void ParticleManagerTinkerToy::performStep( double x, double y )
{
	if ( m_indexSpringParticle != -1 )
	{
		addSpringForce( x, y );
	}
	performStep();
}
void UpdateController::run()
{
	while( _curStep != Done )
	{
		// Launch the thread and setup the callbacks
		performStep( _curStep );
		finalizeStep( _curStep );
	}
}
Example #3
0
	void performStep(pattern_t *pattern, uint64_t eventStep) {
		uint32_t factor = 0;
		uint32_t numberOfEventSteps = 0;
		uint32_t idx = 0;
		GSList *cur = NULL;
		uint32_t userStepsPerBar = 0;
		uint32_t eventStepsPerBar = 0;

		if (!sequencer.connected) {
			goto finish;
		}

		for (cur = (GSList *) pattern->children; cur != NULL;
		  cur = g_slist_next(cur)) {
			pattern_t *pattern = cur->data;
			performStep(pattern, eventStep);
		}

		if (IS_ROOT(pattern)) {
			goto finish;
		}

		if (IS_DUMMY(pattern)) {
			goto finish;
		}

		userStepsPerBar = NR_USERSTEPS_PER_BAR(pattern);
		eventStepsPerBar =
		  (userStepsPerBar * (EVENTSTEPS_PER_USERSTEP(TYPE(pattern))));

		factor = MAX_EVENTSTEPS_PER_BAR / eventStepsPerBar;

		if ((eventStep % factor) != 0) {
			goto finish;
		}

		numberOfEventSteps = eventStepsPerBar * NR_BARS(pattern);
		idx = (eventStep / factor) % numberOfEventSteps;

		if (IS_NOTE(pattern)) {
			performNoteEventStep(EVENTSTEP_AT(pattern, idx));
		} else {
			performControllerEventStep(EVENTSTEP_AT(pattern, idx));
		}
finish:
		return;
	}
Example #4
0
void IterativeSylvester::solve(SylvParams& pars, KronVector& x) const
{
	int max_steps = *(pars.max_num_iter);
	int steps = 1;
	double max_norm = *(pars.convergence_tol);
	double norm = performFirstStep(x);

	QuasiTriangular* kpow = matrixK->clone();
	QuasiTriangular* fpow = matrixF->clone();
	while (steps < max_steps && norm > max_norm) {
		kpow->multRight(SqSylvMatrix(*kpow)); // be careful to make copy
		fpow->multRight(SqSylvMatrix(*fpow)); // also here
		norm = performStep(*kpow, *fpow, x);
		steps++;
	}

	delete fpow;
	delete kpow;

	pars.converged = (norm <= max_norm);
	pars.iter_last_norm = norm;
	pars.num_iter = steps;
}