diff --git a/src/waves/fvModels/forcing/forcing.C b/src/waves/fvModels/forcing/forcing.C index 6f36f0cd94..23c614f697 100644 --- a/src/waves/fvModels/forcing/forcing.C +++ b/src/waves/fvModels/forcing/forcing.C @@ -25,7 +25,9 @@ License #include "forcing.H" #include "fvMatrix.H" -#include "zeroGradientFvPatchField.H" +#include "Function1Evaluate.H" +#include "fvcGrad.H" +#include "fvcVolumeIntegrate.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -40,10 +42,8 @@ namespace fv // * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // -void Foam::fv::forcing::readCoeffs() +void Foam::fv::forcing::readLambda() { - writeForceFields_ = coeffs().lookupOrDefault("writeForceFields", false); - lambda_ = dimensionedScalar ( @@ -59,6 +59,12 @@ void Foam::fv::forcing::readCoeffs() lambdaBoundary_.dimensions(), coeffs().lookupOrDefault(lambdaBoundary_.name(), 0.0) ); +} + + +void Foam::fv::forcing::readCoeffs() +{ + writeForceFields_ = coeffs().lookupOrDefault("writeForceFields", false); const bool foundScale = coeffs().found("scale"); const bool foundOgn = coeffs().found("origin"); @@ -126,6 +132,38 @@ void Foam::fv::forcing::readCoeffs() } +Foam::dimensionedScalar Foam::fv::forcing::regionLength() const +{ + dimensionedScalar vs("vs", dimVolume, 0); + dimensionedScalar vgrads("vs", dimArea, 0); + + forAll(origins_, i) + { + const volScalarField x + ( + (mesh().C() - dimensionedVector(dimLength, origins_[i])) + & directions_[i] + ); + + const volScalarField scale + ( + evaluate + ( + *scale_, + dimless, + x + ) + ); + + vs += fvc::domainIntegrate(scale); + vgrads += fvc::domainIntegrate(directions_[i] & fvc::grad(scale)); + } + + return vs/vgrads; +} + + + Foam::tmp Foam::fv::forcing::scale() const { tmp tscale @@ -134,7 +172,7 @@ Foam::tmp Foam::fv::forcing::scale() const ( typedName("scale"), mesh(), - dimensionedScalar(dimless, scale_.valid() ? 0 : 1) + dimensionedScalar(dimless, 0) ) ); @@ -151,11 +189,11 @@ Foam::tmp Foam::fv::forcing::scale() const } -Foam::tmp Foam::fv::forcing::forceCoeff -( - const volScalarField::Internal& scale -) const +Foam::tmp Foam::fv::forcing::forceCoeff() const { + tmp tscale(this->scale()); + const volScalarField::Internal& scale = tscale(); + tmp tforceCoeff ( volScalarField::Internal::New(typedName("forceCoeff"), lambda_*scale) @@ -181,9 +219,16 @@ Foam::tmp Foam::fv::forcing::forceCoeff } -Foam::tmp Foam::fv::forcing::forceCoeff() const +void Foam::fv::forcing::writeForceFields() const { - return forceCoeff(scale()); + if (writeForceFields_) + { + Info<< " Writing forcing fields: forcing:scale, forcing:forceCoeff" + << endl; + + scale()().write(); + forceCoeff()().write(); + } } @@ -206,16 +251,6 @@ Foam::fv::forcing::forcing directions_() { readCoeffs(); - - if (writeForceFields_) - { - Info<< " Writing forcing fields: forcing:scale, forcing:forceCoeff" - << endl; - - const volScalarField::Internal scale(this->scale()); - scale.write(); - forceCoeff(scale)->write(); - } } diff --git a/src/waves/fvModels/forcing/forcing.H b/src/waves/fvModels/forcing/forcing.H index 74c0aac7f9..3449ed2b7e 100644 --- a/src/waves/fvModels/forcing/forcing.H +++ b/src/waves/fvModels/forcing/forcing.H @@ -66,10 +66,10 @@ protected: bool writeForceFields_; //- Forcing coefficient [1/s] - dimensionedScalar lambda_; + mutable dimensionedScalar lambda_; //- Optional boundary forcing coefficient [1/s] - dimensionedScalar lambdaBoundary_; + mutable dimensionedScalar lambdaBoundary_; //- The scaling function autoPtr> scale_; @@ -86,17 +86,21 @@ protected: //- Non-virtual read void readCoeffs(); - //- Return the scale distribution - tmp scale() const; + //- Read the forcing coefficients + void readLambda(); - //- Return the force coefficient given the scale distribution - tmp forceCoeff - ( - const volScalarField::Internal& scale - ) const; + //- Calculate and return the volume average forcing region length + dimensionedScalar regionLength() const; + + //- Return the scale distribution + virtual tmp scale() const; //- Return the force coefficient - tmp forceCoeff() const; + virtual tmp forceCoeff() const; + + //- Optionally write the forcing fields: + // forcing:scale, forcing:forceCoeff + void writeForceFields() const; public: @@ -124,10 +128,8 @@ public: // Member Functions - // IO - - //- Read dictionary - virtual bool read(const dictionary& dict); + //- Read dictionary + virtual bool read(const dictionary& dict); }; diff --git a/src/waves/fvModels/isotropicDamping/isotropicDamping.C b/src/waves/fvModels/isotropicDamping/isotropicDamping.C index 4334911d39..80e33e9ba0 100644 --- a/src/waves/fvModels/isotropicDamping/isotropicDamping.C +++ b/src/waves/fvModels/isotropicDamping/isotropicDamping.C @@ -44,6 +44,8 @@ namespace fv void Foam::fv::isotropicDamping::readCoeffs() { + readLambda(); + value_ = dimensionedVector ( @@ -80,6 +82,7 @@ Foam::fv::isotropicDamping::isotropicDamping value_("value", dimVelocity, vector::uniform(NaN)) { readCoeffs(); + writeForceFields(); } diff --git a/src/waves/fvModels/isotropicDamping/isotropicDamping.H b/src/waves/fvModels/isotropicDamping/isotropicDamping.H index 43f870fc41..f43dc1ac21 100644 --- a/src/waves/fvModels/isotropicDamping/isotropicDamping.H +++ b/src/waves/fvModels/isotropicDamping/isotropicDamping.H @@ -146,6 +146,10 @@ public: // Member Functions + //- Read dictionary + virtual bool read(const dictionary& dict); + + // Checks //- Return the list of fields for which the fvModel adds source term @@ -193,12 +197,6 @@ public: //- Redistribute or update using the given distribution map virtual void distribute(const polyDistributionMap&); - - - // IO - - //- Read dictionary - virtual bool read(const dictionary& dict); }; diff --git a/src/waves/fvModels/verticalDamping/verticalDamping.C b/src/waves/fvModels/verticalDamping/verticalDamping.C index a31506f4b3..4f4cdb650d 100644 --- a/src/waves/fvModels/verticalDamping/verticalDamping.C +++ b/src/waves/fvModels/verticalDamping/verticalDamping.C @@ -42,6 +42,12 @@ namespace fv // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // +void Foam::fv::verticalDamping::readCoeffs() +{ + readLambda(); +} + + void Foam::fv::verticalDamping::add ( const volVectorField& alphaRhoU, @@ -69,7 +75,9 @@ Foam::fv::verticalDamping::verticalDamping : forcing(name, modelType, mesh, dict), UName_(coeffs().lookupOrDefault("U", "U")) -{} +{ + writeForceFields(); +} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -131,4 +139,18 @@ void Foam::fv::verticalDamping::distribute(const polyDistributionMap&) {} +bool Foam::fv::verticalDamping::read(const dictionary& dict) +{ + if (forcing::read(dict)) + { + readCoeffs(); + return true; + } + else + { + return false; + } +} + + // ************************************************************************* // diff --git a/src/waves/fvModels/verticalDamping/verticalDamping.H b/src/waves/fvModels/verticalDamping/verticalDamping.H index a7007bbe3b..b73927ac1c 100644 --- a/src/waves/fvModels/verticalDamping/verticalDamping.H +++ b/src/waves/fvModels/verticalDamping/verticalDamping.H @@ -121,6 +121,9 @@ class verticalDamping // Private Member Functions + //- Non-virtual read + void readCoeffs(); + //- Source term to momentum equation void add ( @@ -154,6 +157,10 @@ public: // Member Functions + //- Read dictionary + virtual bool read(const dictionary& dict); + + // Checks //- Return the list of fields for which the fvModel adds source term diff --git a/src/waves/fvModels/waveForcing/waveForcing.C b/src/waves/fvModels/waveForcing/waveForcing.C index 81beaf4892..ce480e7174 100644 --- a/src/waves/fvModels/waveForcing/waveForcing.C +++ b/src/waves/fvModels/waveForcing/waveForcing.C @@ -44,6 +44,54 @@ namespace fv } +// * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // + +void Foam::fv::waveForcing::readCoeffs() +{ + if (coeffs().found("lambdaCoeff")) + { + lambdaCoeff_ = coeffs().lookup("lambdaCoeff"); + + lambdaBoundaryCoeff_ = + coeffs().lookupOrDefault("lambdaBoundaryCoeff", 0); + + regionLength_ = this->regionLength(); + + Info<< " Volume average region length " + << regionLength_.value() << endl; + } + else + { + readLambda(); + } +} + + +Foam::tmp Foam::fv::waveForcing::scale() const +{ + return tmp(scale_()); +} + + +Foam::tmp +Foam::fv::waveForcing::forceCoeff() const +{ + if (lambdaCoeff_ > 0) + { + const dimensionedScalar waveSpeed + ( + dimVelocity, + waves_.maxWaveSpeed(mesh().time().deltaTValue()) + ); + + lambda_ = lambdaCoeff_*waveSpeed/regionLength_; + lambdaBoundary_ = lambdaBoundaryCoeff_*waveSpeed/regionLength_; + } + + return forcing::forceCoeff(); +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::fv::waveForcing::waveForcing @@ -55,12 +103,18 @@ Foam::fv::waveForcing::waveForcing ) : forcing(name, modelType, mesh, dict), + lambdaCoeff_(0), + lambdaBoundaryCoeff_(0), + regionLength_("regionLength", dimLength, 0), waves_(waveSuperposition::New(mesh)), liquidPhaseName_(coeffs().lookup("liquidPhase")), alphaName_(IOobject::groupName("alpha", liquidPhaseName_)), UName_(coeffs().lookupOrDefault("U", "U")), - scale_(this->scale()) -{} + scale_(forcing::scale().ptr()) +{ + readCoeffs(); + writeForceFields(); +} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -79,7 +133,7 @@ void Foam::fv::waveForcing::addSup { if (fieldName == alphaName_) { - const volScalarField::Internal forceCoeff(this->forceCoeff(scale_)); + const volScalarField::Internal forceCoeff(this->forceCoeff()); eqn -= fvm::Sp(forceCoeff, eqn.psi()); eqn += forceCoeff*alphaWaves_(); @@ -96,7 +150,7 @@ void Foam::fv::waveForcing::addSup { if (fieldName == UName_) { - const volScalarField::Internal forceCoeff(rho*this->forceCoeff(scale_)); + const volScalarField::Internal forceCoeff(rho*this->forceCoeff()); eqn -= fvm::Sp(forceCoeff, eqn.psi()); eqn += forceCoeff*Uwaves_(); @@ -115,26 +169,28 @@ void Foam::fv::waveForcing::addSup bool Foam::fv::waveForcing::movePoints() { - scale_ = this->scale(); + // It is unlikely that the wave forcing region is moving + // so this update could be removed or made optional + scale_ = forcing::scale().ptr(); return true; } void Foam::fv::waveForcing::topoChange(const polyTopoChangeMap&) { - scale_ = this->scale(); + scale_ = forcing::scale().ptr(); } void Foam::fv::waveForcing::mapMesh(const polyMeshMap& map) { - scale_ = this->scale(); + scale_ = forcing::scale().ptr(); } void Foam::fv::waveForcing::distribute(const polyDistributionMap&) { - scale_ = this->scale(); + scale_ = forcing::scale().ptr(); } @@ -171,4 +227,20 @@ void Foam::fv::waveForcing::correct() } +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +bool Foam::fv::waveForcing::read(const dictionary& dict) +{ + if (forcing::read(dict)) + { + readCoeffs(); + return true; + } + else + { + return false; + } +} + + // ************************************************************************* // diff --git a/src/waves/fvModels/waveForcing/waveForcing.H b/src/waves/fvModels/waveForcing/waveForcing.H index 695204580b..8c8cc5bc3f 100644 --- a/src/waves/fvModels/waveForcing/waveForcing.H +++ b/src/waves/fvModels/waveForcing/waveForcing.H @@ -29,12 +29,21 @@ Description components of the vector field to relax the fields towards those calculated from the current wave distribution. - The forcing force coefficient \f$\lambda\f$ should be set based on the - desired level of forcing and the residence time the waves through the - forcing zone. For example, if waves moving at 2 [m/s] are travelling - through a forcing zone 8 [m] in length, then the residence time is 4 [s]. If - it is deemed necessary to force for 5 time-scales, then \f$\lambda\f$ should - be set to equal 5/(4 [s]) = 1.2 [1/s]. + The force coefficient \f$\lambda\f$ should be set based on the desired level + of forcing and the residence time the waves through the forcing zone. For + example, if waves moving at 2 [m/s] are travelling through a forcing zone 8 + [m] in length, then the residence time is 4 [s]. If it is deemed necessary + to force for 5 time-scales, then \f$\lambda\f$ should be set to equal 5/(4 + [s]) = 1.2 [1/s]. If more aggressive forcing is required adjacent to the + boundaries, which is often the case if wave boundary conditions are + specified at outflow boundaries, the optional \f$\lambdaBoundary\f$ + coefficient can be specified higher than the value of \f$\lambda\f$. + + Alternatively the forcing force coefficient \f$\lambdaCoeff\f$ can be + specified in which case \f$\lambda\f$ is evaluated by multiplying the + maximum wave speed by \f$\lambdaCoeff\f$ and dividing by the forcing region + length. \f$\lambdaBoundary\f$ is similarly evaluated from + \f$\lambdaBoundaryCoeff\f$ if specified. Usage Example usage: @@ -62,11 +71,10 @@ Usage duration 300; } - lambda 0.5; // Forcing coefficient + lambdaCoeff 2; // Forcing coefficient - // lambdaBoundary 2; // Optional boundary forcing coefficient - // Useful when wave BCs are specified - // without mean flow + // lambdaBoundaryCoeff 10; // Optional boundary forcing coefficient + // Useful when wave BCs are specified at outlets // Write the forcing fields: forcing:scale, forcing:forceCoeff writeForceFields true; @@ -104,6 +112,12 @@ class waveForcing { // Private Data + scalar lambdaCoeff_; + + scalar lambdaBoundaryCoeff_; + + dimensionedScalar regionLength_; + //- Reference to the waves const waveSuperposition& waves_; @@ -123,7 +137,19 @@ class waveForcing tmp Uwaves_; //- Forcing coefficient scale field - tmp scale_; + autoPtr scale_; + + + // Private Member Functions + + //- Non-virtual read + void readCoeffs(); + + //- Return the scale distribution + virtual tmp scale() const; + + //- Return the force coefficient + virtual tmp forceCoeff() const; public: @@ -151,6 +177,10 @@ public: // Member Functions + //- Read dictionary + virtual bool read(const dictionary& dict); + + // Checks //- Return the list of fields for which the fvModel adds source term diff --git a/src/waves/waveModels/Airy/Airy.H b/src/waves/waveModels/Airy/Airy.H index 6bbb146c0b..322c15e239 100644 --- a/src/waves/waveModels/Airy/Airy.H +++ b/src/waves/waveModels/Airy/Airy.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2017-2021 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2017-2023 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -127,12 +127,6 @@ protected: return deep(depth(), length()); } - //- The wave celerity [m/s] - virtual scalar celerity() const - { - return celerity(depth(), amplitude(), length(), g()); - } - //- Angle of the oscillation [rad] tmp angle ( @@ -215,6 +209,12 @@ public: return phase_; } + //- The wave celerity [m/s] + virtual scalar celerity() const + { + return celerity(depth(), amplitude(), length(), g()); + } + //- Get the wave elevation at a given time and local coordinates. Local // x is aligned with the direction of propagation. virtual tmp elevation diff --git a/src/waves/waveModels/Stokes2/Stokes2.H b/src/waves/waveModels/Stokes2/Stokes2.H index 4e25bd8ddf..5dc31f7e74 100644 --- a/src/waves/waveModels/Stokes2/Stokes2.H +++ b/src/waves/waveModels/Stokes2/Stokes2.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2017-2021 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2017-2023 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -74,12 +74,6 @@ protected: const scalar g ); - //- The wave celerity [m/s] - virtual scalar celerity() const - { - return celerity(depth(), amplitude(), length(), g()); - } - public: @@ -112,6 +106,12 @@ public: // Member Functions + //- The wave celerity [m/s] + virtual scalar celerity() const + { + return celerity(depth(), amplitude(), length(), g()); + } + //- Get the wave elevation at a given time and local coordinates. Local // x is aligned with the direction of propagation. virtual tmp elevation diff --git a/src/waves/waveModels/Stokes5/Stokes5.H b/src/waves/waveModels/Stokes5/Stokes5.H index 21cbc18e22..d173b40881 100644 --- a/src/waves/waveModels/Stokes5/Stokes5.H +++ b/src/waves/waveModels/Stokes5/Stokes5.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2017-2021 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2017-2023 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -73,12 +73,6 @@ protected: const scalar g ); - //- The wave celerity [m/s] - virtual scalar celerity() const - { - return celerity(depth(), amplitude(), length(), g()); - } - public: @@ -111,6 +105,12 @@ public: // Member Functions + //- The wave celerity [m/s] + virtual scalar celerity() const + { + return celerity(depth(), amplitude(), length(), g()); + } + //- Get the wave elevation at a given time and local coordinates. Local // x is aligned with the direction of propagation. virtual tmp elevation diff --git a/src/waves/waveModels/solitary/solitary.H b/src/waves/waveModels/solitary/solitary.H index 5850dd7d71..7776d199e6 100644 --- a/src/waves/waveModels/solitary/solitary.H +++ b/src/waves/waveModels/solitary/solitary.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2017-2021 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2017-2023 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -81,9 +81,6 @@ class solitary //- The dimensionless amplitude [1] scalar alpha() const; - //- The wave celerity [m/s] - scalar celerity() const; - //- The evolution parameter [1] // This is analogous to the oscillation angle of a periodic wave tmp parameter @@ -147,6 +144,9 @@ public: return offset_; } + //- The wave celerity [m/s] + scalar celerity() const; + //- Get the wave elevation at a given time and local coordinates. Local // x is aligned with the direction of propagation. virtual tmp elevation diff --git a/src/waves/waveModels/waveModel/waveModel.H b/src/waves/waveModels/waveModel/waveModel.H index 3f54455818..01133b7c16 100644 --- a/src/waves/waveModels/waveModel/waveModel.H +++ b/src/waves/waveModels/waveModel/waveModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2017-2021 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2017-2023 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -114,13 +114,14 @@ public: // Member Functions - // Access + //- Get the value of gravity + scalar g() const + { + return g_; + } - //- Get the value of gravity - scalar g() const - { - return g_; - } + //- The wave celerity [m/s] + virtual scalar celerity() const = 0; //- Get the wave elevation at a given time and local coordinates. Local // x is aligned with the direction of propagation. diff --git a/src/waves/waveSuperpositions/waveSuperposition/waveSuperposition.C b/src/waves/waveSuperpositions/waveSuperposition/waveSuperposition.C index dfea345bb3..9b144e78e9 100644 --- a/src/waves/waveSuperpositions/waveSuperposition/waveSuperposition.C +++ b/src/waves/waveSuperpositions/waveSuperposition/waveSuperposition.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2017-2022 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2017-2023 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -248,6 +248,18 @@ Foam::waveSuperposition::~waveSuperposition() // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // +Foam::scalar Foam::waveSuperposition::maxWaveSpeed(const scalar t) const +{ + scalar maxCelerity = 0; + forAll(waveModels_, wavei) + { + maxCelerity = max(waveModels_[wavei].celerity(), maxCelerity); + } + + return mag(maxCelerity + (direction_& UMean_->value(t))); +} + + Foam::tmp Foam::waveSuperposition::height ( const scalar t, diff --git a/src/waves/waveSuperpositions/waveSuperposition/waveSuperposition.H b/src/waves/waveSuperpositions/waveSuperposition/waveSuperposition.H index f936c216ff..447b9400a0 100644 --- a/src/waves/waveSuperpositions/waveSuperposition/waveSuperposition.H +++ b/src/waves/waveSuperpositions/waveSuperposition/waveSuperposition.H @@ -205,6 +205,10 @@ public: // Member Functions + //- Return the maximum wave speed for the given time t + // used to evaluate the mean velocity + scalar maxWaveSpeed(const scalar t) const; + //- Get the height above the waves at a given time and global positions virtual tmp height ( diff --git a/tutorials/incompressibleVoF/floatingObjectWaves/constant/fvModels b/tutorials/incompressibleVoF/floatingObjectWaves/constant/fvModels index e278f77855..a6e30db87a 100644 --- a/tutorials/incompressibleVoF/floatingObjectWaves/constant/fvModels +++ b/tutorials/incompressibleVoF/floatingObjectWaves/constant/fvModels @@ -45,8 +45,8 @@ forcing duration 0.5; } - lambda 5; - lambdaBoundary 25; + lambdaCoeff 2; + lambdaBoundaryCoeff 10; // Write the forcing fields: forcing:scale, forcing:forceCoeff writeForceFields true; diff --git a/tutorials/incompressibleVoF/floatingObjectWaves/constant/waveProperties b/tutorials/incompressibleVoF/floatingObjectWaves/constant/waveProperties index 3d84a040d9..901f3ac2fe 100644 --- a/tutorials/incompressibleVoF/floatingObjectWaves/constant/waveProperties +++ b/tutorials/incompressibleVoF/floatingObjectWaves/constant/waveProperties @@ -24,6 +24,7 @@ waves { length 0.5; amplitude 0.03; + depth 0.5; phase 0; angle 0; }