/*--------------------------------*- C++ -*----------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     | Website:  https://openfoam.org
    \\  /    A nd           | Version:  11
     \\/     M anipulation  |
\*---------------------------------------------------------------------------*/
FoamFile
{
    format          ascii;
    class           dictionary;
    location        "system";
    object          controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

application     foamMultiRun;

regionSolvers
{
    fluid           multiphaseEuler;
    solid           solid;
}

startFrom       startTime;

startTime       0;

stopAt          endTime;

endTime         8;

deltaT          0.0001;

writeControl    adjustableRunTime;

writeInterval   0.5;

purgeWrite      0;

writeFormat     ascii;

writePrecision  9;

writeCompression off;

timeFormat      general;

timePrecision   6;

runTimeModifiable yes;

adjustTimeStep  yes;

maxCo           0.5;

maxDi           200;

maxDeltaT       0.005;

functions
{
    #includeFunc wallHeatFlux(name=WHFliquid, writeFields=false, phase=liquid, region=fluid)
    #includeFunc wallHeatFlux(name=WHFgas, writeFields=false, phase=gas, region=fluid)
    #includeFunc wallHeatFlux(name=WHFsolid, writeFields=false, region=solid, log=yes)

    writeWallBoilingProperties
    {
        type            wallBoilingProperties;
        libs            ( "libmultiphaseEulerFoamFunctionObjects.so" );
        writeControl    writeTime;
        executeAtStart  no;
        region          fluid;
        phase           liquid;
    }
    outflow
    {
        type            surfaceFieldValue;
        libs            ( "libfieldFunctionObjects.so" );
        log             yes;
        writeFields     false;
        region          fluid;
        select          patch;
        patch           outlet;
        operation       sum;
        fields          ( alphaRhoPhi.gas  alphaRhoPhi.liquid);
    }
    inflow
    {
        type            surfaceFieldValue;
        libs            ( "libfieldFunctionObjects.so" );
        log             yes;
        writeFields     false;
        region          fluid;
        select          patch;
        patch           inlet;
        operation       sum;
        fields          ( alphaRhoPhi.gas alphaRhoPhi.liquid);
    }
    outletGas
    {
        type            surfaceFieldValue;
        libs            ( "libfieldFunctionObjects.so" );
        log             yes;
        writeFields     false;
        region          fluid;
        select          patch;
        patch           outlet;
        operation       sum;
        weightField     alphaRhoPhi.gas;
        fields          ( h.gas );
    }
    outletLiquid
    {
        type            surfaceFieldValue;
        libs            ( "libfieldFunctionObjects.so" );
        log             yes;
        writeFields     false;
        region          fluid;
        select          patch;
        patch           outlet;
        operation       sum;
        weightField     alphaRhoPhi.liquid;
        fields          ( h.liquid );
    }
    inletGas
    {
        type            surfaceFieldValue;
        libs            ( "libfieldFunctionObjects.so" );
        log             yes;
        writeFields     false;
        region          fluid;
        select          patch;
        patch           inlet;
        operation       sum;
        weightField     alphaRhoPhi.gas;
        fields          ( h.gas );
    }
    inletLiquid
    {
        type            surfaceFieldValue;
        libs            ( "libfieldFunctionObjects.so" );
        log             yes;
        writeFields     false;
        region          fluid;
        select          patch;
        patch           inlet;
        operation       sum;
        weightField     alphaRhoPhi.liquid;
        fields          ( h.liquid );
    }
    writeObjects1
    {
        type        writeObjects;
        libs        ("libutilityFunctionObjects.so");
        region      fluid;

        objects
        (
            rho.gas
            mu.gas
            psi.gas
            kappa.gas
            rho.liquid
            mu.liquid
            psi.liquid
            kappa.liquid
            h.liquid
            h.gas
        );

        writeControl    writeTime;
        writeInterval   1;
    }
}


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