utility particlesPhasicFlow updated. TODO: upgrade it further more to mandates supplying shapeName in particlesDict

This commit is contained in:
Hamidreza Norouzi 2024-01-25 03:12:01 -08:00
parent ab6308bb0a
commit 206df8924e
3 changed files with 59 additions and 115 deletions

View File

@ -8,6 +8,6 @@ empty/empty.cpp
) )
#set(link_lib phasicFlow Kokkos::kokkos Interaction Utilities) #set(link_lib phasicFlow Kokkos::kokkos Interaction Utilities)
set(link_lib phasicFlow Kokkos::kokkos Utilities) set(link_lib phasicFlow Kokkos::kokkos Particles Utilities)
pFlow_make_executable_install(particlesPhasicFlow source_files link_lib) pFlow_make_executable_install(particlesPhasicFlow source_files link_lib)

View File

@ -21,10 +21,11 @@ Licence:
#include "positionParticles.hpp" #include "positionParticles.hpp"
#include "pointStructure.hpp" #include "pointStructure.hpp"
//#include "setFields.hpp" #include "setFields.hpp"
#include "systemControl.hpp" #include "systemControl.hpp"
#include "commandLine.hpp" #include "commandLine.hpp"
#include "vocabs.hpp" #include "vocabs.hpp"
#include "baseShapeNames.hpp"
//#include "readControlDict.hpp" //#include "readControlDict.hpp"
@ -95,14 +96,6 @@ int main( int argc, char* argv[] )
REPORT(1)<< "Created pStruct with "<< pStructPtr().size() << " points and capacity "<< REPORT(1)<< "Created pStruct with "<< pStructPtr().size() << " points and capacity "<<
pStructPtr().capacity()<<" . . ."<< END_REPORT; pStructPtr().capacity()<<" . . ."<< END_REPORT;
//REPORT(1)<< "Writing pStruct to " << Control.time().path()+ pointStructureFile__<< END_REPORT<<endl<<endl;
/*if( !Control.time().write())
{
fatalErrorInFunction<<
"ERRor in writing to file. \n ";
return 1;
}*/
} }
else else
{ {
@ -111,12 +104,12 @@ int main( int argc, char* argv[] )
} }
List<uniquePtr<IOobject>> allObjects;
if(!positionOnly) if(!positionOnly)
{ {
WARNING<< "setFields is not active "<<END_WARNING;
/* auto& pStruct = *pStructPtr; auto& pStruct = pStructPtr();
auto& sfDict = cpDict.subDict("setFields"); auto& sfDict = cpDict.subDict("setFields");
@ -124,7 +117,11 @@ int main( int argc, char* argv[] )
for(auto& sfEntry: defValueList) for(auto& sfEntry: defValueList)
{ {
if( !sfEntry.setPointFieldDefaultValueNewAll(Control.time(), pStruct, true)) if( auto Ptr = sfEntry.setPointFieldDefaultValueNewAll( pStruct, true); Ptr)
{
allObjects.push_back(std::move(Ptr));
}
else
{ {
ERR<< "\n error occured in setting default value fields.\n"<<END_ERR; ERR<< "\n error occured in setting default value fields.\n"<<END_ERR;
return 1; return 1;
@ -149,9 +146,54 @@ int main( int argc, char* argv[] )
return 1; return 1;
} }
output<<endl; output<<endl;
}*/ }
} }
Control.clearIncludeExclude();
Control.addExclude("shapeName");
uint32PointField_H shapeIndex
(
objectFile
(
"shapeIndex",
"",
objectFile::READ_NEVER,
objectFile::WRITE_ALWAYS
),
pStructPtr(),
0u
);
baseShapeNames shapes(
shapeFile__,
&Control.caseSetup()
);
auto& shapeName = Control.time().template lookupObject<wordPointField_H>("shapeName");
REPORT(0)<< "Converting shapeName field to shapeIndex field"<<END_REPORT;
auto shapeName_D = shapeName.fieldDevice();
auto shapeIndex_D = shapeIndex.fieldDevice();
REPORT(1)<<"List of shape names in "<<shapes.globalName()<<
" is: "<<Green_Text(shapes.shapeNameList())<<END_REPORT;
ForAll(i, shapeIndex)
{
if(uint32 index; shapes.shapeNameToIndex(shapeName_D[i], index))
{
shapeIndex_D[i] = index;
}
else
{
fatalErrorInFunction<<"Found shape name "<< Yellow_Text(shapeName_D[i])<<
"in shapeName field. But the list of shape names in file "<<
shapes.globalName()<<" is : \n"<<
shapes.shapeNames()<<endl;
}
}
if( !Control.time().write(true)) if( !Control.time().write(true))
{ {
@ -167,101 +209,3 @@ int main( int argc, char* argv[] )
return 0; return 0;
} }
/*
uniquePtr<IOobject> pStructObj{nullptr};
if(!setOnly)
{
// position particles based on the dict content
REPORT(0)<< "Positioning points . . . \n"<<endREPORT;
auto pointPosition = positionParticles::create(cpDict.subDict("positionParticles"));
fileSystem pStructPath = Control.time().path()+pointStructureFile__;
auto finalPos = pointPosition().getFinalPosition();
pStructObj = IOobject::make<pointStructure>
(
objectFile
(
pointStructureFile__,
Control.time().path(),
objectFile::READ_NEVER,
objectFile::WRITE_ALWAYS
),
finalPos
);
auto& pSruct = pStructObj().getObject<pointStructure>();
REPORT(1)<< "Created pStruct with "<< pSruct.size() << " points and capacity "<<
pSruct.capacity()<<" . . ."<< endREPORT;
REPORT(1)<< "Writing pStruct to " << pStructObj().path() << endREPORT<<endl<<endl;
if( !pStructObj().write())
{
fatalErrorInFunction<<
"ERRor in writing to file. \n ";
return 1;
}
}else
{
pStructObj = IOobject::make<pointStructure>
(
objectFile
(
pointStructureFile__,
Control.time().path(),
objectFile::READ_ALWAYS,
objectFile::WRITE_NEVER
)
);
}
if(!positionOnly)
{
auto& pStruct = pStructObj().getObject<pointStructure>();
auto& sfDict = cpDict.subDict("setFields");
setFieldList defValueList(sfDict.subDict("defaultValue"));
for(auto& sfEntry: defValueList)
{
if( !sfEntry.setPointFieldDefaultValueNewAll(Control.time(), pStruct, true))
{
ERR<< "\n error occured in setting default value fields.\n"<<endERR;
return 1;
}
}
output<<endl;
auto& selectorsDict = sfDict.subDict("selectors");
auto selNames = selectorsDict.dictionaryKeywords();
for(auto name: selNames)
{
REPORT(1)<< "Applying selector " << greenText(name) <<endREPORT;
if(
!applySelector(Control, pStruct, selectorsDict.subDict(name))
)
{
ERR<<"\n error occured in setting selector. \n"<<endERR;
return 1;
}
output<<endl;
}
}
*/

View File

@ -39,7 +39,7 @@ bool applySelector(systemControl& control, const pointStructure& pStruct, const
auto& selected = selector().selectedPoinsts(); auto& selected = selector().selectedPoinsts();
int32IndexContainer selIndex(selected.data(), selected.size()); uint32IndexContainer selIndex(selected.data(), selected.size());
setFieldList sfList(selDict.subDict("fieldValue")); setFieldList sfList(selDict.subDict("fieldValue"));