void Foam::engineValveSliding::addZonesAndModifiers() { // Add the zones and mesh modifiers to operate piston motion if ( pointZones().size() > 0 || faceZones().size() > 0 || cellZones().size() > 0 || topoChanger_.size() > 0 ) { Info<< "Time = " << engTime().theta() << endl; Info<< "void Foam::verticalValvesGambit::addZonesAndModifiers() : " << "Zones and modifiers already present. Skipping." << endl; setVirtualPositions(); // checkAndCalculate(); Info << "Point zones found = " << pointZones().size() << endl; Info << "Face zones found = " << faceZones().size() << endl; Info << "Cell zones found = " << cellZones().size() << endl; return; } Info << "checkAndCalculate()" << endl; Info<< "Time = " << engTime().theta() << endl << "Adding zones to the engine mesh" << endl; /* Point zones 1) Piston points 1) Cut point zone for liner in head nValves* 1) cutPointsV 2) valveTopPoints 3) valveBottomPoints */ DynamicList<pointZone*> pz; /* Face zones 1) Piston layer faces nValves* 1) valveTopLayerFaces 2) valveBottomLayerFaces 3) valveCurtainPort 4) valveCurtainCyl 5) cutFaceV */ DynamicList<faceZone*> fz; /* cell zones 1) moving cells inside piston nValves* 1) moving cells in the top of the valve 2) moving cells in the bottom of the valve */ DynamicList<cellZone*> cz; label nPointZones = 0; label nFaceZones = 0; label nCellZones = 0; /* Adding the following faces zones: 1: pistonLayerFaces nV: pistonLayerFacesV Adding the following cell zones: 1: movingCellsPiston nV: movingCellsPistonV Adding the following point zones: 1: pistonPoints nV: valvePistonPointsV */ # include "addPistonFacesPointZonesEngineValveSliding.H" /* Adding the following face zones: nV: curtainCylZoneV nV: curtainPortZoneV nV: cutFaceZoneV nV: poppetZoneV nV: bottomZoneV Adding the following point zones: nV: cutPointsV */ # include "addValvesFacesPointZonesEngineValveSliding.H" /* Adding the following point zones: nV: valveTopPointsV nV: valveBottomPointsV Adding the following cell zones: nV: movingCellsTopV nV: movingCellsBotV */ # include "addOutputCellsEngineValveSliding.H" Info<< "Adding " << nPointZones << " point, " << nFaceZones << " face zones and " << nCellZones << " cell zones" << endl; pz.setSize(nPointZones); Info << "setSize pz" << endl; fz.setSize(nFaceZones); Info << "setSize fz" << endl; cz.setSize(nCellZones); Info << "setSize cz" << endl; addZones(pz, fz, cz); # include "addMeshModifiersEngineValveSliding.H" // Calculating the virtual positions of piston and valves setVirtualPositions(); Info << " Write mesh " << endl; // Write mesh and modifiers topoChanger_.writeOpt() = IOobject::AUTO_WRITE; write(); Info << " Mesh written " << endl; // Info << "virtualPistonPosition = " << virtualPistonPosition() << endl; // Info << "piston position = " << pistonPosition() << endl; }
void Foam::thoboisMesh::addZonesAndModifiers() { // Add the zones and mesh modifiers to operate piston motion if ( pointZones().size() > 0 && faceZones().size() > 0 && topoChanger_.size() > 0 ) { Info<< "Time = " << engTime().theta() << endl; Info<< "void Foam::thoboisMesh::addZonesAndModifiers() : " << "Zones and modifiers already present. Skipping." << endl; setVirtualPositions(); checkAndCalculate(); Info << "Point zones found = " << pointZones().size() << endl; Info << "Face zones found = " << faceZones().size() << endl; Info << "Cell zones found = " << cellZones().size() << endl; return; } else { pointZones().setSize(0); faceZones().setSize(0); cellZones().setSize(0); topoChanger_.setSize(0); } Info << "checkAndCalculate()" << endl; checkAndCalculate(); Info<< "Time = " << engTime().theta() << endl << "Adding zones to the engine mesh" << endl; /* Point zones 1) Piston points */ DynamicList<pointZone*> pz; /* Face zones 1) Piston layer faces */ DynamicList<faceZone*> fz; /* */ DynamicList<cellZone*> cz; label nPointZones = 0; label nFaceZones = 0; label nCellZones = 0; /* Adding the following faces zones: 1: pistonLayerFaces nv: movingFaces nv: staticFaces nv: detachFaces Adding the following point zones: 1: pistonPoints nv: movingValvePoints nv: staticValvePoints */ # include "addPistonFacesPointZonesThoboisMesh.H" //# include "addAttachDetachFacesThoboisMesh.H" Info<< "Adding " << nPointZones << " point, " << nFaceZones << " face zones and " << nCellZones << " cell zones" << endl; # include "addValveFaceZonesThoboisMesh.H" pz.setSize(nPointZones); Info << "setSize pz" << endl; fz.setSize(nFaceZones); Info << "setSize fz" << endl; cz.setSize(nCellZones); Info << "setSize cz" << endl; addZones(pz, fz, cz); # include "addMeshModifiersThoboisMesh.H" // Calculating the virtual positions of piston and valves setVirtualPositions(); // Write mesh and modifiers topoChanger_.writeOpt() = IOobject::AUTO_WRITE; write(); Info << "virtualPistonPosition = " << virtualPistonPosition() << endl; Info << "piston position = " << pistonPosition() << endl; }
void Foam::movingConeTopoFvMesh::addZonesAndModifiers() { // Add zones and modifiers for motion action if ( pointZones().size() || faceZones().size() || cellZones().size() || topoChanger_.size() ) { Info<< "void movingConeTopoFvMesh::addZonesAndModifiers() : " << "Zones and modifiers already present. Skipping." << endl; return; } Info<< "Time = " << time().timeName() << endl << "Adding zones and modifiers to the mesh" << endl; const vectorField& fc = faceCentres(); const vectorField& fa = faceAreas(); labelList zone1(fc.size()); boolList flipZone1(fc.size(), false); label nZoneFaces1 = 0; labelList zone2(fc.size()); boolList flipZone2(fc.size(), false); label nZoneFaces2 = 0; forAll(fc, faceI) { if ( fc[faceI].x() > -0.003501 && fc[faceI].x() < -0.003499 ) { if ((fa[faceI] & vector(1, 0, 0)) < 0) { flipZone1[nZoneFaces1] = true; } zone1[nZoneFaces1] = faceI; Info<< "face " << faceI << " for zone 1. Flip: " << flipZone1[nZoneFaces1] << endl; nZoneFaces1++; } else if ( fc[faceI].x() > -0.00701 && fc[faceI].x() < -0.00699 ) { zone2[nZoneFaces2] = faceI; if ((fa[faceI] & vector(1, 0, 0)) > 0) { flipZone2[nZoneFaces2] = true; } Info<< "face " << faceI << " for zone 2. Flip: " << flipZone2[nZoneFaces2] << endl; nZoneFaces2++; } } zone1.setSize(nZoneFaces1); flipZone1.setSize(nZoneFaces1); zone2.setSize(nZoneFaces2); flipZone2.setSize(nZoneFaces2); Info<< "zone: " << zone1 << endl; Info<< "zone: " << zone2 << endl; List<pointZone*> pz(0); List<faceZone*> fz(2); List<cellZone*> cz(0); label nFz = 0; fz[nFz] = new faceZone ( "rightExtrusionFaces", zone1, flipZone1, nFz, faceZones() ); nFz++; fz[nFz] = new faceZone ( "leftExtrusionFaces", zone2, flipZone2, nFz, faceZones() ); nFz++; fz.setSize(nFz); Info<< "Adding mesh zones." << endl; addZones(pz, fz, cz); // Add layer addition/removal interfaces List<polyMeshModifier*> tm(2); label nMods = 0; tm[nMods] = new layerAdditionRemoval ( "right", nMods, topoChanger_, "rightExtrusionFaces", readScalar ( motionDict_.subDict("right").lookup("minThickness") ), readScalar ( motionDict_.subDict("right").lookup("maxThickness") ) ); nMods++; tm[nMods] = new layerAdditionRemoval ( "left", nMods, topoChanger_, "leftExtrusionFaces", readScalar ( motionDict_.subDict("left").lookup("minThickness") ), readScalar ( motionDict_.subDict("left").lookup("maxThickness") ) ); nMods++; tm.setSize(nMods); Info<< "Adding " << nMods << " mesh modifiers" << endl; topoChanger_.addTopologyModifiers(tm); write(); }