Program Listing for File TimeIntegration.cpp

Return to documentation for file (SPlisHSPlasH/PBF/TimeIntegration.cpp)

#include "TimeIntegration.h"

using namespace SPH;


// ----------------------------------------------------------------------------------------------
void TimeIntegration::semiImplicitEuler(
    const Real h,
    const Real mass,
    Vector3r &position,
    Vector3r &velocity,
    const Vector3r &acceleration)
{
    if (mass != 0.0)
    {
        velocity += acceleration * h;
        position += velocity * h;
    }
}

// ----------------------------------------------------------------------------------------------
void TimeIntegration::velocityUpdateFirstOrder(
    const Real h,
    const Real mass,
    const Vector3r &position,
    const Vector3r &oldPosition,
    Vector3r &velocity)
{
    if (mass != 0.0)
        velocity = (1.0 / h) * (position - oldPosition);
}

// ----------------------------------------------------------------------------------------------
void TimeIntegration::velocityUpdateSecondOrder(
    const Real h,
    const Real mass,
    const Vector3r &position,
    const Vector3r &oldPosition,
    const Vector3r &positionOfLastStep,
    Vector3r &velocity)
{
    if (mass != 0.0)
        velocity = (1.0 / h) * (1.5*position - 2.0*oldPosition + 0.5*positionOfLastStep);
}