Program Listing for File TimeManager.cpp

Return to documentation for file (SPlisHSPlasH/TimeManager.cpp)

#include "TimeManager.h"

using namespace SPH;
using namespace GenParam;

int TimeManager::TIME_STEP_SIZE = -1;
TimeManager* TimeManager::current = 0;

TimeManager::TimeManager ()
{
    time = 0;
    h = static_cast<Real>(0.001);
}

TimeManager::~TimeManager ()
{
    current = 0;
}

void TimeManager::initParameters()
{
    ParameterObject::initParameters();

    TIME_STEP_SIZE = createNumericParameter("timeStepSize", "Time step size", &h);
    setGroup(TIME_STEP_SIZE, "General|General");
    setDescription(TIME_STEP_SIZE, "The initial time step size used for the time integration. If you use an adaptive time stepping, this size will change during the simulation.");
    static_cast<RealParameter*>(getParameter(TIME_STEP_SIZE))->setMinValue(static_cast<Real>(1e-9));
}

TimeManager* TimeManager::getCurrent ()
{
    if (current == 0)
    {
        current = new TimeManager ();
        current->initParameters();
    }
    return current;
}

void TimeManager::setCurrent (TimeManager* tm)
{
    current = tm;
}

bool TimeManager::hasCurrent()
{
    return (current != 0);
}

Real TimeManager::getTime()
{
    return time;
}

void TimeManager::setTime(Real t)
{
    time = t;
}

Real TimeManager::getTimeStepSize()
{
    return h;
}

void TimeManager::setTimeStepSize(Real tss)
{
    h = tss;
}

void SPH::TimeManager::saveState(BinaryFileWriter &binWriter)
{
    binWriter.write(time);
    binWriter.write(h);
}

void SPH::TimeManager::loadState(BinaryFileReader &binReader)
{
    binReader.read(time);
    binReader.read(h);
}