diff --git a/README.md b/README.md index 3aa2503b54..aec529e09f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # About OpenFOAM -OpenFOAM is a free, open source CFD software [released and developed primarily by OpenCFD Ltd](http://www.openfoam.com) since 2004released and developed primarily by. It has a large user base across most areas of engineering and science, from both commercial and academic organisations. OpenFOAM has an extensive range of features to solve anything from complex fluid flows involving chemical reactions, turbulence and heat transfer, to acoustics, solid mechanics and electromagnetics. [More...](http://www.openfoam.com/documentation) +OpenFOAM is a free, open source CFD software [released and developed primarily by OpenCFD Ltd](http://www.openfoam.com) since 2004. It has a large user base across most areas of engineering and science, from both commercial and academic organisations. OpenFOAM has an extensive range of features to solve anything from complex fluid flows involving chemical reactions, turbulence and heat transfer, to acoustics, solid mechanics and electromagnetics. [More...](http://www.openfoam.com/documentation) OpenFOAM+ is professionally released every six months to include customer sponsored developments and contributions from the community, including the OpenFOAM Foundation. Releases designated OpenFOAM+ contain several man years of client-sponsored developments of which much has been transferred to, but not released in the OpenFOAM Foundation branch. @@ -23,4 +23,4 @@ Violations of the Trademark are continuously monitored, and will be duly prosecu - [OpenFOAM Community](http://www.openfoam.com/community/) - [Contacting OpenCFD](http://www.openfoam.com/contact/) -Copyright 2016 OpenCFD Ltd +Copyright 2016-2017 OpenCFD Ltd diff --git a/src/waveModels/waveModel/waveModel.C b/src/waveModels/waveModel/waveModel.C index 1f86780e88..f0ab70fad2 100644 --- a/src/waveModels/waveModel/waveModel.C +++ b/src/waveModels/waveModel/waveModel.C @@ -111,6 +111,9 @@ void Foam::waveModel::initialiseGeometry() } } + // Set minimum z reference level + zMin0_ = gMin(zMin_); + // Local paddle-to-face addressing faceToPaddle_.setSize(patch_.size(), -1); forAll(faceToPaddle_, facei) @@ -162,18 +165,21 @@ void Foam::waveModel::setAlpha(const scalarField& level) const label paddlei = faceToPaddle_[facei]; 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; } - else if (zMin_[facei] > paddleCalc) + else if (zMin0 > paddleCalc) { alpha_[facei] = 0.0; } else { - scalar dz = paddleCalc - zMin_[facei]; - alpha_[facei] = dz/zSpan_; + scalar dz = paddleCalc - zMin0; + alpha_[facei] = dz/(zMax0 - zMin0); } } } @@ -190,15 +196,15 @@ void Foam::waveModel::setPaddlePropeties const label paddlei = faceToPaddle_[facei]; const scalar paddleCalc = level[paddlei]; const scalar paddleHeight = min(paddleCalc, waterDepthRef_); - const scalar zMin = zMin_[facei]; - const scalar zMax = zMax_[facei]; + const scalar zMin = zMin_[facei] - zMin0_; + const scalar zMax = zMax_[facei] - zMin0_; fraction = 1; z = 0; if (zMax < paddleHeight) { - z = z_[facei]; + z = z_[facei] - zMin0_; } else if (zMin > paddleCalc) { @@ -211,8 +217,8 @@ void Foam::waveModel::setPaddlePropeties if ((zMax > paddleCalc) && (zMin < paddleCalc)) { scalar dz = paddleCalc - zMin; - fraction = dz/zSpan_; - z = z_[facei]; + fraction = dz/(zMax - zMin); + z = z_[facei] - zMin0_; } } else @@ -224,7 +230,7 @@ void Foam::waveModel::setPaddlePropeties else if ((zMax > paddleCalc) && (zMin < paddleCalc)) { scalar dz = paddleCalc - zMin; - fraction = dz/zSpan_; + fraction = dz/(zMax - zMin); z = waterDepthRef_; } } @@ -382,7 +388,7 @@ void Foam::waveModel::correct(const scalar t) { const label paddlei = faceToPaddle_[facei]; - if (zMin_[facei] < activeLevel[paddlei]) + if (zMin_[facei] - zMin0_ < activeLevel[paddlei]) { scalar UCorr = (calculatedLevel[paddlei] - activeLevel[paddlei]) diff --git a/src/waveModels/waveModel/waveModel.H b/src/waveModels/waveModel/waveModel.H index f7cea6c719..36d48ddd8f 100644 --- a/src/waveModels/waveModel/waveModel.H +++ b/src/waveModels/waveModel/waveModel.H @@ -106,6 +106,9 @@ protected: //- Maximum z (point) height per patch face / [m] scalarField zMax_; + //- Minimum z reference level / [m] + scalar zMin0_; + //- Reference water depth / [m] scalar waterDepthRef_;