Merge branch 'master' of /home/dm4/OpenFOAM/OpenFOAM-dev

This commit is contained in:
mattijs
2012-02-17 15:08:56 +00:00
38 changed files with 212 additions and 207 deletions

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -596,7 +596,7 @@ void Foam::fvMatrix<Type>::relax(const scalar alpha)
scalar sumNon = 0.0;
forAll(D, celli)
{
scalar d = (sumOff[celli] - D[celli])/D[celli];
scalar d = (sumOff[celli] - D[celli])/mag(D[celli]);
if (d > 0)
{
@ -621,8 +621,11 @@ void Foam::fvMatrix<Type>::relax(const scalar alpha)
// Ensure the matrix is diagonally dominant...
// (assumes that the central coefficient is positive)
max(D, D, sumOff);
// Assumes that the central coefficient is positive and ensures it is
forAll(D, celli)
{
D[celli] = max(mag(D[celli]), sumOff[celli]);
}
// ... then relax
D /= alpha;

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -171,16 +171,15 @@ LienCubicKE::LienCubicKE
autoCreateEpsilon("epsilon", mesh_)
),
gradU_(fvc::grad(U)),
eta_
(
k_/bound(epsilon_, epsilonMin_)
*sqrt(2.0*magSqr(0.5*(gradU_ + gradU_.T())))
*sqrt(2.0*magSqr(0.5*(fvc::grad(U) + T(fvc::grad(U)))))
),
ksi_
(
k_/epsilon_
*sqrt(2.0*magSqr(0.5*(gradU_ - gradU_.T())))
*sqrt(2.0*magSqr(0.5*(fvc::grad(U) - T(fvc::grad(U)))))
),
Cmu_(2.0/(3.0*(A1_ + eta_ + alphaKsi_*ksi_))),
fEta_(A2_ + pow(eta_, 3.0)),
@ -189,8 +188,8 @@ LienCubicKE::LienCubicKE
(
- 2.0*pow3(Cmu_)*pow4(k_)/pow3(epsilon_)
*(
magSqr(gradU_ + gradU_.T())
- magSqr(gradU_ - gradU_.T())
magSqr(fvc::grad(U) + T(fvc::grad(U)))
- magSqr(fvc::grad(U) - T(fvc::grad(U)))
)
),
@ -217,20 +216,20 @@ LienCubicKE::LienCubicKE
*(
Ctau1_/fEta_
*(
(gradU_ & gradU_)
+ (gradU_ & gradU_)().T()
(fvc::grad(U) & fvc::grad(U))
+ (fvc::grad(U) & fvc::grad(U))().T()
)
+ Ctau2_/fEta_*(gradU_ & gradU_.T())
+ Ctau3_/fEta_*(gradU_.T() & gradU_)
+ Ctau2_/fEta_*(fvc::grad(U) & T(fvc::grad(U)))
+ Ctau3_/fEta_*(T(fvc::grad(U)) & fvc::grad(U))
)
// cubic term C4
- 20.0*pow(k_, 4.0)/pow(epsilon_, 3.0)
*pow(Cmu_, 3.0)
*(
((gradU_ & gradU_) & gradU_.T())
+ ((gradU_ & gradU_.T()) & gradU_.T())
- ((gradU_.T() & gradU_) & gradU_)
- ((gradU_.T() & gradU_.T()) & gradU_)
((fvc::grad(U) & fvc::grad(U)) & T(fvc::grad(U)))
+ ((fvc::grad(U) & T(fvc::grad(U))) & T(fvc::grad(U)))
- ((T(fvc::grad(U)) & fvc::grad(U)) & fvc::grad(U))
- ((T(fvc::grad(U)) & T(fvc::grad(U))) & fvc::grad(U))
)
)
)
@ -261,7 +260,7 @@ tmp<volSymmTensorField> LienCubicKE::R() const
IOobject::NO_READ,
IOobject::NO_WRITE
),
((2.0/3.0)*I)*k_ - nut_*twoSymm(gradU_) + nonlinearStress_,
((2.0/3.0)*I)*k_ - nut_*twoSymm(fvc::grad(U_)) + nonlinearStress_,
k_.boundaryField().types()
)
);
@ -332,15 +331,16 @@ void LienCubicKE::correct()
return;
}
gradU_ = fvc::grad(U_);
tmp<volTensorField> tgradU = fvc::grad(U_);
const volTensorField& gradU = tgradU();
// generation term
tmp<volScalarField> S2 = symm(gradU_) && gradU_;
tmp<volScalarField> S2 = symm(gradU) && gradU;
volScalarField G
(
"RASModel::G",
Cmu_*sqr(k_)/epsilon_*S2 - (nonlinearStress_ && gradU_)
Cmu_*sqr(k_)/epsilon_*S2 - (nonlinearStress_ && gradU)
);
// Update epsilon and G at the wall
@ -384,14 +384,14 @@ void LienCubicKE::correct()
// Re-calculate viscosity
eta_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU_ + gradU_.T())));
ksi_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU_ - gradU_.T())));
eta_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU + gradU.T())));
ksi_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU - gradU.T())));
Cmu_ = 2.0/(3.0*(A1_ + eta_ + alphaKsi_*ksi_));
fEta_ = A2_ + pow(eta_, 3.0);
C5viscosity_ =
- 2.0*pow(Cmu_, 3.0)*pow(k_, 4.0)/pow(epsilon_, 3.0)
*(magSqr(gradU_ + gradU_.T()) - magSqr(gradU_ - gradU_.T()));
*(magSqr(gradU + gradU.T()) - magSqr(gradU - gradU.T()));
nut_ = Cmu_*sqr(k_)/epsilon_ + C5viscosity_;
nut_.correctBoundaryConditions();
@ -403,20 +403,20 @@ void LienCubicKE::correct()
(
Ctau1_/fEta_*
(
(gradU_ & gradU_)
+ (gradU_ & gradU_)().T()
(gradU & gradU)
+ (gradU & gradU)().T()
)
+ Ctau2_/fEta_*(gradU_ & gradU_.T())
+ Ctau3_/fEta_*(gradU_.T() & gradU_)
+ Ctau2_/fEta_*(gradU & gradU.T())
+ Ctau3_/fEta_*(gradU.T() & gradU)
)
// cubic term C4
- 20.0*pow(k_, 4.0)/pow(epsilon_, 3.0)
*pow(Cmu_, 3.0)
*(
((gradU_ & gradU_) & gradU_.T())
+ ((gradU_ & gradU_.T()) & gradU_.T())
- ((gradU_.T() & gradU_) & gradU_)
- ((gradU_.T() & gradU_.T()) & gradU_)
((gradU & gradU) & gradU.T())
+ ((gradU & gradU.T()) & gradU.T())
- ((gradU.T() & gradU) & gradU)
- ((gradU.T() & gradU.T()) & gradU)
)
);
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -78,7 +78,6 @@ protected:
volScalarField k_;
volScalarField epsilon_;
volTensorField gradU_;
volScalarField eta_;
volScalarField ksi_;
volScalarField Cmu_;

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -220,16 +220,15 @@ LienCubicKELowRe::LienCubicKELowRe
y_(mesh_),
gradU_(fvc::grad(U)),
eta_
(
k_/bound(epsilon_, epsilonMin_)
*sqrt(2.0*magSqr(0.5*(gradU_ + gradU_.T())))
*sqrt(2.0*magSqr(0.5*(fvc::grad(U) + T(fvc::grad(U)))))
),
ksi_
(
k_/epsilon_
*sqrt(2.0*magSqr(0.5*(gradU_ - gradU_.T())))
*sqrt(2.0*magSqr(0.5*(fvc::grad(U) - T(fvc::grad(U)))))
),
Cmu_(2.0/(3.0*(A1_ + eta_ + alphaKsi_*ksi_))),
fEta_(A2_ + pow3(eta_)),
@ -237,7 +236,10 @@ LienCubicKELowRe::LienCubicKELowRe
C5viscosity_
(
-2.0*pow3(Cmu_)*pow4(k_)/pow3(epsilon_)
*(magSqr(gradU_ + gradU_.T()) - magSqr(gradU_ - gradU_.T()))
*(
magSqr(fvc::grad(U) + T(fvc::grad(U)))
- magSqr(fvc::grad(U) - T(fvc::grad(U)))
)
),
yStar_(sqrt(k_)*y_/nu() + SMALL),
@ -265,27 +267,27 @@ LienCubicKELowRe::LienCubicKELowRe
*(
Ctau1_/fEta_
*(
(gradU_ & gradU_)
+ (gradU_ & gradU_)().T()
(fvc::grad(U) & fvc::grad(U))
+ (fvc::grad(U) & fvc::grad(U))().T()
)
+ Ctau2_/fEta_*(gradU_ & gradU_.T())
+ Ctau3_/fEta_*(gradU_.T() & gradU_)
+ Ctau2_/fEta_*(fvc::grad(U) & T(fvc::grad(U)))
+ Ctau3_/fEta_*(T(fvc::grad(U)) & fvc::grad(U))
)
// cubic term C4
- 20.0*pow4(k_)/pow3(epsilon_)
*pow3(Cmu_)
*(
((gradU_ & gradU_) & gradU_.T())
+ ((gradU_ & gradU_.T()) & gradU_.T())
- ((gradU_.T() & gradU_) & gradU_)
- ((gradU_.T() & gradU_.T()) & gradU_)
((fvc::grad(U) & fvc::grad(U)) & T(fvc::grad(U)))
+ ((fvc::grad(U) & T(fvc::grad(U))) & T(fvc::grad(U)))
- ((T(fvc::grad(U)) & fvc::grad(U)) & fvc::grad(U))
- ((T(fvc::grad(U)) & T(fvc::grad(U))) & fvc::grad(U))
)
// cubic term C5, explicit part
+ min
(
C5viscosity_,
dimensionedScalar("0", C5viscosity_.dimensions(), 0.0)
)*gradU_
)*fvc::grad(U)
)
)
{
@ -325,7 +327,7 @@ tmp<volSymmTensorField> LienCubicKELowRe::R() const
IOobject::NO_READ,
IOobject::NO_WRITE
),
((2.0/3.0)*I)*k_ - nut_*twoSymm(gradU_) + nonlinearStress_,
((2.0/3.0)*I)*k_ - nut_*twoSymm(fvc::grad(U_)) + nonlinearStress_,
k_.boundaryField().types()
)
);
@ -406,10 +408,11 @@ void LienCubicKELowRe::correct()
y_.correct();
}
gradU_ = fvc::grad(U_);
tmp<volTensorField> tgradU = fvc::grad(U_);
const volTensorField& gradU = tgradU();
// generation term
tmp<volScalarField> S2 = symm(gradU_) && gradU_;
tmp<volScalarField> S2 = symm(gradU) && gradU;
yStar_ = sqrt(k_)*y_/nu() + SMALL;
tmp<volScalarField> Rt = sqr(k_)/(nu()*epsilon_);
@ -427,7 +430,7 @@ void LienCubicKELowRe::correct()
volScalarField G
(
"RASModel::G",
Cmu_*fMu*sqr(k_)/epsilon_*S2 - (nonlinearStress_ && gradU_)
Cmu_*fMu*sqr(k_)/epsilon_*S2 - (nonlinearStress_ && gradU)
);
// Dissipation equation
@ -473,14 +476,14 @@ void LienCubicKELowRe::correct()
// Re-calculate viscosity
eta_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU_ + gradU_.T())));
ksi_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU_ - gradU_.T())));
eta_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU + gradU.T())));
ksi_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU - gradU.T())));
Cmu_ = 2.0/(3.0*(A1_ + eta_ + alphaKsi_*ksi_));
fEta_ = A2_ + pow(eta_, 3.0);
C5viscosity_ =
- 2.0*pow(Cmu_, 3.0)*pow(k_, 4.0)/pow(epsilon_, 3.0)
*(magSqr(gradU_ + gradU_.T()) - magSqr(gradU_ - gradU_.T()));
*(magSqr(gradU + gradU.T()) - magSqr(gradU - gradU.T()));
nut_ =
Cmu_*fMu*sqr(k_)/epsilon_
@ -498,27 +501,27 @@ void LienCubicKELowRe::correct()
*(
Ctau1_/fEta_
*(
(gradU_ & gradU_)
+ (gradU_ & gradU_)().T()
(gradU & gradU)
+ (gradU & gradU)().T()
)
+ Ctau2_/fEta_*(gradU_ & gradU_.T())
+ Ctau3_/fEta_*(gradU_.T() & gradU_)
+ Ctau2_/fEta_*(gradU & gradU.T())
+ Ctau3_/fEta_*(gradU.T() & gradU)
)
// cubic term C4
- 20.0*pow(k_, 4.0)/pow(epsilon_, 3.0)
*pow(Cmu_, 3.0)
*(
((gradU_ & gradU_) & gradU_.T())
+ ((gradU_ & gradU_.T()) & gradU_.T())
- ((gradU_.T() & gradU_) & gradU_)
- ((gradU_.T() & gradU_.T()) & gradU_)
((gradU & gradU) & gradU.T())
+ ((gradU & gradU.T()) & gradU.T())
- ((gradU.T() & gradU) & gradU)
- ((gradU.T() & gradU.T()) & gradU)
)
// cubic term C5, explicit part
+ min
(
C5viscosity_,
dimensionedScalar("0", C5viscosity_.dimensions(), 0.0)
)*gradU_
)*gradU
);
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -103,7 +103,6 @@ protected:
wallDist y_;
volTensorField gradU_;
volScalarField eta_;
volScalarField ksi_;
volScalarField Cmu_;

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -190,16 +190,15 @@ NonlinearKEShih::NonlinearKEShih
mesh_
),
gradU_(fvc::grad(U)),
eta_
(
k_/bound(epsilon_, epsilonMin_)
*sqrt(2.0*magSqr(0.5*(gradU_ + gradU_.T())))
*sqrt(2.0*magSqr(0.5*(fvc::grad(U) + T(fvc::grad(U)))))
),
ksi_
(
k_/epsilon_
*sqrt(2.0*magSqr(0.5*(gradU_ - gradU_.T())))
*sqrt(2.0*magSqr(0.5*(fvc::grad(U) - T(fvc::grad(U)))))
),
Cmu_(2.0/(3.0*(A1_ + eta_ + alphaKsi_*ksi_))),
fEta_(A2_ + pow(eta_, 3.0)),
@ -215,11 +214,11 @@ NonlinearKEShih::NonlinearKEShih
*(
Ctau1_/fEta_
*(
(gradU_ & gradU_)
+ (gradU_ & gradU_)().T()
(fvc::grad(U) & fvc::grad(U))
+ (fvc::grad(U) & fvc::grad(U))().T()
)
+ Ctau2_/fEta_*(gradU_ & gradU_.T())
+ Ctau3_/fEta_*(gradU_.T() & gradU_)
+ Ctau2_/fEta_*(fvc::grad(U) & T(fvc::grad(U)))
+ Ctau3_/fEta_*(T(fvc::grad(U)) & fvc::grad(U))
)
)
)
@ -323,16 +322,17 @@ void NonlinearKEShih::correct()
return;
}
gradU_ = fvc::grad(U_);
tmp<volTensorField> tgradU = fvc::grad(U_);
const volTensorField& gradU = tgradU();
// generation term
tmp<volScalarField> S2 = symm(gradU_) && gradU_;
tmp<volScalarField> S2 = symm(gradU) && gradU;
volScalarField G
(
"RASModel::G",
Cmu_*sqr(k_)/epsilon_*S2
- (nonlinearStress_ && gradU_)
- (nonlinearStress_ && gradU)
);
#include "nonLinearWallFunctionsI.H"
@ -375,8 +375,8 @@ void NonlinearKEShih::correct()
// Re-calculate viscosity
eta_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU_ + gradU_.T())));
ksi_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU_ - gradU_.T())));
eta_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU + T(gradU))));
ksi_ = k_/epsilon_*sqrt(2.0*magSqr(0.5*(gradU - T(gradU))));
Cmu_ = 2.0/(3.0*(A1_ + eta_ + alphaKsi_*ksi_));
fEta_ = A2_ + pow(eta_, 3.0);
@ -390,11 +390,11 @@ void NonlinearKEShih::correct()
*(
Ctau1_/fEta_
*(
(gradU_ & gradU_)
+ (gradU_ & gradU_)().T()
(gradU & gradU)
+ (gradU & gradU)().T()
)
+ Ctau2_/fEta_*(gradU_ & gradU_.T())
+ Ctau3_/fEta_*(gradU_.T() & gradU_)
+ Ctau2_/fEta_*(gradU & T(gradU))
+ Ctau3_/fEta_*(T(gradU) & gradU)
)
);
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -82,7 +82,6 @@ protected:
volScalarField k_;
volScalarField epsilon_;
volTensorField gradU_;
volScalarField eta_;
volScalarField ksi_;
volScalarField Cmu_;

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -104,7 +104,7 @@ Description
*magFaceGradU[facei]
*Cmu25*sqrt(k_[faceCelli])
/(kappa_.value()*y_[patchi][facei])
- (nonlinearStress_[faceCelli] && gradU_[faceCelli]);
- (nonlinearStress_[faceCelli] && gradU[faceCelli]);
}
}
}