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 ); } }
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; }
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; }