48 temperaturePhaseChangeTwoPhaseMixture,
60 const thermoIncompressibleTwoPhaseMixture&
mixture,
64 temperaturePhaseChangeTwoPhaseMixture(
mixture,
mesh),
143 optionalSubDict(
type() +
"Coeffs").
get<scalar>(
"spread")
158 return Pair<tmp<volScalarField>>
160 (alphalCoeff*mDotc_)/(
mixture_.alpha2() + SMALL),
161 -(alphalCoeff*mDote_)/(
mixture_.alpha1() + SMALL)
166Foam::Pair<Foam::tmp<Foam::volScalarField>>
170 return Pair<tmp<volScalarField>>
178Foam::Pair<Foam::tmp<Foam::volScalarField>>
182 return Pair<tmp<volScalarField>>
184 tmp<volScalarField>(mDotc_),
185 tmp<volScalarField>(mDote_)
190Foam::Pair<Foam::tmp<Foam::volScalarField>>
194 const twoPhaseMixtureEThermo&
thermo =
204 Pair<tmp<volScalarField>> mDotce(mDot());
206 return Pair<tmp<volScalarField>>
208 mDotc_*
pos(TSat -
T.oldTime())/(TSat -
T.oldTime()),
209 -mDote_*
pos(
T.oldTime() - TSat)/(
T.oldTime() - TSat)
214Foam::tmp<Foam::fvScalarMatrix>
221 auto& TSource = tTSource.ref();
223 const twoPhaseMixtureEThermo&
thermo =
234 TSource =
fvm::Sp(IHRcoeff,
T) - IHRcoeff*TSat;
249 const twoPhaseMixtureEThermo&
thermo =
261 mDotc_ = interfaceArea_*R_*
max(TSat -
T,
T0)/
L;
262 mDote_ = interfaceArea_*R_*
max(
T - TSat,
T0)/
L;
278 if (
max(mDotc_) > MDotMin)
291 if (
max(mDote_) > MDotMin)
306void Foam::temperaturePhaseChangeTwoPhaseMixtures::interfaceHeatResistance::
317 cutCellIso cutCell(mesh_, ap);
319 forAll(interfaceArea_, celli)
321 label status = cutCell.calcSubCell(celli, 0.5);
322 interfaceArea_[celli] = 0;
325 interfaceArea_[celli] =
326 mag(cutCell.faceArea())/mesh_.V()[celli];
332Foam::Pair<Foam::tmp<Foam::volScalarField>>
339 return Pair<tmp<volScalarField>>
352 optionalSubDict(
type() +
"Coeffs").readEntry(
"R", R_);
353 optionalSubDict(
type() +
"Coeffs").readEntry(
"spread", spread_);
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
const volScalarField & alpha1
const volScalarField & alpha2
static FOAM_NO_DANGLING_REFERENCE const volPointInterpolation & New(const fvMesh &mesh, Args &&... args)
An ordered pair of two objects of type <T> with first() and second() elements.
static const word dictName
The dictionary name ("thermophysicalProperties").
const thermoIncompressibleTwoPhaseMixture & mixture_
Reference to the thermoIncompressibleTwoPhaseMixture.
virtual bool read()
Read the transportProperties dictionary and update.
interfaceHeatResistance(const thermoIncompressibleTwoPhaseMixture &mixture, const fvMesh &mesh)
Construct from components.
virtual Pair< tmp< volScalarField > > vDot() const
Return the volumetric condensation and vaporisation rates as.
virtual Pair< tmp< volScalarField > > mDotAlphal() const
Return the mass condensation and vaporisation rates as a.
virtual Pair< tmp< volScalarField > > mDotDeltaT() const
Return the mass condensation and vaporisation rates as a.
virtual tmp< fvScalarMatrix > TSource() const
Source for T equarion.
virtual void correct()
Correct the interfaceHeatResistance phaseChange model.
virtual Pair< tmp< volScalarField > > vDotAlphal() const
Volumetric source for alpha (used by alphaEq).
virtual bool read()
Read the transportProperties dictionary and update.
virtual Pair< tmp< volScalarField > > mDot() const
Return the mass condensation and vaporisation rates as coefficients.
static tmp< T > New(Args &&... args)
Construct tmp with forwarding arguments.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
Provides functions smooth spread and sweep which use the FaceCellWave algorithm to smooth and redistr...
Calculate the finiteVolume matrix for implicit and explicit sources.
List< ReturnType > get(const UPtrList< T > &list, const AccessOp &aop)
List of values generated by applying the access operation to each list item.
void spreadSource(volScalarField &mDotOut, const volScalarField &mDotIn, const volScalarField &alpha1, const volScalarField &alpha2, const dimensionedScalar &D, const scalar cutoff)
zeroField Sp(const Foam::zero, const GeometricField< Type, fvPatchField, volMesh > &)
A no-op source.
Type gAverage(const FieldField< Field, Type > &f, const label comm)
The global arithmetic average of a FieldField.
dimensionedScalar pos(const dimensionedScalar &ds)
Type & refCast(U &obj)
A dynamic_cast (for references) to Type reference.
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
const dimensionSet dimPower
const dimensionSet dimless
Dimensionless.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
const dimensionSet dimEnergy
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
GeometricField< scalar, fvPatchField, volMesh > volScalarField
const dimensionSet dimArea(sqr(dimLength))
dimensionSet clamp(const dimensionSet &a, const dimensionSet &range)
MinMax< scalar > scalarMinMax
A scalar min/max range.
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
const dimensionSet dimTemperature(0, 0, 0, 1, 0, 0, 0)
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
static constexpr const zero Zero
Global zero (0).
bool interpolate(const vector &p1, const vector &p2, const vector &o, vector &n, scalar l)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
const dimensionSet dimDensity
const dimensionedScalar & D
psiReactionThermo & thermo
Info<< "Creating temperaturePhaseChangeTwoPhaseMixture\n"<< endl;autoPtr< temperaturePhaseChangeTwoPhaseMixture > mixture
#define forAll(list, i)
Loop across all elements in list.
const vector L(dict.get< vector >("L"))