Forward compatibility: flex
[foam-extend-3.2.git] / src / mesh / cfMesh / utilities / anisotropicMeshing / coordinateModification / planeScaling.H
blob610dd6436326aabbda18794a7f14f57524f74430
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | cfMesh: A library for mesh generation
4    \\    /   O peration     |
5     \\  /    A nd           | Author: Franjo Juretic (franjo.juretic@c-fields.com)
6      \\/     M anipulation  | Copyright (C) Creative Fields, Ltd.
7 -------------------------------------------------------------------------------
8 License
9     This file is part of cfMesh.
11     cfMesh 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 3 of the License, or (at your
14     option) any later version.
16     cfMesh 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 cfMesh.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     planeScaling
27 Description
28     Applies scaling to points on the positive side of the plane within
29     the scaling distance.
31 SourceFiles
32     planeScaling.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef planeScaling_H
37 #define planeScaling_H
39 #include "coordinateModification.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 /*---------------------------------------------------------------------------*\
47                     Class planeScaling Declaration
48 \*---------------------------------------------------------------------------*/
50 class planeScaling
52     public coordinateModification
54     // Private data
55         //- origin of the plane
56         point origin_;
58         //- normal vector
59         vector normal_;
61         //- scaling distance
62         scalar scalingDistance_;
64         //- scaling factor
65         scalar scalingFactor_;
67 public:
69     //- Runtime type information
70     TypeName("plane");
73     // Constructors
75         //- Null construct
76         planeScaling();
78         //- Construct from name, origin, normal, translation distance and scale
79         planeScaling
80         (
81             const word& name,
82             const point& original,
83             const vector& normal,
84             const scalar scalingDistance,
85             const scalar scalingFactor
86         );
88         //- Construct from dictionary
89         planeScaling(const word& name, const dictionary& dict);
91         //- Construct and return a clone
92         virtual autoPtr<coordinateModification> clone
93         (
94             const planeScaling& pt
95         ) const
96         {
97             return autoPtr<coordinateModification>
98             (
99                 new planeScaling
100                 (
101                     pt.name(),
102                     pt.origin_,
103                     pt.normal_,
104                     pt.scalingDistance_,
105                     pt.scalingFactor_
106                 )
107             );
108         }
110     // Member Functions
112         //- return the origin of the plane
113         virtual point origin() const;
115         //- translate the object to the modified coordinates
116         //- this is needed for backward transformation
117         virtual void translateAndModifyObject(const vector&);
119         //- calculate the displacement vector for plane translation
120         virtual vector displacement(const point&) const;
122         //- calculate the displacement vector for plane translation
123         virtual vector backwardDisplacement(const point&) const;
125         //- can this modification object be combined with other ones
126         virtual bool combiningPossible() const;
128         //- return that "bounding planes" of the scaling region for
129         //- the given object
130         virtual void boundingPlanes(PtrList<plane>&) const;
132     //- Return as dictionary of entries
133         dictionary dict(bool ignoreType = false) const;
135       // Write
137         //- Write
138         void write(Ostream&) const;
140         //- Write dictionary
141         void writeDict(Ostream&, bool subDict = true) const;
143     // Member Operators
145         //- assign from dictionary
146         void operator=(const dictionary&);
148     // IOstream Operators
150         Ostream& operator<<(Ostream&) const;
151         friend Ostream& operator<<(Ostream&, const planeScaling&);
155 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
157 } // End namespace Foam
159 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
161 #endif
163 // ************************************************************************* //