BUG: waveModels - corrected reference water levels - thanks to Gabi Barajas

This commit is contained in:
Andrew Heather 2017-03-30 14:57:36 +01:00
parent 3d05295abd
commit 970da5aa75
2 changed files with 20 additions and 11 deletions

View File

@ -111,6 +111,9 @@ void Foam::waveModel::initialiseGeometry()
} }
} }
// Set minimum z reference level
zMin0_ = gMin(zMin_);
// Local paddle-to-face addressing // Local paddle-to-face addressing
faceToPaddle_.setSize(patch_.size(), -1); faceToPaddle_.setSize(patch_.size(), -1);
forAll(faceToPaddle_, facei) forAll(faceToPaddle_, facei)
@ -162,18 +165,21 @@ void Foam::waveModel::setAlpha(const scalarField& level)
const label paddlei = faceToPaddle_[facei]; const label paddlei = faceToPaddle_[facei];
const scalar paddleCalc = level[paddlei]; const scalar paddleCalc = level[paddlei];
if (zMax_[facei] < paddleCalc) const scalar zMin0 = zMin_[facei] - zMin0_;
const scalar zMax0 = zMax_[facei] - zMin0_;
if (zMax0 < paddleCalc)
{ {
alpha_[facei] = 1.0; alpha_[facei] = 1.0;
} }
else if (zMin_[facei] > paddleCalc) else if (zMin0 > paddleCalc)
{ {
alpha_[facei] = 0.0; alpha_[facei] = 0.0;
} }
else else
{ {
scalar dz = paddleCalc - zMin_[facei]; scalar dz = paddleCalc - zMin0;
alpha_[facei] = dz/zSpan_; alpha_[facei] = dz/(zMax0 - zMin0);
} }
} }
} }
@ -190,15 +196,15 @@ void Foam::waveModel::setPaddlePropeties
const label paddlei = faceToPaddle_[facei]; const label paddlei = faceToPaddle_[facei];
const scalar paddleCalc = level[paddlei]; const scalar paddleCalc = level[paddlei];
const scalar paddleHeight = min(paddleCalc, waterDepthRef_); const scalar paddleHeight = min(paddleCalc, waterDepthRef_);
const scalar zMin = zMin_[facei]; const scalar zMin = zMin_[facei] - zMin0_;
const scalar zMax = zMax_[facei]; const scalar zMax = zMax_[facei] - zMin0_;
fraction = 1; fraction = 1;
z = 0; z = 0;
if (zMax < paddleHeight) if (zMax < paddleHeight)
{ {
z = z_[facei]; z = z_[facei] - zMin0_;
} }
else if (zMin > paddleCalc) else if (zMin > paddleCalc)
{ {
@ -211,8 +217,8 @@ void Foam::waveModel::setPaddlePropeties
if ((zMax > paddleCalc) && (zMin < paddleCalc)) if ((zMax > paddleCalc) && (zMin < paddleCalc))
{ {
scalar dz = paddleCalc - zMin; scalar dz = paddleCalc - zMin;
fraction = dz/zSpan_; fraction = dz/(zMax - zMin);
z = z_[facei]; z = z_[facei] - zMin0_;
} }
} }
else else
@ -224,7 +230,7 @@ void Foam::waveModel::setPaddlePropeties
else if ((zMax > paddleCalc) && (zMin < paddleCalc)) else if ((zMax > paddleCalc) && (zMin < paddleCalc))
{ {
scalar dz = paddleCalc - zMin; scalar dz = paddleCalc - zMin;
fraction = dz/zSpan_; fraction = dz/(zMax - zMin);
z = waterDepthRef_; z = waterDepthRef_;
} }
} }
@ -382,7 +388,7 @@ void Foam::waveModel::correct(const scalar t)
{ {
const label paddlei = faceToPaddle_[facei]; const label paddlei = faceToPaddle_[facei];
if (zMin_[facei] < activeLevel[paddlei]) if (zMin_[facei] - zMin0_ < activeLevel[paddlei])
{ {
scalar UCorr = scalar UCorr =
(calculatedLevel[paddlei] - activeLevel[paddlei]) (calculatedLevel[paddlei] - activeLevel[paddlei])

View File

@ -106,6 +106,9 @@ protected:
//- Maximum z (point) height per patch face / [m] //- Maximum z (point) height per patch face / [m]
scalarField zMax_; scalarField zMax_;
//- Minimum z reference level / [m]
scalar zMin0_;
//- Reference water depth / [m] //- Reference water depth / [m]
scalar waterDepthRef_; scalar waterDepthRef_;