mirror of
https://github.com/PhasicFlow/phasicFlow.git
synced 2025-06-12 16:26:23 +00:00
bug remove for GPU run after CPU MPI parallelization
- specialization of VectorSingle for word - dummyFile creation to solve write to file in MPI mode
This commit is contained in:
119
utilities/Utilities/geometryPhasicFlow/stlWall/stlFile.hpp
Normal file
119
utilities/Utilities/geometryPhasicFlow/stlWall/stlFile.hpp
Normal file
@ -0,0 +1,119 @@
|
||||
/*------------------------------- phasicFlow ---------------------------------
|
||||
O C enter of
|
||||
O O E ngineering and
|
||||
O O M ultiscale modeling of
|
||||
OOOOOOO F luid flow
|
||||
------------------------------------------------------------------------------
|
||||
Copyright (C): www.cemf.ir
|
||||
email: hamid.r.norouzi AT gmail.com
|
||||
------------------------------------------------------------------------------
|
||||
Licence:
|
||||
This file is part of phasicFlow code. It is a free software for simulating
|
||||
granular and multiphase flows. You can redistribute it and/or modify it under
|
||||
the terms of GNU General Public License v3 or any other later versions.
|
||||
|
||||
phasicFlow is distributed to help others in their research in the field of
|
||||
granular and multiphase flows, but WITHOUT ANY WARRANTY; without even the
|
||||
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
#ifndef __stlFile_hpp__
|
||||
#define __stlFile_hpp__
|
||||
|
||||
#include "types.hpp"
|
||||
#include "Vectors.hpp"
|
||||
#include "Lists.hpp"
|
||||
#include "fileSystem.hpp"
|
||||
|
||||
|
||||
|
||||
namespace pFlow
|
||||
{
|
||||
|
||||
|
||||
class iIstream;
|
||||
|
||||
class stlFile
|
||||
{
|
||||
protected:
|
||||
|
||||
//// - data memebrs
|
||||
|
||||
// - list of verticies of all solids
|
||||
ListPtr<realx3x3Vector> solids_;
|
||||
|
||||
// - list of names of all solids
|
||||
wordList solidNames_;
|
||||
|
||||
// - file name of stl file (used for reading and writing)
|
||||
mutable fileSystem file_;
|
||||
|
||||
// - protected members
|
||||
|
||||
bool readSolid(iIstream& is, realx3x3Vector & vertecies, word & name);
|
||||
|
||||
bool readFacet(iIstream& is, realx3x3& tri);
|
||||
|
||||
bool writeSolid(iOstream& os, const realx3x3Vector& vertecies, const word& name)const;
|
||||
|
||||
bool writeFacet(iOstream& os, const realx3x3& tri)const;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//// - Constructors
|
||||
// - construct with file name
|
||||
// an empty stlFile
|
||||
stlFile( fileSystem file );
|
||||
|
||||
// - construct with file name and one solid (copy)
|
||||
stlFile( fileSystem file, const word& name, const realx3x3Vector& vertecies);
|
||||
|
||||
// - construct with file name and one solid (copy)
|
||||
stlFile( fileSystem file, const word& name, realx3x3Vector&& vertecies);
|
||||
|
||||
// - copy construct
|
||||
stlFile(const stlFile&) = default;
|
||||
|
||||
// - move construct
|
||||
stlFile(stlFile&&) = default;
|
||||
|
||||
~stlFile() = default;
|
||||
|
||||
//// - Methods
|
||||
|
||||
// - add a solid at the end of list, with copy operation
|
||||
void addSolid(const word& name, const realx3x3Vector& vertecies);
|
||||
|
||||
// - add a solid at the end of list, with move operation
|
||||
void addSolid(const word& name, realx3x3Vector&& vertecies);
|
||||
|
||||
// - clear current content and read from file
|
||||
bool read();
|
||||
|
||||
// - write the current contnet to file
|
||||
bool write()const;
|
||||
|
||||
// - set stl file path
|
||||
void setFile(fileSystem file) const;
|
||||
|
||||
// - name of solids
|
||||
const wordList& names()const;
|
||||
|
||||
// - number of solids
|
||||
size_t size()const;
|
||||
|
||||
// - vertecies of ith solid
|
||||
const realx3x3Vector& solid(size_t i)const;
|
||||
|
||||
// - name of ith solid
|
||||
const word& name(size_t i)const;
|
||||
|
||||
};
|
||||
|
||||
|
||||
} // pFlow
|
||||
|
||||
#endif //__stlFile_hpp__
|
Reference in New Issue
Block a user