// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
void averagingModel::undoVectorAverage
(
    volVectorField& fieldPrev,
    volVectorField& fieldNext,
    volScalarField& weightField,
    double** const& value,
    double** const& weight,
    double**const& mask,
    bool single
) const
{
// WARNING - not sure if this is valid for dilute model!!!

    if(!single) fieldPrev.internalField() = fieldNext.internalField();

    label cellI;
    vector valueVec;
    scalar weightP;

    for(int index=0; index< particleCloud_.numberOfParticles(); index++)
    {
        if(mask[index][0])
        {
            for(int subCell=0;subCell<particleCloud_.voidFractionM().cellsPerParticle()[index][0];subCell++)
            {
                //Info << "subCell=" << subCell << endl;
                cellI = particleCloud_.cellIDs()[index][subCell];

                if (cellI >= 0)
                {
                    for(int i=0;i<3;i++) valueVec[i] = value[index][i];
                    weightP = weight[index][subCell];

                    if(weightField[cellI] == weightP)
                    {
                        fieldNext[cellI] = vector(0,0,0);
                    }else
                    {
                        fieldNext[cellI] = (fieldNext[cellI]*weightField[cellI]-valueVec*weightP)/(weightField[cellI]-weightP);
                    }
                }
            }
        }
    }

    // correct cell values to patches
    fieldNext.correctBoundaryConditions();
}
Ejemplo n.º 2
0
graph calcEk
(
    const volVectorField& U,
    const Kmesh& K
)
{
    return kShellIntegration
    (
        fft::forwardTransform
        (
            ReComplexField(U.internalField()),
            K.nn()
        ),
        K
    );
}
void averagingModel::resetVectorAverage(volVectorField& prev,volVectorField& next,bool single) const
{
    if(!single) prev.internalField() = next.internalField();
    next.internalField() = vector::zero;
}