//------------------------------------ void simulationManager::idle( float dt ){ for (int i = 0; i < NUM_PARTICLES; i++){ memcpy(PTStemp[i],PM->PTS[i],sizeof(particle)); PTStemp[i]->frc = 0; } // simulate the copy using different types of simulations int simulation = 1; switch (simulation){ case 0: calculateForces(); calculateDerivatives(); addDerivativesToReal(dt); break; case 1: calculateForces(); calculateDerivatives(); addDerivativesToTemp(0.5f,dt); // reset the forces! for (int i = 0; i < NUM_PARTICLES; i++){ PTStemp[i]->frc = 0; } calculateForces(); calculateDerivatives(); addDerivativesToReal(dt); break; } }
/** Calculate the derivatives for each spectrum in the input workspace * * @param index :: index of the spectrum * @param order :: order of derivatives to calculate */ void SplineSmoothing::calculateSpectrumDerivatives(const int index, const int order) { if (order > 0) { API::MatrixWorkspace_sptr derivs = setupOutputWorkspace(m_inputWorkspace, order); for (int j = 0; j < order; ++j) { derivs->setSharedX(j, m_inputWorkspace->sharedX(index)); calculateDerivatives(*m_inputWorkspacePointData, *derivs, j + 1, index); } m_derivativeWorkspaceGroup->addWorkspace(derivs); } }
void BrooksCorey2p::calculateDerivativesHead(const Vec& psiW_vec, const Vec& psiN_vec) { for(int i=0; i<psiW_vec.ldim(); i++) { setHeads(i,psiW_vec[i],psiN_vec[i]); calculateDerivatives(); (*thetaW_p)[i] = thetaW; (*DthetaW_DpC_p)[i] = DthetaW_DpC; (*krW_p)[i] = krW; (*DkrW_DpC_p)[i] = DkrW_DpC; if (DDthetaW_DDpC_p) (*DDthetaW_DDpC_p)[i]=DDthetaW_DDpC; if (krN_p) { (*krN_p)[i]=krN; (*DkrN_DpC_p)[i]=DkrN_DpC; } } }