Beispiel #1
0
//------------------------------------
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);
    }
}
Beispiel #3
0
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;
        }
    }
}