Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-2.3.x

This commit is contained in:
sergio 2014-03-20 15:33:38 +00:00
commit cc39026a60
26 changed files with 220 additions and 99 deletions

View file

@ -138,11 +138,7 @@ Foam::tmp<Foam::volScalarField> Foam::dragModels::segregated::K() const
(
pair_.rho()
*pair_.magUr()
/(
magGradI
*max(alpha1*alpha2, sqr(residualAlpha_))
*muI
)
/(magGradI*muI)
);
volScalarField lambda(m_*ReI + n_*muAlphaI/muI);

View file

@ -132,6 +132,34 @@ Foam::RASModels::kineticTheoryModel::kineticTheoryModel
),
U.mesh(),
dimensionedScalar("zero", dimensionSet(0, 2, -1, 0, 0), 0.0)
),
gs0_
(
IOobject
(
IOobject::groupName("gs0", phase.name()),
U.time().timeName(),
U.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
U.mesh(),
dimensionedScalar("zero", dimensionSet(0, 0, 0, 0, 0), 0.0)
),
kappa_
(
IOobject
(
IOobject::groupName("kappa", phase.name()),
U.time().timeName(),
U.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
U.mesh(),
dimensionedScalar("zero", dimensionSet(0, 2, -1, 0, 0), 0.0)
)
{
if (type == typeName)
@ -371,17 +399,17 @@ void Foam::RASModels::kineticTheoryModel::correct()
volSymmTensorField D(symm(gradU));
// Calculating the radial distribution function
volScalarField gs0(radialModel_->g0(alpha, alphaMinFriction_, alphaMax_));
gs0_ = radialModel_->g0(alpha, alphaMinFriction_, alphaMax_);
if (!equilibrium_)
{
// particle viscosity (Table 3.2, p.47)
nut_ = viscosityModel_->nu(alpha, Theta_, gs0, rho, da, e_);
nut_ = viscosityModel_->nu(alpha, Theta_, gs0_, rho, da, e_);
volScalarField ThetaSqrt(sqrt(Theta_));
// Bulk viscosity p. 45 (Lun et al. 1984).
lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0*(1.0 + e_)*ThetaSqrt/sqrtPi;
lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0_*(1.0 + e_)*ThetaSqrt/sqrtPi;
// Stress tensor, Definitions, Table 3.1, p. 43
volSymmTensorField tau(2.0*nut_*D + (lambda_ - (2.0/3.0)*nut_)*tr(D)*I);
@ -391,7 +419,7 @@ void Foam::RASModels::kineticTheoryModel::correct()
(
12.0*(1.0 - sqr(e_))
*max(sqr(alpha), residualAlpha_)
*gs0*(1.0/da)*ThetaSqrt/sqrtPi
*gs0_*(1.0/da)*ThetaSqrt/sqrtPi
);
// NB, drag = K*alpha*alpha2,
@ -426,17 +454,14 @@ void Foam::RASModels::kineticTheoryModel::correct()
granularPressureModel_->granularPressureCoeff
(
alpha,
gs0,
gs0_,
rho,
e_
)/rho
);
// 'thermal' conductivity (Table 3.3, p. 49)
volScalarField kappa
(
conductivityModel_->kappa(alpha, Theta_, gs0, rho, da, e_)
);
kappa_ = conductivityModel_->kappa(alpha, Theta_, gs0_, rho, da, e_);
// Construct the granular temperature equation (Eq. 3.20, p. 44)
// NB. note that there are two typos in Eq. 3.20:
@ -450,7 +475,7 @@ void Foam::RASModels::kineticTheoryModel::correct()
+ fvm::div(alphaPhi, Theta_)
- fvc::Sp(fvc::ddt(alpha) + fvc::div(alphaPhi), Theta_)
)
- fvm::laplacian(kappa, Theta_, "laplacian(kappa, Theta)")
- fvm::laplacian(kappa_, Theta_, "laplacian(kappa, Theta)")
==
fvm::SuSp(-((PsCoeff*I) && gradU), Theta_)
+ (tau && gradU)
@ -466,23 +491,23 @@ void Foam::RASModels::kineticTheoryModel::correct()
{
// Equilibrium => dissipation == production
// Eq. 4.14, p.82
volScalarField K1(2.0*(1.0 + e_)*rho*gs0);
volScalarField K1(2.0*(1.0 + e_)*rho*gs0_);
volScalarField K3
(
0.5*da*rho*
(
(sqrtPi/(3.0*(3.0-e_)))
*(1.0 + 0.4*(1.0 + e_)*(3.0*e_ - 1.0)*alpha*gs0)
+1.6*alpha*gs0*(1.0 + e_)/sqrtPi
*(1.0 + 0.4*(1.0 + e_)*(3.0*e_ - 1.0)*alpha*gs0_)
+1.6*alpha*gs0_*(1.0 + e_)/sqrtPi
)
);
volScalarField K2
(
4.0*da*rho*(1.0 + e_)*alpha*gs0/(3.0*sqrtPi) - 2.0*K3/3.0
4.0*da*rho*(1.0 + e_)*alpha*gs0_/(3.0*sqrtPi) - 2.0*K3/3.0
);
volScalarField K4(12.0*(1.0 - sqr(e_))*rho*gs0/(da*sqrtPi));
volScalarField K4(12.0*(1.0 - sqr(e_))*rho*gs0_/(da*sqrtPi));
volScalarField trD
(
@ -508,6 +533,8 @@ void Foam::RASModels::kineticTheoryModel::correct()
(l1 + sqrt(l2 + l3))
/(2.0*max(alpha, residualAlpha_)*K4)
);
kappa_ = conductivityModel_->kappa(alpha, Theta_, gs0_, rho, da, e_);
}
Theta_.max(0);
@ -515,12 +542,12 @@ void Foam::RASModels::kineticTheoryModel::correct()
{
// particle viscosity (Table 3.2, p.47)
nut_ = viscosityModel_->nu(alpha, Theta_, gs0, rho, da, e_);
nut_ = viscosityModel_->nu(alpha, Theta_, gs0_, rho, da, e_);
volScalarField ThetaSqrt(sqrt(Theta_));
// Bulk viscosity p. 45 (Lun et al. 1984).
lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0*(1.0 + e_)*ThetaSqrt/sqrtPi;
lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0_*(1.0 + e_)*ThetaSqrt/sqrtPi;
// Frictional pressure
volScalarField pf

View file

@ -128,6 +128,12 @@ class kineticTheoryModel
//- The granular bulk viscosity
volScalarField lambda_;
//- The granular radial distribution
volScalarField gs0_;
//- The granular "thermal" conductivity
volScalarField kappa_;
// Private Member Functions

View file

@ -182,7 +182,7 @@ tmp<volScalarField> NicenoKEqn<BasicTurbulenceModel>::bubbleG() const
tmp<volScalarField> bubbleG
(
Cp_*gas*sqr(magUr)*fluid.drag(gas).K()/liquid.rho()
Cp_*sqr(magUr)*fluid.drag(gas).K()/liquid.rho()
);
return bubbleG;

View file

@ -194,9 +194,10 @@ tmp<volScalarField> LaheyKEpsilon<BasicTurbulenceModel>::bubbleG() const
tmp<volScalarField> bubbleG
(
Cp_
*liquid*liquid.rho()
*(
pow3(magUr)
+ pow(fluid.drag(gas).K()*gas.d()/liquid.rho(), 4.0/3.0)
+ pow(fluid.drag(gas).CdRe()*liquid.nu()/gas.d(), 4.0/3.0)
*pow(magUr, 5.0/3.0)
)
*gas

View file

@ -380,7 +380,7 @@ tmp<volScalarField> mixtureKEpsilon<BasicTurbulenceModel>::Ct2() const
volScalarField beta
(
(6*this->Cmu_/(4*sqrt(3.0/2.0)))
*alphag*fluid.drag(gas).K()/liquid.rho()
*fluid.drag(gas).K()/liquid.rho()
*(liquidTurbulence.k_/liquidTurbulence.epsilon_)
);
volScalarField Ct0((3 + beta)/(1 + beta + 2*gas.rho()/liquid.rho()));
@ -488,10 +488,10 @@ tmp<volScalarField> mixtureKEpsilon<BasicTurbulenceModel>::bubbleG() const
tmp<volScalarField> bubbleG
(
Cp_
*sqr(liquid)*liquid.rho()
*liquid*liquid.rho()
*(
pow3(magUr)
+ pow(fluid.drag(gas).K()*gas.d()/liquid.rho(), 4.0/3.0)
+ pow(fluid.drag(gas).CdRe()*liquid.nu()/gas.d(), 4.0/3.0)
*pow(magUr, 5.0/3.0)
)
*gas
@ -501,7 +501,7 @@ tmp<volScalarField> mixtureKEpsilon<BasicTurbulenceModel>::bubbleG() const
// Simple model
// tmp<volScalarField> bubbleG
// (
// Cp_*sqr(liquid)*gas*fluid.drag(gas).K()*sqr(magUr)
// Cp_*liquid*fluid.drag(gas).K()*sqr(magUr)
// );
return bubbleG;

View file

@ -206,32 +206,40 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::normaliseWeights
)
{
// Normalise the weights
wghtSum.setSize(wght.size());
wghtSum.setSize(wght.size(), 0.0);
label nLowWeight = 0;
forAll(wght, faceI)
{
scalarList& w = wght[faceI];
scalar denom = patchAreas[faceI];
scalar s = sum(w);
scalar t = s/denom;
if (conformal)
if (w.size())
{
denom = s;
scalar denom = patchAreas[faceI];
scalar s = sum(w);
scalar t = s/denom;
if (conformal)
{
denom = s;
}
forAll(w, i)
{
w[i] /= denom;
}
wghtSum[faceI] = t;
if (t < lowWeightTol)
{
nLowWeight++;
}
}
forAll(w, i)
else
{
w[i] /= denom;
}
wghtSum[faceI] = t;
if (t < lowWeightTol)
{
nLowWeight++;
wghtSum[faceI] = 0;
}
}
@ -534,6 +542,7 @@ Foam::AMIInterpolation<SourcePatch, TargetPatch>::AMIInterpolation
const SourcePatch& srcPatch,
const TargetPatch& tgtPatch,
const faceAreaIntersect::triangulationMode& triMode,
const bool requireMatch,
const interpolationMethod& method,
const scalar lowWeightCorrection,
const bool reverseTarget
@ -541,6 +550,7 @@ Foam::AMIInterpolation<SourcePatch, TargetPatch>::AMIInterpolation
:
method_(method),
reverseTarget_(reverseTarget),
requireMatch_(requireMatch),
singlePatchProc_(-999),
lowWeightCorrection_(lowWeightCorrection),
srcAddress_(),
@ -564,6 +574,7 @@ Foam::AMIInterpolation<SourcePatch, TargetPatch>::AMIInterpolation
const TargetPatch& tgtPatch,
const autoPtr<searchableSurface>& surfPtr,
const faceAreaIntersect::triangulationMode& triMode,
const bool requireMatch,
const interpolationMethod& method,
const scalar lowWeightCorrection,
const bool reverseTarget
@ -571,6 +582,7 @@ Foam::AMIInterpolation<SourcePatch, TargetPatch>::AMIInterpolation
:
method_(method),
reverseTarget_(reverseTarget),
requireMatch_(requireMatch),
singlePatchProc_(-999),
lowWeightCorrection_(lowWeightCorrection),
srcAddress_(),
@ -654,6 +666,7 @@ Foam::AMIInterpolation<SourcePatch, TargetPatch>::AMIInterpolation
:
method_(fineAMI.method_),
reverseTarget_(fineAMI.reverseTarget_),
requireMatch_(fineAMI.requireMatch_),
singlePatchProc_(fineAMI.singlePatchProc_),
lowWeightCorrection_(-1.0),
srcAddress_(),
@ -862,7 +875,8 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::update
srcMagSf_,
tgtMagSf_,
triMode_,
reverseTarget_
reverseTarget_,
requireMatch_
)
);
@ -978,7 +992,8 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::update
srcMagSf_,
tgtMagSf_,
triMode_,
reverseTarget_
reverseTarget_,
requireMatch_
)
);

View file

@ -116,6 +116,10 @@ private:
// that the orientation of the target patch should be reversed
const bool reverseTarget_;
//- Flag to indicate that the two patches must be matched/an overlap
// exists between them
const bool requireMatch_;
//- Index of processor that holds all of both sides. -1 in all other
// cases
label singlePatchProc_;
@ -276,6 +280,7 @@ public:
const SourcePatch& srcPatch,
const TargetPatch& tgtPatch,
const faceAreaIntersect::triangulationMode& triMode,
const bool requireMatch = true,
const interpolationMethod& method = imFaceAreaWeight,
const scalar lowWeightCorrection = -1,
const bool reverseTarget = false
@ -288,6 +293,7 @@ public:
const TargetPatch& tgtPatch,
const autoPtr<searchableSurface>& surf,
const faceAreaIntersect::triangulationMode& triMode,
const bool requireMatch = true,
const interpolationMethod& method = imFaceAreaWeight,
const scalar lowWeightCorrection = -1,
const bool reverseTarget = false

View file

@ -98,6 +98,10 @@ bool Foam::AMIMethod<SourcePatch, TargetPatch>::initialise
(
"void Foam::AMIMethod<SourcePatch, TargetPatch>::initialise"
"("
"labelListList&, "
"scalarListList&, "
"labelListList&, "
"scalarListList&, "
"label&, "
"label&"
")"
@ -129,14 +133,24 @@ bool Foam::AMIMethod<SourcePatch, TargetPatch>::initialise
if (!foundFace)
{
FatalErrorIn
(
"void Foam::AMIMethod<SourcePatch, TargetPatch>::initialise"
"("
"label&, "
"label&"
")"
) << "Unable to find initial target face" << abort(FatalError);
if (requireMatch_)
{
FatalErrorIn
(
"void Foam::AMIMethod<SourcePatch, TargetPatch>::initialise"
"("
"labelListList&, "
"scalarListList&, "
"labelListList&, "
"scalarListList&, "
"label&, "
"label&"
")"
) << "Unable to find initial target face"
<< abort(FatalError);
}
return false;
}
}
@ -327,12 +341,14 @@ Foam::AMIMethod<SourcePatch, TargetPatch>::AMIMethod
const scalarField& srcMagSf,
const scalarField& tgtMagSf,
const faceAreaIntersect::triangulationMode& triMode,
const bool reverseTarget
const bool reverseTarget,
const bool requireMatch
)
:
srcPatch_(srcPatch),
tgtPatch_(tgtPatch),
reverseTarget_(reverseTarget),
requireMatch_(requireMatch),
srcMagSf_(srcMagSf),
tgtMagSf_(tgtMagSf),
srcNonOverlap_(),

View file

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -85,6 +85,10 @@ protected:
// that the orientation of the target patch should be reversed
const bool reverseTarget_;
//- Flag to indicate that the two patches must be matched/an overlap
// exists between them
const bool requireMatch_;
//- Source face areas
const scalarField& srcMagSf_;
@ -166,9 +170,18 @@ public:
const scalarField& srcMagSf,
const scalarField& tgtMagSf,
const faceAreaIntersect::triangulationMode& triMode,
const bool reverseTarget
const bool reverseTarget,
const bool requireMatch
),
(srcPatch, tgtPatch, srcMagSf, tgtMagSf, triMode, reverseTarget)
(
srcPatch,
tgtPatch,
srcMagSf,
tgtMagSf,
triMode,
reverseTarget,
requireMatch
)
);
//- Construct from components
@ -179,7 +192,8 @@ public:
const scalarField& srcMagSf,
const scalarField& tgtMagSf,
const faceAreaIntersect::triangulationMode& triMode,
const bool reverseTarget
const bool reverseTarget,
const bool requireMatch
);
//- Selector
@ -191,7 +205,8 @@ public:
const scalarField& srcMagSf,
const scalarField& tgtMagSf,
const faceAreaIntersect::triangulationMode& triMode,
const bool reverseTarget
const bool reverseTarget,
const bool requireMatch
);

View file

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -35,7 +35,8 @@ Foam::AMIMethod<SourcePatch, TargetPatch>::New
const scalarField& srcMagSf,
const scalarField& tgtMagSf,
const faceAreaIntersect::triangulationMode& triMode,
const bool reverseTarget
const bool reverseTarget,
const bool requireMatch
)
{
if (debug)
@ -58,6 +59,7 @@ Foam::AMIMethod<SourcePatch, TargetPatch>::New
"const scalarField&, "
"const scalarField&, "
"const faceAreaIntersect::triangulationMode&, "
"const bool, "
"const bool"
")"
) << "Unknown AMIMethod type "
@ -75,7 +77,8 @@ Foam::AMIMethod<SourcePatch, TargetPatch>::New
srcMagSf,
tgtMagSf,
triMode,
reverseTarget
reverseTarget,
requireMatch
)
);
}

View file

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -106,7 +106,8 @@ Foam::directAMI<SourcePatch, TargetPatch>::directAMI
const scalarField& srcMagSf,
const scalarField& tgtMagSf,
const faceAreaIntersect::triangulationMode& triMode,
const bool reverseTarget
const bool reverseTarget,
const bool requireMatch
)
:
AMIMethod<SourcePatch, TargetPatch>
@ -116,7 +117,8 @@ Foam::directAMI<SourcePatch, TargetPatch>::directAMI
srcMagSf,
tgtMagSf,
triMode,
reverseTarget
reverseTarget,
requireMatch
)
{}

View file

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -102,7 +102,8 @@ public:
const scalarField& srcMagSf,
const scalarField& tgtMagSf,
const faceAreaIntersect::triangulationMode& triMode,
const bool reverseTarget = false
const bool reverseTarget = false,
const bool requireMatch = true
);

View file

@ -482,6 +482,7 @@ Foam::faceAreaWeightAMI<SourcePatch, TargetPatch>::faceAreaWeightAMI
const scalarField& tgtMagSf,
const faceAreaIntersect::triangulationMode& triMode,
const bool reverseTarget,
const bool requireMatch,
const bool restartUncoveredSourceFace
)
:
@ -492,7 +493,8 @@ Foam::faceAreaWeightAMI<SourcePatch, TargetPatch>::faceAreaWeightAMI
srcMagSf,
tgtMagSf,
triMode,
reverseTarget
reverseTarget,
requireMatch
),
restartUncoveredSourceFace_(restartUncoveredSourceFace)
{}

View file

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -144,6 +144,7 @@ public:
const scalarField& tgtMagSf,
const faceAreaIntersect::triangulationMode& triMode,
const bool reverseTarget = false,
const bool requireMatch = true,
const bool restartUncoveredSourceFace = true
);

View file

@ -183,7 +183,8 @@ Foam::mapNearestAMI<SourcePatch, TargetPatch>::mapNearestAMI
const scalarField& srcMagSf,
const scalarField& tgtMagSf,
const faceAreaIntersect::triangulationMode& triMode,
const bool reverseTarget
const bool reverseTarget,
const bool requireMatch
)
:
AMIMethod<SourcePatch, TargetPatch>
@ -193,7 +194,8 @@ Foam::mapNearestAMI<SourcePatch, TargetPatch>::mapNearestAMI
srcMagSf,
tgtMagSf,
triMode,
reverseTarget
reverseTarget,
requireMatch
)
{}

View file

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -116,7 +116,8 @@ public:
const scalarField& srcMagSf,
const scalarField& tgtMagSf,
const faceAreaIntersect::triangulationMode& triMode,
const bool reverseTarget = false
const bool reverseTarget = false,
const bool requireMatch = true
);

View file

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -63,7 +63,8 @@ partialFaceAreaWeightAMI
const scalarField& srcMagSf,
const scalarField& tgtMagSf,
const faceAreaIntersect::triangulationMode& triMode,
const bool reverseTarget
const bool reverseTarget,
const bool requireMatch
)
:
faceAreaWeightAMI<SourcePatch, TargetPatch>
@ -73,7 +74,8 @@ partialFaceAreaWeightAMI
srcMagSf,
tgtMagSf,
triMode,
reverseTarget
reverseTarget,
requireMatch
)
{}

View file

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -93,7 +93,8 @@ public:
const scalarField& srcMagSf,
const scalarField& tgtMagSf,
const faceAreaIntersect::triangulationMode& triMode,
const bool reverseTarget = false
const bool reverseTarget = false,
const bool requireMatch = true
);

View file

@ -208,6 +208,8 @@ Foam::cyclicACMIPolyPatch::cyclicACMIPolyPatch
tgtMask_(),
updated_(false)
{
AMIRequireMatch_ = false;
// Non-overlapping patch might not be valid yet so cannot determine
// associated patchID
}
@ -230,6 +232,8 @@ Foam::cyclicACMIPolyPatch::cyclicACMIPolyPatch
tgtMask_(),
updated_(false)
{
AMIRequireMatch_ = false;
if (nonOverlapPatchName_ == name)
{
FatalIOErrorIn
@ -267,6 +271,8 @@ Foam::cyclicACMIPolyPatch::cyclicACMIPolyPatch
tgtMask_(),
updated_(false)
{
AMIRequireMatch_ = false;
// Non-overlapping patch might not be valid yet so cannot determine
// associated patchID
}
@ -291,6 +297,8 @@ Foam::cyclicACMIPolyPatch::cyclicACMIPolyPatch
tgtMask_(),
updated_(false)
{
AMIRequireMatch_ = false;
if (nonOverlapPatchName_ == name())
{
FatalErrorIn
@ -328,7 +336,9 @@ Foam::cyclicACMIPolyPatch::cyclicACMIPolyPatch
srcMask_(),
tgtMask_(),
updated_(false)
{}
{
AMIRequireMatch_ = false;
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //

View file

@ -388,6 +388,7 @@ void Foam::cyclicAMIPolyPatch::resetAMI
nbrPatch0,
surfPtr(),
faceAreaIntersect::tmMesh,
AMIRequireMatch_,
AMIMethod,
AMILowWeightCorrection_,
AMIReverse_
@ -501,6 +502,7 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch
separationVector_(vector::zero),
AMIPtr_(NULL),
AMIReverse_(false),
AMIRequireMatch_(true),
AMILowWeightCorrection_(-1.0),
surfPtr_(NULL),
surfDict_(fileName("surface"))
@ -530,6 +532,7 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch
separationVector_(vector::zero),
AMIPtr_(NULL),
AMIReverse_(dict.lookupOrDefault<bool>("flipNormals", false)),
AMIRequireMatch_(true),
AMILowWeightCorrection_(dict.lookupOrDefault("lowWeightCorrection", -1.0)),
surfPtr_(NULL),
surfDict_(dict.subOrEmptyDict("surface"))
@ -639,6 +642,7 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch
separationVector_(pp.separationVector_),
AMIPtr_(NULL),
AMIReverse_(pp.AMIReverse_),
AMIRequireMatch_(pp.AMIRequireMatch_),
AMILowWeightCorrection_(pp.AMILowWeightCorrection_),
surfPtr_(NULL),
surfDict_(pp.surfDict_)
@ -669,6 +673,7 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch
separationVector_(pp.separationVector_),
AMIPtr_(NULL),
AMIReverse_(pp.AMIReverse_),
AMIRequireMatch_(pp.AMIRequireMatch_),
AMILowWeightCorrection_(pp.AMILowWeightCorrection_),
surfPtr_(NULL),
surfDict_(pp.surfDict_)
@ -713,6 +718,7 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch
separationVector_(pp.separationVector_),
AMIPtr_(NULL),
AMIReverse_(pp.AMIReverse_),
AMIRequireMatch_(pp.AMIRequireMatch_),
AMILowWeightCorrection_(pp.AMILowWeightCorrection_),
surfPtr_(NULL),
surfDict_(pp.surfDict_)

View file

@ -56,7 +56,24 @@ class cyclicAMIPolyPatch
private:
// Private data
// Private Member Functions
//- Return normal of face at max distance from rotation axis
vector findFaceNormalMaxRadius(const pointField& faceCentres) const;
void calcTransforms
(
const primitivePatch& half0,
const pointField& half0Ctrs,
const vectorField& half0Areas,
const pointField& half1Ctrs,
const vectorField& half1Areas
);
protected:
// Protected data
//- Name of other half
mutable word nbrPatchName_;
@ -97,6 +114,9 @@ private:
//- Flag to indicate that slave patch should be reversed for AMI
const bool AMIReverse_;
//- Flag to indicate that patches should match/overlap
bool AMIRequireMatch_;
//- Low weight correction threshold for AMI
const scalar AMILowWeightCorrection_;
@ -107,23 +127,6 @@ private:
const dictionary surfDict_;
// Private Member Functions
//- Return normal of face at max distance from rotation axis
vector findFaceNormalMaxRadius(const pointField& faceCentres) const;
void calcTransforms
(
const primitivePatch& half0,
const pointField& half0Ctrs,
const vectorField& half0Areas,
const pointField& half1Ctrs,
const vectorField& half1Areas
);
protected:
// Protected Member Functions
//- Reset the AMI interpolator

View file

@ -836,6 +836,7 @@ void Foam::mappedPatchBase::calcAMI() const
samplePolyPatch(), // nbrPatch0,
surfPtr(),
faceAreaIntersect::tmMesh,
true,
AMIPatchToPatchInterpolation::imFaceAreaWeight,
-1,
AMIReverse_

View file

@ -91,6 +91,7 @@ void Foam::regionCoupledBase::resetAMI() const
nbrPatch0,
surfPtr(),
faceAreaIntersect::tmMesh,
true,
AMIPatchToPatchInterpolation::imFaceAreaWeight,
-1,
AMIReverse_

View file

@ -242,6 +242,7 @@ Foam::regionModels::regionModel::interRegionAMI
p,
nbrP,
faceAreaIntersect::tmMesh,
true,
AMIPatchToPatchInterpolation::imFaceAreaWeight,
-1,
flip
@ -284,6 +285,7 @@ Foam::regionModels::regionModel::interRegionAMI
p,
nbrP,
faceAreaIntersect::tmMesh,
true,
AMIPatchToPatchInterpolation::imFaceAreaWeight,
-1,
flip

View file

@ -419,6 +419,7 @@ Foam::meshToMesh::patchAMIs() const
srcPP,
tgtPP,
faceAreaIntersect::tmMesh,
false,
interpolationMethodAMI(method_),
-1,
true // flip target patch since patch normals are aligned