diff --git a/src/transportModels/twoPhaseProperties/Make/files b/src/transportModels/twoPhaseProperties/Make/files index 5457dcde52ee36829f67325f5ce4cc5f0d735762..2e5b03ff0e2499523e6a06f4ad3cdf5a29f61cf3 100644 --- a/src/transportModels/twoPhaseProperties/Make/files +++ b/src/transportModels/twoPhaseProperties/Make/files @@ -1,5 +1,6 @@ alphaContactAngle/alphaContactAngle/alphaContactAngleFvPatchScalarField.C alphaContactAngle/constantAlphaContactAngle/constantAlphaContactAngleFvPatchScalarField.C +alphaContactAngle/temperatureDependentAlphaContactAngle/temperatureDependentAlphaContactAngleFvPatchScalarField.C alphaContactAngle/dynamicAlphaContactAngle/dynamicAlphaContactAngleFvPatchScalarField.C alphaContactAngle/timeVaryingAlphaContactAngle/timeVaryingAlphaContactAngleFvPatchScalarField.C alphaFixedPressure/alphaFixedPressureFvPatchScalarField.C diff --git a/src/transportModels/twoPhaseProperties/alphaContactAngle/temperatureDependentAlphaContactAngle/temperatureDependentAlphaContactAngleFvPatchScalarField.C b/src/transportModels/twoPhaseProperties/alphaContactAngle/temperatureDependentAlphaContactAngle/temperatureDependentAlphaContactAngleFvPatchScalarField.C new file mode 100644 index 0000000000000000000000000000000000000000..e39da64c06712b6429facde9593317cf45fe28a1 --- /dev/null +++ b/src/transportModels/twoPhaseProperties/alphaContactAngle/temperatureDependentAlphaContactAngle/temperatureDependentAlphaContactAngleFvPatchScalarField.C @@ -0,0 +1,141 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "temperatureDependentAlphaContactAngleFvPatchScalarField.H" +#include "fvPatchFieldMapper.H" +#include "volFields.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::temperatureDependentAlphaContactAngleFvPatchScalarField:: +temperatureDependentAlphaContactAngleFvPatchScalarField +( + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF +) +: + alphaContactAngleFvPatchScalarField(p, iF), + TName_("T"), + theta0_() +{} + + +Foam::temperatureDependentAlphaContactAngleFvPatchScalarField:: +temperatureDependentAlphaContactAngleFvPatchScalarField +( + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF, + const dictionary& dict +) +: + alphaContactAngleFvPatchScalarField(p, iF, dict), + TName_(dict.lookupOrDefault<word>("T", "T")), + theta0_(DataEntry<scalar>::New("theta0", dict)) +{ + evaluate(); +} + + +Foam::temperatureDependentAlphaContactAngleFvPatchScalarField:: +temperatureDependentAlphaContactAngleFvPatchScalarField +( + const temperatureDependentAlphaContactAngleFvPatchScalarField& psf, + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF, + const fvPatchFieldMapper& mapper +) +: + alphaContactAngleFvPatchScalarField(psf, p, iF, mapper), + TName_(psf.TName_), + theta0_(psf.theta0_, false) +{} + + +Foam::temperatureDependentAlphaContactAngleFvPatchScalarField:: +temperatureDependentAlphaContactAngleFvPatchScalarField +( + const temperatureDependentAlphaContactAngleFvPatchScalarField& psf +) +: + alphaContactAngleFvPatchScalarField(psf), + TName_(psf.TName_), + theta0_(psf.theta0_, false) +{} + + +Foam::temperatureDependentAlphaContactAngleFvPatchScalarField:: +temperatureDependentAlphaContactAngleFvPatchScalarField +( + const temperatureDependentAlphaContactAngleFvPatchScalarField& psf, + const DimensionedField<scalar, volMesh>& iF +) +: + alphaContactAngleFvPatchScalarField(psf, iF), + TName_(psf.TName_), + theta0_(psf.theta0_, false) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::scalarField> +Foam::temperatureDependentAlphaContactAngleFvPatchScalarField::theta +( + const fvPatchVectorField&, + const fvsPatchVectorField& +) const +{ + return theta0_->value + ( + patch().lookupPatchField<volScalarField, scalar>(TName_) + ); +} + + +void Foam::temperatureDependentAlphaContactAngleFvPatchScalarField::write +( + Ostream& os +) const +{ + alphaContactAngleFvPatchScalarField::write(os); + writeEntryIfDifferent<word>(os, "T", "T", TName_); + theta0_->writeData(os); + writeEntry("value", os); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + makePatchTypeField + ( + fvPatchScalarField, + temperatureDependentAlphaContactAngleFvPatchScalarField + ); +} + +// ************************************************************************* // diff --git a/src/transportModels/twoPhaseProperties/alphaContactAngle/temperatureDependentAlphaContactAngle/temperatureDependentAlphaContactAngleFvPatchScalarField.H b/src/transportModels/twoPhaseProperties/alphaContactAngle/temperatureDependentAlphaContactAngle/temperatureDependentAlphaContactAngleFvPatchScalarField.H new file mode 100644 index 0000000000000000000000000000000000000000..ae92f01ae6843d908eb38d4a301dce62ea538b16 --- /dev/null +++ b/src/transportModels/twoPhaseProperties/alphaContactAngle/temperatureDependentAlphaContactAngle/temperatureDependentAlphaContactAngleFvPatchScalarField.H @@ -0,0 +1,182 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::temperatureDependentAlphaContactAngleFvPatchScalarField + +Description + Temperature-dependent constant alphaContactAngle scalar boundary condition. + + \heading Patch usage + + \table + Property | Description | Required | Default value + TName | Temperature field name | no | T + theta0 | Contact angle data | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type temperatureDependentAlphaContactAngle; + theta0 constant 60; + } + \endverbatim + +SeeAlso + Foam::alphaContactAngleFvPatchScalarField + Foam::constantAlphaContactAngleFvPatchScalarField + +SourceFiles + temperatureDependentAlphaContactAngleFvPatchScalarField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef temperatureDependentAlphaContactAngleFvPatchScalarField_H +#define temperatureDependentAlphaContactAngleFvPatchScalarField_H + +#include "alphaContactAngleFvPatchScalarField.H" +#include "DataEntry.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class temperatureDependentAlphaContactAngleFvPatch Declaration +\*---------------------------------------------------------------------------*/ + +class temperatureDependentAlphaContactAngleFvPatchScalarField +: + public alphaContactAngleFvPatchScalarField +{ + // Private data + + //- Name of temperature field, default = "T" + word TName_; + + //- Equilibrium contact angle table + autoPtr<DataEntry<scalar> > theta0_; + + +public: + + //- Runtime type information + TypeName("temperatureDependentAlphaContactAngle"); + + + // Constructors + + //- Construct from patch and internal field + temperatureDependentAlphaContactAngleFvPatchScalarField + ( + const fvPatch&, + const DimensionedField<scalar, volMesh>& + ); + + //- Construct from patch, internal field and dictionary + temperatureDependentAlphaContactAngleFvPatchScalarField + ( + const fvPatch&, + const DimensionedField<scalar, volMesh>&, + const dictionary& + ); + + //- Construct by mapping given + // temperatureDependentAlphaContactAngleFvPatchScalarField + // onto a new patch + temperatureDependentAlphaContactAngleFvPatchScalarField + ( + const temperatureDependentAlphaContactAngleFvPatchScalarField&, + const fvPatch&, + const DimensionedField<scalar, volMesh>&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + temperatureDependentAlphaContactAngleFvPatchScalarField + ( + const temperatureDependentAlphaContactAngleFvPatchScalarField& + ); + + //- Construct and return a clone + virtual tmp<fvPatchScalarField> clone() const + { + return tmp<fvPatchScalarField> + ( + new temperatureDependentAlphaContactAngleFvPatchScalarField + ( + *this + ) + ); + } + + //- Construct as copy setting internal field reference + temperatureDependentAlphaContactAngleFvPatchScalarField + ( + const temperatureDependentAlphaContactAngleFvPatchScalarField&, + const DimensionedField<scalar, volMesh>& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp<fvPatchScalarField> clone + ( + const DimensionedField<scalar, volMesh>& iF + ) const + { + return tmp<fvPatchScalarField> + ( + new temperatureDependentAlphaContactAngleFvPatchScalarField + ( + *this, + iF + ) + ); + } + + + // Member functions + + //- Return the equilibrium contact-angle + virtual tmp<scalarField> theta + ( + const fvPatchVectorField& Up, + const fvsPatchVectorField& nHat + ) const; + + //- Write + virtual void write(Ostream&) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* //