/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License This file is part of OpenFOAM. OpenFOAM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see . \*---------------------------------------------------------------------------*/ #include "Sine.H" #include "mathematicalConstants.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template void Foam::Function1Types::Sine::read(const dictionary& coeffs) { t0_ = coeffs.lookupOrDefault("t0", 0); amplitude_ = Function1::New("amplitude", coeffs); frequency_ = Function1::New("frequency", coeffs); scale_ = Function1::New("scale", coeffs); level_ = Function1::New("level", coeffs); } template Foam::Function1Types::Sine::Sine ( const word& entryName, const dictionary& dict, const word& ext ) : Function1(entryName) { read(dict.subDict(entryName + ext)); } template Foam::Function1Types::Sine::Sine(const Sine& se) : Function1(se), t0_(se.t0_), amplitude_(se.amplitude_, false), frequency_(se.frequency_, false), scale_(se.scale_, false), level_(se.level_, false) {} // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // template Foam::Function1Types::Sine::~Sine() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template Type Foam::Function1Types::Sine::value(const scalar t) const { return amplitude_->value(t) *sin(constant::mathematical::twoPi*frequency_->value(t)*(t - t0_)) *scale_->value(t) + level_->value(t); } template void Foam::Function1Types::Sine::writeData(Ostream& os) const { Function1::writeData(os); os << token::END_STATEMENT << nl; os << indent << word(this->name() + "Coeffs") << nl; os << indent << token::BEGIN_BLOCK << incrIndent << nl; os.writeKeyword("t0") << t0_ << token::END_STATEMENT << nl; amplitude_->writeData(os); frequency_->writeData(os); scale_->writeData(os); level_->writeData(os); os << decrIndent << indent << token::END_BLOCK << endl; } // ************************************************************************* //