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