Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "oscillatingDisplacementPointPatchVectorField.H"
00027 #include <OpenFOAM/pointPatchFields.H>
00028 #include <OpenFOAM/addToRunTimeSelectionTable.H>
00029 #include <OpenFOAM/Time.H>
00030 #include <OpenFOAM/polyMesh.H>
00031
00032
00033
00034 namespace Foam
00035 {
00036
00037
00038
00039 oscillatingDisplacementPointPatchVectorField::
00040 oscillatingDisplacementPointPatchVectorField
00041 (
00042 const pointPatch& p,
00043 const DimensionedField<vector, pointMesh>& iF
00044 )
00045 :
00046 fixedValuePointPatchField<vector>(p, iF),
00047 amplitude_(vector::zero),
00048 omega_(0.0)
00049 {}
00050
00051
00052 oscillatingDisplacementPointPatchVectorField::
00053 oscillatingDisplacementPointPatchVectorField
00054 (
00055 const pointPatch& p,
00056 const DimensionedField<vector, pointMesh>& iF,
00057 const dictionary& dict
00058 )
00059 :
00060 fixedValuePointPatchField<vector>(p, iF, dict),
00061 amplitude_(dict.lookup("amplitude")),
00062 omega_(readScalar(dict.lookup("omega")))
00063 {
00064 if (!dict.found("value"))
00065 {
00066 updateCoeffs();
00067 }
00068 }
00069
00070
00071 oscillatingDisplacementPointPatchVectorField::
00072 oscillatingDisplacementPointPatchVectorField
00073 (
00074 const oscillatingDisplacementPointPatchVectorField& ptf,
00075 const pointPatch& p,
00076 const DimensionedField<vector, pointMesh>& iF,
00077 const pointPatchFieldMapper& mapper
00078 )
00079 :
00080 fixedValuePointPatchField<vector>(ptf, p, iF, mapper),
00081 amplitude_(ptf.amplitude_),
00082 omega_(ptf.omega_)
00083 {}
00084
00085
00086 oscillatingDisplacementPointPatchVectorField::
00087 oscillatingDisplacementPointPatchVectorField
00088 (
00089 const oscillatingDisplacementPointPatchVectorField& ptf,
00090 const DimensionedField<vector, pointMesh>& iF
00091 )
00092 :
00093 fixedValuePointPatchField<vector>(ptf, iF),
00094 amplitude_(ptf.amplitude_),
00095 omega_(ptf.omega_)
00096 {}
00097
00098
00099
00100
00101 void oscillatingDisplacementPointPatchVectorField::updateCoeffs()
00102 {
00103 if (this->updated())
00104 {
00105 return;
00106 }
00107
00108 const polyMesh& mesh = this->dimensionedInternalField().mesh()();
00109 const Time& t = mesh.time();
00110
00111 Field<vector>::operator=(amplitude_*sin(omega_*t.value()));
00112
00113 fixedValuePointPatchField<vector>::updateCoeffs();
00114 }
00115
00116
00117 void oscillatingDisplacementPointPatchVectorField::write(Ostream& os) const
00118 {
00119 pointPatchField<vector>::write(os);
00120 os.writeKeyword("amplitude")
00121 << amplitude_ << token::END_STATEMENT << nl;
00122 os.writeKeyword("omega")
00123 << omega_ << token::END_STATEMENT << nl;
00124 writeEntry("value", os);
00125 }
00126
00127
00128
00129
00130 makePointPatchTypeField
00131 (
00132 pointPatchVectorField,
00133 oscillatingDisplacementPointPatchVectorField
00134 );
00135
00136
00137
00138 }
00139
00140