pFlowToVTK is added
- this utility is not complete yet. - geometry should be ajusted to be converted separately
This commit is contained in:
parent
19d1ad343d
commit
f288f812fd
|
@ -281,6 +281,15 @@ pFlow::fileSystem pFlow::operator /
|
|||
|
||||
}
|
||||
|
||||
pFlow::fileSystem pFlow::operator /
|
||||
(
|
||||
const fileSystem& fs1,
|
||||
const word& dir2
|
||||
)
|
||||
{
|
||||
return fs1/fileSystem(dir2, "");
|
||||
}
|
||||
|
||||
pFlow::fileSystem pFlow::operator +
|
||||
(
|
||||
const fileSystem& fs1,
|
||||
|
|
|
@ -50,7 +50,13 @@ fileSystem operator /
|
|||
(
|
||||
const fileSystem& fs1,
|
||||
const fileSystem& fs2
|
||||
);
|
||||
);
|
||||
|
||||
fileSystem operator /
|
||||
(
|
||||
const fileSystem& fs1,
|
||||
const word& dir2
|
||||
);
|
||||
|
||||
fileSystem operator +
|
||||
(
|
||||
|
|
|
@ -117,6 +117,15 @@ pFlow::timeControl::timeControl(
|
|||
checkForOutputToFile();
|
||||
}
|
||||
|
||||
pFlow::real pFlow::timeControl::setTime(real t)
|
||||
{
|
||||
real tmp = currentTime_;
|
||||
currentTime_ = t;
|
||||
lastSaved_ = t;
|
||||
checkForOutputToFile();
|
||||
return tmp;
|
||||
}
|
||||
|
||||
pFlow::word pFlow::timeControl::timeName()const
|
||||
{
|
||||
if(managedExternaly_)
|
||||
|
@ -167,8 +176,6 @@ void pFlow::timeControl::checkForOutputToFile()
|
|||
}
|
||||
|
||||
outputToFile_ = save;
|
||||
|
||||
|
||||
}
|
||||
|
||||
bool pFlow::timeControl::timersReportTime()const
|
||||
|
|
|
@ -108,14 +108,8 @@ public:
|
|||
return dt_;
|
||||
}
|
||||
|
||||
real setTime(real t)
|
||||
{
|
||||
real tmp = currentTime_;
|
||||
currentTime_ = t;
|
||||
lastSaved_ = t;
|
||||
checkForOutputToFile();
|
||||
return tmp;
|
||||
}
|
||||
real setTime(real t);
|
||||
|
||||
|
||||
void setStopAt(real sT)
|
||||
{
|
||||
|
|
|
@ -31,7 +31,6 @@ Licence:
|
|||
#include "types.hpp"
|
||||
#include "Time.hpp"
|
||||
#include "fileDictionary.hpp"
|
||||
#include "box.hpp"
|
||||
#include "Timers.hpp"
|
||||
#include "dynamicLinkLibs.hpp"
|
||||
#include "Set.hpp"
|
||||
|
@ -176,11 +175,6 @@ public:
|
|||
return settingsDict_().getVal<realx3>("g");
|
||||
}
|
||||
|
||||
/*inline box domain()
|
||||
{
|
||||
return box(domainDict().subDict("globalBox"));
|
||||
}*/
|
||||
|
||||
bool operator ++(int);
|
||||
|
||||
void setSaveTimeFolder(
|
||||
|
|
|
@ -148,6 +148,12 @@ public:
|
|||
return simulationDomain_().thisDomain();
|
||||
}
|
||||
|
||||
inline
|
||||
const auto& extendedDomain()const
|
||||
{
|
||||
return boundaries_.extendedDomain();
|
||||
}
|
||||
|
||||
// - IO methods
|
||||
|
||||
/// @brief read the point structure from the input stream.
|
||||
|
|
|
@ -5,7 +5,7 @@ add_subdirectory(particlesPhasicFlow)
|
|||
|
||||
add_subdirectory(geometryPhasicFlow)
|
||||
|
||||
#add_subdirectory(pFlowToVTK)
|
||||
add_subdirectory(pFlowToVTK)
|
||||
|
||||
add_subdirectory(Utilities)
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
|
||||
set(SourceFiles
|
||||
readFromTimeFolder.cpp
|
||||
readControlDict.cpp
|
||||
#vtkFile/vtkFile.cpp
|
||||
#readControlDict.cpp
|
||||
vtkFile/vtkFile.cpp
|
||||
geometryPhasicFlow/Wall/Wall.cpp
|
||||
geometryPhasicFlow/planeWall/planeWall.cpp
|
||||
#geometryPhasicFlow/stlWall/stlWall.cpp
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
set(source_files
|
||||
pFlowToVTK.cpp
|
||||
geometric.cpp
|
||||
#geometric.cpp
|
||||
)
|
||||
set(link_lib phasicFlow Kokkos::kokkos Utilities)
|
||||
|
||||
|
|
|
@ -18,29 +18,19 @@ Licence:
|
|||
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
#include "vocabs.hpp"
|
||||
#include "systemControl.hpp"
|
||||
#include "pointFieldToVTK.hpp"
|
||||
#include "triSurfaceFieldToVTK.hpp"
|
||||
#include "timeFolder.hpp"
|
||||
#include "commandLine.hpp"
|
||||
#include "ranges.hpp"
|
||||
#include "readControlDict.hpp"
|
||||
#include "Vectors.hpp"
|
||||
#include "phasicFlowKokkos.hpp"
|
||||
#include "pointFieldToVTK.hpp"
|
||||
//#include "triSurfaceFieldToVTK.hpp"
|
||||
//#include "readControlDict.hpp"
|
||||
|
||||
|
||||
using pFlow::word;
|
||||
using pFlow::wordVector;
|
||||
using pFlow::geometryFolder__;
|
||||
using pFlow::timeFolder;
|
||||
using pFlow::fileSystem;
|
||||
using pFlow::wordList;
|
||||
using pFlow::IOfileHeader;
|
||||
using pFlow::objectFile;
|
||||
using pFlow::output;
|
||||
using pFlow::endl;
|
||||
using pFlow::multiTriSurface;
|
||||
using pFlow::commandLine;
|
||||
using pFlow::realCombinedRange;
|
||||
using namespace pFlow;
|
||||
|
||||
int main(int argc, char** argv )
|
||||
{
|
||||
|
@ -69,6 +59,12 @@ int main(int argc, char** argv )
|
|||
"path to output folder of VTK",
|
||||
"path");
|
||||
|
||||
bool separateSurfaces = false;
|
||||
cmds.addOption(
|
||||
"-s,--separate-surfaces",
|
||||
separateSurfaces,
|
||||
"surfaces in the geometry are converted separatedly");
|
||||
|
||||
wordVector fields;
|
||||
bool allFields = true;
|
||||
cmds.addOption("-f,--fields",
|
||||
|
@ -92,7 +88,7 @@ int main(int argc, char** argv )
|
|||
|
||||
|
||||
timeFolder folders(Control);
|
||||
fileSystem destFolder = fileSystem(outFolder)/geometryFolder__;
|
||||
fileSystem destFolder = fileSystem(outFolder)/word(geometryFolder__);
|
||||
fileSystem destFolderField = fileSystem(outFolder);
|
||||
wordList geomfiles{"triSurface"};
|
||||
|
||||
|
@ -117,11 +113,11 @@ int main(int argc, char** argv )
|
|||
|
||||
do
|
||||
{
|
||||
|
||||
Control.time().setTime(folders.time());
|
||||
if( !validRange.isMember( folders.time() ) )continue;
|
||||
|
||||
output<< "time: " << cyanText( folders.time() )<<" s" <<endl;
|
||||
if(!noGoem)
|
||||
output<< "time: " << Cyan_Text( folders.time() )<<" s" <<endl;
|
||||
/*if(!noGoem)
|
||||
{
|
||||
fileSystem geomFolder = folders.folder()/geometryFolder__;
|
||||
if(!pFlow::TSFtoVTK::convertTimeFolderTriSurfaceFields(geomFolder, folders.time(), destFolder, "surface"))
|
||||
|
@ -129,7 +125,7 @@ int main(int argc, char** argv )
|
|||
fatalExit;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
if(!noParticle)
|
||||
{
|
||||
|
@ -137,17 +133,15 @@ int main(int argc, char** argv )
|
|||
if(allFields)
|
||||
{
|
||||
if( !pFlow::PFtoVTK::convertTimeFolderPointFields(
|
||||
folders.folder(),
|
||||
folders.time(),
|
||||
Control,
|
||||
destFolderField,
|
||||
"sphereFields" )
|
||||
)
|
||||
"sphereFields" ))
|
||||
{
|
||||
fatalExit;
|
||||
}
|
||||
}else
|
||||
{
|
||||
if(!pFlow::PFtoVTK::convertTimeFolderPointFieldsSelected(
|
||||
/*if(!pFlow::PFtoVTK::convertTimeFolderPointFieldsSelected(
|
||||
folders.folder(),
|
||||
folders.time(),
|
||||
destFolderField,
|
||||
|
@ -157,7 +151,7 @@ int main(int argc, char** argv )
|
|||
)
|
||||
{
|
||||
fatalExit;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -25,13 +25,15 @@ Licence:
|
|||
#include <regex>
|
||||
|
||||
#include "vtkFile.hpp"
|
||||
#include "systemControl.hpp"
|
||||
#include "pointStructure.hpp"
|
||||
#include "pointFields.hpp"
|
||||
#include "IOobject.hpp"
|
||||
|
||||
|
||||
namespace pFlow::PFtoVTK
|
||||
{
|
||||
|
||||
template<typename IntType, typename IncludeMaskType>
|
||||
/*template<typename IntType, typename IncludeMaskType>
|
||||
bool addIntPointField(
|
||||
iOstream& os,
|
||||
word fieldName,
|
||||
|
@ -53,7 +55,7 @@ bool addRealx3PointField(
|
|||
word fieldName,
|
||||
int32 numActivePoints,
|
||||
realx3* field,
|
||||
IncludeMaskType includeMask );
|
||||
IncludeMaskType includeMask );*/
|
||||
|
||||
bool regexCheck(word TYPENAME, word fieldType)
|
||||
{
|
||||
|
@ -69,14 +71,10 @@ bool regexCheck(word TYPENAME, word fieldType)
|
|||
template<typename Type>
|
||||
bool checkFieldType(word objectType)
|
||||
{
|
||||
//if( pointField<VectorSingle,Type>::TYPENAME() == objectType )return true;
|
||||
//if( pointField<VectorSingle,Type, HostSpace>::TYPENAME() == objectType ) return true;
|
||||
//if( pointField<VectorDual, Type>::TYPENAME() == objectType )return true;
|
||||
return regexCheck(pointField<VectorSingle,Type>::TYPENAME(), objectType);
|
||||
|
||||
return regexCheck(pointField<Type>::TYPENAME(), objectType);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
/*template<typename T>
|
||||
bool convertIntPointField
|
||||
(
|
||||
iOstream& os,
|
||||
|
@ -113,10 +111,10 @@ bool convertIntPointField
|
|||
pStruct.numActive(),
|
||||
data,
|
||||
pStruct.activePointsMaskH() );
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
bool convertRealTypePointField(
|
||||
/*bool convertRealTypePointField(
|
||||
iOstream& os,
|
||||
const IOfileHeader& header,
|
||||
const pointStructure& pStruct)
|
||||
|
@ -144,9 +142,9 @@ bool convertRealTypePointField(
|
|||
pStruct.numActive(),
|
||||
data,
|
||||
pStruct.activePointsMaskH() );
|
||||
}
|
||||
}*/
|
||||
|
||||
bool convertRealx3TypePointField(
|
||||
/*bool convertRealx3TypePointField(
|
||||
iOstream& os,
|
||||
const IOfileHeader& header,
|
||||
const pointStructure& pStruct)
|
||||
|
@ -174,50 +172,45 @@ bool convertRealx3TypePointField(
|
|||
pStruct.numActive(),
|
||||
data,
|
||||
pStruct.activePointsMaskH() );
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
template<typename IncludeMaskType>
|
||||
bool addUndstrcuturedGridField(
|
||||
iOstream& os,
|
||||
int32 numActivePoints,
|
||||
realx3* position,
|
||||
IncludeMaskType includeMask)
|
||||
uint32 numPoints)
|
||||
{
|
||||
|
||||
auto [iFirst, iLast] = includeMask.activeRange();
|
||||
|
||||
os<< "DATASET UNSTRUCTURED_GRID\n";
|
||||
os<< "POINTS "<< numActivePoints << " float\n";
|
||||
os<< "POINTS "<< numPoints << " float\n";
|
||||
|
||||
if(numActivePoints==0) return true;
|
||||
if(numPoints==0) return true;
|
||||
|
||||
for(int32 i=iFirst; i<iLast; ++i)
|
||||
for(uint32 i=0; i<numPoints; i++)
|
||||
{
|
||||
if(includeMask(i))
|
||||
os<< position[i].x()<<' '<< position[i].y()<<' '<<position[i].z()<<'\n';
|
||||
os<< position[i].x()<<' '<< position[i].y()<<' '<<position[i].z()<<'\n';
|
||||
}
|
||||
|
||||
os<<"CELLS "<< numActivePoints<<' '<< 2*numActivePoints<<'\n';
|
||||
for(int32 i=0; i<numActivePoints; i++)
|
||||
os<<"CELLS "<< numPoints<<' '<< 2*numPoints<<'\n';
|
||||
for(uint32 i=0; i<numPoints; i++)
|
||||
{
|
||||
os<< 1 <<' '<< i<<'\n';
|
||||
}
|
||||
|
||||
os<<"CELL_TYPES "<< numActivePoints<<'\n';
|
||||
os<<"CELL_TYPES "<< numPoints<<'\n';
|
||||
|
||||
for(int32 i=0; i<numActivePoints; i++)
|
||||
for(int32 i=0; i<numPoints; i++)
|
||||
{
|
||||
os<< 1 <<'\n';
|
||||
}
|
||||
|
||||
os << "POINT_DATA " << numActivePoints << endl;
|
||||
os << "POINT_DATA " << numPoints << endl;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
template<typename IntType, typename IncludeMaskType>
|
||||
/*template<typename IntType, typename IncludeMaskType>
|
||||
bool addIntPointField(
|
||||
iOstream& os,
|
||||
word fieldName,
|
||||
|
@ -238,9 +231,9 @@ bool addIntPointField(
|
|||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}*/
|
||||
|
||||
template<typename IncludeMaskType>
|
||||
/*template<typename IncludeMaskType>
|
||||
bool addRealPointField(
|
||||
iOstream& os,
|
||||
word fieldName,
|
||||
|
@ -260,9 +253,9 @@ bool addRealPointField(
|
|||
os<< field[i] <<'\n';
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}*/
|
||||
|
||||
template<typename IncludeMaskType>
|
||||
/*template<typename IncludeMaskType>
|
||||
bool addRealx3PointField(
|
||||
iOstream& os,
|
||||
word fieldName,
|
||||
|
@ -283,16 +276,16 @@ bool addRealx3PointField(
|
|||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
bool convertTimeFolderPointFields(
|
||||
fileSystem timeFolder,
|
||||
real time,
|
||||
systemControl& control,
|
||||
fileSystem destPath,
|
||||
word bName)
|
||||
{
|
||||
|
||||
fileSystem timeFolder = control.time().path();
|
||||
// check if pointStructure exist in this folder
|
||||
IOfileHeader pStructHeader(
|
||||
objectFile(
|
||||
|
@ -304,36 +297,35 @@ bool convertTimeFolderPointFields(
|
|||
|
||||
if( !pStructHeader.headerOk(true) )
|
||||
{
|
||||
output<<yellowColor<<"Time folder "<< timeFolder <<
|
||||
output<<yellowColor<<"Time folder "<< control.time().path() <<
|
||||
" does not contain any pStructure data file. Skipping this folder . . ."
|
||||
<<defaultColor<<nl;
|
||||
return true;
|
||||
}
|
||||
|
||||
vtkFile vtk(destPath, bName, time);
|
||||
vtkFile vtk(destPath, bName, control.time().currentTime());
|
||||
|
||||
if(!vtk) return false;
|
||||
|
||||
auto pStructObjPtr = IOobject::make<pointStructure>(pStructHeader);
|
||||
auto& pStruct = pStructObjPtr().getObject<pointStructure>();
|
||||
|
||||
auto pStruct = pointStructure(control);
|
||||
|
||||
// get a list of files in this timeFolder;
|
||||
|
||||
auto posVec = std::as_const(pStruct).pointPosition().hostVectorAll();
|
||||
auto posVec = pStruct.pointPositionHost();
|
||||
auto* pos = posVec.data();
|
||||
|
||||
REPORT(1)<<"Writing pointStructure to vtk file with "<< yellowText(pStruct.numActive())
|
||||
<<" active particles"<<endREPORT;
|
||||
REPORT(1)<<"Writing pointStructure to vtk file with "<< Yellow_Text(pStruct.numActive())
|
||||
<<" active particles"<<END_REPORT;
|
||||
addUndstrcuturedGridField(
|
||||
vtk(),
|
||||
pStruct.numActive(),
|
||||
pos,
|
||||
pStruct.activePointsMaskH());
|
||||
pStruct.numActive());
|
||||
|
||||
auto fileList = containingFiles(timeFolder);
|
||||
//auto fileList = containingFiles(timeFolder);
|
||||
|
||||
|
||||
for(auto& file:fileList)
|
||||
/*for(auto& file:fileList)
|
||||
{
|
||||
IOfileHeader fieldHeader(
|
||||
objectFile(
|
||||
|
@ -350,7 +342,7 @@ bool convertTimeFolderPointFields(
|
|||
convertRealTypePointField(vtk(), fieldHeader, pStruct);
|
||||
convertRealx3TypePointField(vtk(), fieldHeader, pStruct);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -367,7 +359,7 @@ bool convertTimeFolderPointFieldsSelected(
|
|||
{
|
||||
|
||||
// check if pointStructure exist in this folder
|
||||
IOfileHeader pStructHeader(
|
||||
/*IOfileHeader pStructHeader(
|
||||
objectFile(
|
||||
pointStructureFile__,
|
||||
timeFolder,
|
||||
|
@ -438,7 +430,7 @@ bool convertTimeFolderPointFieldsSelected(
|
|||
REPORT(1)<<"Could not find "<<yellowText(fieldAddress) <<" skipping . . ."<<endREPORT;
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue