twoPhaseEulerFoam:frictionalStressModel/Schaeffer: Correct mut on processor boundaries
[OpenFOAM-1.7.x.git] / src / dynamicMesh / perfectInterface / perfectInterface.H
blob8948112ddd2131fa8a14c94c969a76fd155d7110
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2010 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
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::perfectInterface
27 Description
28     Hack of attachDetach to couple patches when they perfectly align.
29     Does not decouple. Used by stitchMesh app. Does geometric matching.
31 SourceFiles
32     perfectInterface.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef perfectInterface_H
37 #define perfectInterface_H
39 #include "polyMeshModifier.H"
40 #include "polyPatchID.H"
41 #include "ZoneIDs.H"
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 namespace Foam
48 // Forward declaration of classes
49 class Time;
51 /*---------------------------------------------------------------------------*\
52                        Class perfectInterface Declaration
53 \*---------------------------------------------------------------------------*/
55 class perfectInterface
57     public polyMeshModifier
59     // Private data
61         //- Master face zone ID
62         faceZoneID faceZoneID_;
64         //- Master patch ID
65         polyPatchID masterPatchID_;
67         //- Slave patch ID
68         polyPatchID slavePatchID_;
70         //- Tolerance used for distance comparison (fraction of minimum edge
71         //  length)
72         static const scalar tol_;
74     // Private Member Functions
76         //- Calculate face centres on patch
77         static pointField calcFaceCentres(const primitivePatch&);
80         //- Disallow default bitwise copy construct
81         perfectInterface(const perfectInterface&);
83         //- Disallow default bitwise assignment
84         void operator=(const perfectInterface&);
87 public:
89     //- Runtime type information
90     TypeName("perfectInterface");
93     // Constructors
95         //- Construct from components
96         perfectInterface
97         (
98             const word& name,
99             const label index,
100             const polyTopoChanger& mme,
101             const word& faceZoneName,
102             const word& masterPatchName,
103             const word& slavePatchName
104         );
106         //- Construct from dictionary
107         perfectInterface
108         (
109             const word& name,
110             const dictionary& dict,
111             const label index,
112             const polyTopoChanger& mme
113         );
116     // Destructor
118         virtual ~perfectInterface();
121     // Member Functions
123         //- Check for topology change
124         virtual bool changeTopology() const;
126         //- Insert the layer addition/removal instructions
127         //  into the topological change
128         virtual void setRefinement(polyTopoChange&) const;
130         //- Modify motion points to comply with the topological change
131         virtual void modifyMotionPoints(pointField& motionPoints) const;
133         //- Force recalculation of locally stored data on topological change
134         virtual void updateMesh(const mapPolyMesh&);
136         //- Write
137         virtual void write(Ostream&) const;
139         //- Write dictionary
140         virtual void writeDict(Ostream&) const;
145 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
147 } // End namespace Foam
149 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
151 #endif
153 // ************************************************************************* //