Merge commit 'd3b269b7c6ffa0cd68845adfecdfb849316dba71' into nextRelease
[foam-extend-3.2.git] / src / engine / engineTopoChangerMesh / thoboisMesh / addThoboisMeshModifiers.C
blob81433c3dfd2434b4a9834f5e923b0d08c16d6ecf
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     |
5     \\  /    A nd           | For copyright notice see file Copyright
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend 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     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 #include "thoboisMesh.H"
27 #include "slidingInterface.H"
28 #include "layerAdditionRemoval.H"
29 #include "surfaceFields.H"
30 #include "regionSplit.H"
31 #include "attachDetach.H"
32 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
34 void Foam::thoboisMesh::addZonesAndModifiers()
36     // Add the zones and mesh modifiers to operate piston motion
38     if
39     (
40         pointZones().size() > 0
41      && faceZones().size() > 0
42      && topoChanger_.size() > 0
44     )
45     {
46         Info<< "Time = " << engTime().theta() << endl;
47         Info<< "void Foam::thoboisMesh::addZonesAndModifiers() : "
48             << "Zones and modifiers already present.  Skipping."
49             << endl;
51         setVirtualPositions();
52         checkAndCalculate();
54         Info << "Point zones found = " << pointZones().size() << endl;
55         Info << "Face zones found = " << faceZones().size() << endl;
56         Info << "Cell zones found = " << cellZones().size() << endl;
58         return;
60     }
61     else
62     {
63         pointZones().setSize(0);
64         faceZones().setSize(0);
65         cellZones().setSize(0);
66         topoChanger_.setSize(0);
67     }
70     Info << "checkAndCalculate()" << endl;
71     checkAndCalculate();
73     Info<< "Time = " << engTime().theta() << endl
74         << "Adding zones to the engine mesh" << endl;
77     Point zones
78     1) Piston points
81     DynamicList<pointZone*> pz;
84     Face zones
85     1) Piston layer faces
88     DynamicList<faceZone*> fz;
93     DynamicList<cellZone*> cz;
95     label nPointZones = 0;
96     label nFaceZones = 0;
97     label nCellZones = 0;
101     Adding the following faces zones:
102     1:  pistonLayerFaces
103     nv: movingFaces
104     nv: staticFaces
105     nv: detachFaces
107     Adding the following point zones:
108     1:  pistonPoints
109     nv:  movingValvePoints
110     nv:  staticValvePoints
114 #   include "addPistonFacesPointZonesThoboisMesh.H"
116 //#   include "addAttachDetachFacesThoboisMesh.H"
118     Info<< "Adding " << nPointZones << " point, "
119         << nFaceZones << " face zones and "
120         << nCellZones << " cell zones" << endl;
122 #   include "addValveFaceZonesThoboisMesh.H"
124     pz.setSize(nPointZones);
125     Info << "setSize pz" << endl;
126     fz.setSize(nFaceZones);
127     Info << "setSize fz" << endl;
128     cz.setSize(nCellZones);
129     Info << "setSize cz" << endl;
131     addZones(pz, fz, cz);
133 #   include "addMeshModifiersThoboisMesh.H"
135     // Calculating the virtual positions of piston and valves
137     setVirtualPositions();
139     // Write mesh and modifiers
140     topoChanger_.writeOpt() = IOobject::AUTO_WRITE;
141     write();
143     Info << "virtualPistonPosition = " << virtualPistonPosition() << endl;
144     Info << "piston position = " << pistonPosition() << endl;
148 // ************************************************************************* //