BUG: UListIO: byteSize overflowing on really big faceLists
[OpenFOAM-2.0.x.git] / src / finiteVolume / fields / fvPatchFields / derived / activePressureForceBaffleVelocity / activePressureForceBaffleVelocityFvPatchVectorField.H
blob2e5b6982fe5a9ec602fd3f9da989785ae48b33a7
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
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
13     the Free Software Foundation, either version 3 of the License, or
14     (at your 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, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::activePressureForceBaffleVelocityFvPatchVectorField
27 Description
28     Bounday which emulates the operation of a release pressure panel.
30     The boundary condition modifies mesh areas based on difference
31     of pressure or force face beween both sides of the panel. Once opened the
32     panel continues to open at a fixed rate.
34 SourceFiles
35     activePressureForceBaffleVelocityFvPatchVectorField.C
37 \*---------------------------------------------------------------------------*/
39 #ifndef activePressureForceBaffleVelocityFvPatchVectorField_H
40 #define activePressureForceBaffleVelocityFvPatchVectorField_H
42 #include "fvPatchFields.H"
43 #include "fixedValueFvPatchFields.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
50 /*---------------------------------------------------------------------------*\
51             Class activePressureForceBaffleVelocityFvPatch Declaration
52 \*---------------------------------------------------------------------------*/
54 class activePressureForceBaffleVelocityFvPatchVectorField
56     public fixedValueFvPatchVectorField
58     // Private data
60         //- Name of the pressure field used to calculate the force
61         //  on the active baffle
62         word pName_;
64         //- Name of the cyclic patch used when the active baffle is open
65         word cyclicPatchName_;
67         //- Index of the cyclic patch used when the active baffle is open
68         label cyclicPatchLabel_;
70         //- Orientation (1 or -1) of the active baffle patch.
71         //  Used to change the direction of opening without the need for
72         //  reordering the patch faces
73         label orientation_;
75         //- Initial wall patch areas
76         vectorField initWallSf_;
78         //- Initial cyclic patch areas
79         vectorField initCyclicSf_;
81         //- Initial neighbour-side cyclic patch areas
82         vectorField nbrCyclicSf_;
84         //- Current fraction of the active baffle which is open
85         scalar openFraction_;
87         //- Time taken for the active baffle to open
88         scalar openingTime_;
90         //- Maximum fractional change to the active baffle openness
91         //  per time-step
92         scalar maxOpenFractionDelta_;
94         label curTimeIndex_;
96         //- Minimum value for the active baffle to start opening
97         scalar minThresholdValue_;
99         //- Force based active baffle
100         bool fBased_;
102         //- Baffle is activated
103         bool baffleActivated_;
105 public:
107     //- Runtime type information
108     TypeName("activePressureForceBaffleVelocity");
111     // Constructors
113         //- Construct from patch and internal field
114         activePressureForceBaffleVelocityFvPatchVectorField
115         (
116             const fvPatch&,
117             const DimensionedField<vector, volMesh>&
118         );
120         //- Construct from patch, internal field and dictionary
121         activePressureForceBaffleVelocityFvPatchVectorField
122         (
123             const fvPatch&,
124             const DimensionedField<vector, volMesh>&,
125             const dictionary&
126         );
128         //- Construct by mapping
129         activePressureForceBaffleVelocityFvPatchVectorField
130         (
131             const activePressureForceBaffleVelocityFvPatchVectorField&,
132             const fvPatch&,
133             const DimensionedField<vector, volMesh>&,
134             const fvPatchFieldMapper&
135         );
137         //- Construct as copy
138         activePressureForceBaffleVelocityFvPatchVectorField
139         (
140             const activePressureForceBaffleVelocityFvPatchVectorField&
141         );
143         //- Construct and return a clone
144         virtual tmp<fvPatchVectorField> clone() const
145         {
146             return tmp<fvPatchVectorField>
147             (
148                 new activePressureForceBaffleVelocityFvPatchVectorField(*this)
149             );
150         }
152         //- Construct as copy setting internal field reference
153         activePressureForceBaffleVelocityFvPatchVectorField
154         (
155             const activePressureForceBaffleVelocityFvPatchVectorField&,
156             const DimensionedField<vector, volMesh>&
157         );
159         //- Construct and return a clone setting internal field reference
160         virtual tmp<fvPatchVectorField> clone
161         (
162             const DimensionedField<vector, volMesh>& iF
163         ) const
164         {
165             return tmp<fvPatchVectorField>
166             (
167                 new activePressureForceBaffleVelocityFvPatchVectorField
168                 (
169                     *this,
170                     iF
171                 )
172             );
173         }
176     // Member functions
178         // Mapping functions
180             //- Map (and resize as needed) from self given a mapping object
181             virtual void autoMap
182             (
183                 const fvPatchFieldMapper&
184             );
186             //- Reverse map the given fvPatchField onto this fvPatchField
187             virtual void rmap
188             (
189                 const fvPatchVectorField&,
190                 const labelList&
191             );
194         //- Update the coefficients associated with the patch field
195         virtual void updateCoeffs();
197         //- Write
198         virtual void write(Ostream&) const;
202 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
204 } // End namespace Foam
206 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
208 #endif
210 // ************************************************************************* //