Example #1
0
bool Foam::cfdemCloudIB::evolve()
{
    numberOfParticlesChanged_ = false;
    arraysReallocated_=false;
    bool doCouple=false;

    if (dataExchangeM().couple())
    {
        Info << "\n timeStepFraction() = " << dataExchangeM().timeStepFraction() << endl;
        doCouple=true;

        if(verbose_) Info << "- getDEMdata()" << endl;
        getDEMdata();
        Info << "nr particles = " << numberOfParticles() << endl;

        // search cellID of particles
        if(verbose_) Info << "- findCell()" << endl;
        locateM().findCell(NULL,positions_,cellIDs_,numberOfParticles());
        if(verbose_) Info << "findCell done." << endl;

        // set void fraction field
        if(verbose_) Info << "- setvoidFraction()" << endl;
        voidFractionM().setvoidFraction(NULL,voidfractions_,particleWeights_,particleVolumes_);
        if(verbose_) Info << "setvoidFraction done." << endl;

        // set particles forces
        if(verbose_) Info << "- setForce(forces_)" << endl;
        for(int index = 0;index <  numberOfParticles_; ++index){
            for(int i=0;i<3;i++){
                impForces_[index][i] = 0;
                expForces_[index][i] = 0;
                DEMForces_[index][i] = 0;
            }
        }
        for (int i=0;i<nrForceModels();i++) forceM(i).setForce();
        if(verbose_) Info << "setForce done." << endl;

        // write DEM data
        if(verbose_) Info << " -giveDEMdata()" << endl;
        giveDEMdata();
    }
    Info << "evolve done." << endl;

    //if(verbose_)    #include "debugInfo.H";

    // do particle IO
    IOM().dumpDEMdata();

    return doCouple;
}
void Foam::cfdemCloud::findCells()
{
    locateM().findCell(NULL,positions_,cellIDs_,numberOfParticles());
}