Foam::tmp<Foam::scalarField> Foam::waveSuperposition::elevation ( const scalar t, const vector2DField& xy ) const { scalarField result(xy.size(), 0); forAll(waveModels_, wavei) { const vector2D d(cos(waveAngles_[wavei]), sin(waveAngles_[wavei])); result += waveModels_[wavei].elevation(t, d & xy); } return scale(xy)*result; }
Foam::tmp<Foam::scalarField> Foam::waveSuperposition::scale ( const vector2DField& xy ) const { tmp<scalarField> tResult(new scalarField(xy.size(), 1)); scalarField& result = tResult.ref(); if (scale_.valid()) { const scalarField x(xy.component(0)); forAll(result, i) { result[i] *= scale_->value(x[i]); } }