diff --git a/src/phasicFlow/fileSystem/fileSystem.cpp b/src/phasicFlow/fileSystem/fileSystem.cpp index c1abf154..3423ac0b 100644 --- a/src/phasicFlow/fileSystem/fileSystem.cpp +++ b/src/phasicFlow/fileSystem/fileSystem.cpp @@ -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, diff --git a/src/phasicFlow/fileSystem/fileSystem.hpp b/src/phasicFlow/fileSystem/fileSystem.hpp index 9eb70122..9f0d63d7 100644 --- a/src/phasicFlow/fileSystem/fileSystem.hpp +++ b/src/phasicFlow/fileSystem/fileSystem.hpp @@ -50,7 +50,13 @@ fileSystem operator / ( const fileSystem& fs1, const fileSystem& fs2 - ); +); + +fileSystem operator / +( + const fileSystem& fs1, + const word& dir2 +); fileSystem operator + ( diff --git a/src/phasicFlow/repository/Time/timeControl.cpp b/src/phasicFlow/repository/Time/timeControl.cpp index 701130e8..206da94e 100644 --- a/src/phasicFlow/repository/Time/timeControl.cpp +++ b/src/phasicFlow/repository/Time/timeControl.cpp @@ -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 diff --git a/src/phasicFlow/repository/Time/timeControl.hpp b/src/phasicFlow/repository/Time/timeControl.hpp index 9503d8ea..64129ab0 100644 --- a/src/phasicFlow/repository/Time/timeControl.hpp +++ b/src/phasicFlow/repository/Time/timeControl.hpp @@ -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) { diff --git a/src/phasicFlow/repository/systemControl/systemControl.hpp b/src/phasicFlow/repository/systemControl/systemControl.hpp index 28d5542b..94d3b939 100644 --- a/src/phasicFlow/repository/systemControl/systemControl.hpp +++ b/src/phasicFlow/repository/systemControl/systemControl.hpp @@ -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("g"); } - /*inline box domain() - { - return box(domainDict().subDict("globalBox")); - }*/ - bool operator ++(int); void setSaveTimeFolder( diff --git a/src/phasicFlow/structuredData/pointStructure/pointStructure.hpp b/src/phasicFlow/structuredData/pointStructure/pointStructure.hpp index 51e76aea..27679178 100644 --- a/src/phasicFlow/structuredData/pointStructure/pointStructure.hpp +++ b/src/phasicFlow/structuredData/pointStructure/pointStructure.hpp @@ -147,6 +147,12 @@ public: { return simulationDomain_().thisDomain(); } + + inline + const auto& extendedDomain()const + { + return boundaries_.extendedDomain(); + } // - IO methods diff --git a/utilities/CMakeLists.txt b/utilities/CMakeLists.txt index db9fee8b..37a70ad1 100644 --- a/utilities/CMakeLists.txt +++ b/utilities/CMakeLists.txt @@ -5,7 +5,7 @@ add_subdirectory(particlesPhasicFlow) add_subdirectory(geometryPhasicFlow) -#add_subdirectory(pFlowToVTK) +add_subdirectory(pFlowToVTK) add_subdirectory(Utilities) diff --git a/utilities/Utilities/CMakeLists.txt b/utilities/Utilities/CMakeLists.txt index 47124ab0..729958ed 100644 --- a/utilities/Utilities/CMakeLists.txt +++ b/utilities/Utilities/CMakeLists.txt @@ -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 diff --git a/utilities/pFlowToVTK/CMakeLists.txt b/utilities/pFlowToVTK/CMakeLists.txt index db943590..353daa6b 100644 --- a/utilities/pFlowToVTK/CMakeLists.txt +++ b/utilities/pFlowToVTK/CMakeLists.txt @@ -1,7 +1,7 @@ set(source_files pFlowToVTK.cpp -geometric.cpp +#geometric.cpp ) set(link_lib phasicFlow Kokkos::kokkos Utilities) diff --git a/utilities/pFlowToVTK/pFlowToVTK.cpp b/utilities/pFlowToVTK/pFlowToVTK.cpp index f4a68e83..9046fb63 100755 --- a/utilities/pFlowToVTK/pFlowToVTK.cpp +++ b/utilities/pFlowToVTK/pFlowToVTK.cpp @@ -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 ) { @@ -68,6 +58,12 @@ int main(int argc, char** argv ) outFolder, "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; @@ -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" < #include "vtkFile.hpp" +#include "systemControl.hpp" +#include "pointStructure.hpp" #include "pointFields.hpp" -#include "IOobject.hpp" + namespace pFlow::PFtoVTK { -template +/*template 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 bool checkFieldType(word objectType) { - //if( pointField::TYPENAME() == objectType )return true; - //if( pointField::TYPENAME() == objectType ) return true; - //if( pointField::TYPENAME() == objectType )return true; - return regexCheck(pointField::TYPENAME(), objectType); - + return regexCheck(pointField::TYPENAME(), objectType); } -template +/*template 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 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 +/*template bool addIntPointField( iOstream& os, word fieldName, @@ -238,9 +231,9 @@ bool addIntPointField( } return true; -} +}*/ -template +/*template bool addRealPointField( iOstream& os, word fieldName, @@ -260,9 +253,9 @@ bool addRealPointField( os<< field[i] <<'\n'; } return true; -} +}*/ -template +/*template 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<(pStructHeader); - auto& pStruct = pStructObjPtr().getObject(); + + 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"<