Foam::points0MotionSolver::points0MotionSolver ( const polyMesh& mesh, const IOdictionary& dict, const word& type ) : motionSolver(mesh, dict, type), points0_(pointIOField(points0IO(mesh))) { if (points0_.size() != mesh.nPoints()) { FatalErrorInFunction << "Number of points in mesh " << mesh.nPoints() << " differs from number of points " << points0_.size() << " read from file " << typeFilePath<pointIOField> ( IOobject ( "points", time().constant(), polyMesh::meshSubDir, mesh, IOobject::MUST_READ, IOobject::NO_WRITE, false ) ) << exit(FatalError); } }
Foam::displacementSBRStressFvMotionSolver::displacementSBRStressFvMotionSolver ( const polyMesh& mesh, Istream& msData ) : fvMotionSolver(mesh), points0_ ( pointIOField ( IOobject ( "points", time().constant(), polyMesh::meshSubDir, mesh, IOobject::MUST_READ, IOobject::NO_WRITE ) ) ), pointDisplacement_ ( IOobject ( "pointDisplacement", fvMesh_.time().timeName(), fvMesh_, IOobject::MUST_READ, IOobject::AUTO_WRITE ), pointMesh_ ), cellDisplacement_ ( IOobject ( "cellDisplacement", mesh.time().timeName(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), fvMesh_, dimensionedVector ( "cellDisplacement", pointDisplacement_.dimensions(), vector::zero ), cellMotionBoundaryTypes<vector>(pointDisplacement_.boundaryField()) ), diffusivityPtr_ ( motionDiffusivity::New(*this, lookup("diffusivity")) ) {}
Foam::displacementFvMotionSolver::displacementFvMotionSolver ( const polyMesh& mesh, Istream& ) : fvMotionSolver(mesh), points0_ ( pointIOField ( IOobject ( "points", mesh.time().constant(), polyMesh::meshSubDir, mesh, IOobject::MUST_READ, IOobject::NO_WRITE, false ) ) ) { if (points0_.size() != mesh.nPoints()) { FatalErrorIn ( "displacementFvMotionSolver::displacementFvMotionSolver\n" "(\n" " const polyMesh&,\n" " Istream&\n" ")" ) << "Number of points in mesh " << mesh.nPoints() << " differs from number of points " << points0_.size() << " read from file " << IOobject ( "points", mesh.time().constant(), polyMesh::meshSubDir, mesh, IOobject::MUST_READ, IOobject::NO_WRITE, false ).filePath() << exit(FatalError); } }
Foam::displacementMotionSolver::displacementMotionSolver ( const polyMesh& mesh, const IOdictionary& dict, const word& type ) : motionSolver(mesh, dict, type), pointDisplacement_ ( IOobject ( "pointDisplacement", time().timeName(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE ), pointMesh::New(mesh) ), points0_(pointIOField(points0IO(mesh))) { if (points0_.size() != mesh.nPoints()) { FatalErrorIn ( "displacementMotionSolver::" "displacementMotionSolver\n" "(\n" " const polyMesh&,\n" " const IOdictionary&,\n" " const word&\n" ")" ) << "Number of points in mesh " << mesh.nPoints() << " differs from number of points " << points0_.size() << " read from file " << IOobject ( "points", time().constant(), polyMesh::meshSubDir, mesh, IOobject::MUST_READ, IOobject::NO_WRITE, false ).filePath() << exit(FatalError); } }
Foam::polyMesh::readUpdateState Foam::polyMesh::readUpdate() { if (debug) { Info<< "polyMesh::readUpdateState polyMesh::readUpdate() : " << "Updating mesh based on saved data." << endl; } // Find the point and cell instance fileName pointsInst(time().findInstance(meshDir(), "points")); fileName facesInst(time().findInstance(meshDir(), "faces")); if (debug) { Info<< "Faces instance: old = " << facesInstance() << " new = " << facesInst << nl << "Points instance: old = " << pointsInstance() << " new = " << pointsInst << endl; } if (facesInst != facesInstance()) { // Topological change if (debug) { Info<< "Topological change" << endl; } clearOut(); // Set instance to new instance. Note that points instance can differ // from from faces instance. setInstance(facesInst); points_.instance() = pointsInst; points_ = pointIOField ( IOobject ( "points", pointsInst, meshSubDir, *this, IOobject::MUST_READ, IOobject::NO_WRITE, false ) ); faces_ = faceCompactIOList ( IOobject ( "faces", facesInst, meshSubDir, *this, IOobject::MUST_READ, IOobject::NO_WRITE, false ) ); owner_ = labelIOList ( IOobject ( "owner", facesInst, meshSubDir, *this, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE, false ) ); neighbour_ = labelIOList ( IOobject ( "neighbour", facesInst, meshSubDir, *this, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE, false ) ); // Reset the boundary patches polyBoundaryMesh newBoundary ( IOobject ( "boundary", facesInst, meshSubDir, *this, IOobject::MUST_READ, IOobject::NO_WRITE, false ), *this ); // Check that patch types and names are unchanged bool boundaryChanged = false; if (newBoundary.size() != boundary_.size()) { boundaryChanged = true; } else { wordList newTypes = newBoundary.types(); wordList newNames = newBoundary.names(); wordList oldTypes = boundary_.types(); wordList oldNames = boundary_.names(); forAll(oldTypes, patchI) { if ( oldTypes[patchI] != newTypes[patchI] || oldNames[patchI] != newNames[patchI] ) { boundaryChanged = true; break; } } } if (boundaryChanged) { WarningIn("polyMesh::readUpdateState polyMesh::readUpdate()") << "Number of patches has changed. This may have " << "unexpected consequences. Proceed with care." << endl; boundary_.clear(); boundary_.setSize(newBoundary.size()); forAll(newBoundary, patchI) { boundary_.set(patchI, newBoundary[patchI].clone(boundary_)); } } else {
Foam::componentDisplacementMotionSolver::componentDisplacementMotionSolver ( const polyMesh& mesh, const dictionary& dict, const word& type ) : motionSolver(mesh, dict, type), cmptName_(coeffDict().lookup("component")), cmpt_(cmpt(cmptName_)), points0_ ( pointIOField ( IOobject ( "points", mesh.time().constant(), polyMesh::meshSubDir, mesh, IOobject::MUST_READ, IOobject::NO_WRITE, false ) ).component(cmpt_) ), pointDisplacement_ ( IOobject ( "pointDisplacement" + cmptName_, mesh.time().timeName(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE ), pointMesh::New(mesh) ) { if (points0_.size() != mesh.nPoints()) { FatalErrorInFunction << "Number of points in mesh " << mesh.nPoints() << " differs from number of points " << points0_.size() << " read from file " << typeFilePath<pointIOField> ( IOobject ( "points", mesh.time().constant(), polyMesh::meshSubDir, mesh, IOobject::MUST_READ, IOobject::NO_WRITE, false ) ) << exit(FatalError); } }
dynamicSolidFvMesh::dynamicSolidFvMesh(const IOobject& io) : dynamicFvMesh(io), fvMesh_(refCast<const fvMesh>(*this)), pointDisplacement_ ( IOobject ( "pointDisplacement", io.time().timeName(), meshSubDir, *this, IOobject::NO_READ, IOobject::NO_WRITE ), pointMesh::New(fvMesh_), dimensionedVector ( "pointDisplacement", pointDisplacement_.dimensions(), vector::zero ) ), stationaryPoints_ ( IOobject ( "points", io.time().constant(), meshSubDir, *this, IOobject::NO_READ, IOobject::NO_WRITE ) ), // pointLocation_(NULL), points0_ ( pointIOField ( IOobject ( "points", io.time().constant(), meshSubDir, *this, IOobject::NO_READ, IOobject::NO_WRITE ) ) ) { // // if (io.headerOk()) // // { // pointLocation_.reset // ( // new pointVectorField // ( // io, // pointMesh::New(fvMesh_) // ) // ); // // if (debug) // { // Info<< "displacementLaplacianFvMotionSolver :" // << " Read pointVectorField " // << io.name() << " to be used for boundary conditions on points." // << nl // << "Boundary conditions:" // << pointLocation_().boundaryField().types() << endl; // } // // } }
Foam::displacementLaplacianFvMotionSolver::displacementLaplacianFvMotionSolver ( const polyMesh& mesh, Istream& msData ) : fvMotionSolver(mesh), points0_ ( pointIOField ( IOobject ( "points", time().constant(), polyMesh::meshSubDir, mesh, IOobject::MUST_READ, IOobject::NO_WRITE, false ) ) ), pointDisplacement_ ( IOobject ( "pointDisplacement", fvMesh_.time().timeName(), fvMesh_, IOobject::MUST_READ, IOobject::AUTO_WRITE ), pointMesh_ ), cellDisplacement_ ( IOobject ( "cellDisplacement", mesh.time().timeName(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), fvMesh_, dimensionedVector ( "cellDisplacement", pointDisplacement_.dimensions(), vector::zero ), cellMotionBoundaryTypes<vector>(pointDisplacement_.boundaryField()) ), pointLocation_(NULL), diffusivityPtr_ ( motionDiffusivity::New(*this, lookup("diffusivity")) ), frozenPointsZone_ ( found("frozenPointsZone") ? fvMesh_.pointZones().findZoneID(lookup("frozenPointsZone")) : -1 ) { IOobject io ( "pointLocation", fvMesh_.time().timeName(), fvMesh_, IOobject::MUST_READ, IOobject::AUTO_WRITE ); if (debug) { Info<< "displacementLaplacianFvMotionSolver:" << nl << " diffusivity : " << diffusivityPtr_().type() << nl << " frozenPoints zone : " << frozenPointsZone_ << endl; } if (io.headerOk()) { pointLocation_.reset ( new pointVectorField ( io, pointMesh_ ) ); if (debug) { Info<< "displacementLaplacianFvMotionSolver :" << " Read pointVectorField " << io.name() << " to be used for boundary conditions on points." << nl << "Boundary conditions:" << pointLocation_().boundaryField().types() << endl; } } }