mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge branch 'master' of /home/dm4/OpenFOAM/repositories/OpenFOAM-dev
This commit is contained in:
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -104,13 +104,15 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
Info<< "Setting boundary layer velocity" << nl << endl;
|
Info<< "Setting boundary layer velocity" << nl << endl;
|
||||||
scalar yblv = ybl.value();
|
scalar yblv = ybl.value();
|
||||||
forAll(U, celli)
|
forAll(U, cellI)
|
||||||
{
|
{
|
||||||
if (y[celli] <= yblv)
|
if (y[cellI] <= yblv)
|
||||||
{
|
{
|
||||||
U[celli] *= ::pow(y[celli]/yblv, (1.0/7.0));
|
mask[cellI] = 1;
|
||||||
|
U[cellI] *= ::pow(y[cellI]/yblv, (1.0/7.0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mask.correctBoundaryConditions();
|
||||||
|
|
||||||
Info<< "Writing U\n" << endl;
|
Info<< "Writing U\n" << endl;
|
||||||
U.write();
|
U.write();
|
||||||
@ -128,11 +130,15 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (isA<incompressible::RASModel>(turbulence()))
|
if (isA<incompressible::RASModel>(turbulence()))
|
||||||
{
|
{
|
||||||
// Calculate nut
|
// Calculate nut - reference nut is calculated by the turbulence model
|
||||||
|
// on its construction
|
||||||
tmp<volScalarField> tnut = turbulence->nut();
|
tmp<volScalarField> tnut = turbulence->nut();
|
||||||
volScalarField& nut = tnut();
|
volScalarField& nut = tnut();
|
||||||
volScalarField S(mag(dev(symm(fvc::grad(U)))));
|
volScalarField S(mag(dev(symm(fvc::grad(U)))));
|
||||||
nut = sqr(kappa*min(y, ybl))*::sqrt(2)*S;
|
nut = (1 - mask)*nut + mask*sqr(kappa*min(y, ybl))*::sqrt(2)*S;
|
||||||
|
|
||||||
|
// do not correct BC - wall functions will 'undo' manipulation above
|
||||||
|
// by using nut from turbulence model
|
||||||
|
|
||||||
if (args.optionFound("writenut"))
|
if (args.optionFound("writenut"))
|
||||||
{
|
{
|
||||||
@ -140,9 +146,6 @@ int main(int argc, char *argv[])
|
|||||||
nut.write();
|
nut.write();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create G field - used by RAS wall functions
|
|
||||||
volScalarField G(turbulence().GName(), nut*2*sqr(S));
|
|
||||||
|
|
||||||
|
|
||||||
//--- Read and modify turbulence fields
|
//--- Read and modify turbulence fields
|
||||||
|
|
||||||
@ -150,8 +153,11 @@ int main(int argc, char *argv[])
|
|||||||
tmp<volScalarField> tk = turbulence->k();
|
tmp<volScalarField> tk = turbulence->k();
|
||||||
volScalarField& k = tk();
|
volScalarField& k = tk();
|
||||||
scalar ck0 = pow025(Cmu)*kappa;
|
scalar ck0 = pow025(Cmu)*kappa;
|
||||||
k = sqr(nut/(ck0*min(y, ybl)));
|
k = (1 - mask)*k + mask*sqr(nut/(ck0*min(y, ybl)));
|
||||||
k.correctBoundaryConditions();
|
|
||||||
|
// do not correct BC - operation may use inconsistent fields wrt these
|
||||||
|
// local manipulations
|
||||||
|
// k.correctBoundaryConditions();
|
||||||
|
|
||||||
Info<< "Writing k\n" << endl;
|
Info<< "Writing k\n" << endl;
|
||||||
k.write();
|
k.write();
|
||||||
@ -161,8 +167,11 @@ int main(int argc, char *argv[])
|
|||||||
tmp<volScalarField> tepsilon = turbulence->epsilon();
|
tmp<volScalarField> tepsilon = turbulence->epsilon();
|
||||||
volScalarField& epsilon = tepsilon();
|
volScalarField& epsilon = tepsilon();
|
||||||
scalar ce0 = ::pow(Cmu, 0.75)/kappa;
|
scalar ce0 = ::pow(Cmu, 0.75)/kappa;
|
||||||
epsilon = ce0*k*sqrt(k)/min(y, ybl);
|
epsilon = (1 - mask)*epsilon + mask*ce0*k*sqrt(k)/min(y, ybl);
|
||||||
epsilon.correctBoundaryConditions();
|
|
||||||
|
// do not correct BC - wall functions will use non-updated k from
|
||||||
|
// turbulence model
|
||||||
|
// epsilon.correctBoundaryConditions();
|
||||||
|
|
||||||
Info<< "Writing epsilon\n" << endl;
|
Info<< "Writing epsilon\n" << endl;
|
||||||
epsilon.write();
|
epsilon.write();
|
||||||
@ -181,12 +190,12 @@ int main(int argc, char *argv[])
|
|||||||
if (omegaHeader.headerOk())
|
if (omegaHeader.headerOk())
|
||||||
{
|
{
|
||||||
volScalarField omega(omegaHeader, mesh);
|
volScalarField omega(omegaHeader, mesh);
|
||||||
omega =
|
dimensionedScalar k0("VSMALL", k.dimensions(), VSMALL);
|
||||||
epsilon
|
omega = (1 - mask)*omega + mask*epsilon/(Cmu*k + k0);
|
||||||
/(
|
|
||||||
Cmu*k+dimensionedScalar("VSMALL", k.dimensions(), VSMALL)
|
// do not correct BC - wall functions will use non-updated k from
|
||||||
);
|
// turbulence model
|
||||||
omega.correctBoundaryConditions();
|
// omega.correctBoundaryConditions();
|
||||||
|
|
||||||
Info<< "Writing omega\n" << endl;
|
Info<< "Writing omega\n" << endl;
|
||||||
omega.write();
|
omega.write();
|
||||||
@ -207,7 +216,9 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
volScalarField nuTilda(nuTildaHeader, mesh);
|
volScalarField nuTilda(nuTildaHeader, mesh);
|
||||||
nuTilda = nut;
|
nuTilda = nut;
|
||||||
nuTilda.correctBoundaryConditions();
|
|
||||||
|
// do not correct BC
|
||||||
|
// nuTilda.correctBoundaryConditions();
|
||||||
|
|
||||||
Info<< "Writing nuTilda\n" << endl;
|
Info<< "Writing nuTilda\n" << endl;
|
||||||
nuTilda.write();
|
nuTilda.write();
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -23,9 +23,9 @@ License
|
|||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
Info<< "Reading field U\n" << endl;
|
Info<< "Reading field U\n" << endl;
|
||||||
volVectorField U
|
volVectorField U
|
||||||
(
|
(
|
||||||
IOobject
|
IOobject
|
||||||
(
|
(
|
||||||
"U",
|
"U",
|
||||||
@ -35,27 +35,43 @@ License
|
|||||||
IOobject::NO_WRITE
|
IOobject::NO_WRITE
|
||||||
),
|
),
|
||||||
mesh
|
mesh
|
||||||
);
|
);
|
||||||
|
|
||||||
Info<< "Calculating wall distance field" << endl;
|
Info<< "Calculating wall distance field" << endl;
|
||||||
volScalarField y(wallDist(mesh).y());
|
volScalarField y(wallDist(mesh).y());
|
||||||
|
|
||||||
// Set the mean boundary-layer thickness
|
// Set the mean boundary-layer thickness
|
||||||
dimensionedScalar ybl("ybl", dimLength, 0);
|
dimensionedScalar ybl("ybl", dimLength, 0);
|
||||||
|
|
||||||
if (args.optionFound("ybl"))
|
if (args.optionFound("ybl"))
|
||||||
{
|
{
|
||||||
// If the boundary-layer thickness is provided use it
|
// If the boundary-layer thickness is provided use it
|
||||||
ybl.value() = args.optionRead<scalar>("ybl");
|
ybl.value() = args.optionRead<scalar>("ybl");
|
||||||
}
|
}
|
||||||
else if (args.optionFound("Cbl"))
|
else if (args.optionFound("Cbl"))
|
||||||
{
|
{
|
||||||
// Calculate boundary layer thickness as Cbl * mean distance to wall
|
// Calculate boundary layer thickness as Cbl*mean distance to wall
|
||||||
ybl.value() = gAverage(y) * args.optionRead<scalar>("Cbl");
|
ybl.value() = gAverage(y)*args.optionRead<scalar>("Cbl");
|
||||||
}
|
}
|
||||||
|
|
||||||
Info<< "\nCreating boundary-layer for U of thickness "
|
Info<< "\nCreating boundary-layer for U of thickness "
|
||||||
<< ybl.value() << " m" << nl << endl;
|
<< ybl.value() << " m" << nl << endl;
|
||||||
|
|
||||||
|
Info<< "Creating mask field" << endl;
|
||||||
|
volScalarField mask
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"mask",
|
||||||
|
runTime.timeName(),
|
||||||
|
mesh,
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::NO_WRITE
|
||||||
|
),
|
||||||
|
mesh,
|
||||||
|
dimensionedScalar("zero", dimless, 0.0),
|
||||||
|
zeroGradientFvPatchScalarField::typeName
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -23,9 +23,6 @@ License
|
|||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "cyclicAMIFvPatchField.H"
|
|
||||||
#include "transformField.H"
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
template<class Type>
|
template<class Type>
|
||||||
@ -157,7 +154,15 @@ Foam::cyclicAMIFvPatchField<Type>::patchNeighbourField() const
|
|||||||
|
|
||||||
Field<Type> pnf(iField, nbrFaceCells);
|
Field<Type> pnf(iField, nbrFaceCells);
|
||||||
|
|
||||||
tmp<Field<Type> > tpnf(new Field<Type>(cyclicAMIPatch_.interpolate(pnf)));
|
tmp<Field<Type> > tpnf;
|
||||||
|
if (cyclicAMIPatch_.applyLowWeightCorrection())
|
||||||
|
{
|
||||||
|
tpnf = cyclicAMIPatch_.interpolate(pnf, this->patchInternalField()());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tpnf = cyclicAMIPatch_.interpolate(pnf);
|
||||||
|
}
|
||||||
|
|
||||||
if (doTransform())
|
if (doTransform())
|
||||||
{
|
{
|
||||||
@ -203,7 +208,15 @@ void Foam::cyclicAMIFvPatchField<Type>::updateInterfaceMatrix
|
|||||||
// Transform according to the transformation tensors
|
// Transform according to the transformation tensors
|
||||||
transformCoupleField(pnf, cmpt);
|
transformCoupleField(pnf, cmpt);
|
||||||
|
|
||||||
|
if (cyclicAMIPatch_.applyLowWeightCorrection())
|
||||||
|
{
|
||||||
|
scalarField pif(psiInternal, cyclicAMIPatch_.faceCells());
|
||||||
|
pnf = cyclicAMIPatch_.interpolate(pnf, pif);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
pnf = cyclicAMIPatch_.interpolate(pnf);
|
pnf = cyclicAMIPatch_.interpolate(pnf);
|
||||||
|
}
|
||||||
|
|
||||||
// Multiply the field by coefficients and add into the result
|
// Multiply the field by coefficients and add into the result
|
||||||
const labelUList& faceCells = cyclicAMIPatch_.faceCells();
|
const labelUList& faceCells = cyclicAMIPatch_.faceCells();
|
||||||
@ -232,7 +245,15 @@ void Foam::cyclicAMIFvPatchField<Type>::updateInterfaceMatrix
|
|||||||
// Transform according to the transformation tensors
|
// Transform according to the transformation tensors
|
||||||
transformCoupleField(pnf);
|
transformCoupleField(pnf);
|
||||||
|
|
||||||
|
if (cyclicAMIPatch_.applyLowWeightCorrection())
|
||||||
|
{
|
||||||
|
Field<Type> pif(psiInternal, cyclicAMIPatch_.faceCells());
|
||||||
|
pnf = cyclicAMIPatch_.interpolate(pnf, pif);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
pnf = cyclicAMIPatch_.interpolate(pnf);
|
pnf = cyclicAMIPatch_.interpolate(pnf);
|
||||||
|
}
|
||||||
|
|
||||||
// Multiply the field by coefficients and add into the result
|
// Multiply the field by coefficients and add into the result
|
||||||
const labelUList& faceCells = cyclicAMIPatch_.faceCells();
|
const labelUList& faceCells = cyclicAMIPatch_.faceCells();
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -55,7 +55,11 @@ void Foam::cyclicAMIFvPatch::makeWeights(scalarField& w) const
|
|||||||
|
|
||||||
const scalarField nbrDeltas
|
const scalarField nbrDeltas
|
||||||
(
|
(
|
||||||
interpolate(nbrPatch.nf() & nbrPatch.fvPatch::delta())
|
interpolate
|
||||||
|
(
|
||||||
|
nbrPatch.nf() & nbrPatch.fvPatch::delta(),
|
||||||
|
scalarField(this->size(), 1.0)
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
forAll(deltas, faceI)
|
forAll(deltas, faceI)
|
||||||
@ -82,7 +86,14 @@ Foam::tmp<Foam::vectorField> Foam::cyclicAMIFvPatch::delta() const
|
|||||||
{
|
{
|
||||||
const vectorField patchD(fvPatch::delta());
|
const vectorField patchD(fvPatch::delta());
|
||||||
|
|
||||||
const vectorField nbrPatchD(interpolate(nbrPatch.fvPatch::delta()));
|
const vectorField nbrPatchD
|
||||||
|
(
|
||||||
|
interpolate
|
||||||
|
(
|
||||||
|
nbrPatch.fvPatch::delta(),
|
||||||
|
vectorField(this->size(), vector::zero)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
tmp<vectorField> tpdv(new vectorField(patchD.size()));
|
tmp<vectorField> tpdv(new vectorField(patchD.size()));
|
||||||
vectorField& pdv = tpdv();
|
vectorField& pdv = tpdv();
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -154,16 +154,29 @@ public:
|
|||||||
//- Return delta (P to N) vectors across coupled patch
|
//- Return delta (P to N) vectors across coupled patch
|
||||||
virtual tmp<vectorField> delta() const;
|
virtual tmp<vectorField> delta() const;
|
||||||
|
|
||||||
template<class Type>
|
bool applyLowWeightCorrection() const
|
||||||
tmp<Field<Type> > interpolate(const Field<Type>& fld) const
|
|
||||||
{
|
{
|
||||||
return cyclicAMIPolyPatch_.interpolate(fld);
|
return cyclicAMIPolyPatch_.applyLowWeightCorrection();
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class Type>
|
template<class Type>
|
||||||
tmp<Field<Type> > interpolate(const tmp<Field<Type> >& tFld) const
|
tmp<Field<Type> > interpolate
|
||||||
|
(
|
||||||
|
const Field<Type>& fld,
|
||||||
|
const UList<Type>& defaultValues = UList<Type>()
|
||||||
|
) const
|
||||||
{
|
{
|
||||||
return cyclicAMIPolyPatch_.interpolate(tFld);
|
return cyclicAMIPolyPatch_.interpolate(fld, defaultValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
tmp<Field<Type> > interpolate
|
||||||
|
(
|
||||||
|
const tmp<Field<Type> >& tFld,
|
||||||
|
const UList<Type>& defaultValues = UList<Type>()
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return cyclicAMIPolyPatch_.interpolate(tFld, defaultValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -201,11 +201,14 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::normaliseWeights
|
|||||||
scalarListList& wght,
|
scalarListList& wght,
|
||||||
scalarField& wghtSum,
|
scalarField& wghtSum,
|
||||||
const bool conformal,
|
const bool conformal,
|
||||||
const bool output
|
const bool output,
|
||||||
|
const scalar lowWeightTol
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// Normalise the weights
|
// Normalise the weights
|
||||||
wghtSum.setSize(wght.size());
|
wghtSum.setSize(wght.size());
|
||||||
|
label nLowWeight = 0;
|
||||||
|
|
||||||
forAll(wght, faceI)
|
forAll(wght, faceI)
|
||||||
{
|
{
|
||||||
scalarList& w = wght[faceI];
|
scalarList& w = wght[faceI];
|
||||||
@ -225,6 +228,11 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::normaliseWeights
|
|||||||
}
|
}
|
||||||
|
|
||||||
wghtSum[faceI] = t;
|
wghtSum[faceI] = t;
|
||||||
|
|
||||||
|
if (t < lowWeightTol)
|
||||||
|
{
|
||||||
|
nLowWeight++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -241,6 +249,13 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::normaliseWeights
|
|||||||
<< gAverage(wghtSum) << endl;
|
<< gAverage(wghtSum) << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (debug && nLowWeight)
|
||||||
|
{
|
||||||
|
Pout<< "AMI: Identified " << nLowWeight
|
||||||
|
<< " faces with weights less than " << lowWeightTol
|
||||||
|
<< endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -502,7 +517,8 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::agglomerate
|
|||||||
srcWeights,
|
srcWeights,
|
||||||
srcWeightsSum,
|
srcWeightsSum,
|
||||||
true,
|
true,
|
||||||
false
|
false,
|
||||||
|
-1
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -516,12 +532,14 @@ Foam::AMIInterpolation<SourcePatch, TargetPatch>::AMIInterpolation
|
|||||||
const TargetPatch& tgtPatch,
|
const TargetPatch& tgtPatch,
|
||||||
const faceAreaIntersect::triangulationMode& triMode,
|
const faceAreaIntersect::triangulationMode& triMode,
|
||||||
const interpolationMethod& method,
|
const interpolationMethod& method,
|
||||||
|
const scalar lowWeightCorrection,
|
||||||
const bool reverseTarget
|
const bool reverseTarget
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
method_(method),
|
method_(method),
|
||||||
reverseTarget_(reverseTarget),
|
reverseTarget_(reverseTarget),
|
||||||
singlePatchProc_(-999),
|
singlePatchProc_(-999),
|
||||||
|
lowWeightCorrection_(lowWeightCorrection),
|
||||||
srcAddress_(),
|
srcAddress_(),
|
||||||
srcWeights_(),
|
srcWeights_(),
|
||||||
srcWeightsSum_(),
|
srcWeightsSum_(),
|
||||||
@ -544,12 +562,14 @@ Foam::AMIInterpolation<SourcePatch, TargetPatch>::AMIInterpolation
|
|||||||
const autoPtr<searchableSurface>& surfPtr,
|
const autoPtr<searchableSurface>& surfPtr,
|
||||||
const faceAreaIntersect::triangulationMode& triMode,
|
const faceAreaIntersect::triangulationMode& triMode,
|
||||||
const interpolationMethod& method,
|
const interpolationMethod& method,
|
||||||
|
const scalar lowWeightCorrection,
|
||||||
const bool reverseTarget
|
const bool reverseTarget
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
method_(method),
|
method_(method),
|
||||||
reverseTarget_(reverseTarget),
|
reverseTarget_(reverseTarget),
|
||||||
singlePatchProc_(-999),
|
singlePatchProc_(-999),
|
||||||
|
lowWeightCorrection_(lowWeightCorrection),
|
||||||
srcAddress_(),
|
srcAddress_(),
|
||||||
srcWeights_(),
|
srcWeights_(),
|
||||||
srcWeightsSum_(),
|
srcWeightsSum_(),
|
||||||
@ -632,6 +652,7 @@ Foam::AMIInterpolation<SourcePatch, TargetPatch>::AMIInterpolation
|
|||||||
method_(fineAMI.method_),
|
method_(fineAMI.method_),
|
||||||
reverseTarget_(fineAMI.reverseTarget_),
|
reverseTarget_(fineAMI.reverseTarget_),
|
||||||
singlePatchProc_(fineAMI.singlePatchProc_),
|
singlePatchProc_(fineAMI.singlePatchProc_),
|
||||||
|
lowWeightCorrection_(-1.0),
|
||||||
srcAddress_(),
|
srcAddress_(),
|
||||||
srcWeights_(),
|
srcWeights_(),
|
||||||
srcWeightsSum_(),
|
srcWeightsSum_(),
|
||||||
@ -908,7 +929,8 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::update
|
|||||||
srcWeights_,
|
srcWeights_,
|
||||||
srcWeightsSum_,
|
srcWeightsSum_,
|
||||||
AMIPtr->conformal(),
|
AMIPtr->conformal(),
|
||||||
true
|
true,
|
||||||
|
lowWeightCorrection_
|
||||||
);
|
);
|
||||||
normaliseWeights
|
normaliseWeights
|
||||||
(
|
(
|
||||||
@ -918,7 +940,8 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::update
|
|||||||
tgtWeights_,
|
tgtWeights_,
|
||||||
tgtWeightsSum_,
|
tgtWeightsSum_,
|
||||||
AMIPtr->conformal(),
|
AMIPtr->conformal(),
|
||||||
true
|
true,
|
||||||
|
lowWeightCorrection_
|
||||||
);
|
);
|
||||||
|
|
||||||
// cache maps and reset addresses
|
// cache maps and reset addresses
|
||||||
@ -965,7 +988,8 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::update
|
|||||||
srcWeights_,
|
srcWeights_,
|
||||||
srcWeightsSum_,
|
srcWeightsSum_,
|
||||||
AMIPtr->conformal(),
|
AMIPtr->conformal(),
|
||||||
true
|
true,
|
||||||
|
lowWeightCorrection_
|
||||||
);
|
);
|
||||||
normaliseWeights
|
normaliseWeights
|
||||||
(
|
(
|
||||||
@ -975,7 +999,8 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::update
|
|||||||
tgtWeights_,
|
tgtWeights_,
|
||||||
tgtWeightsSum_,
|
tgtWeightsSum_,
|
||||||
AMIPtr->conformal(),
|
AMIPtr->conformal(),
|
||||||
true
|
true,
|
||||||
|
lowWeightCorrection_
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -998,7 +1023,8 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToTarget
|
|||||||
(
|
(
|
||||||
const UList<Type>& fld,
|
const UList<Type>& fld,
|
||||||
const CombineOp& cop,
|
const CombineOp& cop,
|
||||||
List<Type>& result
|
List<Type>& result,
|
||||||
|
const UList<Type>& defaultValues
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
if (fld.size() != srcAddress_.size())
|
if (fld.size() != srcAddress_.size())
|
||||||
@ -1009,7 +1035,8 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToTarget
|
|||||||
"("
|
"("
|
||||||
"const UList<Type>&, "
|
"const UList<Type>&, "
|
||||||
"const CombineOp&, "
|
"const CombineOp&, "
|
||||||
"List<Type>&"
|
"List<Type>&, "
|
||||||
|
"const UList<Type>&"
|
||||||
") const"
|
") const"
|
||||||
) << "Supplied field size is not equal to source patch size" << nl
|
) << "Supplied field size is not equal to source patch size" << nl
|
||||||
<< " source patch = " << srcAddress_.size() << nl
|
<< " source patch = " << srcAddress_.size() << nl
|
||||||
@ -1018,6 +1045,29 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToTarget
|
|||||||
<< abort(FatalError);
|
<< abort(FatalError);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (lowWeightCorrection_ > 0)
|
||||||
|
{
|
||||||
|
if (defaultValues.size() != tgtAddress_.size())
|
||||||
|
{
|
||||||
|
FatalErrorIn
|
||||||
|
(
|
||||||
|
"AMIInterpolation::interpolateToTarget"
|
||||||
|
"("
|
||||||
|
"const UList<Type>&, "
|
||||||
|
"const CombineOp&, "
|
||||||
|
"List<Type>&, "
|
||||||
|
"const UList<Type>&"
|
||||||
|
") const"
|
||||||
|
) << "Employing default values when sum of weights falls below "
|
||||||
|
<< lowWeightCorrection_
|
||||||
|
<< " but supplied default field size is not equal to target "
|
||||||
|
<< "patch size" << nl
|
||||||
|
<< " default values = " << defaultValues.size() << nl
|
||||||
|
<< " target patch = " << tgtAddress_.size() << nl
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
result.setSize(tgtAddress_.size());
|
result.setSize(tgtAddress_.size());
|
||||||
|
|
||||||
if (singlePatchProc_ == -1)
|
if (singlePatchProc_ == -1)
|
||||||
@ -1028,6 +1078,12 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToTarget
|
|||||||
map.distribute(work);
|
map.distribute(work);
|
||||||
|
|
||||||
forAll(result, faceI)
|
forAll(result, faceI)
|
||||||
|
{
|
||||||
|
if (tgtWeightsSum_[faceI] < lowWeightCorrection_)
|
||||||
|
{
|
||||||
|
result[faceI] = defaultValues[faceI];
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
const labelList& faces = tgtAddress_[faceI];
|
const labelList& faces = tgtAddress_[faceI];
|
||||||
const scalarList& weights = tgtWeights_[faceI];
|
const scalarList& weights = tgtWeights_[faceI];
|
||||||
@ -1038,9 +1094,16 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToTarget
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
forAll(result, faceI)
|
forAll(result, faceI)
|
||||||
|
{
|
||||||
|
if (tgtWeightsSum_[faceI] < lowWeightCorrection_)
|
||||||
|
{
|
||||||
|
result[faceI] = defaultValues[faceI];
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
const labelList& faces = tgtAddress_[faceI];
|
const labelList& faces = tgtAddress_[faceI];
|
||||||
const scalarList& weights = tgtWeights_[faceI];
|
const scalarList& weights = tgtWeights_[faceI];
|
||||||
@ -1051,6 +1114,7 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToTarget
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1060,7 +1124,8 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToSource
|
|||||||
(
|
(
|
||||||
const UList<Type>& fld,
|
const UList<Type>& fld,
|
||||||
const CombineOp& cop,
|
const CombineOp& cop,
|
||||||
List<Type>& result
|
List<Type>& result,
|
||||||
|
const UList<Type>& defaultValues
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
if (fld.size() != tgtAddress_.size())
|
if (fld.size() != tgtAddress_.size())
|
||||||
@ -1071,7 +1136,8 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToSource
|
|||||||
"("
|
"("
|
||||||
"const UList<Type>&, "
|
"const UList<Type>&, "
|
||||||
"const CombineOp&, "
|
"const CombineOp&, "
|
||||||
"List<Type>&"
|
"List<Type>&, "
|
||||||
|
"const UList<Type>&"
|
||||||
") const"
|
") const"
|
||||||
) << "Supplied field size is not equal to target patch size" << nl
|
) << "Supplied field size is not equal to target patch size" << nl
|
||||||
<< " source patch = " << srcAddress_.size() << nl
|
<< " source patch = " << srcAddress_.size() << nl
|
||||||
@ -1080,6 +1146,29 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToSource
|
|||||||
<< abort(FatalError);
|
<< abort(FatalError);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (lowWeightCorrection_ > 0)
|
||||||
|
{
|
||||||
|
if (defaultValues.size() != srcAddress_.size())
|
||||||
|
{
|
||||||
|
FatalErrorIn
|
||||||
|
(
|
||||||
|
"AMIInterpolation::interpolateToSource"
|
||||||
|
"("
|
||||||
|
"const UList<Type>&, "
|
||||||
|
"const CombineOp&, "
|
||||||
|
"List<Type>&, "
|
||||||
|
"const UList<Type>&"
|
||||||
|
") const"
|
||||||
|
) << "Employing default values when sum of weights falls below "
|
||||||
|
<< lowWeightCorrection_
|
||||||
|
<< " but supplied default field size is not equal to target "
|
||||||
|
<< "patch size" << nl
|
||||||
|
<< " default values = " << defaultValues.size() << nl
|
||||||
|
<< " source patch = " << srcAddress_.size() << nl
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
result.setSize(srcAddress_.size());
|
result.setSize(srcAddress_.size());
|
||||||
|
|
||||||
if (singlePatchProc_ == -1)
|
if (singlePatchProc_ == -1)
|
||||||
@ -1090,6 +1179,12 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToSource
|
|||||||
map.distribute(work);
|
map.distribute(work);
|
||||||
|
|
||||||
forAll(result, faceI)
|
forAll(result, faceI)
|
||||||
|
{
|
||||||
|
if (srcWeightsSum_[faceI] < lowWeightCorrection_)
|
||||||
|
{
|
||||||
|
result[faceI] = defaultValues[faceI];
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
const labelList& faces = srcAddress_[faceI];
|
const labelList& faces = srcAddress_[faceI];
|
||||||
const scalarList& weights = srcWeights_[faceI];
|
const scalarList& weights = srcWeights_[faceI];
|
||||||
@ -1100,9 +1195,16 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToSource
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
forAll(result, faceI)
|
forAll(result, faceI)
|
||||||
|
{
|
||||||
|
if (srcWeightsSum_[faceI] < lowWeightCorrection_)
|
||||||
|
{
|
||||||
|
result[faceI] = defaultValues[faceI];
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
const labelList& faces = srcAddress_[faceI];
|
const labelList& faces = srcAddress_[faceI];
|
||||||
const scalarList& weights = srcWeights_[faceI];
|
const scalarList& weights = srcWeights_[faceI];
|
||||||
@ -1113,6 +1215,7 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToSource
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1122,7 +1225,8 @@ Foam::tmp<Foam::Field<Type> >
|
|||||||
Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToSource
|
Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToSource
|
||||||
(
|
(
|
||||||
const Field<Type>& fld,
|
const Field<Type>& fld,
|
||||||
const CombineOp& cop
|
const CombineOp& cop,
|
||||||
|
const UList<Type>& defaultValues
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
tmp<Field<Type> > tresult
|
tmp<Field<Type> > tresult
|
||||||
@ -1138,7 +1242,8 @@ Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToSource
|
|||||||
(
|
(
|
||||||
fld,
|
fld,
|
||||||
multiplyWeightedOp<Type, CombineOp>(cop),
|
multiplyWeightedOp<Type, CombineOp>(cop),
|
||||||
tresult()
|
tresult(),
|
||||||
|
defaultValues
|
||||||
);
|
);
|
||||||
|
|
||||||
return tresult;
|
return tresult;
|
||||||
@ -1151,10 +1256,11 @@ Foam::tmp<Foam::Field<Type> >
|
|||||||
Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToSource
|
Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToSource
|
||||||
(
|
(
|
||||||
const tmp<Field<Type> >& tFld,
|
const tmp<Field<Type> >& tFld,
|
||||||
const CombineOp& cop
|
const CombineOp& cop,
|
||||||
|
const UList<Type>& defaultValues
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
return interpolateToSource(tFld(), cop);
|
return interpolateToSource(tFld(), cop, defaultValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1164,7 +1270,8 @@ Foam::tmp<Foam::Field<Type> >
|
|||||||
Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToTarget
|
Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToTarget
|
||||||
(
|
(
|
||||||
const Field<Type>& fld,
|
const Field<Type>& fld,
|
||||||
const CombineOp& cop
|
const CombineOp& cop,
|
||||||
|
const UList<Type>& defaultValues
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
tmp<Field<Type> > tresult
|
tmp<Field<Type> > tresult
|
||||||
@ -1180,7 +1287,8 @@ Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToTarget
|
|||||||
(
|
(
|
||||||
fld,
|
fld,
|
||||||
multiplyWeightedOp<Type, CombineOp>(cop),
|
multiplyWeightedOp<Type, CombineOp>(cop),
|
||||||
tresult()
|
tresult(),
|
||||||
|
defaultValues
|
||||||
);
|
);
|
||||||
|
|
||||||
return tresult;
|
return tresult;
|
||||||
@ -1193,10 +1301,11 @@ Foam::tmp<Foam::Field<Type> >
|
|||||||
Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToTarget
|
Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToTarget
|
||||||
(
|
(
|
||||||
const tmp<Field<Type> >& tFld,
|
const tmp<Field<Type> >& tFld,
|
||||||
const CombineOp& cop
|
const CombineOp& cop,
|
||||||
|
const UList<Type>& defaultValues
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
return interpolateToTarget(tFld(), cop);
|
return interpolateToTarget(tFld(), cop, defaultValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1205,10 +1314,11 @@ template<class Type>
|
|||||||
Foam::tmp<Foam::Field<Type> >
|
Foam::tmp<Foam::Field<Type> >
|
||||||
Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToSource
|
Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToSource
|
||||||
(
|
(
|
||||||
const Field<Type>& fld
|
const Field<Type>& fld,
|
||||||
|
const UList<Type>& defaultValues
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
return interpolateToSource(fld, plusEqOp<Type>());
|
return interpolateToSource(fld, plusEqOp<Type>(), defaultValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1217,10 +1327,11 @@ template<class Type>
|
|||||||
Foam::tmp<Foam::Field<Type> >
|
Foam::tmp<Foam::Field<Type> >
|
||||||
Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToSource
|
Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToSource
|
||||||
(
|
(
|
||||||
const tmp<Field<Type> >& tFld
|
const tmp<Field<Type> >& tFld,
|
||||||
|
const UList<Type>& defaultValues
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
return interpolateToSource(tFld(), plusEqOp<Type>());
|
return interpolateToSource(tFld(), plusEqOp<Type>(), defaultValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1229,10 +1340,11 @@ template<class Type>
|
|||||||
Foam::tmp<Foam::Field<Type> >
|
Foam::tmp<Foam::Field<Type> >
|
||||||
Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToTarget
|
Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToTarget
|
||||||
(
|
(
|
||||||
const Field<Type>& fld
|
const Field<Type>& fld,
|
||||||
|
const UList<Type>& defaultValues
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
return interpolateToTarget(fld, plusEqOp<Type>());
|
return interpolateToTarget(fld, plusEqOp<Type>(), defaultValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1241,10 +1353,11 @@ template<class Type>
|
|||||||
Foam::tmp<Foam::Field<Type> >
|
Foam::tmp<Foam::Field<Type> >
|
||||||
Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToTarget
|
Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolateToTarget
|
||||||
(
|
(
|
||||||
const tmp<Field<Type> >& tFld
|
const tmp<Field<Type> >& tFld,
|
||||||
|
const UList<Type>& defaultValues
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
return interpolateToTarget(tFld(), plusEqOp<Type>());
|
return interpolateToTarget(tFld(), plusEqOp<Type>(), defaultValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -120,6 +120,9 @@ private:
|
|||||||
// cases
|
// cases
|
||||||
label singlePatchProc_;
|
label singlePatchProc_;
|
||||||
|
|
||||||
|
//- Threshold weight below which interpolation is deactivated
|
||||||
|
scalar lowWeightCorrection_;
|
||||||
|
|
||||||
|
|
||||||
// Source patch
|
// Source patch
|
||||||
|
|
||||||
@ -238,7 +241,8 @@ private:
|
|||||||
scalarListList& wght,
|
scalarListList& wght,
|
||||||
scalarField& wghtSum,
|
scalarField& wghtSum,
|
||||||
const bool conformal,
|
const bool conformal,
|
||||||
const bool output
|
const bool output,
|
||||||
|
const scalar lowWeightTol
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@ -273,6 +277,7 @@ public:
|
|||||||
const TargetPatch& tgtPatch,
|
const TargetPatch& tgtPatch,
|
||||||
const faceAreaIntersect::triangulationMode& triMode,
|
const faceAreaIntersect::triangulationMode& triMode,
|
||||||
const interpolationMethod& method = imFaceAreaWeight,
|
const interpolationMethod& method = imFaceAreaWeight,
|
||||||
|
const scalar lowWeightCorrection = -1,
|
||||||
const bool reverseTarget = false
|
const bool reverseTarget = false
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -284,6 +289,7 @@ public:
|
|||||||
const autoPtr<searchableSurface>& surf,
|
const autoPtr<searchableSurface>& surf,
|
||||||
const faceAreaIntersect::triangulationMode& triMode,
|
const faceAreaIntersect::triangulationMode& triMode,
|
||||||
const interpolationMethod& method = imFaceAreaWeight,
|
const interpolationMethod& method = imFaceAreaWeight,
|
||||||
|
const scalar lowWeightCorrection = -1,
|
||||||
const bool reverseTarget = false
|
const bool reverseTarget = false
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -313,7 +319,13 @@ public:
|
|||||||
|
|
||||||
//- Set to -1, or the processor holding all faces (both sides) of
|
//- Set to -1, or the processor holding all faces (both sides) of
|
||||||
// the AMI
|
// the AMI
|
||||||
label singlePatchProc() const;
|
inline label singlePatchProc() const;
|
||||||
|
|
||||||
|
//- Threshold weight below which interpolation is deactivated
|
||||||
|
inline scalar lowWeightCorrection() const;
|
||||||
|
|
||||||
|
//- Return true if employing a 'lowWeightCorrection'
|
||||||
|
inline bool applyLowWeightCorrection() const;
|
||||||
|
|
||||||
|
|
||||||
// Source patch
|
// Source patch
|
||||||
@ -379,7 +391,8 @@ public:
|
|||||||
(
|
(
|
||||||
const UList<Type>& fld,
|
const UList<Type>& fld,
|
||||||
const CombineOp& cop,
|
const CombineOp& cop,
|
||||||
List<Type>& result
|
List<Type>& result,
|
||||||
|
const UList<Type>& defaultValues = UList<Type>::null()
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Interpolate from source to target with supplied op
|
//- Interpolate from source to target with supplied op
|
||||||
@ -389,7 +402,8 @@ public:
|
|||||||
(
|
(
|
||||||
const UList<Type>& fld,
|
const UList<Type>& fld,
|
||||||
const CombineOp& cop,
|
const CombineOp& cop,
|
||||||
List<Type>& result
|
List<Type>& result,
|
||||||
|
const UList<Type>& defaultValues = UList<Type>::null()
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
|
|
||||||
@ -398,7 +412,8 @@ public:
|
|||||||
tmp<Field<Type> > interpolateToSource
|
tmp<Field<Type> > interpolateToSource
|
||||||
(
|
(
|
||||||
const Field<Type>& fld,
|
const Field<Type>& fld,
|
||||||
const CombineOp& cop
|
const CombineOp& cop,
|
||||||
|
const UList<Type>& defaultValues = UList<Type>::null()
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Interpolate from target tmp field to source with supplied op
|
//- Interpolate from target tmp field to source with supplied op
|
||||||
@ -406,7 +421,8 @@ public:
|
|||||||
tmp<Field<Type> > interpolateToSource
|
tmp<Field<Type> > interpolateToSource
|
||||||
(
|
(
|
||||||
const tmp<Field<Type> >& tFld,
|
const tmp<Field<Type> >& tFld,
|
||||||
const CombineOp& cop
|
const CombineOp& cop,
|
||||||
|
const UList<Type>& defaultValues = UList<Type>::null()
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Interpolate from source to target with supplied op
|
//- Interpolate from source to target with supplied op
|
||||||
@ -414,7 +430,8 @@ public:
|
|||||||
tmp<Field<Type> > interpolateToTarget
|
tmp<Field<Type> > interpolateToTarget
|
||||||
(
|
(
|
||||||
const Field<Type>& fld,
|
const Field<Type>& fld,
|
||||||
const CombineOp& cop
|
const CombineOp& cop,
|
||||||
|
const UList<Type>& defaultValues = UList<Type>::null()
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Interpolate from source tmp field to target with supplied op
|
//- Interpolate from source tmp field to target with supplied op
|
||||||
@ -422,35 +439,40 @@ public:
|
|||||||
tmp<Field<Type> > interpolateToTarget
|
tmp<Field<Type> > interpolateToTarget
|
||||||
(
|
(
|
||||||
const tmp<Field<Type> >& tFld,
|
const tmp<Field<Type> >& tFld,
|
||||||
const CombineOp& cop
|
const CombineOp& cop,
|
||||||
|
const UList<Type>& defaultValues = UList<Type>::null()
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Interpolate from target to source
|
//- Interpolate from target to source
|
||||||
template<class Type>
|
template<class Type>
|
||||||
tmp<Field<Type> > interpolateToSource
|
tmp<Field<Type> > interpolateToSource
|
||||||
(
|
(
|
||||||
const Field<Type>& fld
|
const Field<Type>& fld,
|
||||||
|
const UList<Type>& defaultValues = UList<Type>::null()
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Interpolate from target tmp field
|
//- Interpolate from target tmp field
|
||||||
template<class Type>
|
template<class Type>
|
||||||
tmp<Field<Type> > interpolateToSource
|
tmp<Field<Type> > interpolateToSource
|
||||||
(
|
(
|
||||||
const tmp<Field<Type> >& tFld
|
const tmp<Field<Type> >& tFld,
|
||||||
|
const UList<Type>& defaultValues = UList<Type>::null()
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Interpolate from source to target
|
//- Interpolate from source to target
|
||||||
template<class Type>
|
template<class Type>
|
||||||
tmp<Field<Type> > interpolateToTarget
|
tmp<Field<Type> > interpolateToTarget
|
||||||
(
|
(
|
||||||
const Field<Type>& fld
|
const Field<Type>& fld,
|
||||||
|
const UList<Type>& defaultValues = UList<Type>::null()
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Interpolate from source tmp field
|
//- Interpolate from source tmp field
|
||||||
template<class Type>
|
template<class Type>
|
||||||
tmp<Field<Type> > interpolateToTarget
|
tmp<Field<Type> > interpolateToTarget
|
||||||
(
|
(
|
||||||
const tmp<Field<Type> >& tFld
|
const tmp<Field<Type> >& tFld,
|
||||||
|
const UList<Type>& defaultValues = UList<Type>::null()
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -31,6 +31,23 @@ Foam::AMIInterpolation<SourcePatch, TargetPatch>::singlePatchProc() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class SourcePatch, class TargetPatch>
|
||||||
|
inline Foam::scalar
|
||||||
|
Foam::AMIInterpolation<SourcePatch, TargetPatch>::lowWeightCorrection() const
|
||||||
|
{
|
||||||
|
return lowWeightCorrection_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class SourcePatch, class TargetPatch>
|
||||||
|
inline bool
|
||||||
|
Foam::AMIInterpolation<SourcePatch, TargetPatch>::
|
||||||
|
applyLowWeightCorrection() const
|
||||||
|
{
|
||||||
|
return lowWeightCorrection_ > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class SourcePatch, class TargetPatch>
|
template<class SourcePatch, class TargetPatch>
|
||||||
inline const Foam::scalarField&
|
inline const Foam::scalarField&
|
||||||
Foam::AMIInterpolation<SourcePatch, TargetPatch>::srcMagSf() const
|
Foam::AMIInterpolation<SourcePatch, TargetPatch>::srcMagSf() const
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -310,6 +310,8 @@ Foam::scalar Foam::faceAreaWeightAMI<SourcePatch, TargetPatch>::interArea
|
|||||||
const label tgtFaceI
|
const label tgtFaceI
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
|
scalar area = 0;
|
||||||
|
|
||||||
const pointField& srcPoints = this->srcPatch_.points();
|
const pointField& srcPoints = this->srcPatch_.points();
|
||||||
const pointField& tgtPoints = this->tgtPatch_.points();
|
const pointField& tgtPoints = this->tgtPatch_.points();
|
||||||
|
|
||||||
@ -322,7 +324,7 @@ Foam::scalar Foam::faceAreaWeightAMI<SourcePatch, TargetPatch>::interArea
|
|||||||
const scalar tgtMag = tgt.mag(tgtPoints);
|
const scalar tgtMag = tgt.mag(tgtPoints);
|
||||||
if ((this->srcMagSf_[srcFaceI] < ROOTVSMALL) || (tgtMag < ROOTVSMALL))
|
if ((this->srcMagSf_[srcFaceI] < ROOTVSMALL) || (tgtMag < ROOTVSMALL))
|
||||||
{
|
{
|
||||||
return 0.0;
|
return area;
|
||||||
}
|
}
|
||||||
|
|
||||||
// create intersection object
|
// create intersection object
|
||||||
@ -338,12 +340,11 @@ Foam::scalar Foam::faceAreaWeightAMI<SourcePatch, TargetPatch>::interArea
|
|||||||
{
|
{
|
||||||
n += this->tgtPatch_.faceNormals()[tgtFaceI];
|
n += this->tgtPatch_.faceNormals()[tgtFaceI];
|
||||||
}
|
}
|
||||||
n *= 0.5;
|
scalar magN = mag(n);
|
||||||
|
|
||||||
scalar area = 0;
|
if (magN > ROOTVSMALL)
|
||||||
if (mag(n) > ROOTVSMALL)
|
|
||||||
{
|
{
|
||||||
area = inter.calc(src, tgt, n, this->triMode_);
|
area = inter.calc(src, tgt, n/magN, this->triMode_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -549,7 +550,7 @@ void Foam::faceAreaWeightAMI<SourcePatch, TargetPatch>::calculate
|
|||||||
tgtFaceI
|
tgtFaceI
|
||||||
);
|
);
|
||||||
|
|
||||||
if (this->srcNonOverlap_.size() != 0)
|
if (debug && !this->srcNonOverlap_.empty())
|
||||||
{
|
{
|
||||||
Pout<< " AMI: " << this->srcNonOverlap_.size()
|
Pout<< " AMI: " << this->srcNonOverlap_.size()
|
||||||
<< " non-overlap faces identified"
|
<< " non-overlap faces identified"
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -175,7 +175,22 @@ void Foam::cyclicAMIPointPatchField<Type>::swapAddSeparated
|
|||||||
Field<Type> nbrFcFld(nbrPpi().pointToFaceInterpolate(nbrPtFld));
|
Field<Type> nbrFcFld(nbrPpi().pointToFaceInterpolate(nbrPtFld));
|
||||||
|
|
||||||
// interpolate to owner
|
// interpolate to owner
|
||||||
nbrFcFld = cyclicAMIPatch_.cyclicAMIPatch().interpolate(nbrFcFld);
|
if (cyclicAMIPatch_.cyclicAMIPatch().applyLowWeightCorrection())
|
||||||
|
{
|
||||||
|
Field<Type> fcFld(ppi().pointToFaceInterpolate(ptFld));
|
||||||
|
|
||||||
|
nbrFcFld =
|
||||||
|
cyclicAMIPatch_.cyclicAMIPatch().interpolate
|
||||||
|
(
|
||||||
|
nbrFcFld,
|
||||||
|
fcFld
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nbrFcFld =
|
||||||
|
cyclicAMIPatch_.cyclicAMIPatch().interpolate(nbrFcFld);
|
||||||
|
}
|
||||||
|
|
||||||
// add to internal field
|
// add to internal field
|
||||||
this->addToInternalField
|
this->addToInternalField
|
||||||
@ -190,11 +205,25 @@ void Foam::cyclicAMIPointPatchField<Type>::swapAddSeparated
|
|||||||
Field<Type> fcFld(ppi().pointToFaceInterpolate(ptFld));
|
Field<Type> fcFld(ppi().pointToFaceInterpolate(ptFld));
|
||||||
|
|
||||||
// interpolate to neighbour
|
// interpolate to neighbour
|
||||||
|
if (cyclicAMIPatch_.cyclicAMIPatch().applyLowWeightCorrection())
|
||||||
|
{
|
||||||
|
Field<Type> nbrFcFld(nbrPpi().pointToFaceInterpolate(nbrPtFld));
|
||||||
|
|
||||||
|
fcFld =
|
||||||
|
cyclicAMIPatch_.cyclicAMIPatch().neighbPatch().interpolate
|
||||||
|
(
|
||||||
|
fcFld,
|
||||||
|
nbrFcFld
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
fcFld =
|
fcFld =
|
||||||
cyclicAMIPatch_.cyclicAMIPatch().neighbPatch().interpolate
|
cyclicAMIPatch_.cyclicAMIPatch().neighbPatch().interpolate
|
||||||
(
|
(
|
||||||
fcFld
|
fcFld
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// add to internal field
|
// add to internal field
|
||||||
nbr.addToInternalField
|
nbr.addToInternalField
|
||||||
|
|||||||
@ -359,6 +359,7 @@ void Foam::cyclicAMIPolyPatch::resetAMI
|
|||||||
surfPtr(),
|
surfPtr(),
|
||||||
faceAreaIntersect::tmMesh,
|
faceAreaIntersect::tmMesh,
|
||||||
AMIMethod,
|
AMIMethod,
|
||||||
|
AMILowWeightCorrection_,
|
||||||
AMIReverse_
|
AMIReverse_
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -470,6 +471,7 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch
|
|||||||
separationVector_(vector::zero),
|
separationVector_(vector::zero),
|
||||||
AMIPtr_(NULL),
|
AMIPtr_(NULL),
|
||||||
AMIReverse_(false),
|
AMIReverse_(false),
|
||||||
|
AMILowWeightCorrection_(-1.0),
|
||||||
surfPtr_(NULL),
|
surfPtr_(NULL),
|
||||||
surfDict_(fileName("surface"))
|
surfDict_(fileName("surface"))
|
||||||
{
|
{
|
||||||
@ -498,6 +500,7 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch
|
|||||||
separationVector_(vector::zero),
|
separationVector_(vector::zero),
|
||||||
AMIPtr_(NULL),
|
AMIPtr_(NULL),
|
||||||
AMIReverse_(dict.lookupOrDefault<bool>("flipNormals", false)),
|
AMIReverse_(dict.lookupOrDefault<bool>("flipNormals", false)),
|
||||||
|
AMILowWeightCorrection_(dict.lookupOrDefault("lowWeightCorrection", -1.0)),
|
||||||
surfPtr_(NULL),
|
surfPtr_(NULL),
|
||||||
surfDict_(dict.subOrEmptyDict("surface"))
|
surfDict_(dict.subOrEmptyDict("surface"))
|
||||||
{
|
{
|
||||||
@ -606,6 +609,7 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch
|
|||||||
separationVector_(pp.separationVector_),
|
separationVector_(pp.separationVector_),
|
||||||
AMIPtr_(NULL),
|
AMIPtr_(NULL),
|
||||||
AMIReverse_(pp.AMIReverse_),
|
AMIReverse_(pp.AMIReverse_),
|
||||||
|
AMILowWeightCorrection_(pp.AMILowWeightCorrection_),
|
||||||
surfPtr_(NULL),
|
surfPtr_(NULL),
|
||||||
surfDict_(pp.surfDict_)
|
surfDict_(pp.surfDict_)
|
||||||
{
|
{
|
||||||
@ -635,6 +639,7 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch
|
|||||||
separationVector_(pp.separationVector_),
|
separationVector_(pp.separationVector_),
|
||||||
AMIPtr_(NULL),
|
AMIPtr_(NULL),
|
||||||
AMIReverse_(pp.AMIReverse_),
|
AMIReverse_(pp.AMIReverse_),
|
||||||
|
AMILowWeightCorrection_(pp.AMILowWeightCorrection_),
|
||||||
surfPtr_(NULL),
|
surfPtr_(NULL),
|
||||||
surfDict_(pp.surfDict_)
|
surfDict_(pp.surfDict_)
|
||||||
{
|
{
|
||||||
@ -678,6 +683,7 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch
|
|||||||
separationVector_(pp.separationVector_),
|
separationVector_(pp.separationVector_),
|
||||||
AMIPtr_(NULL),
|
AMIPtr_(NULL),
|
||||||
AMIReverse_(pp.AMIReverse_),
|
AMIReverse_(pp.AMIReverse_),
|
||||||
|
AMILowWeightCorrection_(pp.AMILowWeightCorrection_),
|
||||||
surfPtr_(NULL),
|
surfPtr_(NULL),
|
||||||
surfDict_(pp.surfDict_)
|
surfDict_(pp.surfDict_)
|
||||||
{}
|
{}
|
||||||
@ -793,6 +799,19 @@ const Foam::AMIPatchToPatchInterpolation& Foam::cyclicAMIPolyPatch::AMI() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Foam::cyclicAMIPolyPatch::applyLowWeightCorrection() const
|
||||||
|
{
|
||||||
|
if (owner())
|
||||||
|
{
|
||||||
|
return AMI().applyLowWeightCorrection();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return neighbPatch().AMI().applyLowWeightCorrection();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Foam::cyclicAMIPolyPatch::transformPosition(pointField& l) const
|
void Foam::cyclicAMIPolyPatch::transformPosition(pointField& l) const
|
||||||
{
|
{
|
||||||
if (!parallel())
|
if (!parallel())
|
||||||
@ -970,7 +989,6 @@ void Foam::cyclicAMIPolyPatch::write(Ostream& os) const
|
|||||||
{
|
{
|
||||||
os.writeKeyword("rotationAngle") << radToDeg(rotationAngle_)
|
os.writeKeyword("rotationAngle") << radToDeg(rotationAngle_)
|
||||||
<< token::END_STATEMENT << nl;
|
<< token::END_STATEMENT << nl;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -997,6 +1015,12 @@ void Foam::cyclicAMIPolyPatch::write(Ostream& os) const
|
|||||||
<< token::END_STATEMENT << nl;
|
<< token::END_STATEMENT << nl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (AMILowWeightCorrection_ > 0)
|
||||||
|
{
|
||||||
|
os.writeKeyword("lowWeightCorrection") << AMILowWeightCorrection_
|
||||||
|
<< token::END_STATEMENT << nl;
|
||||||
|
}
|
||||||
|
|
||||||
if (!surfDict_.empty())
|
if (!surfDict_.empty())
|
||||||
{
|
{
|
||||||
os.writeKeyword(surfDict_.dictName());
|
os.writeKeyword(surfDict_.dictName());
|
||||||
|
|||||||
@ -97,6 +97,9 @@ private:
|
|||||||
//- Flag to indicate that slave patch should be reversed for AMI
|
//- Flag to indicate that slave patch should be reversed for AMI
|
||||||
const bool AMIReverse_;
|
const bool AMIReverse_;
|
||||||
|
|
||||||
|
//- Low weight correction threshold for AMI
|
||||||
|
const scalar AMILowWeightCorrection_;
|
||||||
|
|
||||||
//- Projection surface
|
//- Projection surface
|
||||||
mutable autoPtr<searchableSurface> surfPtr_;
|
mutable autoPtr<searchableSurface> surfPtr_;
|
||||||
|
|
||||||
@ -298,6 +301,9 @@ public:
|
|||||||
//- Return a reference to the AMI interpolator
|
//- Return a reference to the AMI interpolator
|
||||||
const AMIPatchToPatchInterpolation& AMI() const;
|
const AMIPatchToPatchInterpolation& AMI() const;
|
||||||
|
|
||||||
|
//- Return true if applying the low weight correction
|
||||||
|
bool applyLowWeightCorrection() const;
|
||||||
|
|
||||||
|
|
||||||
// Transformations
|
// Transformations
|
||||||
|
|
||||||
@ -325,13 +331,18 @@ public:
|
|||||||
|
|
||||||
//- Interpolate field
|
//- Interpolate field
|
||||||
template<class Type>
|
template<class Type>
|
||||||
tmp<Field<Type> > interpolate(const Field<Type>& fld) const;
|
tmp<Field<Type> > interpolate
|
||||||
|
(
|
||||||
|
const Field<Type>& fld,
|
||||||
|
const UList<Type>& defaultValues = UList<Type>()
|
||||||
|
) const;
|
||||||
|
|
||||||
//- Interpolate tmp field
|
//- Interpolate tmp field
|
||||||
template<class Type>
|
template<class Type>
|
||||||
tmp<Field<Type> > interpolate
|
tmp<Field<Type> > interpolate
|
||||||
(
|
(
|
||||||
const tmp<Field<Type> >& tFld
|
const tmp<Field<Type> >& tFld,
|
||||||
|
const UList<Type>& defaultValues = UList<Type>()
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Low-level interpolate List
|
//- Low-level interpolate List
|
||||||
@ -340,7 +351,8 @@ public:
|
|||||||
(
|
(
|
||||||
const UList<Type>& fld,
|
const UList<Type>& fld,
|
||||||
const CombineOp& cop,
|
const CombineOp& cop,
|
||||||
List<Type>& result
|
List<Type>& result,
|
||||||
|
const UList<Type>& defaultValues = UList<Type>()
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -28,16 +28,17 @@ License
|
|||||||
template<class Type>
|
template<class Type>
|
||||||
Foam::tmp<Foam::Field<Type> > Foam::cyclicAMIPolyPatch::interpolate
|
Foam::tmp<Foam::Field<Type> > Foam::cyclicAMIPolyPatch::interpolate
|
||||||
(
|
(
|
||||||
const Field<Type>& fld
|
const Field<Type>& fld,
|
||||||
|
const UList<Type>& defaultValues
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
if (owner())
|
if (owner())
|
||||||
{
|
{
|
||||||
return AMI().interpolateToSource(fld);
|
return AMI().interpolateToSource(fld, defaultValues);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return neighbPatch().AMI().interpolateToTarget(fld);
|
return neighbPatch().AMI().interpolateToTarget(fld, defaultValues);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,17 +46,11 @@ Foam::tmp<Foam::Field<Type> > Foam::cyclicAMIPolyPatch::interpolate
|
|||||||
template<class Type>
|
template<class Type>
|
||||||
Foam::tmp<Foam::Field<Type> > Foam::cyclicAMIPolyPatch::interpolate
|
Foam::tmp<Foam::Field<Type> > Foam::cyclicAMIPolyPatch::interpolate
|
||||||
(
|
(
|
||||||
const tmp<Field<Type> >& tFld
|
const tmp<Field<Type> >& tFld,
|
||||||
|
const UList<Type>& defaultValues
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
if (owner())
|
return interpolate(tFld(), defaultValues);
|
||||||
{
|
|
||||||
return AMI().interpolateToSource(tFld);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return neighbPatch().AMI().interpolateToTarget(tFld);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -64,16 +59,29 @@ void Foam::cyclicAMIPolyPatch::interpolate
|
|||||||
(
|
(
|
||||||
const UList<Type>& fld,
|
const UList<Type>& fld,
|
||||||
const CombineOp& cop,
|
const CombineOp& cop,
|
||||||
List<Type>& result
|
List<Type>& result,
|
||||||
|
const UList<Type>& defaultValues
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
if (owner())
|
if (owner())
|
||||||
{
|
{
|
||||||
AMI().interpolateToSource(fld, cop, result);
|
AMI().interpolateToSource
|
||||||
|
(
|
||||||
|
fld,
|
||||||
|
cop,
|
||||||
|
result,
|
||||||
|
defaultValues
|
||||||
|
);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
neighbPatch().AMI().interpolateToTarget(fld, cop, result);
|
neighbPatch().AMI().interpolateToTarget
|
||||||
|
(
|
||||||
|
fld,
|
||||||
|
cop,
|
||||||
|
result,
|
||||||
|
defaultValues
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -837,6 +837,7 @@ void Foam::mappedPatchBase::calcAMI() const
|
|||||||
surfPtr(),
|
surfPtr(),
|
||||||
faceAreaIntersect::tmMesh,
|
faceAreaIntersect::tmMesh,
|
||||||
AMIPatchToPatchInterpolation::imFaceAreaWeight,
|
AMIPatchToPatchInterpolation::imFaceAreaWeight,
|
||||||
|
-1,
|
||||||
AMIReverse_
|
AMIReverse_
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -92,6 +92,7 @@ void Foam::regionCoupledBase::resetAMI() const
|
|||||||
surfPtr(),
|
surfPtr(),
|
||||||
faceAreaIntersect::tmMesh,
|
faceAreaIntersect::tmMesh,
|
||||||
AMIPatchToPatchInterpolation::imFaceAreaWeight,
|
AMIPatchToPatchInterpolation::imFaceAreaWeight,
|
||||||
|
-1,
|
||||||
AMIReverse_
|
AMIReverse_
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|||||||
@ -33,7 +33,7 @@ License
|
|||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
defineTypeNameAndDebug(forceCoeffs, 0);
|
defineTypeNameAndDebug(forceCoeffs, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ void Foam::forceCoeffs::writeFileHeader(const label i)
|
|||||||
|
|
||||||
for (label j = 0; j < nBin_; j++)
|
for (label j = 0; j < nBin_; j++)
|
||||||
{
|
{
|
||||||
const word jn('[' + Foam::name(j) + ']');
|
const word jn('(' + Foam::name(j) + ')');
|
||||||
writeTabbed(file(i), "Cm" + jn);
|
writeTabbed(file(i), "Cm" + jn);
|
||||||
writeTabbed(file(i), "Cd" + jn);
|
writeTabbed(file(i), "Cd" + jn);
|
||||||
writeTabbed(file(i), "Cl" + jn);
|
writeTabbed(file(i), "Cl" + jn);
|
||||||
|
|||||||
@ -39,7 +39,7 @@ License
|
|||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
defineTypeNameAndDebug(forces, 0);
|
defineTypeNameAndDebug(forces, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -78,8 +78,8 @@ void Foam::forces::writeFileHeader(const label i)
|
|||||||
writeCommented(file(i), "Time");
|
writeCommented(file(i), "Time");
|
||||||
|
|
||||||
file(i)
|
file(i)
|
||||||
<< "forces[pressure,viscous,porous] "
|
<< "forces(pressure viscous porous) "
|
||||||
<< "moment[pressure,viscous,porous]";
|
<< "moment(pressure viscous porous)";
|
||||||
|
|
||||||
if (localSystem_)
|
if (localSystem_)
|
||||||
{
|
{
|
||||||
@ -126,7 +126,7 @@ void Foam::forces::writeFileHeader(const label i)
|
|||||||
|
|
||||||
for (label j = 0; j < nBin_; j++)
|
for (label j = 0; j < nBin_; j++)
|
||||||
{
|
{
|
||||||
const word jn('[' + Foam::name(j) + ']');
|
const word jn('(' + Foam::name(j) + ')');
|
||||||
const word f("forces" + jn + "[pressure,viscous,porous]");
|
const word f("forces" + jn + "[pressure,viscous,porous]");
|
||||||
const word m("moments" + jn + "[pressure,viscous,porous]");
|
const word m("moments" + jn + "[pressure,viscous,porous]");
|
||||||
|
|
||||||
@ -136,7 +136,7 @@ void Foam::forces::writeFileHeader(const label i)
|
|||||||
{
|
{
|
||||||
for (label j = 0; j < nBin_; j++)
|
for (label j = 0; j < nBin_; j++)
|
||||||
{
|
{
|
||||||
const word jn('[' + Foam::name(j) + ']');
|
const word jn('(' + Foam::name(j) + ')');
|
||||||
const word f("localForces" + jn + "[pressure,viscous,porous]");
|
const word f("localForces" + jn + "[pressure,viscous,porous]");
|
||||||
const word m("localMoments" + jn + "[pressure,viscous,porous]");
|
const word m("localMoments" + jn + "[pressure,viscous,porous]");
|
||||||
|
|
||||||
@ -403,13 +403,13 @@ void Foam::forces::writeForces()
|
|||||||
<< " porous : " << sum(moment_[2])
|
<< " porous : " << sum(moment_[2])
|
||||||
<< endl;
|
<< endl;
|
||||||
|
|
||||||
file(0) << obr_.time().value() << tab << setw(1) << '['
|
file(0) << obr_.time().value() << tab << setw(1) << '('
|
||||||
<< sum(force_[0]) << setw(1) << ','
|
<< sum(force_[0]) << setw(1) << ' '
|
||||||
<< sum(force_[1]) << setw(1) << ","
|
<< sum(force_[1]) << setw(1) << ' '
|
||||||
<< sum(force_[2]) << setw(3) << "] ["
|
<< sum(force_[2]) << setw(3) << ") ("
|
||||||
<< sum(moment_[0]) << setw(1) << ","
|
<< sum(moment_[0]) << setw(1) << ' '
|
||||||
<< sum(moment_[1]) << setw(1) << ","
|
<< sum(moment_[1]) << setw(1) << ' '
|
||||||
<< sum(moment_[2]) << setw(1) << "]"
|
<< sum(moment_[2]) << setw(1) << ')'
|
||||||
<< endl;
|
<< endl;
|
||||||
|
|
||||||
if (localSystem_)
|
if (localSystem_)
|
||||||
@ -421,13 +421,13 @@ void Foam::forces::writeForces()
|
|||||||
vectorField localMomentT(coordSys_.localVector(moment_[1]));
|
vectorField localMomentT(coordSys_.localVector(moment_[1]));
|
||||||
vectorField localMomentP(coordSys_.localVector(moment_[2]));
|
vectorField localMomentP(coordSys_.localVector(moment_[2]));
|
||||||
|
|
||||||
file(0) << obr_.time().value() << tab << setw(1) << "["
|
file(0) << obr_.time().value() << tab << setw(1) << '('
|
||||||
<< sum(localForceN) << setw(1) << ","
|
<< sum(localForceN) << setw(1) << ' '
|
||||||
<< sum(localForceT) << setw(1) << ","
|
<< sum(localForceT) << setw(1) << ' '
|
||||||
<< sum(localForceP) << setw(3) << "] ["
|
<< sum(localForceP) << setw(3) << ") ("
|
||||||
<< sum(localMomentN) << setw(1) << ","
|
<< sum(localMomentN) << setw(1) << ' '
|
||||||
<< sum(localMomentT) << setw(1) << ","
|
<< sum(localMomentT) << setw(1) << ' '
|
||||||
<< sum(localMomentP) << setw(1) << "]"
|
<< sum(localMomentP) << setw(1) << ')'
|
||||||
<< endl;
|
<< endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -462,13 +462,13 @@ void Foam::forces::writeBins()
|
|||||||
forAll(f[0], i)
|
forAll(f[0], i)
|
||||||
{
|
{
|
||||||
file(1)
|
file(1)
|
||||||
<< tab << setw(1) << "["
|
<< tab << setw(1) << '('
|
||||||
<< f[0][i] << setw(1) << ","
|
<< f[0][i] << setw(1) << ' '
|
||||||
<< f[1][i] << setw(1) << ","
|
<< f[1][i] << setw(1) << ' '
|
||||||
<< f[2][i] << setw(3) << "] ["
|
<< f[2][i] << setw(3) << ") ("
|
||||||
<< m[0][i] << setw(1) << ","
|
<< m[0][i] << setw(1) << ' '
|
||||||
<< m[1][i] << setw(1) << ","
|
<< m[1][i] << setw(1) << ' '
|
||||||
<< m[2][i] << setw(1) << "]";
|
<< m[2][i] << setw(1) << ')';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (localSystem_)
|
if (localSystem_)
|
||||||
@ -498,13 +498,13 @@ void Foam::forces::writeBins()
|
|||||||
forAll(lf[0], i)
|
forAll(lf[0], i)
|
||||||
{
|
{
|
||||||
file(1)
|
file(1)
|
||||||
<< tab << setw(1) << "["
|
<< tab << setw(1) << '('
|
||||||
<< lf[0][i] << setw(1) << ","
|
<< lf[0][i] << setw(1) << ' '
|
||||||
<< lf[1][i] << setw(1) << ","
|
<< lf[1][i] << setw(1) << ' '
|
||||||
<< lf[2][i] << setw(3) << "] ["
|
<< lf[2][i] << setw(3) << ") ("
|
||||||
<< lm[0][i] << setw(1) << ","
|
<< lm[0][i] << setw(1) << ' '
|
||||||
<< lm[1][i] << setw(1) << ","
|
<< lm[1][i] << setw(1) << ' '
|
||||||
<< lm[2][i] << setw(1) << "]";
|
<< lm[2][i] << setw(1) << ')';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -243,6 +243,7 @@ Foam::regionModels::regionModel::interRegionAMI
|
|||||||
nbrP,
|
nbrP,
|
||||||
faceAreaIntersect::tmMesh,
|
faceAreaIntersect::tmMesh,
|
||||||
AMIPatchToPatchInterpolation::imFaceAreaWeight,
|
AMIPatchToPatchInterpolation::imFaceAreaWeight,
|
||||||
|
-1,
|
||||||
flip
|
flip
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -284,6 +285,7 @@ Foam::regionModels::regionModel::interRegionAMI
|
|||||||
nbrP,
|
nbrP,
|
||||||
faceAreaIntersect::tmMesh,
|
faceAreaIntersect::tmMesh,
|
||||||
AMIPatchToPatchInterpolation::imFaceAreaWeight,
|
AMIPatchToPatchInterpolation::imFaceAreaWeight,
|
||||||
|
-1,
|
||||||
flip
|
flip
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|||||||
@ -420,6 +420,7 @@ Foam::meshToMesh::patchAMIs() const
|
|||||||
tgtPP,
|
tgtPP,
|
||||||
faceAreaIntersect::tmMesh,
|
faceAreaIntersect::tmMesh,
|
||||||
interpolationMethodAMI(method_),
|
interpolationMethodAMI(method_),
|
||||||
|
-1,
|
||||||
true // flip target patch since patch normals are aligned
|
true // flip target patch since patch normals are aligned
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|||||||
@ -354,7 +354,8 @@ void Foam::meshToMesh::mapSrcToTgt
|
|||||||
(
|
(
|
||||||
srcField,
|
srcField,
|
||||||
multiplyWeightedOp<Type, CombineOp>(cop),
|
multiplyWeightedOp<Type, CombineOp>(cop),
|
||||||
tgtField
|
tgtField,
|
||||||
|
UList<Type>::null()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -385,7 +386,7 @@ Foam::meshToMesh::mapSrcToTgt
|
|||||||
(
|
(
|
||||||
IOobject
|
IOobject
|
||||||
(
|
(
|
||||||
type() + ".interpolate(" + field.name() + ")",
|
type() + ":interpolate(" + field.name() + ")",
|
||||||
tgtMesh.time().timeName(),
|
tgtMesh.time().timeName(),
|
||||||
tgtMesh,
|
tgtMesh,
|
||||||
IOobject::NO_READ,
|
IOobject::NO_READ,
|
||||||
@ -498,7 +499,7 @@ Foam::meshToMesh::mapTgtToSrc
|
|||||||
(
|
(
|
||||||
IOobject
|
IOobject
|
||||||
(
|
(
|
||||||
type() + ".interpolate(" + field.name() + ")",
|
type() + ":interpolate(" + field.name() + ")",
|
||||||
srcMesh.time().timeName(),
|
srcMesh.time().timeName(),
|
||||||
srcMesh,
|
srcMesh,
|
||||||
IOobject::NO_READ,
|
IOobject::NO_READ,
|
||||||
|
|||||||
@ -10,7 +10,7 @@ FoamFile
|
|||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
class volScalarField;
|
class volScalarField;
|
||||||
object alpha.water;
|
object alpha.phase1;
|
||||||
}
|
}
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -8,6 +8,6 @@ cd ${0%/*} || exit 1 # run from this directory
|
|||||||
./Allrun-pre
|
./Allrun-pre
|
||||||
|
|
||||||
## Run simulation
|
## Run simulation
|
||||||
#./Allrun-simulation
|
./Allrun-simulation
|
||||||
|
|
||||||
# ----------------------------------------------------------------- end-of-file
|
# ----------------------------------------------------------------- end-of-file
|
||||||
|
|||||||
@ -93,17 +93,17 @@ runParallel foamyHexMesh $nProcs
|
|||||||
runParallel collapseEdges $nProcs -collapseFaces -latestTime
|
runParallel collapseEdges $nProcs -collapseFaces -latestTime
|
||||||
mv log.collapseEdges log.collapseFaces
|
mv log.collapseEdges log.collapseFaces
|
||||||
|
|
||||||
\cp system/collapseDict.indirectPatchFaces system/collapseDict
|
#\cp system/collapseDict.indirectPatchFaces system/collapseDict
|
||||||
runParallel collapseEdges $nProcs -collapseFaceSet indirectPatchFaces -latestTime
|
#runParallel collapseEdges $nProcs -collapseFaceSet indirectPatchFaces -latestTime
|
||||||
mv log.collapseEdges log.collapseFaceSet
|
#mv log.collapseEdges log.collapseFaceSet
|
||||||
|
|
||||||
runParallel checkMesh $nProcs -allTopology -allGeometry -latestTime
|
runParallel checkMesh $nProcs -allTopology -allGeometry -latestTime
|
||||||
|
|
||||||
runApplication reconstructParMesh -latestTime
|
runApplication reconstructParMesh -latestTime
|
||||||
|
|
||||||
# Copy the mesh into polyMesh and delete the 102 directory
|
# Copy the mesh into polyMesh and delete the 102 directory
|
||||||
\cp -r 102/polyMesh constant
|
\cp -r 101/polyMesh constant
|
||||||
\rm -rf 102
|
\rm -rf 101
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------- end-of-file
|
# ----------------------------------------------------------------- end-of-file
|
||||||
|
|||||||
@ -31,7 +31,7 @@ runApplication setFields
|
|||||||
runApplication decomposePar -force
|
runApplication decomposePar -force
|
||||||
|
|
||||||
# Run
|
# Run
|
||||||
runParallel $application 8
|
runParallel $application $nProcs
|
||||||
|
|
||||||
# Reconstruct
|
# Reconstruct
|
||||||
runApplication reconstructPar -noFunctionObjects
|
runApplication reconstructPar -noFunctionObjects
|
||||||
|
|||||||
@ -15,16 +15,16 @@ FoamFile
|
|||||||
}
|
}
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
phases (water air);
|
phases (phase1 phase2);
|
||||||
|
|
||||||
water
|
phase1
|
||||||
{
|
{
|
||||||
transportModel Newtonian;
|
transportModel Newtonian;
|
||||||
nu nu [ 0 2 -1 0 0 0 0 ] 1e-06;
|
nu nu [ 0 2 -1 0 0 0 0 ] 1e-06;
|
||||||
rho rho [ 1 -3 0 0 0 0 0 ] 300;
|
rho rho [ 1 -3 0 0 0 0 0 ] 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
air
|
phase2
|
||||||
{
|
{
|
||||||
transportModel Newtonian;
|
transportModel Newtonian;
|
||||||
nu nu [ 0 2 -1 0 0 0 0 ] 1e-6;
|
nu nu [ 0 2 -1 0 0 0 0 ] 1e-6;
|
||||||
|
|||||||
@ -81,6 +81,7 @@ baffles
|
|||||||
matchTolerance 0.0001;
|
matchTolerance 0.0001;
|
||||||
neighbourPatch AMI2;
|
neighbourPatch AMI2;
|
||||||
transform noOrdering;
|
transform noOrdering;
|
||||||
|
lowWeightCorrection 0.2;
|
||||||
// Note: since imperfect meshing around feature edge make
|
// Note: since imperfect meshing around feature edge make
|
||||||
// sure to project both sides onto 'proper' geometry to
|
// sure to project both sides onto 'proper' geometry to
|
||||||
// avoid errors leading to zero weights
|
// avoid errors leading to zero weights
|
||||||
@ -99,6 +100,7 @@ baffles
|
|||||||
matchTolerance 0.0001;
|
matchTolerance 0.0001;
|
||||||
neighbourPatch AMI1;
|
neighbourPatch AMI1;
|
||||||
transform noOrdering;
|
transform noOrdering;
|
||||||
|
lowWeightCorrection 0.2;
|
||||||
surface
|
surface
|
||||||
{
|
{
|
||||||
type triSurfaceMesh;
|
type triSurfaceMesh;
|
||||||
|
|||||||
@ -17,7 +17,7 @@ FoamFile
|
|||||||
|
|
||||||
solvers
|
solvers
|
||||||
{
|
{
|
||||||
alpha.water
|
alpha.phase1
|
||||||
{
|
{
|
||||||
nAlphaCorr 1;
|
nAlphaCorr 1;
|
||||||
nAlphaSubCycles 2;
|
nAlphaSubCycles 2;
|
||||||
|
|||||||
@ -17,7 +17,7 @@ FoamFile
|
|||||||
|
|
||||||
defaultFieldValues
|
defaultFieldValues
|
||||||
(
|
(
|
||||||
volScalarFieldValue alpha.water 1
|
volScalarFieldValue alpha.phase1 1
|
||||||
);
|
);
|
||||||
|
|
||||||
regions
|
regions
|
||||||
@ -27,7 +27,7 @@ regions
|
|||||||
box (-4 -4 -1) (4 4 0.74);
|
box (-4 -4 -1) (4 4 0.74);
|
||||||
fieldValues
|
fieldValues
|
||||||
(
|
(
|
||||||
volScalarFieldValue alpha.water 0
|
volScalarFieldValue alpha.phase1 0
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user