mirror of
https://github.com/PhasicFlow/phasicFlow.git
synced 2025-06-22 16:28:30 +00:00
Data transfer between processors
- Data transfer is done - contact search at processor boundary is done - contact force calculation at processor boundary is done - tests have been done on rotating drum using serial and openMP
This commit is contained in:
@ -52,7 +52,8 @@ pFlow::processorBoundaryContactSearch::processorBoundaryContactSearch(
|
||||
:
|
||||
boundaryContactSearch(dict, boundary, cSearch),
|
||||
diameter_(cSearch.Particles().boundingSphere()),
|
||||
masterSearch_(this->isBoundaryMaster())
|
||||
masterSearch_(this->isBoundaryMaster()),
|
||||
sizeRatio_(dict.getVal<real>("sizeRatio"))
|
||||
{
|
||||
|
||||
if(masterSearch_)
|
||||
@ -65,7 +66,8 @@ pFlow::processorBoundaryContactSearch::processorBoundaryContactSearch(
|
||||
|
||||
ppContactSearch_ = makeUnique<twoPartContactSearch>(
|
||||
searchBox_,
|
||||
maxD);
|
||||
maxD,
|
||||
sizeRatio_);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -96,7 +98,8 @@ bool pFlow::processorBoundaryContactSearch::broadSearch
|
||||
thisPoints,
|
||||
thisDiams,
|
||||
neighborProcPoints,
|
||||
neighborProcDiams
|
||||
neighborProcDiams,
|
||||
name()
|
||||
);
|
||||
//pOutput<<"ppSize "<< ppPairs.size()<<endl;
|
||||
return true;
|
||||
|
@ -39,6 +39,8 @@ private:
|
||||
|
||||
bool masterSearch_;
|
||||
|
||||
real sizeRatio_;
|
||||
|
||||
void setSearchBox();
|
||||
|
||||
public:
|
||||
|
@ -64,7 +64,9 @@ bool pFlow::twoPartContactSearch::broadSearchPP
|
||||
const realx3& transferVec
|
||||
)
|
||||
{
|
||||
|
||||
if(points1.empty())return true;
|
||||
if(points2.empty()) return true;
|
||||
|
||||
buildList(points1);
|
||||
|
||||
uint32 nNotInserted = 1;
|
||||
@ -114,7 +116,8 @@ bool pFlow::twoPartContactSearch::broadSearchPP
|
||||
const deviceScatteredFieldAccess<realx3> &points1,
|
||||
const deviceScatteredFieldAccess<real> &diams1,
|
||||
const realx3Vector_D& points2,
|
||||
const realVector_D& diams2
|
||||
const realVector_D& diams2,
|
||||
const word& name
|
||||
)
|
||||
{
|
||||
buildList(points1);
|
||||
@ -148,9 +151,9 @@ bool pFlow::twoPartContactSearch::broadSearchPP
|
||||
auto oldCap = ppPairs.capacity();
|
||||
|
||||
ppPairs.increaseCapacityBy(len);
|
||||
|
||||
|
||||
INFORMATION<< "Particle-particle contact pair container capacity increased from "<<
|
||||
oldCap << " to "<<ppPairs.capacity()<<" in peiodicBoundaryContactSearch."<<END_INFO;
|
||||
oldCap << " to "<<ppPairs.capacity()<<" in boundary contact search in "<< name <<END_INFO;
|
||||
|
||||
}
|
||||
|
||||
|
@ -85,7 +85,8 @@ public:
|
||||
const deviceScatteredFieldAccess<realx3> &points1,
|
||||
const deviceScatteredFieldAccess<real> &diams1,
|
||||
const realx3Vector_D& points2,
|
||||
const realVector_D& diams2);
|
||||
const realVector_D& diams2,
|
||||
const word& name);
|
||||
|
||||
const auto& searchCells()const
|
||||
{
|
||||
|
@ -20,9 +20,7 @@ pFlow::twoPartContactSearchKernels::buildNextHead(
|
||||
deviceViewType1D<uint32>& next
|
||||
)
|
||||
{
|
||||
if (points.empty())
|
||||
return;
|
||||
|
||||
|
||||
uint32 n = points.size();
|
||||
|
||||
Kokkos::parallel_for(
|
||||
|
Reference in New Issue
Block a user