Program Listing for File DragForce_Macklin2014.cpp

Return to documentation for file (SPlisHSPlasH/Drag/DragForce_Macklin2014.cpp)

#include "DragForce_Macklin2014.h"
#include "SPlisHSPlasH/TimeManager.h"

using namespace SPH;

DragForce_Macklin2014::DragForce_Macklin2014(FluidModel *model) :
    DragBase(model)
{
}

DragForce_Macklin2014::~DragForce_Macklin2014(void)
{
}

void DragForce_Macklin2014::step()
{
    const Real density0 = m_model->getDensity0();

    const unsigned int numParticles = m_model->numActiveParticles();

    #pragma omp parallel default(shared)
    {
        #pragma omp for schedule(static)
        for (int i = 0; i < (int)numParticles; i++)
        {
            Vector3r &ai = m_model->getAcceleration(i);
            const Vector3r &vi = m_model->getVelocity(i);
            ai -= m_dragCoefficient * static_cast<Real>(1.0) / m_model->getMass(i) * vi * (1.0 - m_model->getDensity(i) / density0);
        }
    }
}


void DragForce_Macklin2014::reset()
{
}