/*---------------------------------------------------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  1.4                                   |
|   \\  /    A nd           | Web:      http://www.openfoam.org               |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/


FoamFile
{
    version         2.0;
    format          ascii;

    root            "";
    case            "";
    instance        "";
    local           "";

    class           dictionary;
    object          couplingProperties;
}

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

//===========================================================================//
// sub-models & settings

modelType "A"; // A or B

couplingInterval 25;

voidFractionModel divided;//centre;//

locateModel engine;

meshMotionModel noMeshMotion;

regionModel allRegion;

IOModel off;

probeModel off;

dataExchangeModel twoWayMPI;

averagingModel dense;//dilute;//

clockModel off;//off;

smoothingModel constDiffSmoothing;// localPSizeDiffSmoothing;// constDiffSmoothing; //

forceModels
(
    //GidaspowDrag
    BeetstraDrag
    //DiFeliceDrag
    gradPForce
    viscForce
    //KochHillDrag
    //DEMbasedDrag
    //RongDrag
    //Archimedes
    //volWeightedAverage
    //totalMomentumExchange
    //particleCellVolume
    //fieldTimeAverage
    //fieldStore
    //fieldVolWeighted
);

momCoupleModels
(
    implicitCouple
);

//turbulenceModelType "RASProperties";//"LESProperties";//OFversion24x
turbulenceModelType turbulenceProperties;//"LESProperties";//OFversion30x

//===========================================================================//
// sub-model properties

localPSizeDiffSmoothingProps
{
    lowerLimit 0.1;
    upperLimit 1e10;
    dSmoothingLength 7.5e-3;
    Csmoothing    1.0; 
}

constDiffSmoothingProps
{
    lowerLimit 0.1;
    upperLimit 1e10;
    smoothingLength 5e-3;
}

implicitCoupleProps
{
    velFieldName "U";
    granVelFieldName "Us";
    voidfractionFieldName "voidfraction";
}

ArchimedesProps
{
    gravityFieldName "g";
}
gradPForceProps
{
    pFieldName "p";
    voidfractionFieldName "voidfraction";
    velocityFieldName "U";
    interpolation true;
}

viscForceProps
{
    velocityFieldName "U";
    interpolation true;
}
volWeightedAverageProps
{
    scalarFieldNames
    (
        voidfraction
    );
    vectorFieldNames
    (
    );
    upperThreshold 0.999;
    lowerThreshold 0;
    verbose true;
}
totalMomentumExchangeProps
{
    implicitMomExFieldName "Ksl";
    explicitMomExFieldName "none";
    fluidVelFieldName "U";
    granVelFieldName "Us";
}
GidaspowDragProps
{
    verbose true;
    velFieldName "U";
    voidfractionFieldName "voidfraction";
    granVelFieldName "Us";
    interpolation true;
    phi 1;
}
DEMbasedDragProps
{
    velFieldName "U";
    voidfractionFieldName "voidfraction";
}

DiFeliceDragProps
{
    //verbose true;
    velFieldName "U";
    voidfractionFieldName "voidfraction";
    granVelFieldName "Us";
    interpolation true;
}

KochHillDragProps
{
    //verbose true;
    velFieldName "U";
    voidfractionFieldName "voidfraction";
    interpolation true;
    //forceSubModels
    //(
    //    ImExCorr
    //);
    implForceDEM true;
    //implForceDEMaccumulated true;
    //explicitCorr true;
//    scale 3;
}

BeetstraDragProps
{
    velFieldName "U";
    gravityFieldName "g";
    voidfractionFieldName "voidfraction";
    granVelFieldName "Us";
    interpolation true;
//    useFilteredDragModel ;
//    useParcelSizeDependentFilteredDrag ;
//    k       0.05;
//    aLimit  0.0;
//    verbose true;
}

RongDragProps
{
    verbose true;
    velFieldName "U";
    voidfractionFieldName "voidfraction";
    interpolation true;
    implForceDEM true;
    implForceDEMaccumulated true;
    granVelFieldName "Us";
}

virtualMassForceProps
{
    velFieldName "U";
}

particleCellVolumeProps
{
    upperThreshold 0.999;
    lowerThreshold 0.;
    verbose true;
}

fieldStoreProps
{
    scalarFieldNames
    (
    );

    vectorFieldNames
    (
        "U"
    );
}

fieldVolWeightedProps
{
    startTime 0;

    scalarFieldNames
    (
    );

    vectorFieldNames
    (
        "U"
    );
    useVolumeFraction true;
    volumeFractionName "voidfraction";
}

oneWayVTKProps
{
    couplingFilename "vtk_out%4.4d.vtk";
    maxNumberOfParticles 30000;
}

twoWayFilesProps
{
    maxNumberOfParticles 10100;
}

centreProps
{
    alphaMin 0.1;
}

engineProps
{
    treeSearch true;
}

dividedProps
{
    alphaMin 0.1;
    scaleUpVol 1.0;
}

twoWayMPIProps
{
    liggghtsPath "run.lmp";
}
// ************************************************************************* //
