initial commit for version 1.6.x patch release
[OpenFOAM-1.6.x.git] / src / fvMotionSolver / pointPatchFields / derived / oscillatingDisplacement / oscillatingDisplacementPointPatchVectorField.C
blob423a729e3faf091bb9d082298cf165392d7df619
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software; you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation; either version 2 of the License, or (at your
14     option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM; if not, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 \*---------------------------------------------------------------------------*/
27 #include "oscillatingDisplacementPointPatchVectorField.H"
28 #include "pointPatchFields.H"
29 #include "addToRunTimeSelectionTable.H"
30 #include "Time.H"
31 #include "polyMesh.H"
33 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
35 namespace Foam
38 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
40 oscillatingDisplacementPointPatchVectorField::
41 oscillatingDisplacementPointPatchVectorField
43     const pointPatch& p,
44     const DimensionedField<vector, pointMesh>& iF
47     fixedValuePointPatchField<vector>(p, iF),
48     amplitude_(vector::zero),
49     omega_(0.0)
53 oscillatingDisplacementPointPatchVectorField::
54 oscillatingDisplacementPointPatchVectorField
56     const pointPatch& p,
57     const DimensionedField<vector, pointMesh>& iF,
58     const dictionary& dict
61     fixedValuePointPatchField<vector>(p, iF, dict),
62     amplitude_(dict.lookup("amplitude")),
63     omega_(readScalar(dict.lookup("omega")))
65     if (!dict.found("value"))
66     {
67         updateCoeffs();
68     }
72 oscillatingDisplacementPointPatchVectorField::
73 oscillatingDisplacementPointPatchVectorField
75     const oscillatingDisplacementPointPatchVectorField& ptf,
76     const pointPatch& p,
77     const DimensionedField<vector, pointMesh>& iF,
78     const pointPatchFieldMapper& mapper
81     fixedValuePointPatchField<vector>(ptf, p, iF, mapper),
82     amplitude_(ptf.amplitude_),
83     omega_(ptf.omega_)
87 oscillatingDisplacementPointPatchVectorField::
88 oscillatingDisplacementPointPatchVectorField
90     const oscillatingDisplacementPointPatchVectorField& ptf,
91     const DimensionedField<vector, pointMesh>& iF
94     fixedValuePointPatchField<vector>(ptf, iF),
95     amplitude_(ptf.amplitude_),
96     omega_(ptf.omega_)
100 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
102 void oscillatingDisplacementPointPatchVectorField::updateCoeffs()
104     if (this->updated())
105     {
106         return;
107     }
109     const polyMesh& mesh = this->dimensionedInternalField().mesh()();
110     const Time& t = mesh.time();
112     Field<vector>::operator=(amplitude_*sin(omega_*t.value()));
114     fixedValuePointPatchField<vector>::updateCoeffs();
118 void oscillatingDisplacementPointPatchVectorField::write(Ostream& os) const
120     pointPatchField<vector>::write(os);
121     os.writeKeyword("amplitude")
122         << amplitude_ << token::END_STATEMENT << nl;
123     os.writeKeyword("omega")
124         << omega_ << token::END_STATEMENT << nl;
125     writeEntry("value", os);
129 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
131 makePointPatchTypeField
133     pointPatchVectorField,
134     oscillatingDisplacementPointPatchVectorField
137 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
139 } // End namespace Foam
141 // ************************************************************************* //