standardRadiation::standardRadiation
(
     surfaceFilmModel& owner,
    const dictionary& dict
)
:
    filmRadiationModel(typeName, owner, dict),
    QinPrimary_
    (
        IOobject
        (
            "Qin", // same name as Qin on primary region to enable mapping
            owner.time().timeName(),
            owner.regionMesh(),
            IOobject::NO_READ,
            IOobject::NO_WRITE
        ),
        owner.regionMesh(),
        dimensionedScalar("zero", dimMass/pow3(dimTime), 0.0),
        owner.mappedPushedFieldPatchTypes<scalar>()
    ),
    delta_(owner.delta()),
    beta_(readScalar(coeffDict_.lookup("beta"))),
    kappaBar_(readScalar(coeffDict_.lookup("kappaBar")))
{}
thixotropicViscosity::thixotropicViscosity
(
    surfaceFilmModel& owner,
    const dictionary& dict,
    volScalarField& mu
)
:
    filmViscosityModel(typeName, owner, dict, mu),
    a_("a", dimless/dimTime, coeffDict_),
    b_("b", dimless, coeffDict_),
    d_("d", dimless, coeffDict_),
    c_("c", pow(dimTime, d_.value() - scalar(1)), coeffDict_),
    mu0_("mu0", dimPressure*dimTime, coeffDict_),
    muInf_("muInf", mu0_.dimensions(), coeffDict_),
    K_(1.0 - Foam::sqrt(muInf_/mu0_)),
    lambda_
    (
        IOobject
        (
            typeName + ":lambda",
            owner.regionMesh().time().timeName(),
            owner.regionMesh(),
            IOobject::MUST_READ,
            IOobject::AUTO_WRITE
        ),
        owner.regionMesh()
    )
{
    lambda_.min(1.0);
    lambda_.max(0.0);

    // Initialise viscosity to inf value because it cannot be evaluated yet
    mu_ = muInf_;
    mu_.correctBoundaryConditions();
}
Пример #3
0
standardRadiation::standardRadiation
(
    const surfaceFilmModel& owner,
    const dictionary& dict
)
:
    filmRadiationModel(typeName, owner, dict),
    QrPrimary_
    (
        IOobject
        (
            //pqr "Qr", // (net radiation) same name as Qr on primary region to enable mapping
            "Qin", // (incident radiation) same name as Qr on primary region to enable mapping
            owner.time().timeName(),
            owner.regionMesh(),
            IOobject::NO_READ,
            IOobject::NO_WRITE
        ),
        owner.regionMesh(),
        dimensionedScalar("zero", dimMass/pow3(dimTime), 0.0),
        owner.mappedPushedFieldPatchTypes<scalar>()
    ),
    QrNet_
    (
        IOobject
        (
            "QrNet",
            owner.time().timeName(),
            owner.regionMesh(),
            IOobject::NO_READ,
            IOobject::NO_WRITE
        ),
        owner.regionMesh(),
        dimensionedScalar("zero", dimMass/pow3(dimTime), 0.0),
        zeroGradientFvPatchScalarField::typeName
    ),
    /*QrFilm_ is used for diagnostics*/
    QrFilm_
    (
        IOobject
        (
            "QrFilm",
            owner.time().timeName(),
            owner.regionMesh(),
            IOobject::NO_READ,
            IOobject::NO_WRITE
        ),
        owner.regionMesh(),
        dimensionedScalar("zero", dimMass/pow3(dimTime), 0.0),
        zeroGradientFvPatchScalarField::typeName
    ),
    delta_(owner.delta()),
    deltaMin_(readScalar(coeffs_.lookup("deltaMin"))),
    beta_(readScalar(coeffs_.lookup("beta"))),
    kappaBar_(readScalar(coeffs_.lookup("kappaBar")))
{}
thixotropicViscosity::thixotropicViscosity
(
    surfaceFilmModel& owner,
    const dictionary& dict,
    volScalarField& mu
)
:
    filmViscosityModel(typeName, owner, dict, mu),
    a_(coeffDict_.lookup("a")),
    b_(coeffDict_.lookup("b")),
    c_(coeffDict_.lookup("c")),
    d_(coeffDict_.lookup("d")),
    mu0_(coeffDict_.lookup("mu0")),
    muInf_(coeffDict_.lookup("muInf")),
    K_(1.0 - Foam::sqrt(muInf_/mu0_)),
    lambda_
    (
        IOobject
        (
            typeName + ":lambda",
            owner.regionMesh().time().timeName(),
            owner.regionMesh(),
            IOobject::MUST_READ_IF_MODIFIED,
            IOobject::AUTO_WRITE
        ),
        owner.regionMesh()
    )
{
    lambda_.min(1.0);
    lambda_.max(0.0);

    // initialise viscosity to inf value
    // - cannot call updateMu() since this calls film.netMass() which
    //   cannot be evaluated yet (still in construction)
    mu_ = muInf_;
    mu_.correctBoundaryConditions();
}
Пример #5
0
filmSubModelBase::filmSubModelBase
(
    const word& modelName,
    surfaceFilmModel& owner,
    const dictionary& dict,
    const word& baseName,
    const word& modelType
)
:
    subModelBase
    (
        modelName,
        owner.outputProperties(),
        dict,
        baseName,
        modelType
    ),
    owner_(owner)
{}
mappedConvectiveHeatTransfer::mappedConvectiveHeatTransfer
(
    surfaceFilmModel& owner,
    const dictionary& dict
)
:
    heatTransferModel(owner),
    htcConvPrimary_
    (
        IOobject
        (
            "htcConv",
            owner.time().timeName(),
            owner.primaryMesh(),
            IOobject::MUST_READ,
            IOobject::AUTO_WRITE
        ),
        owner.primaryMesh()
    ),
    htcConvFilm_
    (
        IOobject
        (
            htcConvPrimary_.name(), // must have same name as above for mapping
            owner.time().timeName(),
            owner.regionMesh(),
            IOobject::NO_READ,
            IOobject::NO_WRITE
        ),
        owner.regionMesh(),
        dimensionedScalar("zero", dimMass/pow3(dimTime)/dimTemperature, 0.0),
        owner.mappedPushedFieldPatchTypes<scalar>()
    )
{
    // Update the primary-side convective heat transfer coefficient
    htcConvPrimary_.correctBoundaryConditions();

    // Pull the data from the primary region via direct mapped BCs
    htcConvFilm_.correctBoundaryConditions();
}
Пример #7
0
constantRadiation::constantRadiation
(
    surfaceFilmModel& owner,
    const dictionary& dict
)
:
    filmRadiationModel(typeName, owner, dict),
    QrConst_
    (
        IOobject
        (
            typeName + ":QrConst",
            owner.time().timeName(),
            owner.regionMesh(),
            IOobject::MUST_READ,
            IOobject::AUTO_WRITE
        ),
        owner.regionMesh()
    ),
    mask_
    (
        IOobject
        (
            typeName + ":mask",
            owner.time().timeName(),
            owner.regionMesh(),
            IOobject::READ_IF_PRESENT,
            IOobject::AUTO_WRITE
        ),
        owner.regionMesh(),
        dimensionedScalar("one", dimless, 1.0)
    ),
    absorptivity_(readScalar(coeffDict_.lookup("absorptivity"))),
    timeStart_(readScalar(coeffDict_.lookup("timeStart"))),
    duration_(readScalar(coeffDict_.lookup("duration")))
{
    mask_ = pos(mask_);
}
Пример #8
0
filmSubModelBase::filmSubModelBase(surfaceFilmModel& owner)
:
    subModelBase(owner.outputProperties()),
    owner_(owner)
{}
rampingRadiation::rampingRadiation
(
    const surfaceFilmModel& owner,
    const dictionary& dict
)
:
    filmRadiationModel(typeName, owner, dict),
    QrConst_
    (
        IOobject
        (
            typeName + "_QrConst",
            owner.time().timeName(),
            owner.regionMesh(),
            IOobject::MUST_READ,
            IOobject::AUTO_WRITE
        ),
        owner.regionMesh()
    ),
    mask_
    (
        IOobject
        (
            typeName + "_mask",
            owner.time().timeName(),
            owner.regionMesh(),
            IOobject::MUST_READ,
            IOobject::AUTO_WRITE
        ),
        owner.regionMesh()//,
        // dimensionedScalar("one", dimless, 1.0)//,
        // zeroGradientFvPatchScalarField::typeName
    ),
    absorptivity_(readScalar(coeffs_.lookup("absorptivity"))),
    // initialValue_(readScalar(coeffs_.lookup("initialValue"))),
    rampTimeInterval_(readScalar(coeffs_.lookup("rampTimeInterval"))),
    rampStep_(readScalar(coeffs_.lookup("rampStep"))),
    rampStartTime_(0.0),
    Qin_
    (
        IOobject
        (
            "Qin", // same name as Qin on primary region to enable mapping
            owner.time().timeName(),
            owner.regionMesh(),
            IOobject::NO_READ,
            IOobject::NO_WRITE
        ),
        owner.regionMesh(),
        dimensionedScalar("zero", dimMass/pow3(dimTime), 0.0),
        zeroGradientFvPatchScalarField::typeName
        ),
    timeStart_(readScalar(coeffs_.lookup("timeStart"))),
    duration_(readScalar(coeffs_.lookup("duration")))
{
    mask_ = pos(mask_ - 0.5);
    rampStartTime_=max(timeStart_,owner.time().value());

    // for non-uniform heat flux (2d parabolic profile)
    // forAll(QrConst_,cellI){
    //     scalar x=owner.regionMesh().cellCentres()[cellI][0];
    //     scalar y=owner.regionMesh().cellCentres()[cellI][1];
    //     scalar xCenter = 0.255;
    //     scalar yCenter = 0.605;
    //     QrConst_[cellI] = (-26.02*pow(x-xCenter,2)-25.94*pow(y-yCenter,2)+54.98)*1e3;
    // }
}