mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
INT: refactored wave model code
This commit is contained in:
@ -2,6 +2,7 @@ waveModel/waveModel.C
|
|||||||
waveModel/waveModelNew.C
|
waveModel/waveModelNew.C
|
||||||
|
|
||||||
waveGenerationModels/base/waveGenerationModel/waveGenerationModel.C
|
waveGenerationModels/base/waveGenerationModel/waveGenerationModel.C
|
||||||
|
waveGenerationModels/base/irregularWaveModel/irregularWaveModel.C
|
||||||
waveGenerationModels/base/regularWaveModel/regularWaveModel.C
|
waveGenerationModels/base/regularWaveModel/regularWaveModel.C
|
||||||
waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.C
|
waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.C
|
||||||
waveGenerationModels/derived/Boussinesq/BoussinesqWaveModel.C
|
waveGenerationModels/derived/Boussinesq/BoussinesqWaveModel.C
|
||||||
@ -12,6 +13,7 @@ waveGenerationModels/derived/streamFunction/streamFunctionWaveModel.C
|
|||||||
waveGenerationModels/derived/StokesII/StokesIIWaveModel.C
|
waveGenerationModels/derived/StokesII/StokesIIWaveModel.C
|
||||||
waveGenerationModels/derived/StokesI/StokesIWaveModel.C
|
waveGenerationModels/derived/StokesI/StokesIWaveModel.C
|
||||||
waveGenerationModels/derived/StokesV/StokesVWaveModel.C
|
waveGenerationModels/derived/StokesV/StokesVWaveModel.C
|
||||||
|
waveGenerationModels/derived/irregularMultiDirectional/irregularMultiDirectionalWaveModel.C
|
||||||
|
|
||||||
|
|
||||||
waveAbsorptionModels/base/waveAbsorptionModel/waveAbsorptionModel.C
|
waveAbsorptionModels/base/waveAbsorptionModel/waveAbsorptionModel.C
|
||||||
|
|||||||
@ -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) 2016-2017 OpenCFD Ltd.
|
\\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd.
|
||||||
\\/ M anipulation | Copyright (C) 2015 IH-Cantabria
|
\\/ M anipulation | Copyright (C) 2015 IH-Cantabria
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -49,6 +49,7 @@ Foam::scalar Foam::waveModels::irregularWaveModel::timeCoeff
|
|||||||
return max(0, min(t/rampTime_, 1));
|
return max(0, min(t/rampTime_, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::waveModels::irregularWaveModel::irregularWaveModel
|
Foam::waveModels::irregularWaveModel::irregularWaveModel
|
||||||
|
|||||||
@ -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) 2016-2017 OpenCFD Ltd.
|
\\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd.
|
||||||
\\/ M anipulation | Copyright (C) 2015 IH-Cantabria
|
\\/ M anipulation | Copyright (C) 2015 IH-Cantabria
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -41,7 +41,7 @@ namespace waveModels
|
|||||||
{
|
{
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class irregularWaveModel Declaration
|
Class irregularWaveModel Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
class irregularWaveModel
|
class irregularWaveModel
|
||||||
@ -69,6 +69,7 @@ protected:
|
|||||||
//- Return the time scaling coefficient
|
//- Return the time scaling coefficient
|
||||||
virtual scalar timeCoeff(const scalar t) const;
|
virtual scalar timeCoeff(const scalar t) const;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
|
|||||||
@ -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) 2016-2017 OpenCFD Ltd.
|
\\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd.
|
||||||
\\/ M anipulation | Copyright (C) 2015 IH-Cantabria
|
\\/ M anipulation | Copyright (C) 2015 IH-Cantabria
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -41,15 +41,6 @@ namespace waveModels
|
|||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::scalar Foam::waveModels::regularWaveModel::timeCoeff
|
|
||||||
(
|
|
||||||
const scalar t
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
return max(0, min(t/rampTime_, 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Foam::word Foam::waveModels::regularWaveModel::waveType() const
|
Foam::word Foam::waveModels::regularWaveModel::waveType() const
|
||||||
{
|
{
|
||||||
scalar waveK = 2.0*mathematical::pi/waveLength_;
|
scalar waveK = 2.0*mathematical::pi/waveLength_;
|
||||||
@ -78,8 +69,9 @@ Foam::waveModels::regularWaveModel::regularWaveModel
|
|||||||
const bool readFields
|
const bool readFields
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
waveGenerationModel(dict, mesh, patch, false),
|
irregularWaveModel(dict, mesh, patch, false),
|
||||||
rampTime_(VSMALL),
|
waveHeight_(0),
|
||||||
|
waveAngle_(0),
|
||||||
wavePeriod_(0),
|
wavePeriod_(0),
|
||||||
waveLength_(0),
|
waveLength_(0),
|
||||||
wavePhase_(1.5*mathematical::pi)
|
wavePhase_(1.5*mathematical::pi)
|
||||||
@ -104,9 +96,10 @@ bool Foam::waveModels::regularWaveModel::readDict
|
|||||||
const dictionary& overrideDict
|
const dictionary& overrideDict
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (waveGenerationModel::readDict(overrideDict))
|
if (irregularWaveModel::readDict(overrideDict))
|
||||||
{
|
{
|
||||||
lookup("rampTime") >> rampTime_;
|
waveHeight_ = readWaveHeight();
|
||||||
|
waveAngle_ = readWaveAngle();
|
||||||
|
|
||||||
lookup("wavePeriod") >> wavePeriod_;
|
lookup("wavePeriod") >> wavePeriod_;
|
||||||
if (wavePeriod_ < 0)
|
if (wavePeriod_ < 0)
|
||||||
@ -130,9 +123,10 @@ bool Foam::waveModels::regularWaveModel::readDict
|
|||||||
|
|
||||||
void Foam::waveModels::regularWaveModel::info(Ostream& os) const
|
void Foam::waveModels::regularWaveModel::info(Ostream& os) const
|
||||||
{
|
{
|
||||||
waveGenerationModel::info(os);
|
irregularWaveModel::info(os);
|
||||||
|
|
||||||
os << " Ramp time : " << rampTime_ << nl
|
os << " Wave height : " << waveHeight_ << nl
|
||||||
|
<< " Wave angle : " << 180/mathematical::pi*waveAngle_ << nl
|
||||||
<< " Wave period : " << wavePeriod_ << nl
|
<< " Wave period : " << wavePeriod_ << nl
|
||||||
<< " Wave length : " << waveLength_ << nl
|
<< " Wave length : " << waveLength_ << nl
|
||||||
<< " Wave phase : " << wavePhase_ << nl;
|
<< " Wave phase : " << wavePhase_ << nl;
|
||||||
|
|||||||
@ -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) 2016-2017 OpenCFD Ltd.
|
\\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd.
|
||||||
\\/ M anipulation | Copyright (C) 2015 IH-Cantabria
|
\\/ M anipulation | Copyright (C) 2015 IH-Cantabria
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -31,7 +31,7 @@ Description
|
|||||||
#ifndef waveModels_reguarWaveModel_H
|
#ifndef waveModels_reguarWaveModel_H
|
||||||
#define waveModels_reguarWaveModel_H
|
#define waveModels_reguarWaveModel_H
|
||||||
|
|
||||||
#include "waveGenerationModel.H"
|
#include "irregularWaveModel.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ namespace waveModels
|
|||||||
|
|
||||||
class regularWaveModel
|
class regularWaveModel
|
||||||
:
|
:
|
||||||
public waveGenerationModel
|
public irregularWaveModel
|
||||||
{
|
{
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
@ -61,8 +61,11 @@ protected:
|
|||||||
|
|
||||||
// Protected data
|
// Protected data
|
||||||
|
|
||||||
//- Ramp time
|
//- Wave height / [m]
|
||||||
scalar rampTime_;
|
scalar waveHeight_;
|
||||||
|
|
||||||
|
//- Wave angle / [rad] (read in degrees)
|
||||||
|
scalar waveAngle_;
|
||||||
|
|
||||||
//- Wave period
|
//- Wave period
|
||||||
scalar wavePeriod_;
|
scalar wavePeriod_;
|
||||||
@ -76,9 +79,6 @@ protected:
|
|||||||
|
|
||||||
// Protected Member Functions
|
// Protected Member Functions
|
||||||
|
|
||||||
//- Return the time scaling coefficient
|
|
||||||
virtual scalar timeCoeff(const scalar t) const;
|
|
||||||
|
|
||||||
//- Return word description of wave type
|
//- Return word description of wave type
|
||||||
virtual word waveType() const;
|
virtual word waveType() const;
|
||||||
|
|
||||||
|
|||||||
@ -27,6 +27,11 @@ License
|
|||||||
#include "polyPatch.H"
|
#include "polyPatch.H"
|
||||||
#include "SubField.H"
|
#include "SubField.H"
|
||||||
|
|
||||||
|
#include "mathematicalConstants.H"
|
||||||
|
|
||||||
|
using namespace Foam::constant;
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
@ -61,6 +66,8 @@ Foam::waveModels::solitaryWaveModel::solitaryWaveModel
|
|||||||
)
|
)
|
||||||
:
|
:
|
||||||
waveGenerationModel(dict, mesh, patch, false),
|
waveGenerationModel(dict, mesh, patch, false),
|
||||||
|
waveHeight_(0),
|
||||||
|
waveAngle_(0),
|
||||||
x_
|
x_
|
||||||
(
|
(
|
||||||
patch.faceCentres().component(0)*cos(waveAngle_)
|
patch.faceCentres().component(0)*cos(waveAngle_)
|
||||||
@ -90,6 +97,9 @@ bool Foam::waveModels::solitaryWaveModel::readDict
|
|||||||
{
|
{
|
||||||
if (waveGenerationModel::readDict(overrideDict))
|
if (waveGenerationModel::readDict(overrideDict))
|
||||||
{
|
{
|
||||||
|
waveHeight_ = readWaveHeight();
|
||||||
|
waveAngle_ = readWaveAngle();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,7 +111,9 @@ void Foam::waveModels::solitaryWaveModel::info(Ostream& os) const
|
|||||||
{
|
{
|
||||||
waveGenerationModel::info(os);
|
waveGenerationModel::info(os);
|
||||||
|
|
||||||
os << " x0: " << x0_ << nl;
|
os << " Wave height : " << waveHeight_ << nl
|
||||||
|
<< " Wave angle : " << 180/mathematical::pi*waveAngle_ << nl
|
||||||
|
<< " x0: " << x0_ << nl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -53,6 +53,12 @@ protected:
|
|||||||
|
|
||||||
// Protected data
|
// Protected data
|
||||||
|
|
||||||
|
//- Wave height / [m]
|
||||||
|
scalar waveHeight_;
|
||||||
|
|
||||||
|
//- Wave angle / [rad] (read in degrees)
|
||||||
|
scalar waveAngle_;
|
||||||
|
|
||||||
//-
|
//-
|
||||||
const scalarField& x_;
|
const scalarField& x_;
|
||||||
|
|
||||||
|
|||||||
@ -39,6 +39,30 @@ namespace waveModels
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::scalar Foam::waveModels::waveGenerationModel::readWaveHeight() const
|
||||||
|
{
|
||||||
|
scalar h(readScalar(lookup("waveHeight")));
|
||||||
|
if (h < 0)
|
||||||
|
{
|
||||||
|
FatalIOErrorInFunction(*this)
|
||||||
|
<< "Wave height must be greater than zero. Supplied"
|
||||||
|
<< " value waveHeight = " << h
|
||||||
|
<< exit(FatalIOError);
|
||||||
|
}
|
||||||
|
|
||||||
|
return h;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::scalar Foam::waveModels::waveGenerationModel::readWaveAngle() const
|
||||||
|
{
|
||||||
|
scalar angle(readScalar(lookup("waveAngle")));
|
||||||
|
return angle* mathematical::pi/180;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::waveModels::waveGenerationModel::waveGenerationModel
|
Foam::waveModels::waveGenerationModel::waveGenerationModel
|
||||||
@ -49,9 +73,7 @@ Foam::waveModels::waveGenerationModel::waveGenerationModel
|
|||||||
const bool readFields
|
const bool readFields
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
waveModel(dict, mesh, patch, false),
|
waveModel(dict, mesh, patch, false)
|
||||||
waveHeight_(0),
|
|
||||||
waveAngle_(0)
|
|
||||||
{
|
{
|
||||||
if (readFields)
|
if (readFields)
|
||||||
{
|
{
|
||||||
@ -77,18 +99,6 @@ bool Foam::waveModels::waveGenerationModel::readDict
|
|||||||
{
|
{
|
||||||
lookup("activeAbsorption") >> activeAbsorption_;
|
lookup("activeAbsorption") >> activeAbsorption_;
|
||||||
|
|
||||||
lookup("waveHeight") >> waveHeight_;
|
|
||||||
if (waveHeight_ < 0)
|
|
||||||
{
|
|
||||||
FatalIOErrorInFunction(*this)
|
|
||||||
<< "Wave height must be greater than zero. Supplied"
|
|
||||||
<< " value waveHeight = " << waveHeight_
|
|
||||||
<< exit(FatalIOError);
|
|
||||||
}
|
|
||||||
|
|
||||||
lookup("waveAngle") >> waveAngle_;
|
|
||||||
waveAngle_ *= mathematical::pi/180;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,9 +109,6 @@ bool Foam::waveModels::waveGenerationModel::readDict
|
|||||||
void Foam::waveModels::waveGenerationModel::info(Ostream& os) const
|
void Foam::waveModels::waveGenerationModel::info(Ostream& os) const
|
||||||
{
|
{
|
||||||
waveModel::info(os);
|
waveModel::info(os);
|
||||||
|
|
||||||
os << " Wave height : " << waveHeight_ << nl
|
|
||||||
<< " Wave angle : " << 180/mathematical::pi*waveAngle_ << nl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -50,13 +50,13 @@ class waveGenerationModel
|
|||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
// Protected data
|
// Protected Member Functions
|
||||||
|
|
||||||
//- Wave height / [m]
|
//- Helper function to read the wave height from the coeff dictionary
|
||||||
scalar waveHeight_;
|
scalar readWaveHeight() const;
|
||||||
|
|
||||||
//- Wave angle / [rad] (read in degrees)
|
//- Helper function to read the wave angle from the coeff dictionary
|
||||||
scalar waveAngle_;
|
scalar readWaveAngle() const;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|||||||
@ -23,7 +23,7 @@ License
|
|||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "irregularWavesMultiDirecWaveModel.H"
|
#include "irregularMultiDirectionalWaveModel.H"
|
||||||
#include "mathematicalConstants.H"
|
#include "mathematicalConstants.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
@ -35,11 +35,11 @@ namespace Foam
|
|||||||
{
|
{
|
||||||
namespace waveModels
|
namespace waveModels
|
||||||
{
|
{
|
||||||
defineTypeNameAndDebug(irregularWavesMultiDirec, 0);
|
defineTypeNameAndDebug(irregularMultiDirectional, 0);
|
||||||
addToRunTimeSelectionTable
|
addToRunTimeSelectionTable
|
||||||
(
|
(
|
||||||
waveModel,
|
waveModel,
|
||||||
irregularWavesMultiDirec,
|
irregularMultiDirectional,
|
||||||
patch
|
patch
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -48,8 +48,7 @@ namespace waveModels
|
|||||||
|
|
||||||
// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * //
|
// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * //
|
||||||
|
|
||||||
// First order wave height
|
Foam::scalar Foam::waveModels::irregularMultiDirectional::eta
|
||||||
Foam::scalar Foam::waveModels::irregularWavesMultiDirec::eta
|
|
||||||
(
|
(
|
||||||
const scalar H,
|
const scalar H,
|
||||||
const scalar Kx,
|
const scalar Kx,
|
||||||
@ -68,8 +67,7 @@ Foam::scalar Foam::waveModels::irregularWavesMultiDirec::eta
|
|||||||
|
|
||||||
// * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * //
|
// * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * //
|
||||||
|
|
||||||
//Calculate waveLength
|
Foam::scalar Foam::waveModels::irregularMultiDirectional::waveLength
|
||||||
Foam::scalar Foam::waveModels::irregularWavesMultiDirec::waveLength
|
|
||||||
(
|
(
|
||||||
const scalar h,
|
const scalar h,
|
||||||
const scalar T
|
const scalar T
|
||||||
@ -78,7 +76,7 @@ Foam::scalar Foam::waveModels::irregularWavesMultiDirec::waveLength
|
|||||||
scalar L0 = mag(g_)*T*T/(2.0*mathematical::pi);
|
scalar L0 = mag(g_)*T*T/(2.0*mathematical::pi);
|
||||||
scalar L = L0;
|
scalar L = L0;
|
||||||
|
|
||||||
for (int iii=1; iii<=100; iii++)
|
for (label i=1; i<=100; ++i)
|
||||||
{
|
{
|
||||||
L = L0*tanh(2.0*mathematical::pi*h/L);
|
L = L0*tanh(2.0*mathematical::pi*h/L);
|
||||||
}
|
}
|
||||||
@ -87,7 +85,7 @@ Foam::scalar Foam::waveModels::irregularWavesMultiDirec::waveLength
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Foam::vector Foam::waveModels::irregularWavesMultiDirec::U
|
Foam::vector Foam::waveModels::irregularMultiDirectional::Uf
|
||||||
(
|
(
|
||||||
const scalar h,
|
const scalar h,
|
||||||
const scalar x,
|
const scalar x,
|
||||||
@ -100,98 +98,80 @@ Foam::vector Foam::waveModels::irregularWavesMultiDirec::U
|
|||||||
scalar v = 0.0;
|
scalar v = 0.0;
|
||||||
scalar w = 0.0;
|
scalar w = 0.0;
|
||||||
|
|
||||||
scalar phaseTot = 0.0;
|
forAll(irregWaveHeights_, ii)
|
||||||
scalar waveKs_ = 0.0;
|
{
|
||||||
scalar waveOmegas_ = 0.0;
|
forAll(irregWaveHeights_[ii], jj)
|
||||||
|
{
|
||||||
|
scalar waveKs = mathematical::twoPi/irregWaveLengths_[ii][jj];
|
||||||
|
scalar waveOmegas = mathematical::twoPi/irregWavePeriods_[ii][jj];
|
||||||
|
|
||||||
int ii;
|
scalar phaseTot =
|
||||||
int jj;
|
waveKs*x*cos(irregWaveDirs_[ii][jj])
|
||||||
scalar COLUMNAS = 0;
|
+ waveKs*y*sin(irregWaveDirs_[ii][jj])
|
||||||
scalar FILAS = irregWaveHeights_.size();
|
- waveOmegas*t
|
||||||
|
+ irregWavePhases_[ii][jj];
|
||||||
|
|
||||||
for (ii=0; ii<FILAS; ++ii)
|
const vector Uf = uMultiDirec
|
||||||
{
|
(
|
||||||
COLUMNAS= irregWaveHeights_[ii].size();
|
irregWaveHeights_[ii][jj],
|
||||||
|
waveOmegas,
|
||||||
|
phaseTot,
|
||||||
|
waveKs,
|
||||||
|
z,
|
||||||
|
h,
|
||||||
|
irregWaveDirs_[ii][jj]
|
||||||
|
);
|
||||||
|
|
||||||
for (jj=0; jj<COLUMNAS; ++jj)
|
u += Uf[0];
|
||||||
{
|
v += Uf[1];
|
||||||
waveKs_ = mathematical::twoPi/irregWaveLengths_[ii][jj];
|
w += Uf[2];
|
||||||
waveOmegas_ = mathematical::twoPi/irregWavePeriods_[ii][jj];
|
}
|
||||||
|
|
||||||
phaseTot = waveKs_*x*cos(irregWaveDirs_[ii][jj]) + waveKs_*y*sin(irregWaveDirs_[ii][jj]) - waveOmegas_*t + irregWavePhases_[ii][jj];
|
|
||||||
|
|
||||||
const vector Uf = uMultiDirec
|
|
||||||
(
|
|
||||||
irregWaveHeights_[ii][jj],
|
|
||||||
waveOmegas_,
|
|
||||||
phaseTot,
|
|
||||||
waveKs_,
|
|
||||||
z,
|
|
||||||
h,
|
|
||||||
irregWaveDirs_[ii][jj]
|
|
||||||
);
|
|
||||||
u = u + Uf[0];
|
|
||||||
v = v + Uf[1];
|
|
||||||
w = w + Uf[2];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return vector(u, v, w);
|
return vector(u, v, w);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Foam::waveModels::irregularWavesMultiDirec::setLevel
|
void Foam::waveModels::irregularMultiDirectional::setLevel
|
||||||
(
|
(
|
||||||
const scalar t,
|
const scalar t,
|
||||||
const scalar tCoeff,
|
const scalar tCoeff,
|
||||||
scalarField& level
|
scalarField& level
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
scalar eta = 0.0;
|
|
||||||
|
|
||||||
scalar COLUMNAS = 0;
|
|
||||||
scalar FILAS = 0;
|
|
||||||
|
|
||||||
scalar waveKs_ = 0.0;
|
|
||||||
scalar waveOmegas_ = 0.0;
|
|
||||||
|
|
||||||
int ii;
|
|
||||||
int jj;
|
|
||||||
|
|
||||||
forAll(level, paddlei)
|
forAll(level, paddlei)
|
||||||
{
|
{
|
||||||
eta = 0.0;
|
scalar eta = 0;
|
||||||
FILAS= irregWaveHeights_.size();
|
|
||||||
|
|
||||||
for (ii=0; ii<FILAS; ++ii)
|
forAll(irregWaveHeights_, ii)
|
||||||
{
|
{
|
||||||
COLUMNAS= irregWaveHeights_[ii].size();
|
forAll(irregWaveHeights_[ii], jj)
|
||||||
|
{
|
||||||
for (jj=0; jj<COLUMNAS; ++jj)
|
scalar waveKs = mathematical::twoPi/irregWaveLengths_[ii][jj];
|
||||||
{
|
scalar waveOmegas =
|
||||||
waveKs_ = mathematical::twoPi/irregWaveLengths_[ii][jj];
|
mathematical::twoPi/irregWavePeriods_[ii][jj];
|
||||||
waveOmegas_ = mathematical::twoPi/irregWavePeriods_[ii][jj];
|
|
||||||
|
|
||||||
eta +=
|
eta +=
|
||||||
this->eta
|
this->eta
|
||||||
(
|
(
|
||||||
irregWaveHeights_[ii][jj],
|
irregWaveHeights_[ii][jj],
|
||||||
waveKs_*cos(irregWaveDirs_[ii][jj]),
|
waveKs*cos(irregWaveDirs_[ii][jj]),
|
||||||
xPaddle_[paddlei],
|
xPaddle_[paddlei],
|
||||||
waveKs_*sin(irregWaveDirs_[ii][jj]),
|
waveKs*sin(irregWaveDirs_[ii][jj]),
|
||||||
yPaddle_[paddlei],
|
yPaddle_[paddlei],
|
||||||
waveOmegas_,
|
waveOmegas,
|
||||||
t,
|
t,
|
||||||
irregWavePhases_[ii][jj]
|
irregWavePhases_[ii][jj]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
level[paddlei] = waterDepthRef_ + tCoeff*eta;
|
level[paddlei] = waterDepthRef_ + tCoeff*eta;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Foam::vector Foam::waveModels::irregularWavesMultiDirec::uMultiDirec
|
|
||||||
|
Foam::vector Foam::waveModels::irregularMultiDirectional::uMultiDirec
|
||||||
(
|
(
|
||||||
const scalar irregH,
|
const scalar irregH,
|
||||||
const scalar irregWaveOmega,
|
const scalar irregWaveOmega,
|
||||||
@ -202,31 +182,23 @@ Foam::vector Foam::waveModels::irregularWavesMultiDirec::uMultiDirec
|
|||||||
const scalar irregDir
|
const scalar irregDir
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
|
const scalar ksh = irregWaveKs*hh;
|
||||||
|
const scalar ksz = irregWaveKs*zz;
|
||||||
|
|
||||||
scalar u =
|
scalar u =
|
||||||
irregH*0.5*irregWaveOmega*
|
irregH*0.5*irregWaveOmega*cos(pha)*(cosh(ksz)/sinh(ksh))*cos(irregDir);
|
||||||
cos(pha)*
|
|
||||||
(cosh(irregWaveKs*zz)/
|
|
||||||
sinh(irregWaveKs*hh))*
|
|
||||||
cos(irregDir);
|
|
||||||
|
|
||||||
scalar v =
|
scalar v =
|
||||||
irregH*0.5*irregWaveOmega*
|
irregH*0.5*irregWaveOmega*cos(pha)*(cosh(ksz)/sinh(ksh))*sin(irregDir);
|
||||||
cos(pha)*
|
|
||||||
(cosh(irregWaveKs*zz)/
|
|
||||||
sinh(irregWaveKs*hh))*
|
|
||||||
sin(irregDir);
|
|
||||||
|
|
||||||
scalar w =
|
scalar w =
|
||||||
irregH*0.5*irregWaveOmega*
|
irregH*0.5*irregWaveOmega*sin(pha)*(sinh(ksz)/sinh(ksh));
|
||||||
sin(pha)*
|
|
||||||
(sinh(irregWaveKs*zz)/
|
|
||||||
sinh(irregWaveKs*hh));
|
|
||||||
|
|
||||||
return vector(u, v, w);
|
return vector(u, v, w);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Foam::waveModels::irregularWavesMultiDirec::setVelocity
|
|
||||||
|
void Foam::waveModels::irregularMultiDirectional::setVelocity
|
||||||
(
|
(
|
||||||
const scalar t,
|
const scalar t,
|
||||||
const scalar tCoeff,
|
const scalar tCoeff,
|
||||||
@ -247,8 +219,8 @@ void Foam::waveModels::irregularWavesMultiDirec::setVelocity
|
|||||||
{
|
{
|
||||||
const label paddlei = faceToPaddle_[facei];
|
const label paddlei = faceToPaddle_[facei];
|
||||||
|
|
||||||
const vector Uf = U
|
const vector Uf = this->Uf
|
||||||
(
|
(
|
||||||
waterDepthRef_,
|
waterDepthRef_,
|
||||||
xPaddle_[paddlei],
|
xPaddle_[paddlei],
|
||||||
yPaddle_[paddlei],
|
yPaddle_[paddlei],
|
||||||
@ -257,15 +229,14 @@ void Foam::waveModels::irregularWavesMultiDirec::setVelocity
|
|||||||
);
|
);
|
||||||
|
|
||||||
U_[facei] = fraction*Uf*tCoeff;
|
U_[facei] = fraction*Uf*tCoeff;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::waveModels::irregularWavesMultiDirec::irregularWavesMultiDirec
|
Foam::waveModels::irregularMultiDirectional::irregularMultiDirectional
|
||||||
(
|
(
|
||||||
const dictionary& dict,
|
const dictionary& dict,
|
||||||
const fvMesh& mesh,
|
const fvMesh& mesh,
|
||||||
@ -284,56 +255,54 @@ Foam::waveModels::irregularWavesMultiDirec::irregularWavesMultiDirec
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::waveModels::irregularWavesMultiDirec::~irregularWavesMultiDirec()
|
Foam::waveModels::irregularMultiDirectional::~irregularMultiDirectional()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
bool Foam::waveModels::irregularWavesMultiDirec::readDict(const dictionary& overrideDict)
|
bool Foam::waveModels::irregularMultiDirectional::readDict
|
||||||
|
(
|
||||||
|
const dictionary& overrideDict
|
||||||
|
)
|
||||||
{
|
{
|
||||||
int ii;
|
|
||||||
int jj;
|
|
||||||
|
|
||||||
if (irregularWaveModel::readDict(overrideDict))
|
if (irregularWaveModel::readDict(overrideDict))
|
||||||
{
|
{
|
||||||
|
lookup("wavePeriods") >> irregWavePeriods_;
|
||||||
|
lookup("waveHeights") >> irregWaveHeights_;
|
||||||
|
lookup("wavePhases") >> irregWavePhases_;
|
||||||
|
lookup("waveDirs") >> irregWaveDirs_;
|
||||||
|
|
||||||
lookup("irregWavePeriods") >> irregWavePeriods_;
|
irregWaveLengths_ = irregWaveHeights_;
|
||||||
lookup("irregWaveHeights") >> irregWaveHeights_;
|
|
||||||
lookup("irregWavePhases") >> irregWavePhases_;
|
|
||||||
lookup("irregWaveDirs") >> irregWaveDirs_;
|
|
||||||
|
|
||||||
irregWaveLengths_ = irregWaveHeights_;
|
forAll(irregWaveHeights_, ii)
|
||||||
scalar COLUMNAS = 0;
|
{
|
||||||
scalar FILAS = irregWaveHeights_.size();
|
forAll(irregWaveHeights_[ii], jj)
|
||||||
|
{
|
||||||
for (ii=0; ii<FILAS; ++ii)
|
irregWaveLengths_[ii][jj] =
|
||||||
{
|
waveLength(waterDepthRef_, irregWavePeriods_[ii][jj]);
|
||||||
COLUMNAS= irregWaveHeights_[ii].size();
|
irregWaveDirs_[ii][jj] =
|
||||||
|
irregWaveDirs_[ii][jj]*mathematical::pi/180;
|
||||||
for (jj=0; jj<COLUMNAS; ++jj)
|
}
|
||||||
{
|
}
|
||||||
irregWaveLengths_[ii][jj] = waveLength (waterDepthRef_, irregWavePeriods_[ii][jj]);
|
|
||||||
irregWaveDirs_[ii][jj] = irregWaveDirs_[ii][jj] * (mathematical::pi/180);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Foam::waveModels::irregularWavesMultiDirec::info(Ostream& os) const
|
|
||||||
|
void Foam::waveModels::irregularMultiDirectional::info(Ostream& os) const
|
||||||
{
|
{
|
||||||
irregularWaveModel::info(os);
|
irregularWaveModel::info(os);
|
||||||
|
|
||||||
os << " WavePeriods (s) coefficients : " << irregWavePeriods_ << nl
|
os << " Wave periods : " << irregWavePeriods_.size() << nl
|
||||||
<< " WaveHeights (m) coefficients : " << irregWaveHeights_ << nl
|
<< " Wave heights : " << irregWaveHeights_.size() << nl
|
||||||
<< " WavePhases (rad) coefficients : " << irregWavePhases_ << nl
|
<< " Wave phases : " << irregWavePhases_.size() << nl
|
||||||
<< " WaveLengths (m) coefficients : " << irregWaveLengths_ << nl
|
<< " Wave lengths : " << irregWaveLengths_.size() << nl
|
||||||
<< " WaveDirections (rad) coefficients : " << irregWaveDirs_ << nl;
|
<< " Wave directions : " << irregWaveDirs_.size() << nl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
@ -22,15 +22,15 @@ License
|
|||||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
Class
|
Class
|
||||||
Foam::waveModels::irregularWavesMultiDirec
|
Foam::waveModels::irregularMultiDirectional
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Multi-directional irregular wave model
|
Multi-directional irregular wave model
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef waveModels_irregularWavesMultiDirec_H
|
#ifndef waveModels_irregularMultiDirectional_H
|
||||||
#define waveModels_irregularWavesMultiDirec_H
|
#define waveModels_irregularMultiDirectional_H
|
||||||
|
|
||||||
#include "irregularWaveModel.H"
|
#include "irregularWaveModel.H"
|
||||||
|
|
||||||
@ -42,10 +42,10 @@ namespace waveModels
|
|||||||
{
|
{
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class irregularWavesMultiDirec Declaration
|
Class irregularMultiDirectional Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
class irregularWavesMultiDirec
|
class irregularMultiDirectional
|
||||||
:
|
:
|
||||||
public irregularWaveModel
|
public irregularWaveModel
|
||||||
{
|
{
|
||||||
@ -53,20 +53,21 @@ private:
|
|||||||
|
|
||||||
// Proteced Data
|
// Proteced Data
|
||||||
|
|
||||||
//- Wave periods for irregularWavesMultiDirec case (seconds)
|
//- Wave periods for irregularMultiDirectional case [seconds]
|
||||||
List< List<scalar> > irregWavePeriods_;
|
List<List<scalar>> irregWavePeriods_;
|
||||||
|
|
||||||
//- Wave heights for irregularWavesMultiDirec case (meters)
|
//- Wave heights for irregularMultiDirectional case [metres]
|
||||||
List< List<scalar> > irregWaveHeights_;
|
List<List<scalar>> irregWaveHeights_;
|
||||||
|
|
||||||
//- Wave lengths for irregularWavesMultiDirec case (meters)
|
//- Wave lengths for irregularMultiDirectional case [metres]
|
||||||
List< List<scalar> > irregWaveLengths_;
|
List<List<scalar>> irregWaveLengths_;
|
||||||
|
|
||||||
//- Wave phases for irregularWavesMultiDirec case (radians)
|
//- Wave phases for irregularMultiDirectional case [radians]
|
||||||
List< List<scalar> > irregWavePhases_;
|
List<List<scalar>> irregWavePhases_;
|
||||||
|
|
||||||
//- Direction of propagation for irregularWavesMultiDirec case (degrees, from X axis)
|
//- Direction of propagation for irregularMultiDirectional case
|
||||||
List< List<scalar> > irregWaveDirs_;
|
//- [degrees] from X axis
|
||||||
|
List<List<scalar>> irregWaveDirs_;
|
||||||
|
|
||||||
|
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
@ -91,13 +92,13 @@ protected:
|
|||||||
|
|
||||||
//- Return the wavelength
|
//- Return the wavelength
|
||||||
virtual scalar waveLength
|
virtual scalar waveLength
|
||||||
(
|
(
|
||||||
const scalar h,
|
const scalar h,
|
||||||
const scalar T
|
const scalar T
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Wave velocity
|
//- Wave velocity
|
||||||
virtual vector U
|
virtual vector Uf
|
||||||
(
|
(
|
||||||
const scalar d,
|
const scalar d,
|
||||||
const scalar x,
|
const scalar x,
|
||||||
@ -115,7 +116,7 @@ protected:
|
|||||||
const scalar irregWaveKs,
|
const scalar irregWaveKs,
|
||||||
const scalar z,
|
const scalar z,
|
||||||
const scalar h,
|
const scalar h,
|
||||||
const scalar irregDir
|
const scalar irregDir
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Set the water level
|
//- Set the water level
|
||||||
@ -134,13 +135,14 @@ protected:
|
|||||||
const scalarField& level
|
const scalarField& level
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
TypeName("irregularWavesMultiDirectional");
|
TypeName("irregularMultiDirectional");
|
||||||
|
|
||||||
//- Constructor
|
//- Constructor
|
||||||
irregularWavesMultiDirec
|
irregularMultiDirectional
|
||||||
(
|
(
|
||||||
const dictionary& dict,
|
const dictionary& dict,
|
||||||
const fvMesh& mesh,
|
const fvMesh& mesh,
|
||||||
@ -149,7 +151,7 @@ public:
|
|||||||
);
|
);
|
||||||
|
|
||||||
//- Destructor
|
//- Destructor
|
||||||
virtual ~irregularWavesMultiDirec();
|
virtual ~irregularMultiDirectional();
|
||||||
|
|
||||||
|
|
||||||
// Public Member Functions
|
// Public Member Functions
|
||||||
Reference in New Issue
Block a user