View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002902 | OpenFOAM | Feature | public | 2018-04-13 13:42 | 2018-04-13 15:55 |
Reporter | ricky93 | Assigned To | will | ||
Priority | low | Severity | feature | Reproducibility | N/A |
Status | closed | Resolution | no change required | ||
Platform | GNU/Linux | OS | Ubuntu | OS Version | 14.04 |
Summary | 0002902: private data in Cloud class for lagrangian modeling | ||||
Description | Actually some attributes in the Cloud class (code attached) are declared as private. Is it possible for you to declare all the attributes of Cloud class as protected in the released code? | ||||
Tags | No tags attached. | ||||
|
Cloud.H (9,608 bytes)
/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License This file is part of OpenFOAM. OpenFOAM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class Foam::Cloud Description Base cloud calls templated on particle type SourceFiles Cloud.C CloudIO.C \*---------------------------------------------------------------------------*/ #ifndef Cloud_H #define Cloud_H #include "cloud.H" #include "IDLList.H" #include "IOField.H" #include "CompactIOField.H" #include "polyMesh.H" #include "PackedBoolList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { // Forward declaration of functions template<class ParticleType> class Cloud; template<class ParticleType> class IOPosition; template<class ParticleType> Ostream& operator<< ( Ostream&, const Cloud<ParticleType>& ); /*---------------------------------------------------------------------------*\ Class Cloud Declaration \*---------------------------------------------------------------------------*/ template<class ParticleType> class Cloud : public cloud, public IDLList<ParticleType> { //----------------Is it possible to declare this data as protected?--------------------// // Private data const polyMesh& polyMesh_; //- Temporary storage for addressing. Used in findTris. mutable DynamicList<label> labels_; //- Count of how many tracking rescue corrections have been // applied mutable label nTrackingRescues_; //- Does the cell have wall faces mutable autoPtr<PackedBoolList> cellWallFacesPtr_; //- Temporary storage for the global particle positions mutable autoPtr<vectorField> globalPositionsPtr_; //-------------------------------------------------------------------------------------// // Private Member Functions //- Check patches void checkPatches() const; //- Initialise cloud on IO constructor void initCloud(const bool checkClass); //- Find all cells which have wall faces void calcCellWallFaces() const; //- Read cloud properties dictionary void readCloudUniformProperties(); //- Write cloud properties dictionary void writeCloudUniformProperties() const; public: friend class particle; template<class ParticleT> friend class IOPosition; typedef ParticleType particleType; typedef typename IDLList<ParticleType>::iterator iterator; typedef typename IDLList<ParticleType>::const_iterator const_iterator; //-Runtime type information TypeName("Cloud"); // Static data //- Name of cloud properties dictionary static word cloudPropertiesName; // Constructors //- Construct from mesh and a list of particles Cloud ( const polyMesh& mesh, const word& cloudName, const IDLList<ParticleType>& particles ); //- Construct from mesh by reading from file with given cloud instance // Optionally disable checking of class name for post-processing Cloud ( const polyMesh& pMesh, const word& cloudName, const bool checkClass = true ); // Member Functions // Access //- Return the polyMesh reference const polyMesh& pMesh() const { return polyMesh_; } label size() const { return IDLList<ParticleType>::size(); }; DynamicList<label>& labels() const { return labels_; } //- Return nTrackingRescues label nTrackingRescues() const { return nTrackingRescues_; } //- Increment the nTrackingRescues counter void trackingRescue() const { nTrackingRescues_++; if (cloud::debug && size() && (nTrackingRescues_ % size() == 0)) { Pout<< " " << nTrackingRescues_ << " tracking rescues " << endl; } } //- Whether each cell has any wall faces (demand driven data) const PackedBoolList& cellHasWallFaces() const; //- Switch to specify if particles of the cloud can return // non-zero wall distance values. By default, assume // that they can't (default for wallImpactDistance in // particle is 0.0). bool hasWallImpactDistance() const { return false; } // Iterators const const_iterator begin() const { return IDLList<ParticleType>::begin(); }; const const_iterator cbegin() const { return IDLList<ParticleType>::cbegin(); }; const const_iterator end() const { return IDLList<ParticleType>::end(); }; const const_iterator cend() const { return IDLList<ParticleType>::cend(); }; iterator begin() { return IDLList<ParticleType>::begin(); }; iterator end() { return IDLList<ParticleType>::end(); }; // Edit void clear() { IDLList<ParticleType>::clear(); }; //- Transfer particle to cloud void addParticle(ParticleType* pPtr); //- Remove particle from cloud and delete void deleteParticle(ParticleType&); //- Remove lost particles from cloud and delete void deleteLostParticles(); //- Reset the particles void cloudReset(const Cloud<ParticleType>& c); //- Move the particles // passing the TrackingData to the track function template<class TrackData> void move(TrackData& td, const scalar trackTime); //- Remap the cells of particles corresponding to the // mesh topology change void autoMap(const mapPolyMesh&); // Read //- Helper to construct IOobject for field and current time. IOobject fieldIOobject ( const word& fieldName, const IOobject::readOption r ) const; //- Check lagrangian data field template<class DataType> void checkFieldIOobject ( const Cloud<ParticleType>& c, const IOField<DataType>& data ) const; //- Check lagrangian data fieldfield template<class DataType> void checkFieldFieldIOobject ( const Cloud<ParticleType>& c, const CompactIOField<Field<DataType>, DataType>& data ) const; // Write //- Write the field data for the cloud of particles Dummy at // this level. virtual void writeFields() const; //- Write using given format, version and compression. // Only writes the cloud file if the Cloud isn't empty virtual bool writeObject ( IOstream::streamFormat fmt, IOstream::versionNumber ver, IOstream::compressionType cmp, const bool valid ) const; //- Write positions to \<cloudName\>_positions.obj file void writePositions() const; //- Call this before a topology change. Stores the particles global // positions in the database for use during mapping. void storeGlobalPositions() const; // Ostream Operator friend Ostream& operator<< <ParticleType> ( Ostream&, const Cloud<ParticleType>& ); }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #ifdef NoRepository #include "Cloud.C" #endif // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* // |
|
Why do you want access to that data? Note that in dev, much of that data isn't used any more. I'm guessing you are using 5.x. The only bits still in use are polyMesh_ and globalPositionsPtr_, and the former already has an access method. The rest should already have been deleted. |
|
Reports and replies should not, in general, be made privately. This process benefits from open participation and there being a public record. There would be no benefit to adding the access in the public release, and the abstraction of the Cloud class would be worsened by doing so. This is a change that you will have to maintain if your development requires it. Structural changes would only be made at the point at which the development was contributed and accepted into the foundation release. |
Date Modified | Username | Field | Change |
---|---|---|---|
2018-04-13 13:42 | ricky93 | New Issue | |
2018-04-13 13:42 | ricky93 | File Added: Cloud.H | |
2018-04-13 14:13 | will | Note Added: 0009497 | |
2018-04-13 14:25 | henry | Priority | high => low |
2018-04-13 14:25 | henry | Category | Bug => Feature |
2018-04-13 14:25 | henry | View Status | private => public |
2018-04-13 15:55 | will | Assigned To | => will |
2018-04-13 15:55 | will | Status | new => closed |
2018-04-13 15:55 | will | Resolution | open => fixed |
2018-04-13 15:55 | will | Note Added: 0009501 | |
2018-04-13 15:55 | will | Resolution | fixed => no change required |